Friday 25 July 2014

CPPR (Common Path Pessimism Removal)


We  know that setup is always check for worst corner and Hold is always check for Best Corner.

In OCV Analysis mode, for worst corner ,while Setup Analysis data path have max delay and clock path have min dalay and for best corner while Hold Analysis data path have min delay and clock path have max delay if we go for pessimistic approach.

Now we know that ,
Setup slack = Required time - Arrival Time
or we can say,    
Setup slack = Min delay path - Max delay path
And,
Hold slack = Arrival Time - Required Time
or we can say,
Hold slack = Min delay path - Max delay path

For Pessimism no need of derating for late(Max delay path) in setup and early (Min delay path) in hold Analysis.

Means At Worst Corner no need of late (data path ) only early (clock path) derating factor require for setup because worst corner itself is late and at Best Corner no need of early (data path) only late
(clock path) derating factor require for hold because best corner it self is early. 



Thats why we always give derating for clock path only.

CPPR :-
Removing common clock buffer delay between launch path and capture path is CPPR. (comman path pessimism removal).
Lets discuss with real time scenario,
Lets 0.2ns is common clock buffer delay for launch path and capture path.


Setup analysis,  

 If we dont consider derating factor for setup timing analysis than our calculation
 of setup slack will be in this manner:-
 setup slack = min path(c.p + (capture path + 0.2) + cppr - setup) – max path((
               launch path + 0.2) + data path) 
 
 where cppr = 0  (means no need of cppr if we are not analyzing with ocv mode)
 
 delay 0.2 ns will be cancel from both side thats how we can ignore same buffer delay
 in both path and our equation will change to :- 
 
 setup slack = min path(c.p + capture path - setup) – max path((launch path 
               + data path)
 
 But Because of  OCV (On chip Variation) delay we have to consider derating factor 
 in our design.
 
 Lets For clock path, 20% derating factor , 
 
 And we know that no need of derating for late in setup analysis so we apply derate 
 only for early so derating 20% of 1 for early is 0.8, 
 
 late -> 1.0     early -> 0.8 
 
 setup slack = min path(c.p + capture path + cppr - setup) – max path(launch path 
               + data path)

 So clock buffer delay for Max delay path, 0.2 * 1.0(late derate) = 0.2
 and clock buffer delay for Min delay path, 0.2 * 0.8(early derate) = 0.16
 
 so we can see that because of derating factor same clock buffer delay which was
 0.2ns now 0.16ns for min path and 0.2ns for max path.
 
 For removing this differences we add cppr in min path or can subtract from max 
 path. Normally we see that Tool add cppr in required timing path(min path) in 
 setup analysis. 
 
 Cppr = 0.2-0.16 = 0.04 
 or 
 cppr = 0.2 * (1.0-0.8) = 0.04 
 
 setup slack = (c.p + (capture path + 0.16) + 0.04 - setup) – ((launch path
                  + 0.2) + data path)
 Result,
 
 setup slack = min path(c.p + capture path - setup) – max path(launch path + 
               data path)
 
Hold Analysis,
 
 Lets for clock path, 20% derating factor , 
 
 Again we know that no need of derating for early in hold analysis so we apply 
 derating of late only. So derating 20% of 1 for late will be 1.2, 
 
 early -> 1.0     late -> 1.2 
 
 Hold slack = Min delay path(launch path + data path) - max delay path(capture 
              path - cppr + hold)
 
 Again lets 0.2ns is common clock buffer delay for launch path and capture path. 
 
 So clock buffer delay for Min path,  0.2 * 1.0(early derate) = 0.20
and clock buffer delay for Max path, 0.2 * 1.2(late derate) = 0.24
 
 Again we can see that because of derating factor same clock buffer delay which
 was 0.2ns now 0.2ns for min path and 0.24ns for max path.
 
 So for removing this differences we add cppr in max path or can subtract from min 
 path. Normally we see that Tool subtract cppr in required timing path(max path) 
 in Hold analysis. 
 
 Cppr = 0.24 – 0.20 = 0.04 
 or 
 cppr = 0.2 * (1.2 – 1.0) = 0.04 
 
 hold slack =  Min delay path(launch path + 0.20) + data path) - max delay path(
               (capture path + 0.24) – 0.04 + hold)
Result,
 hold slack =  Min delay path(launch path + 0.20) + data path) - max delay path(
               (capture path + 0.24) – 0.04 + hold) 
 

2 comments: