How to Run Synopsys Design Compiler ASIC Synthesis
Goal: Run ASIC synthesis using Synopsys Design Compiler (DC) for an existing ruckus-based project.
Prerequisites
Before running synthesis, ensure the following are in place:
Licensed Synopsys DC installation with the
dc_shell-xg-tbinary on PATHA technology library with compiled liberty (
.db) filesDIG_TECHandSTD_CELL_LIBset in the projectMakefileProject
Makefileincludessystem_synopsys_dc.mk
Makefile Setup
Add the following to your project Makefile before the ruckus include line.
Replace the example paths with your actual library installation paths.
export DIG_TECH = /path/to/tech/library
export STD_CELL_LIB = /path/to/cells.db
include $(TOP_DIR)/submodules/ruckus/system_synopsys_dc.mk
Top-Level ruckus.tcl Structure
Unlike the Vivado build flow, the Synopsys Design Compiler flow requires you to call
GenBuildString and AnalyzeSrcFileLists explicitly in your project’s top-level
ruckus.tcl. The key difference from the Cadence Genus flow is that
AnalyzeSrcFileLists is called after each loadRuckusTcl with a -vhdlLib
argument naming the library that was just loaded, rather than once at the end.
# Load RUCKUS environment and library
source $::env(RUCKUS_QUIET_FLAG) $::env(RUCKUS_PROC_TCL)
# Load the surf library
loadRuckusTcl "$::env(TOP_DIR)/submodules/surf"
AnalyzeSrcFileLists -vhdlLib "surf"
# Load ruckus library (ruckus.BuildInfoPkg.vhd only)
GenBuildString $::env(SYN_DIR)
AnalyzeSrcFileLists -vhdlLib "ruckus"
# Analyze source code loaded into ruckus for Synopsys DC
AnalyzeSrcFileLists -vhdlLib "work" -vhdlTop $::env(PROJECT)
Steps
Run synthesis:
make synThis invokes the Design Compiler command (
dc_shell-xg-t -64bit -topographical_mode -f syn.tclby default) with colored status output through$(DC_MSG). Parallelism is auto-detected from/proc/cpuinfounless overridden withPARALLEL_SYNTH.Run VCS simulation (if VCS is available):
make simSources
sim.shto run a VCS simulation against the synthesized netlist.
Output Artifacts
After a successful make syn run, outputs follow the same directory structure
as the Cadence Genus flow:
$(OUT_DIR)/syn/out/— output netlists and reports$(IMAGES_DIR)/— final promoted artifacts
Key Variables
Variable |
Default |
Description |
|---|---|---|
|
(none) |
Digital technology library path. Must be set by user. |
|
(none) |
Standard cell library ( |
|
|
Number of parallel synthesis cores. |
|
|
Full Design Compiler invocation command. Override to use a different DC variant or mode. |
|
auto (from |
CPU count used for parallelism. Auto-detected if not set. |
|
|
VCS simulation timescale used by |
|
|
Git dirty-state check bypassed by default in ASIC flows. |
Note
GIT_BYPASS = 1 means the git dirty-state check is disabled by default.
Set GIT_BYPASS = 0 to re-enable it if your flow requires provenance tracking
via git status.
See the Makefile Reference for the complete variable reference.
Troubleshooting
- “dc_shell-xg-t: command not found”
Source the Synopsys tool setup script before running make. This is typically:
source /path/to/synopsys/settings.sh
The exact path depends on your site’s Synopsys installation. Check with your EDA administrator if the standard location is not known.
- “Cannot read library file”
Verify that
STD_CELL_LIBpoints to the compiled.dbfile, not the.libsource. Design Compiler requires pre-compiled.dbformat. If you only have.libfiles, compile them first usinglc_shell.