W06 - RTL Synthesis Using Synopsys Design Compiler
W06 - RTL Synthesis Using Synopsys Design Compiler
Synopsys
Design Compiler
Chao-Tsung Huang
• Reference
– Synopsys DC Documents
• at /usr/cad/synopsys/synthesis/”Design Compiler”
• “Design Compiler.xls” for TOC (can be opened by soffice “Design Compiler.xls”)
• especially, dcug.pdf and tcoug.pdf (synqr.pdf: quick ref)
– TSRI Synthesis Training Materials
EE4292 IC Design Lab, Fall 2024 2
Basic Design Flow with DC
HDL
Constraints
(SDC)
Datapath optimization/ Timing/Power
Timing optimization/ Analysis
Technology
Library Area optimization/
Power optimization/ Formality
Scan chain synthesis Check
IP/DesignWare
Library Design Compiler
Synthesized netlist
P&R
DC: Design Compiler
SDC: Synthesis design constraint
TOTAL
ELAPSED WORST NEG SETUP DESIGN
TIME AREA SLACK COST RULE COST ENDPOINT
--------- --------- --------- --------- --------- -------------------------
0:01:35 261209.3 3.33 3406.4 648.6
0:01:40 262075.3 3.31 3388.4 648.6
0:01:40 262075.3 3.31 3388.4 648.6
0:01:40 262075.3 3.31 3388.4 648.6
Re-synthesis Optimization (Phase 1)
Re-synthesis Optimization (Phase 2) Worst slack
0:01:45 262075.3 3.31 3388.4 648.6
…
Total
slack
Global Optimization (Phase 29) …
Global Optimization (Phase 30)
0:02:00 271424.2 3.33 3401.0 635.6
TOTAL
ELAPSED WORST NEG SETUP DESIGN
TIME AREA SLACK COST RULE COST ENDPOINT
--------- --------- --------- --------- --------- -------------------------
0:00:22 274512.3 2.10 2082.3 3.2
0:00:22 274512.3 2.10 2082.3 3.2
0:00:31 275296.8 1.25 920.6 4.8
0:00:31 275296.8 1.25 920.6 4.8
0:00:31 275294.5 1.24 920.5 4.8
…
TOTAL
ELAPSED WORST NEG SETUP DESIGN
TIME AREA SLACK COST RULE COST ENDPOINT
--------- --------- --------- --------- --------- -------------------------
0:01:07 275474.0 0.15 27.6 609.7
0:01:07 275474.0 0.15 27.6 609.7
Global Optimization (Phase 6)
Global Optimization (Phase 7)
Global Optimization (Phase 8)
0:01:07 275545.7 0.15 27.6 0.0
0:01:07 275571.4 0.00 0.0 0.0
…
TOTAL
ELAPSED WORST NEG SETUP DESIGN
TIME AREA SLACK COST RULE COST ENDPOINT
--------- --------- --------- --------- --------- -------------------------
0:01:07 275571.4 0.00 0.0 0.0
0:01:07 275571.4 0.00 0.0 0.0
Global Optimization (Phase 9)
Global Optimization (Phase 10)
…
Dt
In terms of timing arc
Vin
Vout
Ctotal=Cnet+Cin
Wire has parasitic Cnet, Rnet Cell has input capacitance Cin
(estimated by models) (accurate calibration)
EE4292 IC Design Lab, Fall 2024 13
Cell Power: NLDM
• Characterized and approximated by tables for
internal power and leakage power
Total Power = Switching Power + Internal Power + Leakage Power
…
slow-slow process, 1.08V, 125℃
delay_model : table_lookup; (typical: TT, 1.2v, 25℃)
capacitive_load_unit (1,pf);
current_unit : "1mA"; Default Units
leakage_power_unit : "1pW";
pulling_resistance_unit : "1kohm";
time_unit : "1ns";
voltage_unit : "1V";
…
operating_conditions (PVT_1P08V_125C) {
process : 1;
temperature : 125; Nominal operational condition
voltage : 1.08; of this library (PVT)
}
default_operating_conditions : PVT_1P08V_125C;
…
…
Model name
wire_load("Small") {
resistance : 5.0000;
capacitance : 0.000001; Per unit estimated net length
area : 1e-40;
slope : 6.00; Extrapolation slope
fanout_length (1, 9.00);
} Extrapolation example:
If fanout=10,
…
}
}
cell (DFFHQX1) {
area : 5.472;
…
pin (D) {
…
timing () {
related_pin : "CK"; Setup/hold time checking
timing_type : setup_rising; also by table look-up
rise_constraint (constraint_template_2x2) {
index_1 ("0.008, 0.28");
index_2 ("0.008, 0.28");
values ( \
"0.0543128, 0.00217756", \
"0.152974, 0.091404" \
);
}
…
• Part II
– Design Compiler Optimization Process
– Static Timing Analysis
– DesignWare Library
EE4292 IC Design Lab, Fall 2024 25
Set Operating and I/O Environment
Comparison of
wire load modes
#I/O delay should depend on the real environment. Here only shows an example of setting
#Default is zero if not explicitly set.
set_input_delay 2 -clock clk [remove_from_collection [all_inputs] [get_ports clk]]
set_output_delay 1 -clock clk [all_outputs]
#Area Constraint
set_max_area 0
Architectural
HDL
Optimization
Level
Gate-level Technology-specific
Optimization Netlist
Low
EE4292 IC Design Lab, Fall 2024 33
Architectural Optimization (1/2)
• High-level synthesis based on your constraints
and your coding style
– Will generate technology-independent netlist (GTECH)
• High-level tasks like:
– Sharing common subexpressions
t = a*b;
out1 = a*b+c;
out1 = t+c;
out2 = a*b+d;
out2 = t+d;
– Sharing resources
– Reordering operators
• e.g. (b+c)+d = b+(c+d)
in logic level
credit: CIC
credit: CIC
– Area optimization
• Try to meet area constraint but not introduce new
violations of design rules and delay constraints
• Instance or cell
credit: Synopsys DCUG.
– An occurrence of a reference
– Instances (can point to the same reference) have their unique
names, e.g. U2 and U3
• Pin : Inputs and outputs of an instance or a cell within a design
EE4292 IC Design Lab, Fall 2024 43
Static Timing Analysis (STA)
• Analyze the timing conditioned by single clock
• Four timing path types Input or
Flip-flop Q
Output or
Flip-flop D
credit: CIC.
EE4292 IC Design Lab, Fall 2024 48
STA with Max/Min Analysis
• Slow PVT corner for setup check Note:
Usually only setup time is
• Fast PVT corner for hold check checked for DC
credit: CIC.
EE4292 IC Design Lab, Fall 2024 49
DesignWare Library
• Technology-independent soft macros
– Multiple pre-designed and optimized architectures for
each macro for speed/area tradeoffs
– Will be synthesized into technology-specific netlist
– As simple as add, sub, shift, …
– As complex as pipelined multiplier, divider, sin/cos, …
credit: CIC
• Professional only!
– Paths between clock A and clock B
• Usually treated as asynchronous
– Paths between different edges
• Need to take care of the quality of clock source (e.g. duty
cycle)
EE4292 IC Design Lab, Fall 2024 57
Check The Logs
• Check the logs of VCS, verdi, SpyGlass,
and dc_shell
– Avoid errors and understand warnings
• Check if there is any unintentional latch or
any unresolved design
– SpyGlass
– dc_shell
… …
wire_load ("8000") {
capacitance : 0.000343;
resistance : 1.730000e-03; Per unit estimated net length
area : 0.010000;
Extrapolation slope
slope : 90.646360;
if fanout overflow (>20 here)
fanout_length("1", \
"13.9403600");
fanout_length("2", \ Net Length Table:
Non-linear table "31.8040800"); If fanout # =3,
derived by calibration fanout_length("3", \ net length = 51.61212
"51.6121200");
fanout_length("4", \ => (estimated)
C = 0.000343 x 51.6
…
R = 1.73e-03 x 51.6
fanout_length("19", \ Area = 0.01 x 51.6
"834.4876400");
fanout_length("20", \
"925.1340000"); Extrapolation:
} If fanout=22,
Net length = 925.134+(22-20)*90.646
(not accurate, should be avoided!)
wire_load_selection (predcaps) {
wire_load_from_area(0.000000,200.000000, \
"ForQA");
wire_load_from_area(200.000000,8000.000000, \
Model name
"8000");
wire_load_from_area(8000.000000,16000.000000, \
"16000");
wire_load_from_area(16000.000000,35000.000000, \
"35000");
Select WLM wire_load_from_area(35000.000000,70000.000000, \
by area
"70000"); … Select WLM “70000”
if the area between 35K and 70K
wire_load_from_area(2000000.000000,4000000.000000, \
"4000000");
wire_load_from_area(4000000.000000,8000000.000000, \
"8000000");
}
p.s. Synthesis constraints define which part of area to be concerned.