| |
作者:贾柱良
在soc芯片自动布局布线过程中,经常会定制一些IP hardMacro,但是抽取lef文件会或多或少的出现问题,
下面总结一下遇到一些的问题,也走过不少弯路
1.lef文件抽取当然是越精简就越好,这样才能减少数据量,所以只需要抽取最顶层的电源地环顶层金属,但不是所有的(VDD VSS) metal层,把所用的PIN最上层金属用一个矩形,打上melal text标示Pin Name ,PIN 的 矩形金属最好是>=pitch的值,目的是确保route时不会出现DRC错误,但不能太大这样会导致布线资源浪费和增加metal电容值.
2.如果是0.18um的工艺最好是要抽区atennam信息,具体怎么抽请参考cadence的abstract的user guide line里面有说明.
3.抽取完lef文件最好是检查自己抽取的lef文件:如version site grid unit marco pin 等信息是否完整,如version是什么版本的lef文件,site是core 、pad、 block那种类型,类型不一样在encounter自动布局布线后摆放的区域如pad 类型只能摆放在芯片的四周的PAD区域,而不能摆放core区域,如果自己定义了一些standar cell 那类型只能是core 这些单元只能放在core区域的raw的区间。如果是定义的block类型只能放在core的区域,但是hard block可以放在core区域的任意位置可以不受约束。
4.在encounter调用hard macro lef文件时,回遇到一些问题,如import design后但是在encounter的图形界面中找不到自己做的hard macro module,这是怎么啦?仔细观看了版图gds的数据和抽取的lef的语法都没有发现不对的地方,一连检查了好几天,后来实在没办法查看encounter.log文件,查看了自己抽取的模块的module name ,后来在log文件中大致的意思是netlist 中该模块的module name与lef 中的module name不一致,后来检查了netlist file,原来是逻辑设计人员自己搞了一个module name,好家伙做逻辑的工程师和做版图的工程师没有沟通才出现这样的问题。
5.有时候会在encounter 的图形界面中出现有的hard marco module的的图形界面的左下脚出现一些重叠的PIn,这是怎么回事,我们拖动模块就会看见一些flyline的飞线表示这些PIn是与其他的soft module是逻辑连线关系的,那么PIn为什么没有metal 信息,为什么要集中在一起呢?选择这些重叠在一起的pin.用快捷键q,记录每一个Pin name然后到lef文件中去查找,果然没有找到该Pin name ,也就是lef文件没有抽取,再查看了netlist file,但是在网表中还保留了这些PIn但是连接是用空线连接,原来是逻辑工程师还保留了老版本的信息,看来电路工程师比较恋旧。
6.一般soc芯片用的hard Macro比较多,有可能存在不同的版本的lef文件, version 5.3
5.4 5.5 ,不同版本的lef放在一起,也是有顺序的,版本比较新的应放在前面,否则在route时会出现意想不到的问题,如不能globalDetialRoute 或者能route但是有些模块的PIN出现Open.如果出现这些情况请调整lef文件的顺序.
这是自己在做了几个soc的芯片总结些经验,望同行后来的新手们能少走些弯路,也为咱们的IC行业做一点点贡献。