8. Flows directory
8.1. asicflow
A configurable ASIC compilation flow.
The ‘asicflow’ includes the stages below. The steps syn, floorplan, physyn, place, cts, route, and dfm have minimizataion associated with them. To view the flowgraph, see the .png file.
import: Sources are collected and packaged for compilation
syn: Translates RTL to netlist using Yosys
floorplan: Floorplanning
physyn: Physical Synthesis
place: Global and detailed placement
cts: Clock tree synthesis
route: Global and detailed routing
dfm: Metal fill, atenna fixes and any other post routing steps
export: Export design from APR tool and merge with library GDS
sta: Static timing analysis (signoff)
lvs: Layout versus schematic check (signoff)
drc: Design rule check (signoff)
The syn, physyn, place, cts, route steps supports per process options that can be set up by setting ‘<step>_np’ arg to a value > 1, as detailed below:
syn_np : Number of parallel synthesis jobs to launch
floorplan_np : Number of parallel floorplan jobs to launch
physyn_np : Number of parallel physical synthesis jobs to launch
place_np : Number of parallel place jobs to launch
cts_np : Number of parallel clock tree synthesis jobs to launch
route_np : Number of parallel routing jobs to launch
Setup file: asicflow.py
8.1.1. Configuration
8.1.1.1. asicflow
8.2. asictopflow
A flow for stitching together hardened blocks without doing any automated place-and-route.
This flow generates a GDS and a netlist for passing to a verification/signoff flow.
Setup file: asictopflow.py
8.2.1. Configuration
8.2.1.1. asictopflow
Keypath |
Value |
surelog |
|
import |
|
('import', '0') |
|
yosys |
|
syn_asic |
|
('import', '0') |
|
klayout |
|
export |
|
builtin |
|
join |
8.3. dvflow
A configurable constrained random stimulus DV flow.
The verification pipeline includes the followins teps:
import: Sources are collected and packaged for compilation
compile: RTL sources are compiled into object form (once)
testgen: A random seed is used to generate a unique test
refsim: A golden trace of test is generated using a reference sim.
sim: Compiled RTL is exercised using generated test
compare: The outputs of the sim and refsim are compared
signoff: Parallel verification pipelines are merged and checked
The dvflow can be parametrized using a single ‘np’ parameter. Setting ‘np’ > 1 results in multiple independent verificaiton pipelines to be launched.
Setup file: dvflow.py
8.3.1. Configuration
8.3.1.1. dvflow
Keypath |
Value |
verilator |
|
import |
|
('import', '0') |
|
verilator |
|
compile |
|
('compile', '0') |
|
verilator |
|
testgen |
|
('compile', '0') |
|
verilator |
|
testgen |
|
('compile', '0') |
|
verilator |
|
testgen |
|
('compile', '0') |
|
verilator |
|
testgen |
|
('compile', '0') |
|
verilator |
|
testgen |
|
('testgen', '0') |
|
verilator |
|
refsim |
|
('testgen', '1') |
|
verilator |
|
refsim |
|
('testgen', '2') |
|
verilator |
|
refsim |
|
('testgen', '3') |
|
verilator |
|
refsim |
|
('testgen', '4') |
|
verilator |
|
refsim |
|
('refsim', '0') |
|
verilator |
|
sim |
|
('refsim', '1') |
|
verilator |
|
sim |
|
('refsim', '2') |
|
verilator |
|
sim |
|
('refsim', '3') |
|
verilator |
|
sim |
|
('refsim', '4') |
|
verilator |
|
sim |
|
('sim', '0') |
|
verilator |
|
compare |
|
('sim', '1') |
|
verilator |
|
compare |
|
('sim', '2') |
|
verilator |
|
compare |
|
('sim', '3') |
|
verilator |
|
compare |
|
('sim', '4') |
|
verilator |
|
compare |
|
|
|
verify |
|
signoff |
8.4. fpgaflow
A configurable FPGA compilation flow.
The ‘fpgaflow’ module is a configurable FPGA flow with support for open source and commercial tool flows. The fpgaflow relies on the FPGA partname to determine which design tools to use for RTL to bitstream generation. All flows go through a common design import step that collects all source files from disk before proceeding. The implementation pipeline and tools used depend on the FPGA device being targeted. The following step convention is recommended for tools.
import: Sources are collected and packaged for compilation
syn: Synthesize RTL into an device specific netlist
apr: FPGA specific placement and routing step
bitstream: Bitstream generation
program: Program the device
Some FPGA target flows have a single ‘compile’ step that combines the syn, apr, and bitstream steps.
The fpgaflow can be configured througthe following schema parameters
Schema keypaths:
[‘fpga’, ‘partname’]: Used to select partname to vendor and tool flow
[‘fpga’, ‘program’]: Used to turn on/off HW programming step
Setup file: fpgaflow.py
8.4.1. Configuration
8.4.1.1. fpgaflow
8.5. lintflow
A configurable RTL linting flow.
Setup file: lintflow.py
8.5.1. Configuration
8.5.1.1. lintflow
Keypath |
Value |
surelog |
|
import |
|
('import', '0') |
|
verilator |
|
lint |
|
('lint', '0') |
|
nop |
|
nop |
8.6. showflow
A flow to show the output files generated from other flows.
Required settings for this flow are below:
filetype : Type of file to show
Optional settings for this flow are below:
np : Number of parallel show jobs to launch
screenshot : true/false, indicate if this should be configured as a screenshot
Setup file: showflow.py
8.6.1. Configuration
8.6.1.1. showflow
Keypath |
Value |
builtin |
|
import |
|
('import', '0') |
|
show |
|
('import', '0') |
|
show |
|
('import', '0') |
|
show |
8.7. signoffflow
A flow for running LVS/DRC signoff on a GDS layout.
Inputs must be passed to this flow as follows:
flow.input('<path-to-layout>.gds')
flow.input('<path-to-netlist>.vg')
Setup file: signoffflow.py
8.7.1. Configuration
8.7.1.1. signoffflow
Keypath |
Value |
builtin |
|
import |
|
('import', '0') |
|
magic |
|
extspice |
|
('import', '0') |
|
magic |
|
drc |
|
('extspice', '0') |
|
netgen |
|
lvs |
|
|
|
builtin |
|
join |