电子说
我们在APR的时候,所用到的std cell或者IP、macro都是要吃LEF的,而最终交付生产的时候要生成GDS文件给工厂。那么这两个文件都是什么意思呢?需要注意哪些问题?我今天就来详细探讨一下。
首先,什么是LEF?全称为library exchange format,注意这里的L是library,不要把LIB搞混了,LIB是liberty。它是一种库交换格式,只记录了在APR时所要用到的最基本的物理信息,多一点都不记录。
什么意思呢,各位想一想后端设计的时候,我们要摆放连线一个cell或者IP,需要什么信息呢?是只有他的size和出pin的信息的,出pin的信息包括pin的形状,出的层,以及它的mask等。
LEF其实就包含这两方面的内容。一个cell、一个ip、一个block,甚至一个chip都可以抽LEF出来。有了LEF,我们就知道了我们要摆的元器件的大小和它的pin,我们就可以摆放和绕线了。所以说LEF是更高层级使用的最基本的物理信息文件。
而GDS就不一样了,它在我们的design设计时其实并不需要,它是我们最终交付给代工厂生产的文件,我们只要记住这一点,这是最终tape out所要用到的最终文件。整个设计流程那么多,用到的文件多如牛毛,但是最后芯片要生产出来,交给机台的就是GDS。
如果不考虑dft测试或者其他的验证工作,其实交付出一份好的GDS就宣告设计结束了。那么,GDS会包含哪些信息呢?不知道读者有没有了解芯片制造相关的内容,我大概讲一下,制造的时候分为很多工序,刻蚀啊,注入啊很多,每一个poly、metal、oxide、n well、p substrate都是一步一步生成的。
GDS就是详细记录了所有这些实际的材料的物理信息,它们的层数、位置、形状。或者可以这么说,当你拿到一块生产好的芯片,你是完全可以很简单的逆向推出它的gds的。(当然我说的是理论上是很简单的)只要把每一种材料的物理信息一字不落地记录下来就是GDS了。
我们在最后PV signoff的时候,就根本不会查看APR的DB,而是直接signoff的GDS。GDS过了,整个芯片的PV才算过了。(什么是signoff、PV会在之后其他文档讲)。
听到这里,可能小伙伴还是有点糊涂,那么我想用一个最简单的问题来加深大家对这两者的理解,也就是本文的标题——LEF和GDS匹配问题。
实际上,我们在后端做APR的时候会用到元件的LEF,做完以后生成一份chip的GDS,那我们会用到GDS吗?会的,GDS其实不光包括chip的,每个cell、ip、macro都有自己的GDS。那么问题就来了,既然如此,我们最终抽出来的GDS包不包括cell内部的信息?要知道我们在APR的时候可是把cell看成了一个黑匣子或者说空壳的,只有pin可以被看到。
实际上,APR最终出来的GDS确实没有cell或者macro内部的信息,要想最终交付生产,还要把我们chip的GDS和用到的所有元件的GDS merge起来,这样才能形成一份完整的可以交付给工厂的GDS。
而在merge的时候,会有可能发生LEF和GDS不匹配的问题。GDS包括所有的物理信息,LEF包括pin和cell大小的信息。
假如LEF写的pin的位置和GDS写的pin的位置不一致,会发生什么情况呢?假如这个pin外接的时候直接打了一个via,那么,APR的时候就会把这个via砸在LEF认为的位置,而这个via的信息最终会写在chip的GDS中,这样,chip的GDS和cell GDS merge的时候,这个via的位置可能就不是cell GDS中pin的位置,那样这个pin等于就没有被连上,或者说产生了DRC,这就是很严重的问题了。所以一定一定要保证我们用到的LEF和最终merge的GDS一致才可以。
可能有还没有经历过项目的小伙伴会觉得这种情况也能发生?实际上,项目进行的时候,LEF和GDS可能都会在更新的,一般会有专人来维护所有的lib,那么就有可能不小心LEF用的是v1,GDS用的v2,这样必然会产生PV的DRC,而这种DRC,在APR tool里是不可能发现的。所以一定要注意这个问题。
全部0条评论
快来发表一下你的评论吧 !