How to Run Cadence Genus ASIC Synthesis
Goal: Run ASIC synthesis using Cadence Genus for an existing ruckus-based project.
Prerequisites
Before running synthesis, ensure the following are in place:
Licensed Cadence Genus installation with the
genusbinary on PATHA PDK with liberty (
.lib) and LEF (.lef) filesPDK_PATH,STD_CELL_LIB,STD_LEF_LIB, andOPERATING_CONDITIONset in the projectMakefileProject
Makefileincludessystem_cadence_genus.mk
Makefile Setup
Add the following to your project Makefile before the ruckus include line.
Replace the example paths with your actual PDK installation paths.
export PDK_PATH = /path/to/pdk
export OPERATING_CONDITION = tt_0p8v_25c
export STD_CELL_LIB = $(PDK_PATH)/lib/cells.lib
export STD_LEF_LIB = $(PDK_PATH)/lef/cells.lef
include $(TOP_DIR)/submodules/ruckus/system_cadence_genus.mk
Top-Level ruckus.tcl Structure
Unlike the Vivado build flow (which automatically calls GenBuildString and
AnalyzeSrcFileLists internally), the Cadence Genus flow requires you to call
these procedures explicitly in your project’s top-level ruckus.tcl. The
GenBuildString call generates the build-metadata VHDL package; AnalyzeSrcFileLists
passes all source files collected by prior loadRuckusTcl calls to Genus for analysis.
# Load RUCKUS environment and library
source $::env(RUCKUS_QUIET_FLAG) $::env(RUCKUS_PROC_TCL)
# Load ruckus library (ruckus.BuildInfoPkg.vhd only)
GenBuildString $::env(SYN_DIR)
# Load the surf library
loadRuckusTcl "$::env(TOP_DIR)/submodules/surf"
# Load the work library
loadRuckusTcl "$::env(TOP_DIR)/shared"
# Analyze source code loaded into ruckus for Cadence Genus
AnalyzeSrcFileLists
Steps
Run synthesis:
make synThis invokes
genus -f syn.tclusing the variables you configured above. Synthesis runs with up toMAX_CORESparallel threads (default: 8).Export a behavioral Verilog netlist (optional):
make behavioral_verilogRuns
genus -f behavioral_verilog.tclto export the post-synthesis netlist. Useful for downstream gate-level simulation or handoff to a P&R tool.Run VCS simulation (if VCS is available):
make simSources
sim.shto run the VCS simulation flow against the synthesized netlist.
Output Artifacts
After a successful make syn run, outputs are placed in the following locations:
$(OUT_DIR)/syn/— synthesis working directory$(OUT_DIR)/syn/out/— output netlists and reports$(OUT_DIR)/syn/out/reports/— timing and area reports$(OUT_DIR)/syn/out/svf/— SVF (Scan and Test Verification File)$(IMAGES_DIR)/— final promoted artifacts
Key Variables
Variable |
Default |
Description |
|---|---|---|
|
(none) |
Path to the PDK root. Must be set by user. |
|
(none) |
Timing corner name (e.g., |
|
(none) |
Standard cell liberty file path ( |
|
(none) |
Standard cell LEF file path ( |
|
|
Number of parallel synthesis cores passed to Genus. |
|
|
Git dirty-state check bypassed by default in ASIC flows. |
Note
GIT_BYPASS = 1 means the git dirty-state check is disabled by default.
ASIC flows typically manage provenance through other mechanisms (e.g., SVF).
Set GIT_BYPASS = 0 to re-enable the check if your flow requires it.
See the Makefile Reference for the complete variable reference.
Troubleshooting
- “Cannot find liberty file”
Verify that
STD_CELL_LIBpoints to the.libfile itself, not to the PDK root directory. The value should be a full path to a single file, for example$(PDK_PATH)/lib/cells.lib.- “genus: command not found”
Source the Cadence tool setup script for your installation before running make. This is typically a script such as
cadence_init.shor a module load command provided by your site’s EDA environment.