经过一段时间的项目工作,对后端的timing correlation方面有了一点个人经验积累,特此记录一下。
关注时序就要了解和时序相关的因素有哪些。简单分解,时序主要是data和clock组成,在path上又和cell delay以及net delay有关;再进一步,cell主要是由transition和load影响delay,net则是受工艺的R和C影响,当然还有SI问题。另外,user定义的margin和工艺的derate等也会对时序结果造成影响。类似头脑风暴一下,得到上述因素,有时序问题就可以从以上方面入手。
从综合处得到网表和sdc之后进行PR工作,第一个阶段就是place了,现在的工具在place阶段主要关注timing和congestion问题,从而预估能否绕线成功。首先congestion对于保证flow能绕通线是一个重要参数。做好place和cts的congestion的colleration是后端的第一步工作(如何做好congestion后续分享)。place和cts的差异在哪里,主要就是clock tree,因此要保证place和cts的correlation好,就是要减小长tree造成的影响。
方法:调整place阶段的ndr,并且打开相应的setting,保持place-cts的spec一致;具体做法就是,place前可以先吃spec,并且在trial route的时候让工具考虑ndr,留好绕线的spacing 的margin。
同样的,timing correlation也是类似,尽量减少二者差异,缩小timing degration。place阶段clock是ideal的,工具只是预估timing,传统做法是适当加大uncertainty;为了更精确,可以设path group加不同的权重;另外从工具的角度可以加相应的setting,例如打开early clock flow的feature;17版本可以开placeMode的extraViasLengthFactor的option,对via的delay进行较准确的预估,18版本已经default了。
cts阶段可以适当放松uncertainty。然后及时cts到route的timing correlation了。
接下篇。。。