Calibre学习总结
第一章Calibre简述
1. 1 Calibre 简介
Calibre 作为Mentor Graphics 公司出品的后端物理验证(Physical Verification)工具,它提供了最为有效的DRC/LVS/ERC 解决方案,特别适合超大规模IC电路的物
理验证。它支持平坦化(Flat mode )和层次化(Hierarchical mode)的验证,大大缩短了验证的过程;它高效可靠的性能已经被各大Foundry 认证,作为Tape Out 之前的验证标准。它独有的RVE(Result ViewEnviroment)界面可以把验证错误反标到版图工具中去,而且良好的集成环境便于用户在版图和电路图之间轻松转换,大大提高了
改错的效率。xCalibre 具有版图寄生参数抽取的功能。
1.2手册
在工作站下输入mgcdocs &命令,就可阅读Calibre的所有手册。1.3几个常用的缩写命令
1、SVRF---Standard Verification Rule Format(标准的检查文件)
2、RVE---Results Viewing Environment(显示结果用的环境窗口)
3、SVDB---Standard Verification Database (LVS results)
4、DRC---Design Rule Checking
5、LVS---Layout Versus Schematic
6、ERC---Electrical Rule Checking
第二章Calibre DRC 2.1数据准备
完成CalbireDRC 需要的数据有版图数据和执行DRC 检查的命令文件(Runset )。版
图数据支持GDSII 、CIF 、BINARY 、ASCII 格式。
2.2流程图
2
.3 DRC Runset File
1 基本控制,原有DRACULA 的
file 可以用drac_cvt sourcefile targetfile 命令来
转换。
(1)Calibre 是一个“Edge -Based ”Tool ,默认错误的显示是边
(2)DRC 检查的结果有三种控制Euclidean(default)、Square、Opposite。
(3)常用的几条检查规则,具体可阅读Calibre的手册
(a)Internal(内边对内边)用来检查Width、Overlap;
(b)External(外边对外边)用来检查Space、Notch;
(c)Enclosure(内边对外边)
2 一般的DRC检查文件包含以下几个部分:
(1)运行设置,设置GDS的位置,结果文件放的位置等;
(2)层次定义,定义输入的层次;
(3)层次运算,产生运算需要的一些中间层次;
(4)规则检查,具体对每条规则的检查;
(5)选择控制,可以只检查某几条规则或者只检查某个单元。
3一个简单的Rule File,“//”后面为注释
//――――――――――――――――――――――――――――
LAYOUT PATH “/home/*…….”//GDS的路径
LAYOUT PRIMARY “*”//GDS的顶单元名
LAYOUT SYSTEM GDSII //版图数据的格式
//――――――――――――――――――――――――――――
DRC MAXIMUM RESULTS 500 //最大错误输出数目
DRC RESULTS DATABASE “/home/*……”//存放DRC错误数据的路径及名称DRC SUMMARY REPORT “/home/*……”HIER //存放DRC简述文件的路径及名称
//――――――――――――――――――――――――――――
DRC CELL NAME YES CELL SPACE XFORM //表示底层的错误将直接在底层显示PRECISION 1000
RESOLUTION 10 //两句合起来表示检查的数据格点为10/1000=0.01 //――――――――――――――――――――――――――――
FLAG OFFGRID YES //在Summary Report 里显示不在格点上的版图的坐标FLAG SKEW YES //在Summary Report 里显示不是45度线的版图的坐标FLAG ACUTE YES //在Summary Report 里显示锐角的版图的坐标
//――――――――――――――――――――――――――――-
//输入层次的定义
LAYER nwelli 1
LAYER ndiffi 2
LAYER pdiffi 3
.
.
.
//TEXT层及连接性的定义
TEXT LAYER 60 ATTACH 60 met1
TEXT LAYER 70 ATTACH 70 met2
//定义连接
CONNECT met1 poly1 BY cont
CONNECT met1 ndiff BY cont
CONNECT met1 pdiff BY cont
CONNECT met2 met1 BY via1
CONNECT met1 allnsub BY cont
SCONNECT allnsub nwelli
//顶层数据的定义,有利于提高检查速度
LAYOUT TOP LAYER pad met2 via1
//―――――――――――――――――――――――――――
//层次的运算
fpoly = poly1 INTERACT celiso
tpoly = poly1 NOT INTERACT celiso
pcode = SIZE pcodei BY 0.15 OVERUNDER
.
.
.
//一般用来层次运算用的命令大概有:INTERACT 表示有任何重合关系的,
//相当于DRACULA的OVERLAP。NOT ,AND,OR,SIZE 同DRACULA。SIZE 后面//加上UNDEROVER 表示先缩小再放大,OVERUNDER表示先放大再缩小。
//wmet1 = WITH WIDTH met1 >=10 表示找出宽度大于等于10的铝。
//―――――――――――――――――――――――――――――――
//具体的规则检查
//FLAG CHECK
acute_chk { //acute_chk表示这个错误的名称,随便定义
@ flag acute yes //@开头表示注释会在RVE的注释窗口里显示
DRAWN ACUTE //每条检查必须包含一条可以输出错误的命令
} //一对花括号表示执行一条规则检查
//上面这条规则检查的目的是在版图上直接显示锐角的地方。
offgrid_chk{
@ flag offgrid yes
DRAWN OFFGRID
} //直接在版图上显示不在格点上的地方
skew_chk {
@ flag skew yes
DRAWN SKEW
}// 直接在版图上显示非45度线的地方
//――――――――――――――――――――――――――――
// well check
GROUP nwchk nw_chk? //?是一个通配符,这句语句是将所有以nw_chk开头的
错
//误定义成一个名称为nwchk的集合。可以通过
//DRC SELECT CHECK nwchk 这个语句来控制DRC检查
//只检查这个集合,也可UNSELECT去掉这个集合。
nw_chk1 {
@ nwell width must >=2.5
INT nwelli <2.5 ABUT <90 SINGULAR REGION
} // N阱的宽度检查,后面的ABUT<90 SINGULAR REGION 是secong key words 。//ABUT<90一般都要加上,表示有交叉的地方的角度小于90度报错
//SINGULAR一般也要加上,表示有点碰点或者点碰线的地方都报错
//REGION 是一个显示控制,表示显示错误时显示范围
nw_chk2{
@ nwell of same potential space must >=1.4
EXT nwelli < 1.4 ABUT<90 SINGULAR REGION SQUARE CONNECT
} // 同电位的阱间距必须不能小于1.4 。SQUARE 是输出结果控制,上面有详细说明//CONNECT 是连接控制,表示凡是通过铝或其它连接层有连接关系的阱。
nw_chk3{
@nwell of different potential space must >=4
EXT nwelli <4 ABUT<90 SINGULAR REGION NOT CONNECT
} // 不同电位的阱间距不能小于4。
nw_chk4{
@nwell overlap nsub >=0.4
ENC allnsub nwell <0.4 ABUT<90 OUTSIDE ALSO SINGULAR REGION }// 阱包nsub不能小于0.4, OUTSIDE ALSO 也是second key words,表示nsub在// nwell 外也报错。
nw_chk5{
@ show bad nwell connect two different net
stamp_nwell = STAMP nwell BY allnsub
nwell NOT stamp_nwell
}//STAMP命令来定义nwell 连接性,并且只能有一个连接,当某个nwell的nsub有两//个或以上的不同线名时,这个nwell不会被选成stamp_nwell。没有nsub的阱也不会被
//选出来。
//――――――――――――――――――――――――――――――――
//关于有源区及多晶硅,铝等层次的检查可参考nwell的设置。
//contact check
cont_chk1{
@min&max contact size 0.5×0.5
NOT RECTANGLE cont ==0.5 BY = =0.5 ORTHOGONAL ONLY
}//表示contact只能这么大,并且每条边必须都平行与X或Y轴。
//密度检查
den_chk1{
@ min met1 density is 30%
DENSITY met1 < 0.3 PRINT den_report_m1.log
}//当铝密度小于30%时,输出den_report_m1.log文件,要注意查看。这个文件里有具//体的铝密度。
(6)上面只是一个简单的检查文件,从上面的内容可大致了解一下Calibre的检查规
则。
还有许多其它的检查,如Antenna(天线效应)、衬底密度等的检查可以参考Calibre 手册。
2.4用commond line 来运行Calibre DRC检查
(1)先必须有一个完整的规则检查文件,必须包含运行设置、层次定义、层次运算、规则检查等几部分。
(2)在UNIX的命令窗口里输入calibre –hier –drc rulefile 。
(3)运行完后可在Cadence的版图窗口里的Calibre菜单点出start RVE ,然后就可进行DRC错误的修改了。
(4)也可输入calibre –gui 调出calibre 图形界面,具体的运行方式类似Cadence环境下的模式。
2.5查看结果文件和改错
1、drc 检查运行完毕后,首先看drc_err.sum 文件,看有无错误。下面是一个例子:前面是本次运行的一些信息:
CALIBRE:: DRC-F SUMMARY REPORT
Execution Date/Time: Fri Jan 2 20:10:46 2004
Calibre Version: v9.1_9.3 Fri Dec 13 15:05:27 PST 2002
Rule File Pathname: drc.rule
Rule File Title:
Layout System: GDS
Layout Path(s): test_nand3.gds
Layout Primary Cell: test_nand3
Current Directory: /export/home/project/cpu863/LVStest/calibre/drc/test User Name: cpu863
Maximum Results/RuleCheck: 1000
Maximum Result Vertices: 4096
DRC Results Database: drc.out (ASCII)
Layout Depth: ALL
Text Depth: PRIMARY
Summary Report File: drc_err.sum (REPLACE)
Geometry Flagging: ACUTE = YES SKEW = YES OFFGRID = NO NONSIMPLE POLYGON = YES NONSIMPLE PATH = NO
CheckText Mapping: COMMENT TEXT + RULE FILE INFORMATION Layers: MEMORY-BASED
Keep Empty Checks: YES
---------------------------------------------------------------------------------- --- RUNTIME WARNINGS ——
There is no data for layout net name ?vcc?.
中部开始有关RuleCheck Results 的统计,如下:
--- RULECHECK RESULTS STATISTICS
---
RULECHECK NW_1 ................. TOTAL Result Count = 0
RULECHECK NW_2a ................ TOTAL Result Count = 0
RULECHECK NW_3 ................. TOTAL Result Count = 0
RULECHECK NR_1 ................. TOTAL Result Count = 0
RULECHECK NR_2 ................. TOTAL Result Count = 0
RULECHECK NR_3 ................. TOTAL Result Count = 0
RULECHECK NR_4 ................. TOTAL Result Count = 0
RULECHECK NR_5 ................. TOTAL Result Count = 0
RULECHECK NR_6 ................. TOTAL Result Count = 0
RULECHECK NR_7 ................. TOTAL Result Count = 0
RULECHECK NR_8 ................. TOTAL Result Count = 0
如RULECHECK NR_8 ................. TOTAL Result Count = 0 表示NR_8 这条规则
检查的结果是0 个错误,具体NR_8 规则的含义要看DRC Runset File 中的定义,检查有错的如:
RULECHECK CT_9 ................. TOTAL Result Count = 0
RULECHECK CT_10 ................ TOTAL Result Count = 0
RULECHECK CT_11 ................ TOTAL Result Count = 0
RULECHECK CT_12 ................ TOTAL Result Count = 0
RULECHECK M1_1 ................. TOTAL Result Count = 0
RULECHECK M1_2 ................. TOTAL Result Count = 1
RULECHECK M1_3&4 ............... TOTAL Result Count = 0
RULECHECK M1_5 ................. TOTAL Result Count = 0
RULECHECK M2_1 ................. TOTAL Result Count = 0
RULECHECK M2_2 ................. TOTAL Result Count = 0
RULECHECK PD_M1 ................ TOTAL Result Count = 0
RULECHECK PD_M2 ................ TOTAL Result Count = 1
RULECHECK PD_M3 ................ TOTAL Result Count = 1
RULECHECK PD_M4 ................ TOTAL Result Count = 1
RULECHECK PD_M5 ................ TOTAL Result Count = 1
RULECHECK PD_M6 ................ TOTAL Result Count = 1
RULECHECK Convention_FLT_NW .... TOTAL Result Count = 0
分别是1,3,1,1,1,1 个错误,最后是错误统计:
--- SUMMARY
---
TOTAL CPU Time: 0
TOTAL REAL Time: 1
TOTAL Original Layer Geometries: 73
TOTAL DRC RuleChecks Executed: 205
TOTAL DRC Results Generated: 9
可见一共检查出9 个DRC 错误。如果没有错,则最后的TOTAL DRC Results Generated 为0。
还可以查看DRC 检查结果的数据库“drc_err”,如下:
test_nand3 1000
NW_1
0 0 2 Jan 2 20:10:47 2004
Rule File Pathname: drc.rule
Minimum width of an NW region is 0.86um
NW_2a
0 0 3 Jan 2 20:10:47 2004
Rule File Pathname: drc.rule
Minimum space between two NW regions with the same potential is 0.60um Merge if space is less than 0.6um
NW_2b
0 0 2 Jan 2 20:10:47 2004
Rule File Pathname: drc.rule
Minimum space between two NW with different potential is 1.40um
NW_3
……
Rule File Pathname: drc.rule
NW without N+ pick up
Convention_BPMO
0 0 2 Jan 2 20:10:48 2004
Rule File Pathname: drc.rule
Pmos in PW
Convention_BAD_IMP
0 0 2 Jan 2 20:10:48 2004
Rule File Pathname: drc.rule
AA area without any implant
__RVE_ERROR_TAG2__
0 0 14 Jan 11 10:10:57 2004
M1_2 151 1
1
M1_6 154 1
000
PD_M2 197 1
PD_M3 198 1
PD_M4 199 1
PD_M5 200 1
PD_M6 201 1
也包含了检查的错误信息,该数据库主要是被后面的RVE 来调用的。然后要根据错误去版图中相应的位置改,Calibre 提供了良好的RVE(R esult V iew E nviroment)界面,它能直接调用DRC 或者LVS 检查后的结果数据库,图形
化很直观地显示错误所在,并且可以调用版图工具如Virtuoso,直接在Virtuoso 中快速定位错误位置。
2、用RVE 查看结果和改错
RVE(R esult V iew E nviroment)是Calibre 自带的看验证结果的集成工具。启动
方式为:
calibre –rve database
database 为DRC 或LVS 检查结果的数据库,这里是drc_err :
calibre -rve drc_err
激活后界面如图1
可见左边显示DRC 错误种类和数目,右边显示坐标位置,下面是对该Rule 的解释。
清晰的界面,方便的操作能帮助用户快速找到错误和修改。RVE 能调用很多版图工
具,把错误直接反映在版图位置上,见菜单Setup ——> Layout , 这里可以设置调
用的版图工具。具体配置方法见在线帮助中Calibre 与其他工具的接口。在Cadence
的Virtuoso 中集成了Calibre 以后,Virtuoso 的菜单中会多出Calibre 的菜单,如:
即可以直接从Virtuoso 中调用图形化的DRC, LVS 和RVE,显得十分方便。点击
Start RVE ,选择数据库名称,同样可以得到同图1 一样的界面,这时RVE 已经
和版图工具集成在一起,可以在RVE 中点击一些错误坐标,Virtuoso 中立刻会显示
错误的位置,如图3:
这里点击M1 小于最小面积的错误中的第1 个错误点:右边坐标红色下划线的(-1.96 ,
3.97 ) , 在版图工具中会立刻高亮显示位置,如图4:
因此改错起来十分方便。可以在RVE 菜单View ――> By Check , RVE 左边会显
示出Check 每条rule 的结果,见图5:
绿色的表示检查该rule 无误。而且利用File 菜单中可以方便地打开DRC 结果报告、DRC Runset 等,如图6:
第三章Calibre LVS
3.1数据准备
需要的数据为版图数据、电路图数据和runset 文件。Calibre 把电路图网表
的部分叫SOURCE。SOURCE 部分要求的网表格式为标准spice 格式或者Calibre 自身的一种类似spice 的格式。Calibre 有一种把verilog 转为自身类spice 格式的功能,叫v2lvs,下面先介绍v2lvs:
v2lvs 能够把verilog 网表和相对应的spice 库、verilog 子库转成Calibre LVS 用到的电路图SOURCE 网表,其功能如图:
转换的原理是verilog 网表根据verilog 子库对元件端口的定义,去spice 子库找同样
名称和端口的元件,然后进行网表和格式上的替换。因此v2lvs 转类spice 网表时,
需要verilog 网表、spice 库、verilog 子库描述(可选),其命令格式如下:
v2lvs –v verilog_file –o spice_like_file [-l verilog_lib_file ] [-lsp spice_lib_file] [-lsr spice_lib_file] [-s spice_lib_file] [-s0 groundnet] [-s1 powernet] [-sk] [-i]
-v 后面接verilog 文件名称;-o 为输出类spice 格式文件;-l 是verilog 子库描述;-lsp 接spice 库网表,p 是pin 模式,即不允许有数组类的verilog 端口(比如PA[3]、PA[2]、PA[1]、PA[0])出现;-lsr 与-lsp 意义同,不过pin 是range 模式,即可以接受verilog 的数组端口;与-lsp,-lsr 不同的是,-s 是只是让转出文件在前面INCLUDE 这些spice 子库,而不会读它们;-s0 , -s1 为对verilog 中1’b0, 1’b1 的电源网络取代;-sk 指允许多组复合电源,不仅仅是一对全局电源VDD,VSS;-i 指输出文件采用spice 通用
的pin 格式,没有$引导,便于仿真。常见的例子如下:
v2lvs –v top_design.hv –o top_design.sp –s0 VSS –s1 VDD –sk –l pll_risc.v
-l cache_core.v –l pad.v –l std.v -lsr pll_risc.sp –lsr cache_try_new.sp