CSV Basic Synthesis
CSV Basic Synthesis
CONFIDENTIAL
1. Basic reg2reg timing
2. Design setup
3. Design constraint
4. Synthesis optimization
5. Output and report
6. Q&A
1. Basic reg2reg timing
2. Design setup
3. Design constraint
4. Synthesis optimization
5. Output and report
6. Q&A
Basic timing – Combinational logic charactersitics
80% 80%
20% 50%
50% 20%
50% 50%
• Rise delay (Tr): Measure from 50% voltage level of input to 50% voltage level of rise output
• Fall delay (Tf): Measure from 50% voltage level of input to 50% voltage level of fall output
• Rise transition time: Measure from 20% to 80% of voltage level of rise waveform signal (input or output)
• Fall transition time: Measure from 80% to 20% of voltage level of fall waveform signal (input or output)
CONFIDENTIAL
Basic timing – Flip-Flop charactersitics
tsetup
thold
D DataX DataY
D Q
tsetup/hold tck2q
CK
tck2q
CK
Q DataX DataY
• Setup time (tsetup): The minimum time data need to be stable before clock trigger edge.
• Hold time (thold): The minimum time data need to be stable after clock trigger edge.
• Delay time (tck2q): The time data propagate from clock trigger edge to data output pin.
CONFIDENTIAL
Basic timing – Reg2Reg path with ideal clock
T
tX
D1 DataX IN D1 Q1 X D2 Q2 OUT
tck2q tsetup/hold
Q1 DataX
tr • Set in ideal clock condition, single cycle design, and assum
data sampled success at DFF1
D2 DataX
• To ensure no setup violation when capture current data at
thold tsetup DFF2:
tr = T – (tck2q + tX) ≥ tsetup
CK2 tck2q + tX ≤ T- tsetup
tck2q + tX ≤ tck2q + tX_max ≤ T- tsetup
• To ensure no hold violation when capture previous data at
DFF2:
• DFF1: launch data
• DFF2: capture data
tck2q + tX ≥ thold
tck2q + tX ≥ tck2q + tX_min ≥ thold
CONFIDENTIAL
Basic timing – Reg2Reg path with real clock
T
tck2
CLK IN D1 Q1 X D2 Q2 OUT
tX
tck2q tsetup/hold
tck1
D1 DataX CLK CK1 CK2
tck1
DFF1 tck2 DFF2
CK1
tck2q • To ensure no setup violation when capture current data at
tX
DFF2:
Q1 DataX tr = T + tck2 – (tck1 + tck2q + tX) ≥ tsetup
tck2 tr tck2q + tX ≤ T + tck2 - tck1 - tsetup
D2 DataX tck2q + tX ≤ tck2q + tX_max ≤ T + (tck2 - tck1) - tsetup
tsetup
If tck2>tck1: Good for setup time
thold
If tck2<tck1: Bad for setup time
• To ensure no hold violation when capture previous data at
CK2 DFF2:
tck1+ tck2q + tX ≥ tck2+ thold
• DFF1: launch data tck2q + tX ≥ tck2q + tX_min ≥ thold + tck2 - tck1
• DFF2: capture data If tck2>tck1: Bad for hold time
CONFIDENTIAL If tck2<tck1: Good for hold time
1. Basic reg2reg timing
2. Design setup
3. Design constraint
4. Synthesis optimization
5. Output and report
6. Q&A
ASIC design flow - Recall
We’re here
CONFIDENTIAL
Logic Synthesis
residue = 16’h0000;
if (high_bits == 2’b10)
residue = state_table[index];
Translation
else (read_verilog
state_table[index] =
16’h0000; read_vhdl )
Hardware Description
Language (HDL)
Mapping/Optimization
(compile, compile_ultra)
Timing constraints
create_clock …
set_input_delay …
set_output_delay …
… Generic Boolean (GTECH)
create_clock …
set_input_delay …
set_output_delay …
Large …
•
Area
•
•
Small • • •
CONFIDENTIAL
Design setup - Libraries
CONFIDENTIAL
Technology specific libraries – Liberty format example
Cell name
Pin name
DRC rules
CONFIDENTIAL
Technology specific libraries – Wire load model
• If not using Physical Aware Synthesis flow, how do you estimate the parasitics of
a net before placement and routing?
• Answer: Using Wire Load Model (WLM), estimate the parasitics base on the
fanout of a net
CONFIDENTIAL
Design setup – Setting for library
• Target library: using during compile to create technology specify gate level
netlist
• DC optimization selects the smallest gates that meet the required timing and
logic function
• Default setting (non-existent default lib), querry using printvar
target_library:
target_library = your_library.db
CONFIDENTIAL
Design setup – Setting for library
CONFIDENTIAL
Design setup – Reading RTL files
• Using command
• Verilog file format: read_verilog
• Systemverilog: read_sverilog
• VHDL format: read_vhdl
CONFIDENTIAL
Design setup – Complete scripts for reference
CONFIDENTIAL
1. Basic reg2reg timing
2. Design setup
3. Design constraint
4. Synthesis optimization
5. Output and report
6. Q&A
Specifing setup timing constraints
• Goals: Define setup timing constraints for all paths within a sequential design
• All input logic paths (starting from input ports)
• All internal reg2reg path
• All output paths (ending at output ports)
• Under following conditions:
• Follow the design’s spec
• Block or Chip-level design
• Single clock, single cycle or environment synthesis
CONFIDENTIAL
Default design scenarios
CONFIDENTIAL
Timing analysis during synthesis
• Endpoint:
• Data input pin of sequential elements (FFs,
memory, etc …)
• Output ports
Image Source: Synopsys
CONFIDENTIAL
Constraining Register-to-Register path
CONFIDENTIAL
Constraining Register-to-Register path
CONFIDENTIAL
Constraining Register-to-Register path
CONFIDENTIAL
Constraining Register-to-Register path
CONFIDENTIAL
Default clock behavior
• Defining the clock in a single-clock design constraints all timing paths between
registers for single-cycle, setup time.
• By default the clock rises at 0ns and has a 50% duty cycle
• By default, DC will not buffer the clock network, even when connected to many
clock/enable pins of FFs/Latches. The other way, the clock network is treated as
ideal – infinite drive capability
• Zero rise/fall transition time
• Zero skew
• Zero insertion delay or latency
• Estimated skew, latency and transition times can (should be) modeled for more
accurate representation of clock behavior.
CONFIDENTIAL
Modeling Clock Trees
• Design Compiler should be model clock tree behavior for correlation QoR
results with PnR step.
CONFIDENTIAL
Modeling Clock Skew
• Uncertainty models the maximum delay difference berween the clock network
sink pins, knows as clock skew, and can also include clock jitter and timing
margin
set_clock_uncertainty –setup Tu [get_clocks CLK]
* Pre layout, uncertainty Tu=skew+jitter+margin
CONFIDENTIAL
Modeling Latency or Insertion Delay
• Network latency models the average internal delay from the create_clock port
or pin to the register clock pins
• Source latency models the delay from the actual clock origin to the create_clock
port or pin
• Used for either pre and post layout analysis (ideal vs propagated clock)
set_clock_latency –source –max 3 [get_clock CLK]
set_clock_latency –network –max 1 [get_clocks CLK] ;#only for pre-layout analysis
CONFIDENTIAL
Modeling Clock Transition Time
• Clock transition time modeling clock rise/fall transition time at register clock
pin at pre-layout step
set_clock_transition TT [get_clock CLK]
• At post layout step, tool wil propagated clock to calculated clock transition time
CONFIDENTIAL
Constraining Inputs Path
• Spec: Latest data arrival time at port A after Jane’s launch clock edge = 0.6ns
create_clock –period 2 [get_ports Clk]
set_clock_uncertainty –setup 0.3 [get_clocks Clk]
set_input_delay –max 0.6 –clock [get_clocks Clk] [get_ports A]
CONFIDENTIAL
Constraining Outputs Path
• Spec: Latest data arrival time at port B before JOE’s capture clock edge = 0.8ns
create_clock –period 2 [get_ports Clk]
set_clock_uncertainty –setup 0.3 [get_clocks Clk]
set_input_delay –max 0.6 –clock [get_clocks Clk] [get_ports A]
set_output_delay –max 0.8 –clock [get_clocks Clk] [get_ports B]
CONFIDENTIAL
Modeling Output Capacitance Load
CONFIDENTIAL
Modeling Input Transition
• Spec: At chip level, maximum rise/fall input transition on input port A=0.12ns
create_clock –period 2 [get_ports Clk]
set_clock_uncertainty –setup 0.3 [get_clocks Clk]
set_output_delay –max 0.8 –clock [get_clocks Clk] [get_ports B]
set_load [expr 30.0/1000] [get_ports B]
set_input_transition 0.12 [get_ports A]
CONFIDENTIAL
Thank you!
CONFIDENTIAL