SystemVerilog clocking block
Assignment at <interface>.<clocking block>.<output signal> (i.e. synchronous) do NOT change <interface>.<output signal> until active clock edge.
1 | // router_io.sv |
All interface signals are asynchronous and without a direction spection (i.e. input, output, inout).
- The direction can only be specified in
clocking
block for synchronous signals- or a
modport
for asynchronous signalsAll directions for the signals in the clocking block must be with respect to the test program;
1 | // test.sv |
1 | // router_test_top.sv |
compile:
1 | $ vcs -sverilog -full64 -kdb -debug_access+all router_test_top.sv test.sv router_io |
file with `
timescale
must be placed in the first, which isrouter_test_top.sv
in above example
clocking.output
systemverilog don't pass clocking.output to interface's until current or next active edge and after output-skew
clocking.input
Systemverilog automatically update clocking.input signal from interface's value, input-skew before active edge
Gotcha
An interface
must be compiled separately like a
module
and CANNOT `include
inside a
package
or ohter module
Innovus check mode variants
checkDesign
check_timing
checkPlace
setDesignMode
setFPlanMode
setEcoMode
setPlaceMode
setRouteMode
setExtractRCMode
setOptMode
Innovus Fix DRC Violation
1 | clearDrc |
Innovus Path Based Analysis
aocv : Re-timing the timing critical paths using the LOCV deratingfactors
path_slew_propagation : Re-timing the timing critical paths using the actual slews for thepath
aocv_path_slew_propagation : Combination of re-timing with aocv + path_slew_propagation
waveform_propagation : Re-timing with waveform effect taken into consideration during delayCal
compile vim from source with GUI support
1 | # gtk3 in Rocky Linux 8.5 |
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