众所周知,芯片设计是一个大型团体项目。每个人在里面扮演着不同角色,只有相互合作,才能正确及时地完成最后的signoff。(具体的分工可以参考以下文章)
而作为团队中人数比例最多的block PD工程师,是最能体现合作的重要性的一个角色。那今天给大家介绍一下,block PD工程师日常工作中需要完成的一项最基本的任务:如何正确地提交不同的数据?
参照前面介绍角色分配的文章,大家可以想象一下,block owner要分别给这些人提交哪些数据呢?
TOP PD
首先,我们来想想要给top pd工程师应该提供什么文件呢?
LEF
这里的lef是指block abstract,可以理解为block的壳。对top pd工程师来说,每个切割下去的block里面的东西他是看不见的,相当于一个hard macro。因此他需要知道这个block的形状大小,还有具体io pin的位置。这些物理信息都存在block的lef abstract文件中,需要我们提取出来告诉top pd工程师。还有,需要额外注意的一点,需要包含block PG pin的信息,这样顶层工程师才能正确drop power via,并且检查power stripe是否对齐。
如何提取?
Innovus
innovus 5> write_lef_abstract block.lef -5.8 -stripePin -PGPinLayers {1,2,3,4,5,6} -specifyTopLayer 6
ICC2
ICC2更加方便,只要提供block的ndm db就行。
icc2_shell > save_lib block.ndm
ETM
我们知道了block壳上具体的物理信息,还需要知道它们的delay信息。就像memory的lef和lib文件一样。所以,我们需要提取block的lib文件给top pd计算端口上的延时。我们把这个lib文件叫做ETM model。全称extraction timing model。具体信息可以参考以下链接
ETM可以在Place, CTS, Route以后分别提取,当然越往后的阶段,ETM的精确性越高。我们可以视项目进度而提取相应的ETM model。