CRPR
CRPR是clock reconvergence pessimism removal的缩写,指的是clock path的common部分所造成的影响,在计算timing时,需要考虑到CRPR的影响;
具体CRPR会影响到哪些方面,首先看下图
CRPR & SI
在计算SETUP和HOLD时,在后期route后,需要考虑SI的影响,而我们在计算SI时,需要考虑到victim和aggressor;
在计算setup时,launch edge和capture edge是相邻的两个上升沿,而工具在计算timing时,往往会去选择最悲观的情况;
由于launch和capture是不同的clock cycle,那么aggressor对common clock path的SI的影响,对不同的clock cycle而言,就有不同的影响;对launch而言,SI会让其delay变得更大,对capture而言,SI则会让其delay变得更小;
但是在计算hold时,launch和capture是相同的cycle,那么对于common clock path而言,aggressor对launch和capture的影响是一样的,因此工具需要将这个影响去掉;
也就是说,只有在不同的clock cycle,才需要考虑CRPR的SI的影响;
CRPR & OCV
除了SI的影响,CRPR与OCV也有关联,由于是common clock path,在考虑到OCV的影响时,我们在计算setup,对于launch path采用late derate,对于capture path则采用early derate,这样就造成一个问题!
那就是common clock path部分,同一个cell在计算timing时,分别才用了late和early两种derate,但是一个cell只能有一个derate,这样会导致我们计算出来的timing更加悲观,所以工具会将这部分的影响剔除掉!
CRPR & Min pulse width
在计算min pulse width时,我们需要计算上升沿和下降沿的delay,如果是计算高电平的pusle width,工具为了计算出最悲观的情况,对于rising edge,会采用max delay,对于falling edge,则会采用min delay;
首先看下图
这里buf1和buf2属于common部分,但是我们在计算rising edge的delay时,采用了max delay;而在计算falling edge时,采用的则是min delay,对于用一个cell,不能同时用max和min去计算,这样计算出来的结果会更悲观;
因此工具在计算min pulse时,会剔除掉这部分的影响;
具体可以看下面的timing report
这个crpr的影响为0.000942ns,我们在下面的clock latency中加了这个值,这样计算出来的结果会更好;