Run:
Check:
check_design list_designs Clock create_clock -name clk -period 10.0 [get_ports clk] set_clock_uncertainty -setup 0.5 [get_clocks clk] set_clock_transition 0.3 [get_clocks clk] set_clock_latency 0.8 [get_clocks clk] Input/Output Delays set_input_delay -max 2.5 -clock clk [all_inputs] set_output_delay -max 1.8 -clock clk [all_outputs] remove_input_delay [get_ports clk] # exclude clock port Input transition & output load set_input_transition 0.2 [all_inputs] set_load 0.05 [all_outputs] Timing exceptions (solid for real designs) set_false_path -from [get_ports test_mode*] set_multicycle_path -setup 2 -hold 1 -through [get_pins slow_cell/Q] 4. Compile (Synthesis) Basic compile compile_ultra # strongly recommended over old "compile" Area optimization compile_ultra -area_high_effort Power optimization set_power_optimization true compile_ultra -gate_clock Incremental (small improvements) compile_ultra -incremental 5. Check Quality of Results # Timing report_timing -delay_type max -nworst 10 report_timing -delay_type min # for hold Area report_area -hierarchy Power (if power analysis enabled) report_power -analysis_effort high Constraints coverage check_timing report_clock -attributes 6. Save Results # Netlist write -format verilog -hierarchy -output mapped/design.vg Standard Delay Format (SDF) for post-synthesis sim write_sdf -version 2.1 mapped/design.sdf Constraints (output final constraints) write_script -output mapped/design_cons.tcl Report timing in a file redirect -tee -file reports/timing.rpt report_timing -delay_type max 7. Full Example Script (solid foundation) # synth.tcl set SSLIB "saed90nm_typ.db" set target_library $SSLIB set link_library [list "*" $SSLIB] read_verilog rtl/top.v rtl/alu.v rtl/ctrl.v current_design top link check_design synopsys design compiler tutorial
# .synopsys_dc.setup set search_path [list . ./rtl ./lib] set target_library "saed90nm_typ.db" set link_library [list "*" $target_library] set symbol_library "saed90nm.sdb" set synthetic_library "dw_foundation.sldb" dc_shell -topo # for topographical mode (more accurate) dc_shell # normal mode 2. Read RTL Design # Read all Verilog/VHDL files read_verilog top_module.v sub_module1.v sub_module2.v Or use analyze & elaborate (for VHDL/Verilog with parameters) analyze -format verilog -lib WORK file1.v file2.v elaborate top_module
report_timing > reports/timing.rpt report_area > reports/area.rpt write -format verilog -output results/top_synth.v write_sdf results/top.sdf Save Results # Netlist write -format verilog -hierarchy
compile_ultra
Here’s a for Synopsys Design Compiler (DC) — focusing on the key features you’ll actually use to synthesize RTL to a gate-level netlist. Read RTL Design # Read all Verilog/VHDL files
This assumes you have basic UNIX/Linux knowledge and access to a Synopsys environment. Setup file ( .synopsys_dc.setup ) Create this in your working directory or home directory:
create_clock -period 10 [get_ports clk] set_input_delay 2 -clock clk [all_inputs] set_output_delay 2 -clock clk [all_outputs]