Laker & Calibre Bandgap 实例教程
本人才疏学浅,仅有1年全定制版图经验,难免所言不正确
所以此文档仅限菜鸟入门laker&calibre的版图参考
如有疑问可访问:https://www.wendangku.net/doc/052918379.html,留言
一、环境设置
整个教程的文件夹结构如下:
tf technological file
tcl laker的一些脚本
drc drc rule 文件
lvs lvs 文件
gds 版图文件
netlist 网表文件
如果想使用教程带的一些设置,可以进入laker目录,运行一次laker,然后在终端中输入./set设置一下laker。
通过设置以后,laker中有了一些快捷操作。
数字键 1 :切角
数字键 2 :清除n键产生的高亮
数字键 3 : Make Cell
数字键 4 : Layer之间的相关生成
数字键 5 : Layer的逻辑操作
数字键 6 :将path转化成polygon
数字键 7 :测量图形面积
数字键 8 :面积选择性清除drc错误
数字键 9 :清除calibre的高亮
以上均可以通过小小的操作测试一下。
下面再看几个特殊快捷键:
Shift + 数字 1 :生成metal 1
Shift + 数字 2 :生成 metal 2
Shift + 数字 3 :生成 metal 3
Shift + 数字 4 :生成 metal 4
Shift + 数字 5 :生成 poly
Shift + 数字 6 :生成 od
测试如下:
如下图,是一个cell
同时按住shift,1两个键,另外按住鼠标左键,在cell上画一个矩形,如下图:会自动在矩形和cell的重叠区生成metal1
其他雷同,请自行测试。
另:因为此脚本需要辅助层,阅读tcl文件夹下的config.tcl中注释:
#设置辅助层
set LayerLog1 LOG1
set LayerLog2 LOG2
#在tf文件中增加log1,log2 两层辅助层,层号和foundry提供的层号不得重叠
#def { LOG1 drawing 240 yellow checker yellow solid yes yes yes } #def { LOG2 drawing 241 silver checker silver solid yes yes yes }
#
#def { LOG1 drawing 240 0 yes }
#def { LOG2 drawing 241 0 yes }
再看一组特殊快捷键:
Shift + + (同时按下shift和+号):cell增加一列
Shift + - (同时按下shift和-号):cell减少一列
Alt + + (同时按下alt 和+号):cell增加一行
Alt + - (同时按下alt和-号):cell减少一列
测试如下:
把cell设置成array特性。如图
选中cell ,同时按下shift,-两个按键,如下图,列的数目会自动减少。
选中cell ,同时按下alt,+两个按键,如下图,行的数目会自动增加。
另外增加的2个菜单:
1.单层layer打contact
如下:
选择此图形,然后选python菜单中的AutoContact,设置如下:
点击ok,如下:
自动打好contact。其他选项自行测试。
2.双层layer打contact
如下图:
选中2个图形,然后选择python菜单中的AutoContactLayer,如下设置:
结果如下:
以上2个自定义菜单项的一些参数在config.tcl中设置如下:
set AutoConName {DC PC VIA1 VIA2 VIA3} 对话框中contact的名称,顺序不能改变,
可以增加VIA4 VIA5 VIA6 VIA7 VIA8
set AutoConXSpace {0.8 0.85 0.9 0.96 1.0 1.2} contact,或者via孔之间的x轴距里
set AutoConYSpace {0.8 0.85 0.9 0.96 1.0 1.2} contact,或者via孔之间的y轴距里
set AutoConWidth {0.22 0.45 0.6} contact,或者via大小
set AutoConSide {0.2 0.3} contact,或者via到layer边沿的距离
set OperationSize 0.01 中间变量,可以不用修改
脚本以及快捷键只是加快速度,减少体力,并不代表完全正确,所以要注意操作完后检查!即脚本也可能有bug :)。使用需谨慎!!
以上脚本经修改,可用于不同的制程!
至此,环境基本设置成功,一些快捷键也差不多熟习。步入正题。
二 Layout前的准备
1.首先要熟悉DesignRule,不要求多精通,至少知道个大概,同时出现问题知道到哪里查找。具体请仔细阅读DesignRule,如果半导体器件知识甚佳:)
2.仔细分析电路图,因为是模拟版图,需要注意哪里需要match,哪里电流比较大,哪里和pad连接了,需要esd rule,哪条信号比较敏感,需要加shielding,哪些地方容易产生latch up,需要加guardring。同时注意下用到了哪些基本器件。
具体请自己研究下电路图
三开始动手Layout
1.先做一些contact和via。
根据design完成DC(OD CONTACT),PC(POLY CONTACT),VIA1(METAL1 VIA METAL2),VIA2(METAL2 VIA META3),以及2个DC(2DC),2PC,2VIA1,2VIA2.
这里可以初步熟悉design rule。同时这些基本的东东,以后很有用:)
如下图:
3,画基本器件,这里指基本的mos,电容,电阻,bjt。画完可以做下drc或者lvs以期正确。省的最后比较大的时候验证出是错误的。
当然画这些基本的器件的原则还是根据design rule,尽量使用最小rule,可以减少面积。另外基本cell的名称尽量可读性比较强,比如mos管,可以取MOS_W10L2,或者PMOS_W10L2,NMOS_W10L2。
当然这些可能调用的时候还是smash掉的:)
如下图,基本单元如下:
4,下面开始堆积木:)先从需要match的mos开始。S,D共享原则。同时注意dummy 电路中此部分需要match包括pnp match
这里以MP1,MP3以及Q1,Q3为例:
首先看MP1,MP3,这里按照下图,进行match。
match包括mos管match,dummy match,信号线match,power line match。甚至电流match:)buck的guard ring contact可以先不加,整合的时候再加入。
最终结果图如下:
因为这个mos属于驱动mos,链接到power,所以buck的power Line可以尽量画粗一些.
再看Q1,Q2,这里采用9宫对称。
最终效果:
同样是驱动mos,power line尽量宽。这里power line最后补上。
大致讲到这里。
电路图中需要match的有
MP1_MP3,MP5_MP7,MP2_MP4,MP6_MP8,MN1_MN3,MN2_MN4,Q1_Q2.
电阻画法根据design rule即可,基本单元的电阻一般值为10,100。。这样的整数为好。
另外,电阻上空的地方尽量加Metal Dummy,同时电阻也要加电阻Dummy,如果没有空间
可以加poly dummy。如下:
空间如果够多,能加多宽power line尽量加多宽,尤其是一些驱动mos。如下,总体Power:
四. 验证
1.DRC验证
一般来说最开始的几个小模块可以先drc一下,以验证对design rule的理解是否正确。其次是中等模块可以先不要连线。drc过了之后再做连线。以上只是一些小建议。
DRC准备:gds文件,drc rule。
laker中导出gds文件如下步骤:
弹出对话框,选择顶层Cell,以及到处文件名。这里把gds文件放在calibre/gds目录下。
进入Calibre/drc目录,可以看到drc rule ,修改如下:
这两项分别为gds的文件名,以及要做drc的顶层cell名。
打开终端,输入:当然calibre的参数很多,这个是最基本的。
即可使用calibre进行drc验证。结果如下:
可以从上图中看出|DRC 检查了多少项(73),以及有多少错误项(3),以及产生的结果文件(drc.db).
下面再laker中查看calibre的drc结果:
如上图选择加载calibre的drc结果,弹出对话框中选择,drc rule文件ICDRC.cal,选择calibre 产生的结果文件drc.db.点击ok。
然后按下快捷键e,弹出对话框:选择show current error type only,然后点击Detail即可查看结果。