单元库设计初步探索.docVIP

  • 19
  • 0
  • 约1.72千字
  • 约 10页
  • 2016-11-26 发布于重庆
  • 举报
单元库设计初步探索

标准单元设计初步探索 (漂流2010-10) 标准单元对于数字集成电路设计来说无疑可以大大提高效率,然而厂家提供的标准单元都是固定无法更改的,有时候当我们设计中需要加入自己所需要的单元时,就需要自己设计标准单元了。 一个完整的标准单元至少需要以下3种库: 物理库,物理库为lef格式,在全定制画完版图以后,用cadence的abstract工具对版图进行抽取,此步骤相对简单,但是总觉得做的不够完美 综合库,综合库为.lib格式,lib是由synopsys公司开发并用于描述物理单元的时序和功耗信息的重要库文件,主要分为两个基本部分,一个是对整个单元库的基本属性进行描述,如定义电压,电容,时间等基本单位,定义电路传输时间和信号转换时间的电压百分比,定义时序以及功耗表格模版等信息。第二部分是对每个基本单元的具体信息,包括延迟时间,泄漏功耗,内部功耗等。比如对于某个标准单元如INV,综合库无疑是最重要也是最繁杂和最难的一步,综合库是用hspice或者spetre工具做仿真后的一个统计结果,即使一个简单的反向器也要经过很多次的仿真才可以完成表征。而且需要对模拟和工艺很熟的人才能表征出比较准确的数据。 暂时知道的表征工具有cadence公司的ETS,和synopsys公司的ncx。 仿真库 还不知道该怎么做 这里我先用一个反向器的例子来做一个实验,由于综合库的问题暂时无法解决(能export出lib,但是是错的,给dc的时候,综合时dc软件会崩溃),所以先只做了第一种物理库,用于encounter 用ic610画我们需要用来抽象的版图: 画版图的时候要特别注意的一个问题是,为了在encounter中正确放置cell的话。每个cell,vdd的contact中心到gnd 的contact之间的距离必须严格控制在2.47,因为我们自己设计库的话,还是要根据工艺库的PDK来设计,这个是参考库中提供的lef档中的数据。 版图画完后我们当然要做drc和lvs以及后仿真 网表如下 我们希望用此3个网表来测试制作综合库。 Drc结果: 后仿结果: 周期为20ps仿真波形 周期为100ps的仿真波形 周期为200ps的波形 仿真波形可以看出,在200ps时,基本上就不会有失真现象 6 drc和lvs均未错的画,可以进行abstract了 这里需要注意的是,在abstract之前,必须给版图加上一个边界,这样abstract对它进行抽取的时候,就是以你的边界作为cell的宽度和高度。 加边界create-PR Object -PR Boundary边界范围就是上面说的2.47高度,左右宽度在你的well边界之内就可以(超出的well部分没关系,会被FILL单元填充掉) 7 启动abstract。 第一步,选择库,点击,选择自己画版图的那个库。 第二步,选择pin ,填如图所示的东西。之后选择OK 第三步 点击抽取,默认run 第四步 点击abstract 。注意在site这栏选择coresite 第五步 警告信息先不管,我们可以直接export出lef文档,里面有很多具体细节我也不是很清楚,暂时跳过。 这时我们在当前文件夹就得到一个inv.lef的文件,这就是用于encounter的物理库。 8 使用encounter 1由于没有综合库,所以只有手工写一个网表,来测试lef是否可用 module inv (in,out); input in; output out; INV in1(.A(in),.Y(out)); endmodule 2 我们启动encounter,并把网表和lef文档导入 Place以后,我们可以发现cell被成功导入!并且是和库中其他的标准单元一样的高度!这就是为什么刚才说为什么高度要严格控制在2.47,并且需要加边框,下面第二副图我们可以看到不加边框的时候,高度要大于2.47,这样的高度肯定是不能正确布局布线的。所以在画版图的时候一定要注意所有的cell,高度要严格一样的!! 完成布局布线测试:

文档评论(0)

1亿VIP精品文档

相关文档