为什么长tree的时候不能用 delay cell?原因1:由于delay cell的rise transition time和fall transition time偏差较大,对于上下沿都要用的时钟影响较大。
原因2:主要是由于delay cell对于transition的容忍度很差,可以去看看delay cell的二维查找表就会发现,随着transition和output load的变化,整个delay的变化是很剧烈的。 所以如果用了delay cell,那么max和Min下,我们会发现很多路径setup和hold(同一条路径),算上ocv的话,很难收敛。因为clock path上的变化居然会很大。(所以我们会在做clock tree时候,禁用delay cell)。
PS:我们之所以使用CKBUF和CKINV是因为这些cell对transiton容忍度高。这样的好处是,不管你ocv以及transiton如何变化,只要范围比较小,那么我们会发现整个clock tree上的delay是差不太多的。这可以算是一个稳定的时钟树结构,所以我们可以观察一下clock buffer和clock inv的二维查找表,会发现,他是符合这些特征的。