Beruflich Dokumente
Kultur Dokumente
Time borrowing typically only affects setup slack calculation since time borrowing slows data arrival times.
*ince hold time slack calculation uses fastest data& time%borrowing typically does not affect hold slack
calculation.
Few mportant terminolog!:
;aximum Borrow time1
;aximum Borrow time is the clock pulse width minus the library setup time of the latch. )sually to
calculate the maximum allowable borrow time& start with clock pulse width and then substract clock
latency & clock reconvergence pessimism removal & library setup time of the endpoint latch.
:egative Borrow time1
+f the arrival time minus the clock edge is a negative number& the amount of time borrowing is negative !in
other way you can say that no borrowing#. This amount is know as :egative Borrow time.
"Set&p an$ +ol$ Time" : Static Timing Analysis STA!
"asic Part ,a!
+ts been long time& people are asking about *etup and (old time blog. 2inally time come for that. 1#
The way we will discuss this concept in the following manner
<. What is *et)p and (old time?
0. 'efinition of *etup and (old.
$. *etup and (old -iolation.
B. (ow to calculate the *etup and (old violation in a design?
+ saw that lots of people are confused with respect to this concept. And the reason of this are
<. They know the definition but don?t know the origin or say concept behind *etup and (old
timing.
0. They know the formula for calculating setup and hold violation but don?t know how this
formula come in picture.
$. They become confuse by few of the terminology like capture path delay& launch path
delay& previous clock cycle& current clock cycle& data path delay& slew& setup slew& hold slew& min
and max concept& slowest path and fastest path& min and max corner& best and worst case etc
during the explanation of *etup and (old Timings,-iolation.
+ hope + can clarify your confusion. .et me explain this and if you face any problem let me know.
What is Set&p an$ +ol$ time?
To understand the origin of the *etup and (old time concepts first understand it with respect to a *ystem
as shown in the fig. An +nput '+: and external clock ".E are buffered and passes through combinational
logic before they reach a synchronous input and a clock input of a ' flipflop !positive edge triggered#.
:ow to capture the data correctly at ' flip flop& data should be present at the time of positive edge of
clock signal at the " pin ! to know the detail 4ust read basis of ' flipflop#.
:ote1 here we are assuming ' flip flop is ideal so Mero hold and setup time for this.
Set=p and "old Time o a System
There may be only 0 condition.
Tp$ -*N . Tp$ %l/
o 2or capture the data at the same time when "lock signal !positive clock edge# reaches at
pin "& you have to apply the input 'ata at pin '+: 5Ts!in#L!Tpd '+:# % !Tpd "lk#5 time before the positive
clock edge at pin ".E.
o +n other word& at '+: pin& 'ata should be stable 5Ts!in#5 time before the positive clock
edge at ".E pin.
o This Time "Tsin!" is /no' as Set&p time of the System.
Tp$ -*N 0 Tp$ %l/
o 2or capture the data at the same time when clock signal !positive clock edge# reaches at
pin "& input 'ata at pin '+: should not change before 5Th!in#L !Tpd "lk# % !Tpd '+:#5 time. +f it will
change& positive clock edge at pin " will capture the next data.
o +n other word& at '+: pin& 'ata should be stable 5Th!in#5 time after the positive clock edge
at ".E pin.
o This time "Thin!" is /no' as +ol$ Time of the System.
2rom the above condition it looks like that both the condition can?t exist at the same time and you are
right. But we have to consider few more things in this.
Worst case and best case !;ax delay and min delay#
o Because of environment condition or because of 3-T& we can do this analysis for the
worst case ! max delay# and best case ! min delay# also.
*hortest 3ath or .ongest path ! ;in 'elay and ;ax delay#
o +f combinational logic has multiple paths& the we have to do this analysis for the shortest
path ! min delay# and longest path ! max delay# also.
*o we can say that above condition can be like this.
Tp$ -*N ma1! . Tp$ %l/ min!
o Set2p time 33 Tp$ -*N ma1! 4 Tp$ %l/ min!
Tp$ -*N min! 0 Tp$ %l/ ma1!
o +ol$ time 33 Tp$ %l/ ma1! 4 Tp$ -*N min!
2or example for combinational logic delays are
'ata path !max& min# L !6ns& B ns#
"lock path !max& min# L !B.6ns& B.<ns#
Then *etup timeL 6%B.<L7.Nns
(old time is L B.6%BL7.6ns
:ow similar type of explanation we can give for a ' flip flop. There is a combinational logic between "
and F & between ' and F of the 2lipflop. There are different delays in those conbinational logic and based
on there max and min value & a flipflop has *etup and (old time. >ne circuitry of the positive edge
triggered ' flip is shown below.
Positive %dge Triggered ) lip-lop
There are different ways for making the ' flip flop. .ike by OE flipflop& master slave flipflop& )sing 0 ' type
latches etc. *ince the internal circuitry is different for each type of 2lipflop& the *etup and (old time is
different for every 2lipflop.
-efinition:
*etup Time1
Set&p time is the minimum amount of time the data signal should be held steady "efore the
clock event so that the data are reliably sampled by the clock. This applies to synchronous circuits such
as the flip%flop.
>r +n short + can say that the amount of time the *ynchronous input !'# must be stable "efore the
active edge of the "lock.
The Time when input data is available and stable "efore the clock pulse is applied is called *etup
time.
(old time1
+ol$ time is the minimum amount of time the data signal should be held steady after the clock
event so that the data are reliably sampled. This applies to synchronous circuits such as the flip%flop.
>r in short + can say that the amount of time the synchronous input !'# must be stable after the
active edge of clock.
The Time after clock pulse where data input is held stable is called hold time.
Set&p an$ +ol$ 5iolation:
+n simple language%
+f *etup time is Ts for a flip%flop and if data is not stable before Ts time from active edge of the clock& there
is a *etup violation at that flipflop. *o if data is changing in the non%shaded area ! in the above figure#
before active clock edge& then it?s a *etup violation.
And +f hold time is Th for a flip flop and if data is not stable after Th time from active edge of the clock &
there is a hold violation at that flipflop. *o if data is changing in the non%shaded area ! in the above
figure# after active clock edge& then it?s a (old violation.
"Set&p an$ +ol$ Time 5iolation" : Static Timing
Analysis STA! "asic Part ,"!
"ere we will disc!ss how to calc!late the Set!p and "old $iolation or a design4
Till now we have discussed setup and hold violation with respect to the single flipflop& now lets extend this
to 0 flip flop. +n the following fig there are 0 flipflops !22< and 220#.
Single-Cycle Set!p and "old 0or 0lip-0lops
2ew important things to note down here%
'ata is launching from 22<,' to 22<,F at the positive clock edge at 22<,".
At 220,' & input data is coming from 22<,F through a combinational logic.
'ata is capturing at 220,'& at the positive clock edge at 220,".
*o + can say that .aunching 2lip%2lop is 22< and "apturing 2lip%2lop is 220.
*o 'ata path is 22<," %%G 22<,F %%G 220,'
2or a single cycle circuit% *ignal has to be propagate through 'ata path in one clock cycle. ;eans
if data is launched at timeL7ns from 22< then it should be captured at timeL<7ns by 220.
*o for Set&p analysis at ))(& 'ata should be stable 5Ts5 time before the positive edge at 220,". Where
5Ts5 is the *etup time of 220.
+f TsL7ns& then & data launched from 22< at timeL7ns should arrive at ' of 220 before or at
timeL<7ns. +f data takes too long ! greater then <7ns# to arrive !means it is not stable before clock edge at
220# & it is reported as *etup -iolation.
+f TsL<ns& then& data launched from 22< at timeL7ns should arrive at ' of 220 before or
at timeL!<7ns%<ns#LNns. +f data takes too long !greater then Nns# to arrive !means it is not stable before
<ns of clock edge at 220#& it is reported as *etup -iolation.
2or +ol$ Analysis at ))(& 'ata should be stable 5Th5 time after the positive edge at 220,". Where 5Th5
is the (old time of 220. ;eans there should not be any change in the +nput data at 220,' between
positive edge of clock at 220 at TimeL<7ns and TimeL<7nsPTh.
To satisfy the (old "ondition at 220 for the 'ata launched by 22< at 7ns& the data launched by
22< at <7ns should not reach at 220,' before <7nsPTh time.
+f ThL7.6ns& then we can say that the data launched from 22< at time <7ns does not get
propagated so soon that it reaches at 220 before time !<7P7.6#L<7.6ns ! >r say it should reach from 22<
to 220 with in 7.6ns#. +f data arrive so soon !means with in 7.6ns from 22< to 220& data can?t be stable at
220 for timeL7.6ns after the clock edge at 220#& its reported (old violation.
With the above explanation + can say 0 important points1
"# Setup is checked at ne$t clock edge#
%# &old is checked at same clock edge#
*etup "heck timing can be more clear for the above 2lip%flop combination with the help of following
explanation.
Set!p Chec/ Timing
+n the above fig you can see that the data launched by 22<,' ! at launch edge# reaches at 220,' after a
specific delay ! ".E%to%F delay P "onminational .ogic 'elay# well before the setup time reuirement of
2lip%2lop 220& so there is no setup violation.
2rom the 2ig its clear that if *lackL Aeuired Time % Arrival time Q 7 !%ive# & then there is a *etup violation
at 220.
(old "heck timing can be more clear with the help of following circuit and explanation.
"old Chec/ Timing
+n the above fig you can see that there is a delay in the ".E and ".EB because of the delay introduced
by the series of buffer in the clock path. :ow 2lip%flop 220 has a hold reuirement and as per that data
should be constant after the capture edge of ".EB at 2lip%flop 220.
Hou can see that desired data which suppose to capture by ".EB at 220.' should be at Mero !7# logic
state and be constant long enough after the ".EB capture edge to meet hold reuirement but because of
very short logic delay between 22<,F and 22<,'& the change in the 22<,F propagates very soon. As a
result of that there occurs a (old violation.
'his type of violation (&old )iolation* can be fi$ed by shortening the delay in the clock line or by
increasing the delay in the data path#
*etup and (old violation calculation for the single clock cycle path is very easy to understand. But the
complexity increases in case of multi%cycle path &@ated clock& 2lip%flop using different clocks& .atches in
place of 2lip%2lop. We will discuss all these later sometime.
"E1amples Of Set&p an$ +ol$ time" : Static Timing
Analysis STA! "asic Part ,c!
Till now we have discussed a lot of theor! about setup and hold ti&e (with
and without 52a&ple). *ow it6s ti&e to discuss the practical i&ple&entation
of that. 4eans in a circuit
"ow will !ou calculate the setup and hold values7
"ow will !ou anal!(e setup and hold violation in a circuit7
/f !ou have to i&prove ti&ing of a circuit then what can !ou do7
There are few for&ulas to calculate di8erent para&eter ( Theor! of those /
alread! e2plained in &! previous blogs). / a& not going to e2plain those right
now. 'irst we will solve few e2a&ples which will give !ou an basic idea about
these for&ulas% then in the last / will su&&ari(e all those in one place.
/ saw a lot of confusion with respect to setup and hold ti&ing calculation.
9ctuall! there are two things.
Ti&ing Specifcation of a :lock;<ircuit;Librar!=
o >ou have a block with input 9 and output >. So&e co&binational
logic is there between 9 and >. *ow !ou have to calculate following
para&eters for that block
Setup Ti&e ?alue at input 9
"old Ti&e value at input 9.
4a2i&u& operating <lock 're1uenc! or Ti&e Period for
that block.
<lock To > dela! value
/nput 9 to .utput > dela! value.
Ti&ing ?iolation of a circuit=
o >ou have to operate a circuit at a particular clock fre1uenc! and
now !ou have to fnd out whether this circuit has an! setup or "old ?iolation.
So in second case all the para&eters are given and !ou have to fnd out
whether this circuit has an! violation or not and /n frst case !ou have to fnd
out all the para&eters keeping in &ind that there should not be an!
violation.
Lets @iscuss in the reverse order.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""
#roblem$: n the following %ircuit, Find out whether there is an!
&etup 'r (old )iolation*
&olution:
(old Anal!sis:
Ahen a hold check is perfor&ed% we have to consider two things)
4ini&u& @ela! along the data path.
4a2i&u& @ela! along the clock path.
/f the di8erence between the data path and the clock path is negative% then a
ti&ing violation has occurred. ( *ote= there are few 52ceptions for this) Ae
will discuss that so&e other ti&e)
@ata path is= <LB)C''1;<LB )C''1;D )C/nverter )C''#;@
@ela! in @ata path
E &in(wire dela! to the clock input of ''1) F &in(<lk)to)D dela! of ''1)
F&in(cell dela! of inverter) F &in(# wire dela!) GDof ''1)to)inverterG and
Ginverter)to)@ of ''#G)
+,d + $-.-/-0$-$1+$2ns
<lock path is= <LB)C bu8er )C ''#;<LB
<lock path @ela!
E &a2(wire dela! fro& <LB to :u8er input) F &a2(cell dela! of :u8er) F
&a2(wire dela! fro& :u8er output to ''#;<LB pin) F (hold ti&e of ''#)
+,cl3 + 3-.-3-2 + $4 ns
(old &lac3 + ,d - ,cl3 + $2ns -$4ns + $ns
&ince (old &lac3 is positi5e-6 No hold )iolation.
Note: f the hold time had been 7 ns instead of 2 ns, then there
would ha5e been a hold 5iolation.
TdE1,ns and Tclk E FHFF4E1Hns
So "old SlackETd ) Tclk E 1,ns ) 1Hns E )1ns (?iolation)
&etup Anal!sis:
Ahen a setup check is perfor&ed% we have to consider two things)
4a2i&u& @ela! along the data path.
4ini&u& @ela! along the clock path.
/f the di8erence between the clock path and the data path is negative% then a
ti&ing violation has occurred. ( *ote= there are few 52ceptions for this) Ae
will discuss that so&e other ti&e)
@ata path is= <LB)C''1;<LB )C''1;D )C/nverter )C''#;@
@ela! in @ata path
E &a2(wire dela! to the clock input of ''1) F &a2(<lk)to)D dela! of ''1)
F&a2(cell dela! of inverter) F &a2(# wire dela!) GDof ''1)to)inverterG and
Ginverter)to)@ of ''#G)
+,d + 2-$$-.-02-21 + 2/ns
Note: The frst part of the clock path delay (during setup calculation) is the
clock period, which has been set to 15 ns. ope !ou re"e"ber in last blog, #
ha$e "entioned $ery clearly that Setup is checked at the next clock
cycle. That%s the reason for clock path delay we ha$e to include clock period
also.
<lock path is= <LB)C bu8er )C ''#;<LB
<lock path @ela!
E (<lock period) F &in(wire dela! fro& <LB to :u8er input) F &in(cell dela!
of :u8er) F &in(wire dela! fro& :u8er output to ''#;<LB pin) ) (Setup ti&e
of ''#)
+,cl3 + $8-2-8-2-7+20ns
&etup &lac3 + ,cl3 - ,d + 20ns - 2/ns + -/ns.
&ince &etup &lac3 is negati5e -6 &etup 5iolation.
Note: A bigger cloc3 period or a less maximum dela! of the in5erter
sol5e this setup 5iolations in the circuit.
%4g
* Cloc/ period is 22ns then
Tcl/ > 22?2?.?2-(>31-(>29ns 8@) Td > 25ns
Set!p Slac/ > Tcl/ - Td > 29-25>1ns 6@o $iolation7
#roblem2: n order to wor3 correctl!, what should be the &etup and
(old time at nput A in the following %ircuit. Also 9nd out the
maximum operating fre:uenc! for this circuit. 0Note: gnore ;ire
dela!1. ;here ,su- &etup time< ,hd-(old ,ime< ,c2:- %loc3-to-=
dela!
&olution:
Step1= 'ind out the &a2i&u& Iegister to register @ela!.
4a2 Iegister to Iegister @ela!
E (clk)to)D dela! of J#) F (cell dela! of J) F (all wire dela!) F (setup ti&e
of J1)
E - F , F E 1K ns.
Note:
There are & register to register paths
o '& () '* ()'1 (+elay,5-.-*,1/ns)
o '1 () '0 () '& ( +elay,5-1-*,15ns)
2e ha$e to pick "a3i"u" one.
Step#= 'ind .ut Setup Ti&e=
9 setup ti&e E Setup ti&e of 'lip+op F 4a2 (@ata path @ela!) ) &in(<lock
path @ela!)
E (Setup ti&e of 'lip+op F 9#@ &a2 dela!) ) (<lk path &in dela!)
E Tsu F (Tpd JL F Tpd J F wire dela!) ) Tpd J,
E F (1F, ) ) # E 10 ns
Note:
ere we are not using the 4lock period. 5ecause we are not suppose
to calculate the 6etup $iolation. 2e are calculating 6etup ti"e. 7lease refer
the part*a for the referance.
8ll the wire dealy is neglected. #f 2ire delay present, we ha$e to
consider those one.
There are & +ata path
o 8 () '1 () '0 () + of '& (+ata path +elay , 1-1 ,.ns )
o 8 () '1 () '* () + of '1 ( +ata path +elay , 1-. ,9ns )
6ince for 6etup calculation we need "a3i"u" +ata path delay, we
ha$e choosen &nd for our calculation.
Step= 'ind .ut "old Ti&e=
9 hold ti&e E "old ti&e of 'lip+op F &a2(<lock path @ela!) ) &in( @ata path
dela!)
E( "old ti&e of 'lip+op F <lk path &a2 dela!) ) (9#@ &a2 dela!)
E Thd F Tpd J, ) (Tpd JL F Tpd J4Fwire dela!)
E 4 F # ) (1FL ) E )# ns
Note: 6a"e e3planation as for 6etup ti"e. :or hold ti"e we need "ini"u"
data path , so we ha$e picked frst +ata path.
Step4= 'ind out <lock to .ut Ti&e=
<lock to .ut
E <ell dela! of J, F <lk)to)D dela! of 'lip'lopF <ell dela! of J-F <ell dela!
of JKF (all wire dela!)
E Tpd J,F J# Tc#1 F J- Tpd F JK Tpd
E # F - F H F K E ## ns
Note:
There are & 4lock to ;ut path( one fro" :lip <op '1 and other fro"
'&.
6ince in this case the 4lk(to(= path for both :lip<op is sa"e, we can
consider any path. 5ut in so"e other 4ircuit where the delay is di>erent for
both the paths, we should consider ?a3 delay path.
Step-= 'ind Pin to Pine <o&binational @ela! (9 to > dela!)
Pin to Pin <o&binational @ela! (9 to >)
E JL Tpd F J- Tpd F JK Tpd
E 1 F H F K E 1K ns
Step-= 'ind .ut 4a2 <lock 're1uenc!=
4a2 <lock 're1 E 1; 4a2 (Ieg#reg% <lk#.ut% Pin#Pin)
E 1; 4a2 (1K% ##% 1K)
E 4-.- 4h(
So su&&er! is=
#arameter >escription ?in ?ax @nits
Tclk <lock Period ## ns
'clk <lock 're1uenc! 4-.- 4h(
9tsu 9 setup ti&e 10 ns
9thd 9 hold ti&e )# ns
9#> 9 to > Tpd 1K ns
<k#> <lock to > tpd ## ns
Note: Negati5e hold times are t!picall! speci9ed as 0 ns.
#roblem3: n the abo5e %ircuit, ,r! to impro5e the timing b! adding
an! AbuBerA or ACegisterA.
&olution:
:est wa! of doing this is MIegister all /nput and .utputN. Ae are adding @''
so sa&e specifcation (as J# and J1).
*ow follow all those - Steps onn b! one.
Step1=
4a2 Iegister to Iegister @ela!
J# Tc#1 F J- Tpd F JH Tsu E - F H F E 1L ns
Note:
8 lot of @egister to @egister path
o '. () '5 () '9 (+elay , 5-9-*,11ns)
o '. () '0 () '& (+elay , 5-1-*,15ns)
o '. () '* () '1 (+elay , 5-.-*,1/ns)
o '1 () '0 () '& (+elay, 5-1-*,15ns)
o '1 () '5 () '9 (+elay, 5-9-*,11ns)
o '& () '5 () '9 (+elay , 5-9-*,11ns)
o '& () '* () '1 (+elay , 5-.-*,1/ns)
?a3i"u" delay is 11ns, Aust picked anyone.
Step#=
9 setup ti&e E Tsu F 9#@ Tpd &a2 ) <lk Tpd &in
E Tsu F (Tpd JL) ) Tpd J,
E F (1) ) # E # ns
Note: ;nly ;ne path between 8 and + of ::(i.e '.)
Step=
9 hold ti&e E Thd F <lk Tpd &a2 ) 9#@ Tpd &in
E Thd F Tpd J, ) (Tpd JL)
E 4 F # ) ( 1) E - ns
Note: ;nly ;ne path between 8 and + of ::(i.e '.)
Step4=
<lock to out=
ETpd J,F JH Tc#1 F JK Tpd
E#F-FK E 1 ns
Step-=
*o direct link between 9 and >. So *ot 9pplicable.
StepK=
4a2 <lock 're1 E 1; 4a2 (Ieg#reg% <lk#.ut% Pin#Pin)
E 1; 4a2 (1L% 1)
E-,., 4h(
#arameter >escription ?in ?ax @nits
Tclk <lock Period 1L ns
'clk <lock 're1uenc! -,., 4h(
9tsu 9 setup ti&e # ns
9thd 9 hold ti&e - ns
<k#> <lock to > tpd 1 ns
Points to remem"er:
"# Setup is checked at ne$t clock edge#
%# &old is checked at same clock edge#
+# ,or &old -heck ( -hecking of hold )iolation*
o Minimum Delay along the data path.
o Maximum Delay along the clock path.
.# ,or Set/p -heck ( -hecking of Setup )iolation*
1. Maximum Delay along the data path.
2. Minimum Delay along the clock path.
sic 0 2lip2lop circuit.
Calculation of Setup Violation Check: -onsider above circuit of 0 22 connected to each other.
&etup &lac3 + Ce:uired time - Arri5al time 0since we want data to arri5e before it
is re:uired1
Ahere=
9rrival ti&e (&a2) E clock dela! ''1 (&a2) Fclock)to)D dela! ''1 (&a2) F co&b.
@ela!( &a2)
Ie1uired ti&e E clock adOust F clock dela! ''# (&in) ) set up ti&e ''#
<lock adOust E clock period (since setup is anal!(ed at ne2t edge)
Calculation of Hold Violation Check: -onsider above circuit of 0 22 connected to each other.
(old &lac3 + Arri5al ,ime - Ce:uired time 0since we want data to arri5e after it is
re:uired1
Ahere=
9rrival ti&e (&in) E clock dela! ''1 (&in) Fclock)to)D dela! ''1 (&in) F co&b.
@ela!( &in)
Ie1uired ti&e E clock adOust F clock dela! ''# (&a2) F hold ti&e ''#
<lock adOust E 0 (since hold is anal!(ed at sa&e edge)
Calculation of Maximum Clock Frequency:
?ax %loc3 Fre: + $D ?ax 0Ceg2reg dela!, %l32'ut dela!, #in2#in dela!1
;here:
Ceg2Ceg >ela! + %l3-to-= dela! of 9rst FF 0max1 - conb dela! 0max1 -
setup time of 2nd FF.
%l32'ut >ela! + %loc3 dela! w.r.t FF 0max1 - cloc3-to-= dela! of FF$
0max1 - comb. dela! 0max1
#in2#in dela! + %omb dela! between input pin to output pin 0max1
"-elay 4 Timing path -elay" : Static Timing
Analysis STA! "asic Part 6a!
This particular post is inspired by a uestion asked by .alit. And 2rankly speaking + am not able to resist
myself to write a blog on this. + was thinking to capture all this since long but every time because of work +
have to drop my thoughts.. But today after reading his uestion.. + am not able to control myself. 1#
*o the Fuestion is1 !original uestion#
I have a doubt regarding how delay is calculated along a path#i think there are two ways
"* to calculate ma$ delay and min delay, we keep adding ma$ delays and min delays of all
cells(buffer0inverter0mu$* from start point to end point respectively#
%*in other way, we calculate path delay for rising edge and falling edge separately# we apply a rise edge
at start point and keep adding cell delay# cell delay depends upon input transition and output fanout# so
now we have two path delay values for rise edge and falling edge# greater one is considered as 1a$
delay and smaller one is min delay#
which one is correct ?
*hort Ans is .. both are correct and you have to use both. ;ay be you all become confuse& so let me give
you few details.
As + have mention that for *etup and (old calculation & you have to calculate the 'elay of the Timing path
!capture path or launch path#. :ow in a circuit there are 0 ma4or type of 'elay.
<. "=.. '=.AH
o Timing 'elay between an input pin and an output pin of a cell.
o "ell delay information is contained in the library of the cell. e.g% .lef file
0. :=T '=.AH.
o +nterconnect delay between a driver pin and a load pin.
o To calculate the :=T delay generally you reuire $ most important information.
"haracteristics of the 'river cell !which is driving the particular net#
.oad characteristic of the receiver cell. !which is driven by the net#
A" !resistance capacitance# value of the net. !+t depends on several factor%
which we will discuss later#
Both the delay can be calculated by multiple ways. +t depends at what stage you reuire this information
with in the design. e.g 'uring pre layout or 3ost layout or during *ignoff timing. As per the stage you are
using this& you can use different ways to calculate these 'elay. *ometime you reuire accurate numbers
and sometime approximate numbers are also sufficient.
:ow lets discuss this with previous background and then we will discuss few new concepts.
:ow in the above fig% +f + will ask you to calculate the delay of the circuit& then the delay will be
-elay37.897.7697.:(97.(#97.;,97.#89#.7#97.#(97.8<36.78ns if all the $elay in ns!
:ow lets add few more value in this. As we know that every gate and net has max and min value& so in
that case we can find out the max delay and min delay. !on what basis these max delay and min delay we
are calculating .. we will discuss after that#
*o in the above example& first value is max value and 0nd value is min value. *o
-elayma1!3 7.897.7697.:(97.(#97.;,97.#89#.7#97.#(97.8<36.78ns
-elaymin!3 7.697.7,97.:97.#;97.;97.#97.;97.#97.83,.8#ns
Till now every one know the concept. :ow lets see what?s the meaning of min and max delay.
The delay of a cell or net depends on various parameters. 2ew of them are listed below.
.ibrary setup time
.ibrary delay model
=xternal delay
"ell load characteristic
"ell drive characteristic
>perating condition !3-T#
Wire load model
=ffective "ell output load
+nput skew
Back annotated 'elay
+f any of these parameter vary & the delay vary accordingly. 2ew of them are mutually exclusive. and +n
that case we have to consider the effect of only one parameter at a time. +f that?s the case & then for *TA&
we calculated the delay in both the condition and then categori9e them in worst !max delay# condition or
the best condition !min delay#. =.g% if a cell has different delay for rise edge and fall edge. Then we are
sure that in delay calculation we have to use only one value. *o as per their value & we can categori9e fall
and rise delay of all the cell in the max and min bucket. And finally we come up with max 'elay and min
delay.
*normation !sed in Cell and net delay calc!lation 6Pict!re So!rce - Synopsys7
The way delay is calculated also depends which tool are you using for *TA or delay calculation. "adence
may have different algorithm from *ynopsys and same is the case of other vendor tools like
mentor&magma and all. But in general the basic or say concepts always remain same.
+ will explain about all these parameter in detail in next of few blogs& but right now 4ust one example which
can help you to understand the situation when you have a lot of information about the circuit and you want
to calculate the delay.
+n the above diagram& you have 0 paths between )22< and )22$. *o when ever you are doing setup and
hold analysis& these path will be the part of launch path !arrival time#. *o lets assume you want to
calculate the max and min value of delay between )22< and )220.
*nformation#:
J.I4 J*9*@K J*9*@0 J:J'# J.I#
@5L9>(ns
)
- K K # -
"alculation1
'elay in 3ath< 1 6PKL<<ns&
'elay in 3ath01 KP0P6PKL<Nns&
*o
;ax 'elay L <Nns % 3ath0 % .ongest 3ath % Worst 3ath
;in 'elay L <<ns % 3ath< % *mallest 3ath % Best 3ath
*nformation(:
J.I4 J*9*@K J*9*@0 J:J'# J.I#
Iise @ela!
(ns)
- K 4 1 1
'all @ela!
(ns)
K L 1 1
"alculation1
'elay in 3ath< 1 Aise 'elay 1 6PKL<<ns& 2all 'elay1 KPRL<$ns
'elay in 3ath01 Aise 'elay 1 BP<P<PKL<0ns& 2all 'elay1 $P<P<PRL<0ns
*o
;ax 'elay L <$ns %3ath< !2all 'elay#
;in 'elay L <<ns % 3ath< !Aise 'elay#
:ote1 here there are lot of more concepts which can impact the delay calculation seuence& like unate.
We are not considering all those right now. + will explain later.
*nformation,:
Librar
!
@ela! J.I4 J*9*@K J*9*@0 J:J'# J.I#
4in
Iise @ela!
(ns)
- K 4 1 1
'all @ela!
(ns)
K L 1 1
4a2
Iise @ela!
(ns)
-.- K.- 4.- 1.- 1.-
'all @ela!
(ns)
-.- K.- #.- 0.- 0.-
"alculation1
2or ;in .ibrary1
'elay in 3ath< 1 Aise 'elay 1 6PKL<<ns& 2all 'elay1 KPRL<$ns
'elay in 3ath01 Aise 'elay 1 BP<P<PKL<0ns& 2all 'elay1 $P<P<PRL<0ns
2or ;ax .ibrary1
'elay in 3ath< 1 Aise 'elay 1 6.6PK.6L<0ns& 2all 'elay1 6.6PK.6L<Bns
'elay in 3ath01 Aise 'elay 1 B.6P<.6P<.6PK.6L<Bns& 2all 'elay1 0.6P7.6P7.6PK.6L<7ns
*o
;ax 'elay L <Bns% 3ath<!2all 'elay#,3ath0!Aise 'elay#
;in 'elay L <7ns % 3ath0!2all 'elay#
As we have calculated above& *TA tool also uses similar approach for finding the ;ax delay and ;in
'elay. >nce ;ax and ;in delay is calculated then during setup and hold calculation& we use
corresponding value.
>nce again + am mentioning that all these values are picked randomly. *o it may be possible that
practically the type,amount of variation in value is not possible.
+n next part we will discuss these parameter in detail one by one.
-elay 4 "*nterconnect -elay =o$els" : Static Timing
Analysis STA! "asic Part 6"!
+n the previous post we have discussed about the way tool calculate the max and min delay in a circuit.
:ow we will discuss other basics of the 'elay and delay calculation. 'uring your day to day work !in
*emiconductor 2ield# or say in different Books& you come across different terminology related to the
delays. There is a long list of that.
+nput 'elay
>utput 'elay
"ell 'elay
:et 'elay
Wire 'elay
*lope 'elay
+ntrinsic 'elay
Transition 'elay
"onnect 'elay
+nterconnect 'elay
3ropagation 'elay
;in,;ax 'elay
Aising,2alling 'elay
@ate 'elay
*tage delay
2ortunately or say luckily out of the above mention long list few are 4ust synonym of
other and few are interrelated to each other . .ike :et delay also know as Wire 'elay &
+nterconnect delay. Broadly we can divide this .ong .ist into 0 type of delay. :et 'elay
!Wire delay# and "ell 'elay. ! Note : *tage 'elay L :et delay P "ell 'elay. #
*o lets discuss these one by one. +n digital design& a wire connecting pins of standard
cells and blocks is referred to as a :=T. A net
(as only one driver
(as a number of fanout cells or blocks.
"an travel on multiple metal layers of the chip.
C:et 'elayD refers to the total time needed to charge or discharge all of the parasitic
!"apacitance , Aesistance , +nductance# of a given :et. *o we can say that :et delay is
a function of
:et Aesistance
:et "apacitance
:et Topology
:ow to calculate the :et delay& the wires are modeled in different ways and there are
different way to do the calculation. 3ractically& when you are applying a particular delay
model in a design & then you have to apply that to all cells in a particular library. Hou
cannot mix delay models within a single library. There are few recommendations
provided by experts or say experienced designer regarding the application of a
particular 'elay model in a design and that depends on
Technology of design.
At what stage you are ? >r say at what stage you want to apply a delay model.
(ow accurately you want to calculate the delay.
Note : +deally Till the physical wire is not present in you design& you cannot calculate the
:et delay. Aeason is ... +f wire is not present & you have no idea about the .ength,Width
of the wires. *> H>) "A::?T "A.").AT= T(= A"")AAT= -A.)=* >2 3AAA*+T+"
>A *AH '=.AH -A.)= >2 T(= W+A=. But here main point is accurate value& means
there is possibility of inaccurate or say approximate value of delay value before physical
laying of wire in a design.
There are several delay models. Those which can provide more accurate result& takes
more runtime to do the calculation and those which are fast provides less accurate
value of delay. .ets discuss few of them. ;ost popular delay models are %
.umped "apacitor ;odel
.umped A" model
'istributed A" model
o 3i A" network
o T A" network
A." model
Wire .oad model
=lmore 'elay model
Transmission .ine ;odel
>&mpe$ %apacitor =o$el.
;odel assume that wire resistance is negligible.
*ource driver sees a single loading capacitance which is the sum of total
capacitance of the interconnect and the total loading capacitance at the sink.
+n past !higher technology%$67nm and so#& capacitor was dominating and thats
the reason in the model we have only capacitance.
o >lder technology had wide wires&
o ;ore cross section area implies less resistance and more capacitance.
o *o Wire model only with capacitance.
+n the 2ig AL7
.umped "apacitor ;odel
>&mpe$ ?% ?esistance %apacitance! mo$el:
As the feature si9e decreases to the submicron dimensions& width of the wire
reduced.
Aesistance of wire is no longer negligible.
(ave to incorporate the resistance in our model. And thats the reason .umped
A" model !or say A" tree# comes into picture.
+n lumped A" model the total resistance of each wire segment is lumped into one single
A& combines the global capacitive into single capacitor ".
.umped A" ;odel
-istri"&te$ ?% mo$el:
'istributed means A" is distributed along the length of the wire. The total resistance
!At# and capacitance !"t# of a wire can be expressed as
At L Ap S .
"t L "p S .
Where
"p and Ap are "apacitance and Aesistance per unit length.
. is the length of the wire.
+deally& distributing the resistance and capacitance of a wire in very small portion of the
wire !say delta# give you the better performance. :ow to find out the total capacitance
and resistance we use the differential euation. 'istributed A" model provides better
accuracy over lumped A" model. But this type of model is not practically possible.
'istributed A" ;odel
The distributed A" model can be configured by 0 ways based on the structure or say
shape !pi and T#. 2ollowing is the pictorial view.
T model1
"t is modeled as a half way of the resistive tree.
At is broken into 0 sections !each being At,0 #
3i ;odel1
"t is broken into 0 sections !each being "t,0# are connected on either side of the
resistance.
At is in between the capacitances.
2or practical purpose& wire%models with 6%<7 elements,nodes are used to model the
wire. +t will provide the more accurate result. 2or : element section
2or T network1
+ntermediate section of resistance are eual to At,:.
+ntermediate section of "apacitance are modeled by "t,:
En$ section of ?esistance are e@&al to ?tA(N!.
This T :etwork is represented as T: model.
2or 3i network1
+ntermediate section of resistance are eual to At,:.
+ntermediate section of "apacitance are modeled by "t,:
En$ section of %apacitance are e@&al to %tA(N!.
This 3i :etwork is represented as 3i: model.
0 Types of 'istributed A" ;odel !3i% ;odel and T% ;odel#
Note: >&mpe$ 5s -istri"&te$ ?% 'ire:
2ollowing is the comparison between the .umped and distributed A" network. +t will
help you to understand in terms of uses of the both type of network in terms of accuracy
and runtime.
2ollowing is the *tep Aesponse of .umped -s 'istributed A" line.
*tep Aesponse >f .umped and 'istributed A" :etwork
Below comparison Table will give you more accurate picture.
O&tp&t Potential range
Time Elapse$
-istri"&te$ ?% Net'or/ >&mpe$ ?% net'or/
7 to N78 <.7A" 0.$A"
<78 to N78 !rise time# 7.NA" 0.0A"
7 to K$8 7.6A" <.7A"
7 to 678 7.BA" 7.RA"
7 to <78 7.<A" 7.<A"
?>% mo$el
+n the past since the design freuency was low so the impedance !w.# was dominated
by Aesistance !w. QQ A#. *o we are not caring C.D. (owever if you are operating at
higher freuency and use the wider wire that reduce the resistivity then we have to take
account the inductance into our modeling.
'istributed A." ;odel
-elay 4 "Wire >oa$ =o$el" : Static Timing Analysis
STA! "asic Part 6c!
Now the question is: What is Wire Load Models (WLM).
,ire loading models
=sed to estimate the interconnect wire delay d!ring pre-layo!t in a design
cycle4
,ire load inormation is #ased on statistics rom physical layo!t parasitic
o *normation rom the statistics is !sed in #oth conservative and
aggressive ta#les4
o The conservative ta#les are #ased on 2mean val!e3 pl!s 3-sigmaA the
aggressive ta#les on 2mean val!e3 pl!s 1-sigma4
)ierent or dierent technology4
o ,ire load models are appro&imated rom one technology to another
#ased on scaling actors4 )!e to these appro&imationsB the acc!racy o these
models diminish over m!ltiple technology nodes
)escri#es eect o wire length and ano!t on
o Cesistance
o Capacitance
o 8rea o the nets4
8ll attri#!tes 6CB C and 8rea7 are given per !nit length wire4
Slope val!e is !sed to characteri:e linear ano!t4
Basically a set o ta#les
o @et ano!t vs load
o @et ano!t vs resistance
o @et ano!t vs area
One e&le o s!ch type o ta#le is:
@et
0ano!t
Cesistance
DE
Capacitance
p0
1 0.00498 0.00312
2 <4<12F. <4<<;12
3 <4<2<F2 <4<1312
( <4<2;;; <4<1;11
8s per this
*n a#ove circ!it - The CC val!e is estimated and represented as per ,-+4
The ollowing are ew snapshot o the dierent ormat o wire load model4
wireGload6H,-+1H7 I
resistance : <4<<<5 A------>C per !nit length
capacitance : <4<<<1 A------> C per !nit length
area : <41 A------> 8rea per !nit length
slope : 14. A------> =sed or linear e&trapolation
ano!tGlength61B <4<<27 A ------> at ano!t 213 length o the wire is <4<<2
ano!tGlength62B <4<<57A
ano!tGlength63B <4<<F7A
ano!tGlength6(B <4<1.7A
ano!tGlength6.B <4<2<7A
ano!tGlength69B <4<2;7A ------> at ano!t 293 length o the wire is <4<2;
ano!tGlength6;B <4<3<7A
ano!tGlength6FB <4<3.7A
ano!tGlength61<B <4<(<7A
J
wireGload6H,-+2H7 I
ano!tGlength6 1B 1 7A
ano!tGlength6 2B 2 7A
ano!tGcapacitance6 1B <4<<2 7A
ano!tGcapacitance6 2B <4<<( 7A
ano!tGcapacitance6 3B <4<<5 7A
ano!tGcapacitance6 (B <4<<; 7A
ano!tGcapacitance6 .B <4<1< 7A
ano!tGcapacitance6 5B <4<13 7A
ano!tGcapacitance6 9B <4<1. 7A
ano!tGcapacitance6 ;B <4<1F 7A
ano!tGcapacitance6 FB <4<23 7A
ano!tGcapacitance6 1<B <4<297A
ano!tGresistance6 1B <4<1 7A
ano!tGresistance6 2B <4<1. 7A
ano!tGresistance6 3B <4<22 7A
ano!tGresistance6 (B <4<25 7A
ano!tGresistance6 .B <4<3< 7A
ano!tGresistance6 5B <4<3. 7A
ano!tGresistance6 9B <4<3F 7A
ano!tGresistance6 ;B <4<(; 7A
ano!tGresistance6 FB <4<.9 7A
ano!tGresistance6 1<B <4<5 7A
ano!tGarea6 1B <411 7A
ano!tGarea6 2<B 242< 7A
J
"ere --
8reaB Cesistance and Capacitance are in per !nit length o the interconnect4
The slope is the e&trapolation slop to #e !sed or data points that are not speciied
in the an-o!t length ta#le4
*n generalB not all ano!ts are mentioned in a given ,-+ loo/!p ta#le4 0or
e&leB in a#ove ,-+1 and ,-+2 loo/!p ta#leB capacitance and resistance
val!es or ano!ts 1B 2B 3B (B .B 9B ;B FB 1< is given4 * we want to estimate the
val!es at ano!ts in the gaps 6e4g4 rom 57 or o!tside the ano!t range speciied in
the ta#le 6e4g 0ano!t 2<7B we have to calc!lated those val!e !sing 6linear7
interpolation and e&trapolation4
For WLM1
For Fanout20
Since its more than the ma& val!e o 0ano!t availa#le in ta#le 6i4e 1<7 B so we have
to perorm e&trapolation4
Net length = <length of net at fanout 10> + (20-10) x Slope
Resistance = <new calculated Net length at fanout > x Resistance o!
"apacitance #alue pe! unit length
"apacitance = <new calculated Net length at fanout > x "apacitance #alue pe!
unit length
@et length > <4<(< ? 1< & 14. 6slope7 > 1.4<( ----------> length o net with ano!t
o 2<
Cesistance > 1.4<( & <4<<<5 > <4<<F<2( !nits
Capacitance > 1.4<( & <4<<<1 > <4<<1.<( !nits
For Fanout!
Since itKs #etween . and 9 and corresponding ano!t $s length is availa#leB we can
do the interpolation4
Net length = ( (net length at fanout $) + (net length at fanout %) ) & 2
Resistance = <new calculated Net length at fanout 20> x Resistance #alue pe! unit
length
"apacitance = <new calculated Net length at fanout 20> x "apacitance #alue pe!
unit length
@et length > 6<4<<2< ? <4<<2;7'2><4<<(;'2><4<<2( ----------> length o net with
ano!t o 5
Cesistance > <4<<2( & <4<<<5 > <4<<<<<1(( !nits
Capacitance > <4<<2( & <4<<<1 > <4<<<<<<2( !nits
*n the similar way we can calc!late the ,-+ or any no o ano!t val!e4
,-+s are oten !sed in pre-placement optimi:ation to drive speed!ps o critical
paths4 Since timing-driven placement pla!si#ly ma/es nets on critical paths shorter
than averageB some optimism may #e incorporated into the ,-+4 Th!sB a ,-+
may act!ally consist o more than one loo/!p ta#leB with each ta#le corresponding
to a dierent optimism level4 There are several ways to incorporate the optimism
level4 * we !se the ,-+s that come rom the 68S*C vendorKs7 design li#raryB
!s!ally there are several ta#les rom which we can select4 ,e can also increase the
optimism level o a ,-+ #y m!ltiplying all val!es in the ,-+ #y some actor
less than 142 0or e&leB we can !se <42.B <4.B or <49.4
,-+ Types
0or lows that r!n timing-#ased logic optimi:ation #eore placementB there are
three #asic types o ,-+s that can #e !sed:
14 Statistical ,-+s
o 8re #ased on averages over many similar designs !sing the same or
similar physical li#raries4
24 Str!ct!ral ,-+s
o =se inormation a#o!t neigh#oring netsB rather than L!st ano!t and
mod!le si:e inormation4
34 C!stom ,-+s
o 8re #ased on the c!rrent design ater placement and ro!tingB #!t
#eore the c!rrent iteration o preplacement synthesis4
Now the "uestion is: Where do the wire load #odels $o#e %ro#&
@ormally the semicond!ctor vendors will develop the models4
8S*C vendors typically develop wireload models #ased on statistical inormation
ta/en rom a variety o e&le designs4 0or all the nets with a partic!lar ano!tB
the n!m#er o nets with a given capacitance is plotted as a histogram4 8 single
capacitance val!e is pic/ed to represent this ano!t val!e in the wireload model4 *
a very conservative wireload model is desiredB the F<M decile might #e pic/ed 6i4e4
F<M o the nets in the sample have a capacitance smaller than that val!e74
*n this e&le F<M o nets have a capacitance smaller then <41F;p4 So in the
,-+ ta#leB yo! will notice that ano!tGcapacitance6 3B <41F; 74
Similar statistics are gathered or resistance and net area4
=s!ally the vendor s!pplies a amily o wireload modelsB each to #e !sed or a
dierent si:e design4 This is called a!ea-'ased wi!eload selection
Few 'd(an$e $on$e)ts:
Till now we have disc!ssed that or a partic!lar @et yo! can estimate the CC val!e
as per the ,-+4 -et me as/ yo! one 1!estion4 ,hat i yo!r design is hierarchicalN
)o yo! thin/ even in that case yo! can !se the same ,-+ or a partic!lar net
which is crossing the hierarchical #o!ndariesN Short 8@S is: yo! can !se it #!t
yo! will lose the acc!racy4
O!st to solve this pro#lemB $endors !s!ally s!pplies m!ltiple ,-+s4 There are
dierent +odes or ,-+ analysis- ew important are:
,-+ analysis has three modes:
14 Top:
o Consider the design as it has no hierocracy and !se the ,-+ or the
top mod!le to calc!late delays or all mod!les4
o 8ny low level ,-+ is ignored4
24 %nclosed:
o =se the ,-+ o the mod!le which completely encloses the net to
comp!te delay or that net4
34 Segmented:
o * a net goes across several ,-+B !se the ,-+ that corresponds to
that portion o the net which it encloses only4
=a1im&m %loc/ )re@&ency : Static Timing Analysis
STA! "asic Part 8a!
This is a general uestion in most of the interview& whats the maximum clock freuency for a particular
circuit? >r +nterviewer will provide some data and they will repeat the same uestion. ;any of us know
the direct formula and after applying that we can come across the final CAnsD but if someone twist the
uestion. *ome %time we become confuse. + motivation of this blog is the same. *everal people asked me
how to calculate the max%clock freuency. *o + thought that its best if + can write something over this.
(ere + will discuss the same but from basic point of view. +t has $ ma4or sections.
<. +n <
st
section& we will discuss different definitions with respect to *euential and
combinational "ircuits.
0. 0
nd
*ection contains the basics of C;aximum "lock 2reuencyD. + will explain why and
how you can calculate the max "lock freuency.
$. + will take few examples and try to solve them. + will make sure that + can capture at least
0%B examples from easy one to difficult one.
As we know that now a days all the chips has combinational P seuential circuit. *o before we move
forward& we should know the definition of C3ropagation delayD in both types of circuits. 3lease read it once
because it will help you to understand the C;aximum "lock 2reuencyD concepts.
Propagation -elay in the %om"inational circ&its:
.ets consider a C:>TD gate and +nput,output waveform as shown in the figure
2rom the above figure& you can define
?ise Time tr!: The time reuired for a signal to transition from <78 of its maximum value to
N78 of its maximum value.
)all Time tf!: The time reuired for a signal to transition from N78 of its maximum value to <78
of its maximum value.
Propagation -elay tp>+B tp+>!: The delay measured from the time the input is at 678 of its
full swing value to the time the output reaches its 678 value.
+ want to rephrase above mention definition as
This value indicates the amount of time needed to reflect a permanent change at an output& if
there is any change in logic of input.
"ombinational logic is guaranteed not to show any further output changes in response to an input
change after tp.( or tp(. time units have passed.
*o& when an input T change& the output H is not going to change instantaneous. +nverter output is going
to maintain its initial value for some time and then its going to change from its initial value. After the
propagation delay !tp.( or tp(. % depends on what type of change% low to high or high to low#& the
inverter output is stable and is guaranteed not to change again until another input change ! here we are
not considering any *+,noise effect#.
Propagation -elay in the Se@&ential circ&its:
+n the seuential circuits& timing characteristics are with respect to the clock input. Hou can correlate it in
this way that in the combinational circuit every timing characteristic,parameter are with respect to the data
input change but in the seuential circuits the change +n the Cdata inputD is important but change in the
clock value has higher precedence. =.g in a positive%edged%triggered 2lip%flop& the output value will
change only after a presence of positive%edge of clock whether the input data has changed long time
ago.
*o flip%flops only change value in response to a change in the clock value& timing parameters can be
specified in relation to the rising !for positive edge%triggered# or falling !for negative%edge triggered# clock
edge.
Note1 *etup and hold time we have discussed in detail in the following blogs. *etup and (old
part<I *etup and (old part0I *etup and (old part$ . But 4ust to refresh your memories 1# & + have captured
the definition here along with Cpropagation delayD.
.ets consider the positive%edge flip%flop as shown in figure.
Propagation $elayB tp+> an$ tp>+ B has the same meaning as in combinational circuit U beware
propagation delays usually will not be eual for all input to output pairs.
Note1 +n case of flip%flop there is only one propagation delay i.e tclk%F !clockVF delay# but in case of
.atches there can be two propagation delays1 t"lk%F !clockVF delay# and t'%F !dataVF delay#. .ation
delay we will discuss later.
*o again let me rephrase the above mention definition
This value indicates the amount of time needed for a permanent change at the flip%flop output !F#
with respect to a change in the flip flop%clock input !e.g. rising edge#.
When the clock edge arrives& the ' input value is transferred to output F. After t"lkWF !here
which is euivalent to tp.(#& the output is guaranteed not to change value again until another clock edge
trigger !e.g. rising edge# arrives and corresponding +nput also.
Set&p time tsu! % This value indicates the amount of time "efore the clock edge that data
input 2 m&st be stable.
+ol$ time th! % This value indicates the amount of time after the clock edge that data input 2 m&st be
held stable.
The circuit must be designed so that the 2 flip flop input signal arrives at least Ctsu time units "efore the
clock edge and does not change until at least Cth time units after the clock edge. +f either of
these restrictions are violate$ for any of the flip4flops in the circ&itB the circ&it 'ill not operate
correctly. These restrictions limit the maximum clock freuency at which the circuit can operate !thats
what + am going to explain in the next section O #
The =a1im&m %loc/ )re@&ency for a circ&it:
+ hope you may be asking that why there is a need of explaining the combinational circuit propagation
delay here. "ombinational circuit is always independent of clock& so why combination circuit here. O
:ow the point is combinational circuit plays a very important role in deciding the clock freuency of the
circuit. .ets first discuss an example and try to calculate the circuit freuency& and then we will discuss
rest of the things in details. O
Note1 2ollowing diagram and numbers& + have copied from one of the pdf downloaded by me long time
back.
:ow lets understand the flow of data across these 2lip%flops.
.ets assume data is already present at input ' of flip%flop A and its in the stable form.
:ow "lock pin of 22 !2lip%2lop# A i.e "lk has been triggered with a positive clock edge !.ow to
high# at time C7nsD.
As per the propagation delay of the seuential circuit !tclk%F#& it will take at least <7ns for a valid
output data at the pin T.
o Aemember% +f you will capture the output before <7ns& then no one can give you the
guarantee for the accurate,valid value at the pint T.
This data is going to transfer through the inverter 2. *ince the propagation delay of C2D is 6ns& it
means& you can notice the valid output at the pin H only after <7nsP6nsL<6ns !with reference to the
positive clock edge% <7ns of 22 A and 6 ns of inverter#
o 3ractically this is the place where a more complex combinational circuit are present
between 0 22s. *o in a more complex design& if a single path is present between T and H& then the total
time taken by the data to travel from T to H is eual to the sum of the propagation delay of all the
combinational circuits,devices. !+ will explain this in more detail in the next section with more example#
:ow once valid data reaches at the pin H& then this data supposed to capture by 22 B at the next
clock positive edge !in a single cycle circuit#.
o We generally try to design all the circuit in such a way that it operates in a single clock
cycle. ;ultiple clock cycle circuit are special case and we are not going to discuss that right now !as
someone says U its out of scope of this blog O #
2or properly capturing the data at 22 B& data should be present and stable 0ns !setup time#
before the next clock edge as part of setup definition#.
*o it means between 0 consecutive positive clock edge& there should be minimum time difference of <7ns
P6ns P0ns L <Rns. And we can say that for this circuit the minimum clock period should be <Rns !if we
want to operate the circuit in single clock cycle and accurately#.
:ow we can generali9e this
;inimum "lock 3eriod L tclk%F !A# P tpd !2# P ts !B#
And C=a1im&m %loc/ )re@&ency 3 #A=in %loc/ Perio$!C
:ow at least we have some idea how to calculate the ;ax clock freuency or ;in "lock 3eriod. *o even
if we will forget the formula then we can calculate our self and we can also prove the logic behind that. .et
me use the same concept in few of the more complex design circuit or you can say the practical circuit.
=a1im&m %loc/ )re@&ency : Static Timing Analysis
STA! "asic Part 8"!
E1ample #: =<iple ))Ds Se@&ential %irc&it
+n a typical seuential circuit design there are often millions of flip%flop to flip%flop paths that need
to be considered in calculating the maximum clock freuency. This freuency must be
determined by locating the longest path among all the flip%flop paths in the circuit. "onsider the
following circuit.
There are three flip%flop to flip%flop paths !flop A to flop B& flop A to flop "& flop B to flop "#. )sing
an approach similar to whatever + have explained in the last section& the delay along all three
paths are1
TAB L t"lkWF!A# P ts!B# L N ns P 0 ns L << ns
TA" L t"lkWF!A# P tpd!M# P ts!"# L N ns P B ns P 0 ns L <6 ns
TB" L t"lkWF!B# P tpd!M# P ts!"# L <7 ns P B ns P 0 ns L <K ns
*ince the TB" is the largest of the path delays& the minimum clock period for the circuit is Tmin
L <Kns and the maximum clock freuency is <,Tmin L K0.6 ;(9.
E1ample (: %irc&it 'ith min an$ ma1 $elay Specification
.ets consider following circuit. :ow this circuit is similar to the normal 22 circuitry& only
differences are
=very specification has 0 values !;in and ;ax#.
There is a combinational circuit in the clock path also.
:ote1 if you are wondering why there are min and max value !or like from where these values
are coming& then you have to refer another blog#.
:ow lets understand the flow,circuit once again.
=very interconnect wire also has some delay& so you can see clock ".E will take some
time to reach the clock pin of the 22<.
Thats means with reference to original clock edge !lets assume at 7ns#& clock edge will
take minimum <ns and maximum 0ns to reach the clock pin of the 22<.
*o in the similar fashion& if we will calculate the total minimum delay and maximum
delay.
o +n data path 1 max delay L !0P<<P0PNP0#nsL0Kns
o +n data path 1 min delay L !<PNP<PKP<#nsL<Xns
o +n clock path1 max delayL !$PNP$#nsL<6ns
o +n clock path 1 min delay L !0P6P0#nsLNns
+n the last 0 example& there were no delays in the clock path& so it was easy to figure out
the minimum clock period. But in this example we have to consider the delay in the clock path
also.
*o for minimum clock period& we 4ust want to make sure that at 220& data should be
present at least CtsetupD time before positive clock edge !if its a positive edged triggered flipflop#
at the 220.
o *o "lock edge can reach at the 220 after Nns,<6ns !min,max# with the reference
of original clock edge.
o And data will take time <Xns,0Kns !min,max# with the reference of original clock
edge.
o *o clock period in all the B combinations are
"lock period !T<#L !;ax data path delay#%!max clock path delay#
PtsetupL0K%<6PBL<6ns
"lock period !T0#L !;in data path delay#%!max clock path delay#
PtsetupL<X%<6PBLRns
"lock period !T$#L !;ax data path delay#%!min clock path delay#
PtsetupL0K%NPBL0<ns
"lock period !TB#L !;in data path delay#%!min clock path delay#
PtsetupL<X%NPBL<<ns
*ince we want that this circuit should work in the entire scenario !all combination of data
and clock path delay#& so we have to calculate the period on the basis of that.
o :ow if you will see all the above clock period& you can easily figure out that if the
clock period is less than 0<ns& then either one or all of the scenarios,cases,combinations fail.
o So 'e can easily concl&$e that for 'or/ing of the entire circ&it properly
=inim&m %loc/ Perio$ 3 %loc/ perio$ T,! 3 =a1 $ata path $elay!4
min cloc/ path $elay!9tset&p3(:4E963(#ns
So in general:
=inim&m %loc/ Perio$ 3 =a1 $ata path $elay!4min cloc/ path $elay! 9 tset&p
And "=a1im&m %loc/ )re@&ency 3 #A=in %loc/ Perio$!C
E1ample ,: %irc&it 'ith m<iple %om"inational paths "et'een ( ))s:
:ow same scenario is with this example. + am not going to explain much in detail. Oust its like
that if you have multiple paths in between the 0%flipflops& then as we have done in previous
examples& please calculate the delays.
Then calculate the time period and see which one is satisfying all the condition. >r directly + can
say that we can calculate the "lock period on the bases of the delay of that path which has big
number.
=in %loc/ Time Perio$ 3 Tcl/4@ of 2))#! 9 ma1$elay of Path#B$elay of Path(! 9Tset&p
of 2)),!
E1ample 6: %irc&it 'ith -ifferent /in$ of Timing paths:
*ince + have mentioned that it has different kind of timing path& so you should know about the
timing paths. 2or that you can refer the !3ost link# post. After reading the Timing path& you can
easily figure out that in the above circuit there are B types of data paths and 0 clock paths
-ata path:
"# 3egister to register 4ath
o /% 56 /+ 56/" (2elay789:7"+ns*
o /" 56 /. 56 /% ( 2elay789;7"%ns*
%# Input pin0port to 3egister(flip5flop*
o /; 56 /. 56 /% ( 2elay7"9;7:ns*
o /; 56 /+ 56 /" ( 2elay7"9:7<ns*
+# Input pin0port to =utput pin0port
o /; 56 /8 56 /> (2elay7"9<9>7">ns*
.# 3egister (flip5flop* to =utput pin0port
o /" 56 /8 56 /> (2elay789<9>7%?ns*
o /% 56 /8 56 /> (2elay789<9>7%?ns*
%loc/ path:
/: 56 /" (2elay 7 %ns*
/: 56 /% (2elay 7%ns*
:ow few important points% This is not a full chip circuit. +n general& recommendation is that you
use registers at every input and output port. But for the time being& we will discuss this circuit&
considering this as full chip circuit. And you will how much analysis you have to do in this case.
:ext example& + will add the 22s !registers# at input and output port and then you come to know
the difference.
:ow lets *tudy this circuit in more details.
+n this circuit& we have to do the analysis in such a way that if we will apply an input at
3ort A& then how much time it will take to reach at output 3ort H. +t will help us to find out the
time period of clock.
>utput pin H is connected with a $input :A:' gate. *o if we want a stable out at H& we
have to make sure that all $ +nputs of :A:' gate should have stable data.
>ne input of :A:' gate is connected with +nput pin A with the help of )R.
o Time take by data to reach :A:' gate is <ns !gate delay of )R#
*econd input pin of :A:' gate is connected with output pin F of 2lip flop )0.
o Time take by data which is present at input ' of 22 U)0 to reach :A:' gate1
0ns!delay of )X#P6ns!Tc0 of 22 )0#LRns
Third input pin of :A:' gate is connected with the output pin F of 2lip 2lop )<.
o Time take by data which is present at input ' of 22 U)0 to reach :A:' gate1
0ns!delay of )X#P6ns!Tc0 of 22 )<#LRns
:ote1
+ know you may have doubt that why delay of )X comes in picture.
o With reference to the clock edge at ".E pin& we can receive the data at :A:'
pin after Rns only !'ont ask me% why we cant take reference in negative?#
;ay be you can ask why we havent consider the setup time of 22 in this calculation.
o +f in place of :A:' gate& any 22 would there then we will consider the setup. We
never consider the setup and Tc0 !"lk%0%F# values of same 22 in the delay calculation at the
same time. Because when we are considering "lk%0%F delay& we assume that 'ata is already
present at input 3in ' of the 22.
*o Time reuired for the data to transfer from input !A# to output !H# 3in is the maximum of1
3in03in 'elay L )RP)6P)K L <PNPKL<Kns
"lk0>ut !through )<# delay L )X P)<P)6P)KL0P6PNPKL00ns
"lk0>ut !through )0# delay L )X P)0P)6P)KL0P6PNPKL00ns.
So o&t of this %l/(O&t -elay is =a1im&m.
2rom the above *tudy& you can conclude that data can be stable after Rns at the :A:' gate and
maximum delay is 00ns. And you can also assume that this much data is sufficient for calculating the ;ax
"lock 2reuency or ;inimum Time 3eriod. But thats not the case. *till our analysis is half done in
calculating the ;ax%clock%freuency.
As we have done in our previous example& we have to consider the path between 0 flip%flops also. *o the
paths are1
2rom )< to )0 !Aeg<Aeg0#
o 3ath delayL 0ns !'elay of )X# P 6ns !Tclk0F of )<#PRns !'elay of )B#P$ns !*etup of )0#
U 0ns !'elay of )X#L<Rns%0nsL<6ns
2rom )0 to )< !Aeg0Aeg<#
o 3ath delay L 0ns !'elay of )X# P Tclk0F of )0 !6ns# P 'elay of )$ !Xns# P setup of )<
!$ns# U 'elay of )X !0ns# L<Xns %0ns L <Kns.
:ote1
+ am sure you will ask why did + subtract C'elay of )XD from the above calculation 1# because
'elay of )X is common to both the launch and capture path !+n case you want to know whats .aunch and
capture path please follow this post#. *o we are not supposed to add this delay in our calculation. But 4ust
to make it clear& + have added as per the previous logic and then subtracted it to make it clear.
*o now if you want to calculate the maximum clock freuency then you have to consider all the delay
which we have discussed above.
*o
;ax "lock 2re L <, ;ax !Aeg<Aeg0& Aeg0Aeg<& "lk0>utJ<& "lk0>utJ0& 3in03in#
L <, ;ax !<6& <K& 00& 00& <K#
L<,00 LB6.6;(9
E1ample 8: %irc&it 'ith -ifferent /in$ of Timing paths 'ith ?egister at *np&t an$
o&tp&t ports:
+n this example& we have 4ust added 0 22s )X at +nput pin and )N at output pin. :ow for this circuit& if we
want to calculate the max clock freuency then its similar to example <.
There are R 2lip flop to flipflop paths
"# /: 56 /. 56 /%
o 2elay 7 8ns9;ns9+ns7"8ns
%# /: 56 /+ 56 /"
o 2elay 7 8ns9:ns9+ns7">ns
+# /: 56 /8 56 /<
o 2elay 7 8ns9<ns9+ns7";ns
.# /" 56 /. 56 /%
o 2elay 7 8ns 9;ns 9+ns 7 "8ns
8# /" 56 /8 56 /<
o 2elay7 8ns9<ns9+ns7";ns
># /% 56 /8 56 /<
o 2elay78ns9<ns9+ns7";ns
;# /% 56 /+ 56 /"
o 2elay78ns9:ns9+ns7">ns
*ince the maximum path delay is <Rns&
The ;inimum clock period for the circuit should be Tmin L <R ns
And the ;aximum clock freuency is <,Tmin L 6X.X ;(9.
)i1ing Set&p an$ +ol$ 5iolation : Static Timing
Analysis STA! Basic Part :a!
Ae have discussed few basics about the MSetup and "old violationN in last few
posts. .nce designer6s fgured out the nu&ber of setup and hold violation then their
ne2t challenge is= M"ow to f2 these violationsN.
5@9 tools usuall! take care but still !ou have to provide the input (or sa! proper
switch) to f2 these violations. That &eans / can sa! that MTi&ing;Iouting Tools are
enough intelligent to solve &ost of the ti&ing violation% but still Tools never be &ore
intelligent than the hu&an brainN.
There are di8erent wa!s to f2 these issues and ever! wa! has the reason for that.
So designers should know what e2actl! the reason of /ssue and what are the
di8erent ðods (priorit! wise) or at least di8erent 5@96s switch for f2ing those
violation.
/n this series we will discuss the following things one b! one.
:asic of 'i2ing the S5TJP and ".L@ violations.
o 4ore 52a&ples here. ?er! less theor!.
o 'ew shortcuts;for&ula;tricks to fnd out whether these violations are
f2able or not. 9nd /f f2able% then a rough idea where and how.
@i8erent wa!s to f2.
o Their basics or sa! ph!sics;5ngineering of using that ðod for f2ing.
o Ahich ðod is good and in what scenario !ou can use the&.
:efore that) /f still !ou have an! doubt regarding the Setup and "old then please
refer following post.
Ahat e2actl! is the setup and hold P please refer the previous blog.
Ahat are setup and hold violation P please refer the previous blog.
*asi$s o% Fi+in, the -./012 and 34L56 (iolations.
Let6s start with following @iagra& and consider this as co&&on for ne2t few
e2a&ples.
/n the following e2a&ples we will pick di8erent values of Setup;"old values of
<apture '' and <o&binational Path dela!. Through these e2a&ple we will stud! )
"ow the setup and hold violations are dependent to each other and on the dela! of
the circuit. /f these things are clear then it6s ver! eas! for !ou to understand )) how
can we f2 the violations and if we are using an! particular ðods% then wh!7
Example 1:
&peci9cation of the FF %ircuit
Setup "old <lock period Tck#1 dela! *et @ela! <o&binational Logic @ela!
#ns 1ns 10ns 0ns (/deal) 0ns (/deal) 0.-ns
Let6s discuss the +ow of the data fro& ''1 to ''#
@ata is going to launch fro& ''1 at Five <lock 5dge at 0ns and it will reach to
''# after 0.-ns (co&binational logic dela! onl!).
This data is going to capture at ''# at Five <lock 5dge at 10ns.
As per the &etup de9nition% data should be stable #ns (Setup ti&e of ''#)
at ''# before the Five <lock 5dge (which is at 10ns)
o /n the above case P data beco&e stable H.-ns before the <lock edge at
10ns (10ns P 0.-ns). That &eans it satisf! the Setup condition. N' &E,@#
)'FA,'N.
9t the ''1 P second set of data is going to launch at tE10ns and it will reach
the ''# in another 0.-ns% &eans at tE10.-ns.
This second set of data is going to update;override the frst set of data.
As per the (old >e9nition% data should be stable till 1ns ("old ti&e of ''#)
at ''# after the clock edge (which is at tE10ns)
o /n the above case P frst set of data is going to override b! second set
of data at 10.-ns (&eans Oust after 0.-ns of the Five <lock edge at ''#). This &eans
it is not satisf!ing the hold condition.('F> )'FA,'N.
To f2 this "old violation P we have to increase the dela! of the @ata path so that the
second set of data should not reach before tE11ns (10nsF1ns). That &eans the
&ini&u& dela! of the <o&binational Logic Path should be 1ns for *. ".L@
?/.L9T/.*.
That &eans if !ou want to f2 the ".L@ violation% !ou can increase the @ela! of the
@ata path b! an! ðod (we will discuss all those ðods in detail P 3ust keep
s&all patience).
:ut it doesn6t &ean that !ou can increase the @ela! b! an! ?alue. Let6s assu&e that
!ou have increased the dela! of co&binational path b! adding e2tra bu8er (with
dela! of ,.-ns). *ow new specifcations are
&peci9cation of the FF %ircuit
Setup "old <lock period Tck#1 dela! *et @ela! <o&binational Logic @ela!
#ns 1ns 10ns 0ns (/deal) 0ns (/deal) E0.-nsF,.-nsEHns
As per the &etup de9nition% data should be stable #ns (Setup ti&e of ''#) before
the <lock 5dge (at ''# which is at 10ns) and with the updated specifcation P data
will be stable at tEHns% Oust 1ns before the <lock edge at tE10ns at ''#. That
&eans it is not satisf!ing the Setup condition. &E,@# )'FA,'N.
Since @ata path dela! is &ore than 1ns% there is N' ('F> )'FA,'N (Oust we
have discussed few paragraph above)
So it &eans that if we want to f2 the setup violation% the @ela! of the co&binational
path should not be &ore then ,ns (10ns P #ns). 4eans ,ns is the &a2i&u& value of
the @ela! of the <o&binational Logic path for *. S5TJP ?/.L9T/.*.
&o we can generaliGe this H
'or *. ".L@ and S5TJP ?/.L9T/.*% the dela! of the path should be in between 1ns
and ,ns.
'C
'or ?iolation free <ircuit=
?in dela! of %ombinational path 6 (old time of %apture FF.
?ax dela! of %ombinational path I %loc3 #eriod - &etup time of %apture
FF.
Example :
&peci9cation of the FF %ircuit
Setup "old <lock period Tck#1 dela! *et @ela! <o&binational Logic @ela!
Kns -ns 10ns 0ns (/deal) 0ns (/deal) 0.-ns
'low of the data fro& ''1 to ''#=
@ata is going to launch fro& ''1 at <lock 5dge at 0ns and it will reach to ''#
after 0.-ns (co&binational logic dela! onl!).
This data is going to capture at ''# at <lock 5dge at 10ns.
As per the &etup de9nition% data should be stable Kns (Setup ti&e of ''#)
before the <lock 5dge (which is at 10ns)
o /n the above case P data beco&e stable H.-ns before the <lock edge at
10ns (10ns P 0.-ns). That &eans it satisf! the Setup condition. N' &E,@#
)'FA,'N.
9t the ''1 P second set of data is going to launch at tE10ns and it will reach
the ''1 in another 0.-ns% &eans at tE10.-ns.
This second set of data is going to update;override the frst set of data.
As per the (old >e9nition% data should be stable till -ns ("old ti&e of ''#)
after the clock edge (which is at tE10ns) at ''#
o /n the above case P frst set of data is going to override b! second set
of data at 10.-ns (&eans Oust after 0.-ns of the <lock edge at ''#). This &eans it is
not satisf!ing the hold condition. ('F> )'FA,'N.
To f2 this "old violation P (9s per the previous e2a&ple) we &a! increase the dela!
of the @ata path% so that the second set of data should not reach before tE1-ns
(10nsF-ns). That &eans the &ini&u& dela! of the <o&binational Logic Path should
be -ns for *. ".L@ ?/.L9T/.*.
:ut *ow if !ou will verif! the Setup condition once again (with co&bination dela! of
-ns) which we have assu&ed for f2ing the hold violation) then !ou co&e to know
that data is going to stable onl! after -ns (&eans 10ns)-ns E -ns before the clock
edge at t)10ns). :ut as per the setup condition data should be stable before Kns. So
it &eans now it6s not satisf!ing Setup <ondition. 4eans S5TJP ?/.L9T/.*.
So in this scenario% we can6t f2 the setup and hold violation at the sa&e ti&e b!
adOusting the dela! in the co&binational logic.
Jou can also see it directl! with the help of minimum and maximum 5alue
of combinational dela!.
?in dela! 6 (old time of %apture FF 0means 8ns1
?ax >ela! I %loc3 #eriod H &etup time of capture FF 0?eans $0ns H /ns +
7ns1
&o ?in dela! 6 8ns and ?ax >ela! I 7ns which is not possible.
!o" the point is ho" to #x these $iolations% &ctually this is a non'#xa(le
issue until you )ust change the clock frequency or replace the FF "ith
lesser setup*hold $alue.
Let &e e2plain this.
4in dela! has dependence onl! on "old ti&e% which is f2ed for a particular ''.
4a2 dela! has dependence on # para&eters P <lock Period and Setup ti&e ) where
Setup ti&e is f2ed for a particular ''.
So if !ou can change the '' with lower setup;hold violation% then !ou can f2 this
issue. :ut in case if that6s not possible then we have to change the <lock period.
/n case we are changing the <lock period=
Keep -- ?in dela! 6+ 8ns 0 No ('F> )iolation1
Setup violation is b! Kns)-ns E1ns (KnsE Setup ti&e and -ns E co&binational
dela!). Ahat if we will increase the <lock period b! 1ns. 4eans *ew clock period
should be C 11ns.
So for <lock Period 11ns=
4a2 dela! QE <lock period (11ns) P Setup ti&e (Kns) E-ns.
*ow ) 4a2 @ela!E4in @ela! E -ns. (*either "old nor Setup ?iolation.)
;e can generaliGe-
'or ?iolation 'ree <ircuit
%loc3 #eriod 6+ &etup time - (old time.
*ummary of this 3ost1
?in dela! of %ombinational path 6 (old time of %apture FF.
?ax dela! of %ombinational path I %loc3 #eriod - &etup time of %apture
FF.
%loc3 #eriod 6+ &etup time - (old time.
/n the ne2t part we will discuss few &ore e2a&ples with &ore restrictions. Like)
Ahat if we can6t reduce the @ela! in the @ata path7
)i1ing Set&p an$ +ol$ 5iolation : Static Timing
Analysis STA! Basic Part :"!
/n the last part;post we have discussed # e2a&ples with di8erent
specifcations (:oth net dela! and Tck#D were ideal &eans 0ns) and co&e to
know that for ?iolation free <ircuit% following conditions should be satisfed.
?in dela! of %ombinational path 6 (old time of %apture FF.
?ax dela! of %ombinational path I %loc3 #eriod - &etup time of
%apture FF.
%loc3 #eriod 6+ &etup time - (old time.
/n this post we will discuss few &ore e2a&ples with &ore restrictions. Like
Ahat if we can6t reduce the @ela! of @ata path7
Let6s consider the following fgure co&&on to all e2a&ples until unless it6s
specifed
Example 3:
Speciication o the 00 Circ!it
Set!p "old Cloc/ period Tc/21 delay @et )elay Com#inational -ogic )elay
3ns 2ns 1<ns <ns 6*deal7 <ns 6*deal7 .ns 6canKt #e !rther red!ced74
.n the basic of last post Rlet6s start with checking few conditions directl!.
<lock Period <ondition= (Satisfed)
Setup ti&e F"old ti&e E -ns
<lock period E 10ns
<lock Period C Setup ti&e F"old ti&e (10C -)
4in dela! ; "old <ondition= (Satisfed)
<o&binational @ela! (-ns) C "old ti&e.
4eans ) *. ".L@ ?/.L9T/.*
4a2 @ela! ; Setup <ondition= (Satisfed)
<o&binational dela! (-ns) Q <lock period (10ns) P Setup (ns)
4eans ) *. S5TJP ?/.L9T/.*.
This e2a&ple is Oust to refresh !our &e&ories about the previous post.
Example 7=
Speciication o the 00 Circ!it
Set!p "old Cloc/ period Tc/21 delay @et )elay Com#inational -ogic )elay
(ns 3ns 1<ns <ns 6*deal7 <ns 6*deal7 ;ns 6canKt #e !rther red!ced74
<lock Period <ondition= (Satisfed)
Setup ti&e F"old ti&e E 4nsFns E Lns
<lock period E 10ns
<lock Period C Setup ti&e F "old ti&e (10 C L)
4in dela! ; "old <ondition= (Satisfed)
<o&binational @ela! (,ns) C "old ti&e (ns)
4eans ) *. ".L@ ?/.L9T/.*
4a2 @ela! ; Setup <ondition= (*ot Satisfed)
<o&binational dela! (,ns) s Not Fess ,han M<lock period (10ns) P Setup
(4ns)N
?eans - &E,@# )'FA,'N.
Since we can6t change this <o&binational dela! and also Setup ti&e for the
''% so we have to think soðing else. 3. Since we can6t touch the data path%
we can tr! with clock path.
'low of the data fro& ''1 to ''#=
Let6s assu&e that !ou have added one bu8er of TScapture dela! in the
clock path between the ''1 and ''#.
@ata is going to launch fro& ''1 at <lock 5dge at 0ns and it will reach
to ''# after ,ns (co&binational logic dela! onl!).
This data is going to capture at ''# at <lock 5dge at 10nsFTScapture.
(because of @ela! added b! :u8er).
As per the &etup de9nition% data should be stable 4ns (Setup ti&e
of ''#) before the <lock 5dge at ''# and in the above case clock edge is at
tETScaptureF10ns.
&o, for No &etup 5iolation:
EC ,ns (<o&binational @ela!) Q TScaptureF10ns (clock period) P 4ns (Setup
Ti&e of ''#)
EC 1#ns P 10ns Q TScapture
EC ,Lcapture 6 2ns.
FetMs assume if m! ,Lcapture + 3ns. ,hen N' &E,@# )'FA,'N.
*ow% recheck the "old violation.
9t the ''1 P second set of data is going to launch at tE10ns and it will
reach the ''# in another ,ns% &eans at tE1,ns.
This second set of data is going to update;override the frst set of data
present at ''#.
As per the (old >e9nition% data should be stable till ns ("old ti&e
of ''#) after the clock edge at ''# (Ahich is at tE10nsFnsE1ns P where
ns is the TScapture).
That &eans @ata should be re&ain stable till tE1nsFnsE1Kns.
o /n the above case the second set of data is going to override onl!
after tE1,ns. That &eans frst set of data re&ain Stable till 1Kns. 4eans N'
('F> )'FA,'N.
Fet me NeneraliGe this concept:
/ a& sure% few people &a! have 1uestion that what will happen if we will add
the bu8er in the Launch path. Let6s discuss that. Please consider the
following @iagra& for this. /n this Launch <lock path has a bu8er with a dela!
of MTSlaunchN and <apture clock path has another bu8er of dela!
MTScaptureN.
&peci9cation of the FF %ircuit
&etup TSsetup
(old TShold
%loc3 #eriod <lkSperiod
,c32: >ela! 0 (/deal)
Net >ela! 0 (/deal)
%ombinational Fogic >ela!
0bDw 2FFs1
Td
Faunch %loc3 path >ela! TSlaunch
%apture %loc3 path >ela! TScapture
Let6s understand the data +ow fro& ''1 to ''#
@ata is going to launch fro& ''1 at <lock 5dge at TSlaunch and it will
reach to ''# after Td (co&binational logic dela! onl!) that &eans tE MTd F
TSlaunchN.
This data is going to capture at ''# at <lock 5dge at M<lkSperiod F
TScaptureN
As per the &etup de9nition% data should be stable MTSsetupN (Setup
ti&e of ''#) ti&e before the <lock 5dge at ''#
o 4eans data should reach at ''# before tE M<lkSperiod F
TScapture P TSsetupN.
&o For N' &E,@# )'FA,'N:
EC TSlaunch F Td Q <lkSperiod F TScapture P TSsetup
EC ,d I %l3L#eriod - 0,Lcapture - ,Llaunch1 H ,Lsetup
9t the ''1 P second set of data is going to launch at tE M<lkSPeriod F
TSlaunchN and it will reach the ''# in another Td% &eans at tEN <lkSPeriod F
Td F TSlaunchN.
This second set of data is going to update;override the frst set of data
present at ''#.
As per the (old >e9nition% data should be stable till MTSholdN ("old
ti&e of ''#) ti&e after the <lock edge (which is at tE M<lkSPeriod F
TScaptureN).
o 4eans *e2t set of data should not reach ''# before tE
M<lkSPeriod F TScapture F TSholdN
&o For N' ('F> )'FA,'N:
EC <lkSPeriod F Td F TSlaunch C <lkSPeriod F TScapture F TShold
EC ,d 6 0,Lcapture - ,Llaunch 1 - ,Lhold
&ummar! of this post:
<lock Period <ondition=
%loc3 period 6 &etup time - (old ,ime
4a2 @ela!; Setup <ondition=
,d I %l3L#eriod - 0,Lcapture - ,Llaunch1 H ,Lsetup
4in @ela! ; "old <ondition=
,d 6 0,Lcapture - ,Llaunch 1 - ,Lhold
)i1ing Set&p an$ +ol$ 5iolation : Static Timing
Analysis STA! Basic Part :c!
*n the last part'post we have disc!ssed 2 more e&les with dierent speciications with more
restrictions 6Both net delay and Tc/2P were ideal means <ns7 and ig!re o!t that i yo! want to
i& the violation #y increasing'decreasing the delay in the data path then ollowing condition
sho!ld #e satisied4
Min dela7 o% 8o#9inational )ath : 3old ti#e o% 8a)ture FF.
Ma+ dela7 o% 8o#9inational )ath ; 8lo$< 2eriod = .etu) ti#e o% 8a)ture FF.
8lo$< 2eriod : .etu) ti#e > 3old ti#e.
B!t in case i yo! canKt to!ch the data path and yo! have to increase'decrease the delay in the
cloc/ path 6means #etween 2Cl/ pin to -a!nch 00 cloc/ pin3 Or #etween 2Cl/ pin and capt!re
00 cloc/ pin37B then ollowing conditions sho!ld satisied4
+a& )elay' Set!p Condition:
0d ; 8l<?2eriod > (0?$a)ture = 0?laun$h) @ 0?setu)
+in )elay ' "old Condition:
0d : (0?$a)ture = 0?laun$h ) > 0?hold
,here:
Td -> Com#inational path delay 6#etween the 2 00s7
TGcapt!re -> )elay o circ!it present #etween 2Cl/ pin and capt!re 00 cloc/ pin3
TGla!nch -> )elay o circ!it present #etween 2Cl/ pin to -a!nch 00 cloc/ pin3
*n this post we will disc!ss ew more e&les with more restrictions4
-etKs consider the ollowing ig!re common to all e&les !ntil !nless itKs speciied4
/+a#)le A:
Speciication o the 00 Circ!it
Set!p "old Cloc/ period Tc/21 delay @et )elay Com#inational -ogic )elay
3ns 2ns 1<ns <ns 6*deal7 <ns 6*deal7 11ns 6canKt #e !rther red!ced7
On the #asic o last post QletKs start with chec/ing ew conditions directly4
Cloc/ Period Condition: 6Satisied7
Set!p time ?"old time > .ns
Cloc/ period > 1<ns
Cloc/ Period > Set!p time ?"old time 61<> .7
+in delay ' "old Condition: 6Satisied7
Com#inational )elay 611ns7 > "old time4
+eans - @O "O-) $*O-8T*O@
+a& )elay ' Set!p Condition:
Com#inational delay 611ns7 Bs Not Less 0han 2Cloc/ period 61<ns7 R Set!p 63ns73
Means = ./012 CB4L'0B4N.
Since adding delay in the data path is not going to i& this violation and we canKt red!ce the
com#inational delay4 So as we have disc!ssed in o!r last postB we will try with Cloc/ path4
0rom the last postB i TGcapt!re is the delay o #!er which is inserted #etween the C-D and
Capt!reKs 00 and TGla!nch is the delay o #!er which is inserted #etween the C-D and
-a!nchKs 00B then
+a& )elay 'Set!p condition is :
0d ; 8lo$< 2eriod > (0?$a)ture = 0?laun$h) @ 0?setu)
>> 11ns S 1<ns R 3ns ? 6TGcapt!re - TGla!nch7
>> 11ns S 9ns ? 6TGcapt!re - TGla!nch7
>> (ns S 6TGcapt!re - TGla!nch7
@ow we can choose any com#ination o TGcapt!re and TGla!nch s!ch that their dierence
sho!ld #e less than (ns4
Note: Cemem#er in the design i yo! are i&ing the violation #y increasing or decreasing the
delay in the Cloc/ path then always preer not to play too m!ch with this path4
* never preer to !se TGla!nch in this case 60or set!p i&ingB * ignore to !se TGla!nch74
So letKs ass!me TGla!nch ><ns and TGcapt!re > .ns
Then
11ns S 9ns ? .ns #eans no .etu) Ciolation.
8he$< on$e a,ain the 3old $ondition.
+in delay ' "old Condition:
0d : (0?$a)ture = 0?laun$h ) > 0?hold
>> 11ns > 6TGcapt!re - TGla!nch 7 ? TGhold
>> 11ns > .ns ? 2ns
>> 11ns > 9ns R Means No 3old Ciolation.
/+a#)le !:
Speciication o the 00 Circ!it
Set!p "old Cloc/ period Tc/21 delay @et )elay Com#inational -ogic )elay
3ns .ns 1<ns <ns 6*deal7 <ns 6*deal7 2ns 6canKt #e !rther red!ced and
we canKt increase the delay in the
data path #y any methods7
-etKs chec/ the conditions directly4
Cloc/ Period Condition 6Satisied7:
Set!p time ?"old time > ;ns
Cloc/ period > 1<ns
Cloc/ Period > Set!p time ?"old time 61<ns > ;ns 7
Means we $an %i+ (iolationsD i% there is an7.
+a& )elay' Set!p Condition 6Satisied7:
0d ; 8l<?2eriod > (0?$a)ture = 0?laun$h) @ 0?setu)
Com#inational )elay > 2ns
There is no delay in the cloc/ path till nowB so TGcapt!re>TGla!nch><ns
>> Td 62ns7 S Cl/Gperiod 61<ns7 ? <ns R TGset!p 63ns7
>> 2ns S 9ns R Means N4 ./012 Ciolations
+in )elay ' "old Condition 6@ot Satisied7:
0d : (0?$a)ture = 0?laun$h ) > 0?hold
Com#inational )elay > 2ns
There is no delay in the cloc/ path till nowB so TGcapt!re>TGla!nch><ns
>> Td 62ns7 is not ,reater than <ns ? TGhold 6.ns7
Means 34L5 CB4L'0B4N
Since we canKt ma/e change in the delay pathB so we have to to!ch the cloc/ path4
0or "old i&ing -
>> Td > 6TGcapt!re - TGla!nch 7 ? TGhold
>> 2ns > 6TGcapt!re - TGla!nch 7 ? .ns
>> -3ns > 6TGcapt!re - TGla!nch 7
0or Satisying the a#ove e1!ation TGla!nch sho!ld have more val!e in comparison to TGcapt!re4
,e can choose any com#ination o TGcapt!re and TGla!nch4
Note: Cemem#er in the design i yo! are i&ing the violation #y increasing or decreasing the
delay in the Cloc/ path then always preer not to play too m!ch with this path4
* will never preer to !se TGcapt!re in this case 60or "old i&ingB * ignore to !se TGcapt!re74
So letKs ass!me TGcapt!re ><ns and TGla!nch > (ns
Then
TGla!nch ? Td > .ns 6hold time7
>> (ns ?2ns > .ns N4 34L5 Ciolation.
8he$< on$e a,ain the .etu) 8ondition:
Td S Cloc/ Period ? 6TGcapt!re - TGla!nch7 R TGset!p
>> 2ns S 1<ns ? <ns -(ns R 3ns
>> 2ns S 3ns Means No .etu) Ciolation.
Note: 6TGcapt!re - TGla!nch7 also /nown as C-OCD SD%,4 * will e&plain this later in this #log4
Cight nowB itKs O!st or yo!r ino4
/+a#)le E:
Speciication o the 00 Circ!it
Set!p "old Cloc/ period Tc/21 delay @et )elay Com#inational -ogic )elay
5ns .ns 1<ns <ns 6*deal7 <ns 6*deal7 <4.ns
Note: this is the same e&le which we have disc!ssed in the part-5a4 -etKs chec/ all the
conditions one #y one4
Cloc/ Period Condition 6@ot Satisied7:
Set!p time ?"old time > 11ns
Cloc/ period > 1<ns
Cloc/ Period is not ,reater than Set!p time ?"old time
Means we $anFt %i+ (iolationsD i% there is an7.
*ut still we will tr7 on$e a,ain with all other $onditionsD Gust to )ro(e that a9o(e #ention
$ondition should 9e true %or %i+in, the (iolations.
+a& )elay' Set!p Condition 6Satisied7:
0d ; 8l<?2eriod > (0?$a)ture = 0?laun$h) @ 0?setu)
Com#inational )elay > <4.ns
There is no delay in the cloc/ path till nowB so TGcapt!re>TGla!nch><ns
>> Td 6<4.ns7 S Cl/Gperiod 61<ns7 ? <ns R TGset!p 65ns7
>> <4.ns S (ns R Means N4 ./012 Ciolations
+in )elay ' "old Condition 6@ot Satisied7:
0d : (0?$a)ture = 0?laun$h ) > 0?hold
Com#inational )elay > <4.ns
There is no delay in the cloc/ path till nowB so TGcapt!re>TGla!nch><ns
>> Td 6<4.ns7 is not ,reater than <ns ? TGhold 6.ns7
Means 34L5 CB4L'0B4N
* yo! want to i& the "old violationB then we have already seen that #y increasing'decreasing the
delay in the data path it canKt #e i&ed4 %ven i this will i&edB then Set!p violation will occ!r4
-etKs Try with TGcapt!re or TGla!nch4 +eans #y adding delay in the cloc/ circ!it4
8s per the a#ove e1!ations'conditions and corresponding val!es:
+a& )elay' Set!p Condition :
Td S Cloc/ Period ? 6TGcapt!re - TGla!nch7 R TGset!p
>> Td S 1<ns -5ns ? 6TGcapt!re - TGla!nch7
>> Td S (ns ? 6TGcapt!re - TGla!nch7
+in )elay ' "old Condition:
Td > 6TGcapt!re - TGla!nch 7 ? TGhold
>> Td > 6TGcapt!re - TGla!nch 7 ? .ns
Cemem#er all 3 varia#le TdBTGcapt!reBTGla!nch are positive n!m#er4
Possi#le val!es o 6TGcapt!re - TGla!nch7 > ?'-8 6where 8 is a positive n!m#er7
"ase 1( ()*captu!e - )*launch) = ++
>> Td S (ns?8 - Condition 6a7
>> Td> .ns?8 R Condition 6#7
Satisying #oth the conditions 62a3 and 2#3 7 not possi#le or any ?ive val!e o 84
"ase 1( ()*captu!e - )*launch) = -+
>> TdS (ns-8 >> Td?8 S (ns - Condition 6a7
>> Td> .ns-8 >> Td ?8 > .ns - Condition 6a7
Satisying #oth the conditions 62a3 and 2#37 not possi#le or any ?ive val!e o 84
That meansB * am s!ccess!lly a#le to prove that i ollowing condition is not satisied then yo!
canKt i& any type o violation #y increasing'decreasing delay in either dataGpath or cloc/Gpath4
Cloc/ Period > Set!p time ? "old time4
.u##ar7 o% this )ost:
Cloc/ Period Condition:
8lo$< )eriod : .etu) ti#e > 3old 0i#e
For %i+in, an7 t7)e o% (iolation (without $han,in, 8lo$< )eriod) = 0his $ondition should 9e
satis%ied.
+a& )elay' Set!p Condition:
0d ; 8l<?2eriod > (0?$a)ture = 0?laun$h) @ 0?setu)
For Fi+in, the .etu) Ciolation @ 'lwa7s )re%er 0?$a)ture o(er 0?laun$h
+in )elay ' "old Condition:
0d : (0?$a)ture = 0?laun$h ) > 0?hold
For Fi+in, the hold Ciolation @ 'lwa7s )re%er 0?laun$h o(er 0?$a)ture.
Till now we have disc!ssed almost all the necessary #asic o i&ing the violation o Set!p and
"old time4 To! have #een noticed that everywhere * have tal/ed a#o!t the increasing'decreasing
the delay4 * * have mentioned anywhere adding'removing the #!erB that also mean
increasing'decreasing the delay4
There are several other ways thro!gh which yo! can increase'decreasing the delay o the circ!it4
*n the ne&t post we will disc!ss
)ierent methods or increasing'decreasing the delay in a circ!it'path4
8lso try to capt!re the #asics #ehind a#ove said methods one #y one