Time Borrowing in Tempus/Innovus For Latch Based Designs: Tool Version 18.1 or Later February 2019
Time Borrowing in Tempus/Innovus For Latch Based Designs: Tool Version 18.1 or Later February 2019
Time Borrowing in Tempus/Innovus For Latch Based Designs: Tool Version 18.1 or Later February 2019
Based Designs
Tool Version 18.1 or later
February 2019
Topics Covered
For Flops, data arrival later than capture clock edge causes SETUP violation
Whereas Latch remains transparent for entire duration of active clock edge, relaxing
arrive-before-edge criterion.
Consequences :
• Data can arrive later than capture clock arrival and borrow from the next clock cycle !
This is called Time Borrowing or Cycle Stealing and the current stage Slack
improves
• Time available for the next stage reduces, but no adverse effect if next-stage delay
(from latch to next endpoint) is short
Time Borrowing allows paths to the latch and starting from it evade timing violations
D Q D Q
D Q C1 C2
L2 L3
L1 8.92 0.77
G G
G
CLK1
CLK2 Assumptions:
Borrow Time= 8.92-5 =3.92 Setup = 0.0
D->Q delay = 0
NOTE:
CPPR reduces Pessimism while Uncertainty(skew) & Jitter increases it
CLK1
CLK2 L2 library Setup = 0.4
Borrow Time= 8.00-5 =3.00 D->Q delay =0
C1 (late data arrival)
L2 setup time=0.4
L2 opening edge
L2 closing edge
D Q D Q D Q
C1 C2
L1 L2 0.77 L3
8.00
G G G
CLK1
CLK2
CLK1
CLK2
L2 library Setup = 0.4
Borrow Time= 8.00-5 =3.00 D->Q delay = 0
C1 Rise latency = 2.3
2.3 1.3 Fall latency = 1.3
L2 opening L2 setup time=0.4 Rise Uncertainty = 2.1
Fall Uncertainty = 1.8
edge 1.8
2.1 L2 closing
1.3 2.3 1.3
edge
20
11 0 5
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. 10 15
Max Borrow Time
Where,
W : Nominal Pulse Width of Capture clock ( Latch Close Edge – Latch Open Edge)
S : Library SETUP constraint of the endpoint latch
∆L : Clock latency of Latch Open Edge – Clock latency of Latch Close Edge
∆U : Clock Uncertainty of Latch Open Edge – Clock Uncertainty of Latch Close Edge
∆ CPPR : CPPR for Latch Open Edge – CPPR for Latch Close Edge
(rising edge vs falling edge CPPR)
∆J : Clock jitter of Latch Open Edge – Clock Jitter of Latch Close Edge
Time Borrowed = (Latest data arrival time – Earliest open clock edge arrival time)
C1
Data arrival time + D->Q delay > Earliest clock open edge arrival time + Clk->Q delay
Negative Time Borrow
When (Data arrival time =~ Earliest clock open edge arrival time)
D->Q delay > Clk->Q delay dominates the equation
Max Negative Time Borrow: Data departure time at start point determined by D->Q delay and
D->Q delay – Clk->Q delay arrival time (instead of Clk->Q delay)
1.1
D Q
Adjustment for
clock uncertainty Late Latch Open Edge for path starting from latch (start time for next stage)
and CPPR
15 © 2019 Cadence Design Systems, Inc. All rights reserved worldwide.
Time Given Calculation
In Transparent mode, data arrival time at endpoint is also the data launch time for next
stage.
Time borrowed calculated using shifted edges if CPPR / Uncertainty exists at open clock
edge
Provided CPPR/Jitter/Phase Shift for all paths reaching D pin are same, it is:
Time Borrow
= 11.270 – 10.190 = 1.08
Time Given
= 1.08 – 0.020 (CPPR)= 1.060
Time Borrowed for path1 = Late Data Arrival Time (AT1) – Clock (open edge)
Time Borrowed for path2 = Late Data Arrival Time (AT2) – Clock (open edge)
Time Given = Max(AT1+X1, AT2+X2, …) – Clock (closing edge)
NOTE: with different clocks, phase shift need to be further accounted for
set_max_time_borrow 0 [all_clocks]
set_max_time_borrow 2.5 \
[get_cells {Latch1 Latch2 Latch3}]
reset_max_time_borrow [all_clocks]
CK
Default Violations considers borrowing path a single-segment path to next latch/flop D pin
Optimization based on segment slacks could be pessimistic
To allow a see-through path in cascaded latches, enable Latch Through Mode by setting the globals:
set_global timing_enable_latch_thru_mode true
set_global timing_cppr_propagate_thru_latches true
(calculates CPPR b/w Flop1 to Flop2 instead of segment-by-segment CPPR)
Report timing from Flop1 to Flop2 without path break through latches :
report_timing –from Flop1/Q –to Flop2/D
Prerequisite
For Latch Through Mode to work, Latch must be borrowing from next stage. Otherwise it will have no effect on
timing
25 analysis.
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide.
Sample Latch Through Report
Timing Path : [DFF -> path1 -> [LAT-> path2 -> DFF]]
Solution:
1) Turn off latch borrow mode to switch off time borrow from next stage:
[LAT1 to LAT2] is a short path and inside another IP and cannot be fixed
through ECO.
Timing Path: DFF -> LAT1 -> LAT2 (path unconstrained after latch2)
Solution:
1) Use set_max_time_borrow on LAT1
2) Use set_path_adjust on LAT1 or LAT2 to constrain the path
Solution:
Use latch through mode instead of latch borrow mode setting:
1. set timing_enable_latch_thru_mode true
2. set timing_cppr_propagate_thru_latches true
Another idea is to use PBA (Path Based Analysis). However, PBA also uses
GBA (Group Based Analysis) based time borrow number as seed value -
relatively more pessimistic.
D
Clock Gating Cell Q
Flop
CK
D Q A
Enable
B I1
Latch
G
Clock
Will time borrowing be accounted for in clock gating check through Latch ?
• Support
– Cadence Support Portal provides access to support resources, including an extensive
knowledge base, access to software updates for Cadence products, and the ability to interact
with Cadence Customer Support. Visit https://support.cadence.com.
• Feedback
– Email comments, questions, and suggestions to [email protected].