-lca: Enables Limited Customer Availability feature,
which is not fully test
+vpi: Enables the use of VPI PLI access
routines.
Verilog PLI (Programming Language Interface) is a mechanism to
invoke C or C++ functions from Verilog code.
-P <pli.tab>: Specifies a PLI table file
${VERDI_HOME}/share/PLI/VCS/LINUX64/novas.tb
+define+=: Define a text macro,
Test for this definition in your Verilog source code using the
`ifdef compiler directive
+define+SIMULATION when compiling
`ifdef SIMULATOIN in code
-debug_access: Enables dumping to FSDB/VPD, and
limited read/callback capability. Use -debug_access+classs
for testbench debug, and debug_access+all for all debug
capabilities. Refer the VCS user guide for more granular options for
debug control under the switch debug_access and refer to
debug_region for region control
-y : Specifies a Verilog library
directory to search for module definitons
-v <filename>: Specifies a Verilog library
file to search for module definitons
+nospecify: Suppresses module path delays and time
checks in specify blocks
-l <filename>: (lower case L) Specifies a log
file where VCS records compilation message and runtime messages if you
include the -R, -RI, or -RIG option
+vcs+fsdbon: A compile-time
substitute for $fsdbDumpvars system task. The
+vcs+fsdbon switch enables dumping for the entire
design. If you do not add a corresponding
-debug_access* switch, then -debug_access is
automatically added. Note that you must also set
VERDI_HOME.
$ ./simv
FSDB Dumper for VCS, Release Verdi_S-2021.09-SP2-2, Linux
x86_64/64bit, 05/22/2022 (C) 1996 - 2022 by Synopsys, Inc. *Verdi* :
Create FSDB file 'novas.fsdb' *Verdi* : Begin traversing the scopes,
layer (0). *Verdi* : End of traversing.
+vcs+vcdpluson: A compile-time
substitute for $vcdpluson system task. The
+vcs+vcdpluson switch enables dumping for the entire
design. If you do not add a corresponding
-debug_access* switch, then -debug_access is
automatically added
$ ./simv
VCD+ Writer S-2021.09-SP2-2_Full64 Copyright (c) 1991-2021 by
Synopsys Inc.
+incdir+<directory>: Specifies the directories
that contain the files you specified with the `include
compiler directive. You can specify more than on directory, separating
each path name with the + character.
Compile time Use Model
Just add the -kdb option to VCS executables when running
simulation
Three steps flow:
vlogan/vhdlan/syscan -kdb
Compile design and generate un-resolved KDB to
./work
vcs -kdb -debug_access+all <other option>
Generate elaborated KDB to ./sim.dadir
Two steps flow:
vcs -kdb -debug_access+all <other option>
Compile design and generate elaborated KDB to
./simv.dadir
Common simv Option
-gv <gen=value>: override runtime VHDL generics
*
-ucli: stop at Tcl prompt upon start-up
-i <run.tcl>: execute specified Tcl script upon
start-up
-l <logfile>: create runtime logfile
-gui: create runtime logfile
-xlrm: allow relaxed/non-LRM compliant code
-cm <options>: enable coverate options
Verdi
Verdi binkey
SHIFT+A: Find Signal/Find Instance/Find
Instport
SHIFT+S: Find Scope
module
traverse
Show Calling
Show Definition
Double-Click instance name is same with click
Show Definition
Double-Click module name is same with click Show
Calling
signal
traverse
Driver
Load
Double-Click signal name is same with click
Driver
-simBin <simv_executable>: Specify the path of the
simulation binary file.
-dbdir: Specify the daidir (simv.daidir ) directory to
load
In the VCS two-step flow, the VCS generated KDB (kdb.elab++) is saved
under the simv.daidir/ directory (like
simv.daidir/kdb.elab++).
-f file_name / -file file_name: Load an ASCII file
containing design source files and additional simulator options
Import Design from UFE
Knowledge Database (KDB): As it compiles the design,
the Verdi platform uses its internal synthesis technology to recognize
and extract specific structural, logical, and functional information
about the design and stores the resulting detailed design information in
the KDB
The Unified Compiler Flow (UFE) uses VCS with the -kdb
option and the generated simv.daidar includes the
KDB information
verdi -dbdir simv.daidir
Use the new -dbdir option to specify the simv.daidir
directory
verdi -simBin simv
Load simv.daidir from the same
directory as simv and invoke Verdi if
simv.daidir is available
verdi -ssf novas.fsdb
Load KDB automatically from FSDB
For 2 and 3, use the -dbdir option to load
simv.dadir if you have move it to somewhere else
module load vcs
module load verdi
both vcs and verdi are needed for design import
Reference Design
and FSDB on the Command Line
1
verdi -f <source_file_name> -ssf <fsdb_file_name>
Where, source_file_name is the source file name and fsdb_file_name is
the name of the FSDB file
After successful compilation, you can run the simulation using the
vvp runtime engine:
1
vvp sim.vvp +VCDFILE=output.vcd
+VCDFILE=output.vcd: This is the custom plusarg.
"$value$plusargs("VCDFILE=%s", filename)": The simulator
searches for +VCDFILE=. It extracts the string after the
= sign and saves it into the filename
variable.
$dumpfile(filename): This opens a VCD file named
output.vcd.
$dumpvars(0, DUT): This dumps all signals inside the
module instance named DUT and everything below it
1 2 3 4 5 6 7 8
string filename;
initialbegin if ($value$plusargs("VCDFILE=%s",filename)) begin $dumpfile(filename); $dumpvars(0, DUT); end end
For use with --batch, perform automatic expansions as a
stand-alone tool. This sets up the appropriate Verilog mode environment,
updates automatics with M-x verilog-auto on all command-line files, and
saves the buffers. For proper results, multiple filenames need to be
passed on the command line in bottom-up order.
-f verilog-auto-save-compile
Update automatics with M-x verilog-auto, save the buffer, and
compile
Emacs
--no-site-file
Another file for site-customization is site-start.el.
Emacs loads this before the user's init file
(.emacs, .emacs.el or
.emacs.d/.emacs.d). You can inhibit the loading of this
file with the option --no-site-file
--batch
The command-line option --batch causes Emacs to run
noninteractively. The idea is that you specify Lisp programs to run;
when they are finished, Emacs should exit.
--load, -l FILE, load Emacs Lisp FILE using the load
function;
--funcall, -f FUNC, call Emacs Lisp function FUNC with
no arguments
-f FUNC
--funcall, -f FUNC, call Emacs Lisp function FUNC with
no arguments
--load, -l FILE
--load, -l FILE, load Emacs Lisp FILE using the load
function
Verilog-mode is a standard part of GNU Emacs as of 22.2.
multiple directories
AUTOINST only search in the file's directory
default.
You can append below verilog-library-directories for
multiple directories search
1 2 3
// Local Variables: // verilog-library-directories:("." "subdir" "subdir2") // End:
include("path/to/MyModule.jl") using .MyModule # !!! don't work in Pluto
struct0 = Mystruct()
activate a Julia environment and execute a file using the
command line
1
julia --project=. your_script.jl
The --project=. argument tells Julia to look for a
Project.toml and Manifest.toml file in the
current directory (indicated by .)
Sharing Project Environments
instantiate command to download and install all packages
and their dependencies listed in Project.toml (and
Manifest.toml if present)
Feature / Command
activate
generate
resolve
instantiate
Primary Goal
Switch to a specific project folder's
context.
Create a brand new project skeleton from
scratch.
Recalculate the dependency tree for the
current Julia version.
Download and install the specific versions
listed in the Manifest.
Julia Version Role
Does not check version; just points Julia
to a directory.
Creates a Project.toml
compatible with the running Julia version.
Crucial: Filters package
versions based on the [compat] julia field.
Uses the Julia version to ensure the
Manifest is valid before downloading.
Manifest Impact
None.
None (a manifest is only created once you
add packages).
Rewrites the
Manifest.toml to match the current Julia environment.
Follows the existing
Manifest.toml to recreate the environment.
Cross-Version Use
Same command works across all Julia
versions.
Standard way to start a project regardless
of Julia version.
Used to "fix" a Manifest when moving a
project to a newer/older Julia version.
Used to "build" the project once
resolve has created a valid Manifest.
Error Handling
Rarely fails (unless the path doesn't
exist).
Fails if the directory name is invalid or
already exists.
Fails if no package versions support your
running Julia version.
Fails if the Manifest was built for a
different Julia version (pre-1.11).
Basics
parentmodule: determine the package a function in Julia
originates from
names: Get a vector of the public names of a Module,
excluding deprecated names
undef: undef is a special marker used when constructing
arrays (including vectors) to indicate that the elements of the array
should not be initialized to any specific value.
collect: return an Array of all items in a collection or
iterator, collect(2:5), collect('B':'D'),
collect("HELLO")
!: a function naming convention to indicate that a
function mutates its arguments in place, meaning the changes will be
visible outside the function. When a function is designed to modify its
arguments, it is good practice to append a ! (exclamation
mark) to its name
eltype: To find the type of the elements that are
iterated over in a collection
typeof: To determine the specific type of any given
value
Any: It is used to construct a heterogeneous array that
can hold elements of any type, like
Any[1, "hello", 3.14]
^: Repeat a regex n times (s^n
is same with repeat(s, n)); Exponentiation operator
parse: convert a text string to anything else.
parse(Int, "42"), parse(Float64, "42")
String * : concatenate strings,
"The " * engine *
String $: string interpolation, use
$(variable) instead of $variable when there is
no whitespace that can clearly distinguish the variable name from the
surrounding text
vec: Reshape the array as a one-dimensional column
vector
A named tuple only allows you to use symbols as keys
All types of tuples are immutable, meaning you cannot change
them
implicit naming from identifiers
1 2 3
x = 0 t = (; x) # t is (x = 0,) u = (; t.x) # u is (x = 0,)
composite type (struct) &
type annotation
:: is used to annotate variables and expressions with
their type. x::T means variable x should have
type T. It helps Julia figure out how many bytes are needed
to hold all fields in a struct
1 2 3 4 5
struct Archer name::String health::Int arrows::Int end
closure
varargs
"varargs" (variable arguments) refers to the ability of a function to
accept an arbitrary number of arguments. This is achieved using the
splat operator (...) in the function
definition.
1 2 3 4 5 6 7
function my_sum(a, b, rest...) total = a + b for x in rest total += x end return total end
1
my_sum(1, 2, 3, 4, 5) # 15
keyword arguments
a semicolon (;) separates positional arguments
from keyword arguments in the function signature. All arguments to the
right of the semicolon are treated as keyword arguments. They can
optionally have default values
views
A view is essentially a
pointer to a sub-section of another vector,
but not a standalone vector itself
@views is a macro that converts sliced arrays into views
(pointers are much cheaper than creating copies of arrays). For more
information on how to use the view syntax correctly
semicolon after steprange
placing a semicolon ; after a step range expression
inside square brackets, e.g., [1:10;], changes the
resulting object from a UnitRange to a
Vector
1 2 3 4 5
b = [1:2:10] # Vector{StepRange{Int64, Int64}} a = [1:2:10;] # Vector{Int64}
size(b) # (1) size(a) # (5)
element-wise operations
Dot syntax for operators: For binary operators like
+, -, *, /,
^
Dot syntax for functions: For functions, the dot is placed
after the function name.
Property destructuring
1 2 3 4 5 6 7 8
julia> (; b, a) = (a=1, b=2, c=3) (a = 1, b = 2, c = 3)
julia> a 1
julia> b 2
One-line functions
"one-line function" also known as the compact
"assignment form"
1
function_name(parameters) = expression
Anonymous Functions (Lambda Functions)
functions without a name (parameters) -> expression,
often defined inline for use with higher-order functions like
map, filter, or reduce
1 2
numbers = [1, 2, 3] doubled_numbers = map(x -> 2 * x, numbers) # doubled_numbers will be [2, 4, 6]
do keyword is syntactic sugar for
creating an anonymous function and passing it as the
first argument to another function
1 2 3 4
map([1, 2, 3]) do x y = x * 2 return y + 1 end
do starts the block.
x, y (optional) following do are the
arguments the anonymous function receives.
end closes the block
CircularBuffer
Feature
Vector (Standard)
CircularBuffer
(DataStructures.jl)
Push/Pop Front
\(O(n)\)
(Shifts all elements)
\(O(1)\)
(Updates head pointer)
Push/Pop Back
\(O(1)\)
(Amortized)
\(O(1)\)
Random Access
\(O(1)\)
(Direct)
\(O(1)\)
(With index wrapping logic)
Capacity
Dynamic: Grows as
needed
Fixed: Initialized at set
size
Overflow
Reallocates memory
Overwrites the oldest
data
Memory Layout
Contiguous
Contiguous (internally wraps)
Best Use Case
General collections / Appending
Sliding windows / Real-time buffers
1 2 3 4 5 6 7 8 9 10 11 12
using DataStructures
# Initialize a CircularBuffer of type Int with capacity 3 cb = CircularBuffer{Int}(3)
# Add elements push!(cb, 1) # [1] push!(cb, 2) # [1, 2] append!(cb, [3, 4]) # [2, 3, 4] (1 is overwritten because capacity is 3)
# Add to the front pushfirst!(cb, 0) # [0, 2, 3] (4 is overwritten)
push!(cb, item): Adds a single item to
the back of the buffer. If the buffer is at its capacity, the item at
the front (the oldest) is removed to make room.
append!(cb, collection): Adds multiple
items from another collection to the back of the buffer. This is
essentially a shorthand for calling push! on each element
of the collection.
Feature
push!
append!
Input
A single item
A collection of
items
Action
Adds one element as a single entry
Unpacks all elements from the input
using vs
import
that’s the difference between using and
import - the former brings all exported names into scope,
while the latter only brings NiceStuff (the module identifier) into
scope.
Since the discrete Fourier Transform of real input is
Hermitian-symmetric, the negative frequency terms are
taken to be the complex conjugates of the corresponding positive
frequency terms
scipy.signal.residue: (H(s) = )
Converts numerator/denominator arrays into residues, poles, and a direct
polynomial
scipy.signal.invres: (H(s) ) Converts
residues, poles, and a direct polynomial back into numerator/denominator
arrays
defmake_ctle(rx_bw: float, peak_freq: float, peak_mag: float, w: Rvec) -> tuple[Rvec, Cvec]: # pylint: disable=too-many-arguments # noqa: F405 """ Generate the frequency response of a continuous time linear equalizer (CTLE), given the: - signal path bandwidth, - peaking specification, and - list of frequencies of interest. Args: rx_bw: The natural (or, unequalized) signal path bandwidth (Hz). peak_freq: The location of the desired peak in the frequency response (Hz). peak_mag: The desired relative magnitude of the peak (dB). w: The list of frequencies of interest (rads./s). - The zero location is chosen, so as to provide the desired degree of peaking. """
p2 = -2.0 * pi * rx_bw p1 = -2.0 * pi * peak_freq z = p1 / pow(10.0, peak_mag / 20.0) if p2 != p1: r1 = (z - p1) / (p2 - p1) r2 = 1 - r1 else: r1 = -1.0 r2 = z - p1 b, a = invres([r1, r2], [p1, p2], []) w, H = freqs(b, a, w) H /= max(abs(H))
return (w, H)
np.where
There are actually two distinct call signatures:
Call
Returns
Use
np.where(cond, a, b)
array, a/b chosen element-wise
select values
np.where(cond)
tuple of index arrays where cond is
True
find positions
Matlab
LaTeX code for the expression
1 2 3
title('$c(T) = (\eta - m) \frac{k}{q} \left( T - T_r - T \cdot \ln \frac{T}{T_r} \right) < 0$', 'Interpreter', 'latex');
ylabel('$c(T)$ mV', 'Interpreter', 'latex');
Dollar Signs ($): Wrapping the equation
in $...$ tells the LaTeX engine to use "inline math mode,"
which ensures proper spacing and formatting for symbols.
Interpreter: Adding
'Interpreter', 'latex' at the end is the "switch" that
tells MATLAB not to use its basic text engine.
identify class of an object or variable
1 2 3
x = 42; type_name = class(x); % Returns 'double' disp(type_name)
zpk
Use zpk to create zero-pole-gain models
sys = zpk(zeros,poles,gain) creates a
continuous-time zero-pole-gain model with zeros and
poles specified as vectors and the scalar value of gain.
sys = zpk(zeros,poles,gain,ts) creates a
discrete-time zero-pole-gain model with sample time ts.
Set ts to -1 or [] to leave the
sample time unspecified.
zpkdata
Access zero-pole-gain data
1
[z,p,k] = zpkdata(sys,'v')
the sampling time associated with that ZPK data
1
Ts = sys_d.Ts; % Returns the sampling interval (1/fs)
% 1. Define Continuous ZPK Model fc = 10; % Cutoff frequency in Hz wc = 2 * pi * fc; % Cutoff frequency in rad/s
z = []; % No zeros p = -wc; % Single pole at -wc k = wc; % Gain (to ensure DC gain = 1)
sys_c = zpk(z, p, k);
% 2. Convert to Discrete via Bilinear Transformation fs = 100; % Sampling frequency in Hz dt = 1/fs;
% 'tustin' flag is the standard name for the bilinear transformation in control theory sys_d = c2d(sys_c, dt, 'tustin'); % 'tustin' is the Bilinear method in MATLAB
% Extract zeros, poles, and gain from sys_c [zc, pc, kc] = zpkdata(sys_c, 'v'); [zd, pd, kd] = bilinear(zc, pc, kc, fs); sys_dbli = zpk(zd, pd, kd, dt);
By using NaN, the surf command will simply
not render any polygons over the invalid coordinates. Your 3D plot will
sharply truncate exactly at the physical layout boundary rule line
(\(nsab = nsodab\))
[num_cell, den_cell] = tfdata(sys)
returns cell arrays to accommodate
Multi-Input Multi-Output (MIMO) systems
[num, den] = tfdata(sys, 'v')
returns row vectors to accommodate
Single-Input Single-Output (SISO) system
Using 'v' simplifies data handling for single systems by
eliminating the need to extract data from cells using curly braces
{}
1 2 3 4 5 6 7 8 9 10 11 12 13 14
% Create a transfer function model s = tf('s'); sys = (s + 2) / (s^2 + 3*s + 2);
% Default output (returns cell arrays) [num_cell, den_cell] = tfdata(sys); % num_cell 1×1 cell array is {[0 1 2]}, num_cell{1} is [0 1 2] % den_cell 1×1 cell array is {[1 3 2]}, den_cell{1} is [1 3 2]
% Using the 'v' option (returns numerical row vectors) [num, den] = tfdata(sys, 'v'); % num is [0 1 2] % den is [1 3 2]
Simulink
Quick Insert menu
Single-click anywhere on the empty white space of
your model canvas.
Type the name of the block you want (e.g., "Gain",
"Scope", or "Triggered Subsystem")
Sequential Execution: If multiple actions are assigned to a
single event (e.g., WhenEvent[cond, {action1, action2}]),
they are evaluated in order.
DiscreteVariables in NDSolve: handle state
variables that only change at specific, discontinuous moments rather
than changing continuously with the independent variable (usually time
\(t\)), solution returned will be a
piecewise constant
Markdown
> [!NOTE]: General useful
information
[!NOTE]
> [!IMPORTANT]: Crucial information
for user success
[!IMPORTANT]
> [!WARNING]: Urgent information to
avoid potential problems
[!WARNING]
> [!TIP]: Helpful advice or better
ways to do things
[!TIP]
> [!CAUTION]: Negative consequences
or risks of certain actions
[!CAUTION]
subscript and superscript
HTML Tags (Universal Compatibility)
Subscript syntax:text<sub>subscript</sub>
Superscript syntax:text<sup>superscript</sup>
H<sub>2</sub>O
H2O
X<sup>2</sup>
X2
LaTeX Math Blocks
text color by embedding inline HTML
tags
Style Type
HTML Snippet Example
Color Name
<span style="color:blue">Blue Text</span>Blue Text
Hex Code
<span style="color:#FF5733">Orange Text</span>Orange Text
RGB Value
<span style="color:rgb(0, 128, 0)">Green Text</span>Green Text
Background Color
<span style="background-color:yellow">Highlighted Text</span>Highlighted Text
Combined
<span style="color:white; background-color:black">White text on black</span>White text on
black
Latex
In math mode, LaTeX provides several commands to insert horizontal
space of specific widths:
Command
Width
Name
\,
3/18 em
thin space
\:
4/18 em
medium space
\;
5/18 em
thick space
\!
−3/18 em
negative thin space
\quad
1 em
quad
\qquad
2 em
double quad
\operatorname{...} — math operator in
an upright (roman) font with appropriate mathematical spacing \[
\operatorname{sinc}(x)
\]
\textcolor (Argument-Based)
How it works: It takes exactly two arguments:
\textcolor{color}{content}.
Scope: It limits the color strictly to the content
inside the second set of curly braces.
Spacing: It automatically preserves proper
mathematical spacing around the colored elements.
Best for: Coloring individual variables, specific
numbers, or small terms.
\color (Switch-Based)
How it works: It acts as a toggle switch:
\color{color}.
Scope: It colors everything that
follows it until it hits the end of the current environment or a closing
curly brace }.
Spacing: It can sometimes disrupt standard
mathematical spacing if not enclosed in braces.
Best for: Coloring large sections, full equations,
or entire document blocks.
Using \textcolor (Precise Targeting): takes the content
as an argument
1
\textcolor{red}{E} = \textcolor{blue}{mc^2}
\[
\textcolor{red}{E} = \textcolor{blue}{mc^2}
\]
Using \color (The "Bleeding" Switch): changes the color
of everything after it If you do not isolate it
1
{\color{red}{E}} = \color{blue}mc^2
\[
{\color{red}{E}} = \color{blue}mc^2
\]
To make \color behave like \textcolor, you
must manually wrap the command and the target character inside a hidden
group using extra curly braces { ... }
Set-Builder Notation and Conditional
Probability
1
P(A \mid B)
\[
P(A \mid B)
\]
1
\left\{ x \in\mathbb{R} \mid x > 0 \right\}
\[
\left\{ x \in \mathbb{R} \mid x > 0 \right\}
\]
evaluation bar
1
\bigg\rvert_{…}
\[
\frac{df}{dx}\bigg\rvert_{x=0}
\]
1
\left. \right|
\[
\left. \frac{df}{dx}\right|_{x=0}
\]
math alphabet commands
Blackboard Bold
Roman/Upright
Bold face
Calligraphic/Script
\mathbb
\mathrm
\mathbf
\mathcal
\(\mathbb{F}\mathbb{L}\)
\(\mathrm{F}\mathrm{L}\)
\(\mathbf{F}\mathbf{L}\)
\(\mathcal{F}\mathcal{L}\)
implication arrow
\implies produces \(\implies\) (displays a long arrow with
proper math spacing).
\Rightarrow produces \(\Rightarrow\) (displays a standard-length
double right arrow).
\longrightarrow produces \(\longrightarrow\) (displays a long single
right arrow)
Mermaid is a JavaScript based diagramming and charting tool
that takes Markdown-inspired text definitions and creates diagrams
dynamically in the browser
graph TD;A-->B;A-->C;B-->D;C-->D;
WaveDrom
WaveDrom is a JavaScript application. WaveJSON is a format that
describes Digital Timing Diagrams. WaveDrom renders the diagrams
directly inside the browser.
C++
Using g++ only
conditional.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include<iostream>
#define na 4
intmain(){ int a[na];
a[0] = 2; for (int n = 1; n < na; n++) a[n] = a[n-1] + 1;
#ifdef DEBUG // Only kept by preprocessor if DEBUG defined for (int n = 0; n < na; n++) { std::cout << "a[" << n << "] = " << a[n] << std::endl; } #endif return0; }
An extremely fast Python package and project manager, written in
Rust.
draw.io
rounded
corners
"Abs. arc size" stands for Absolute Arc
Size. It is a shape property that controls how rounded corners
are calculated when you resize a shape.
When disabled (Percentage-based, default): The
corner radius scales dynamically with the size of the shape. If you make
a small rectangle massive, the rounded corners will grow proportionally
larger.
When enabled (Absolute value): The corner radius
stays fixed at an exact pixel value, regardless of how large or small
you resize the shape. This ensures consistent corner styling across
shapes of different dimensions
Before inserting sign-off metal fill, stream out a GDSII stream file
of the current database. Specify the mapping file and units that match
with the rule deck you specify while inserting metal fill. If necessary,
include the detailed-cell (-merge option) Graphic Database
System (GDS).
Just replace run_pvs_metal_fill with
run_pegasus_metal_fill
Note: Innovus metal fill (e.g.
addMetalFill, addViaFill, etc.) does not
support 20nm and below node design rules. We strongly recommend the
Pegasus/PVS metal fill solution for 20nm and below. If you have sign-off
metal fill rule deck for 28nm and above available, we recommend you to
move to Pegasus/PVS solution too.
trimMetalFillNearNet does not check DRC rules. It
only removes the metal fill with specified spacing
Do not perform ECO operations after dump in
sign-off metal fill (by run_pvs_metal_fill or
run_pegasus_metal_fill), especially, at 20nm and below
nodes.
If you perform an ECO action, the tool cannot get DRC clean
because trimMetalFill does not support 20nm and below node
design rules.
The sign-off metal fill typically does not cause DRC issues with
regular wires.
The run_pvs_metal_fill command does the following:
Runs PVS with the fill rules to create a GDSII output file.
Converts the GDSII to a DEF format file based on the GDSII to DEF
layermap provided.
Loads the resulting DEF file into Innovus.
Pegasus is similar to PVS, shown as below,
The run_pegasus_metal_fill command does the
following:
Runs Pegasus with the fill rules to create a GDSII output file.
Converts the GDSII to a DEF format file based on the GDSII to DEF
layermap provided.
Loads the resulting DEF file into Innovus.
Reference:
Innovus User Guide, Product Version 21.12, Last Updated in November
2021
How
does EDI System identify spare cells in a post-mask ECO flow?
How
does EDI System identify spare cells in a post-mask ECO flow?
Spare cells should have a unique string in their instance name to
identify them. Then the command specifySpareGate or
ecoDesign -useSpareCells patternName is run to identify the
spare instances. For example, if all spare cells have _spare_ in their
name then they are identified using:
1
specifySpareGate -inst *_spare_*
OR
1
ecoDesign -spareCells *_spare_* ...
Note: if you are making manual ECO
changes to a netlist and converting a spare cell to a logical instance,
it's important to change the instance name. Otherwise,
the instance may be identified as a spare cell if a future ECO is
performed because it still has the spare cell instance name.
Note: sparecell's pointer and name is swapped with
the placed cell.
Error in "Innovus
Text Command Reference 21.12"
ecoSwapSpareCell
If the cell to be swapped is unplaced, it is mapped to the spare
cell. *instName* is deleted, and its connection is
transferred to the spare cell. If the cell to be swapped is placed, it
is swapped with the spare cell and is renamed to
*instNameSuffix* if the -suffix option is
used. If a suffix is not specified, the *instName* cell is
renamed to *spareCellInstName*. The *instName*
cell's connections are transferred to *spareCellInstName*.
The input of *instName* is tielo, based on the
global connection definition.
In Visio, open the file you want to appear in the Word
document.
Make sure nothing is selected, and then, on the Home
tab, select Copy or press Ctrl+C
paste
In Word, select where you want the Visio drawing to
appear and then select Paste or press
Ctrl+V
In PowerPoint or Excel, On the Home
tab, select Paste > Paste Special, and then select
Microsoft Visio Drawing Object
LSF (Platform Load Sharing
Facility)
bjobs: Displaying Job Status
bkill: cancels pending batch jobs and sends signals to
running jobs
bhosts: displays hosts and their static and dynamic
resources
busers: displays information about the user who runs the
command
Module System
module avail: Lists the modules currently available to
load on the system
module list: Lists the modules currently loaded in the
user environment.
module load|add: This loads the
requested module into the active environment
module purge: To clear all modules
module rm|unload: To unload a
module
module switch|swap: To change the version of a loaded
software module
unlock "secured"
(read-protected) PDF
1 2 3 4 5 6 7 8
# Source - https://stackoverflow.com/a/63422342 # Posted by Satish Dubey, modified by community. See post 'Timeline' for change history # Retrieved 2026-01-05, License - CC BY-SA 4.0
import pikepdf
pdf = pikepdf.open('filepath', allow_overwriting_input=True) pdf.save('filepath')
MATLAB
Win10 Unable to open the requested feature. Error code: -202
clear AppData\Roaming\MathWorks\MATLAB
miniconda3/envs/myenv/bin/../lib/libstdc++.so.6:
version `GLIBCXX_3.4.32' not found
$ sudo lvdisplay --- Logical volume --- LV Path /dev/rl/swap LV Name swap VG Name rl LV UUID toZKEu-P5oV-6WOV-026Z-eFnI-xaSP-FgEbz5 LV Write Access read/write LV Creation host, time myserver, 2021-12-03 21:28:03 +0800 LV Status available # open 2 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1
--- Logical volume --- LV Path /dev/rl/root LV Name root VG Name rl LV UUID S2soRE-umc7-Z6b3-i44x-TiBO-ulnk-ETgEoj LV Write Access read/write LV Creation host, time myserver, 2021-12-03 21:28:03 +0800 LV Status available # open 1 LV Size <194.00 GiB Current LE 49663 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
compile vim from
source with GUI support
1 2 3 4
# gtk3 in Rocky Linux 8.5 ./configure --with-features=huge --enable-gui=gtk3 --enable-python3interp --prefix=/usr make -j`nproc` sudo make install
binkey
Inserting a new line below: o
above: O
To insert before the cursor: i
After: a
Before the line (home): I
Append at the end of line: A
network connection using
nmcli
Problem
There is no network connection and device is not managed
1 2 3 4
$ nmcli device status DEVICE TYPE STATE CONNECTION eth0 ethernet unmanaged -- lo loopback unmanaged --
solution
1
sudo nmcli networking on
Then, eth0 is connected
1 2 3 4
$ nmcli device status DEVICE TYPE STATE CONNECTION eth0 ethernet connected Ethernet connection 1 lo loopback unmanaged --
What
is the proper method to remove old kernels from a Red Hat Enterprise
Linux system?
Red Hat Enterprise Linux 8
The YUM version 4 (based on the upstream DNF project)
method for removing kernels and keeping only the latest version and
running kernel:
1
$ yum remove --oldinstallonly
From the yum man page:
1 2 3
dnf [options] remove --oldinstallonly Removes old installonly packages, keeping only latest versions and version of running kernel.
New
windows and forms appear behind the Library Manager in background when
using GNOME 3
Using Red Hat Enterprise Linux 8, Rocky
Linux 8 and the GNOME 3 window manager, the
new Virtuoso Schematic/Layout/ADE windows and forms sometimes pop up
under or below the Library Manager or on the desktop in
the background instead of the foreground and cannot be seen. Sometimes,
they are iconized; they do not come on the top in front, though it is
the most recent window opened.
solution
Install Focus my window GNOME Shell extension
reference
Article (11612426) Title: New windows and forms appear behind the
Library Manager in background or iconized instead of foreground on RHEL
and SuSE Linux in GNOME, KDE Desktop, Metacity window manager