calibredrc和lvs验证总结.docx
《calibredrc和lvs验证总结.docx》由会员分享,可在线阅读,更多相关《calibredrc和lvs验证总结.docx(20页珍藏版)》请在冰豆网上搜索。
calibredrc和lvs验证总结
Calibre学习总结
第一章Calibre简述
1.1Calibre简介
Calibre作为MentorGraphics公司出品的后端物理验证(PhysicalVerification)
工具,它提供了最为有效的DRC/LVS/ERC解决方案,特别适合超大规模IC电路的物
理验证。
它支持平坦化(Flatmode)和层次化(Hierarchicalmode)的验证,大大缩
短了验证的过程;它高效可靠的性能已经被各大Foundry认证,作为TapeOut之前的
验证标准。
它独有的RVE(ResultViewEnviroment)界面可以把验证错误反标到版图
工具中去,而且良好的集成环境便于用户在版图和电路图之间轻松转换,大大提高了
改错的效率。
xCalibre具有版图寄生参数抽取的功能。
1.2手册
在工作站下输入mgcdocs&命令,就可阅读Calibre的所有手册。
1.3几个常用的缩写命令
1、SVRF---StandardVerificationRuleFormat(标准的检查文件)
2、RVE---ResultsViewingEnvironment(显示结果用的环境窗口)
3、SVDB---StandardVerificationDatabase(LVSresults)
4、DRC---DesignRuleChecking
5、LVS---LayoutVersusSchematic
6、ERC---ElectricalRuleChecking
第二章CalibreDRC
2.1数据准备
完成CalbireDRC需要的数据有版图数据和执行DRC检查的命令文件(Runset)。
版图数据支持GDSII、CIF、BINARY、ASCII格式。
2.2流程图
CompletedLayout
Runset
CalibreDRC
DRCResultsDatabase
ASCIIReport
CorrectLayoutErrors
LocateErrorsUsingCalibreRVEandLayoutTool
2.3DRCRunsetFile
1基本控制,原有DRACULA的file可以用drac_cvtsourcefiletargetfile命令来转换。
(1)Calibre是一个“Edge-Based”Tool,默认错误的显示是边
Errorisbetweentheseedges
(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一个简单的RuleFile,“.
.
.
.
中部开始有关RuleCheckResults的统计,如下:
---RULECHECKRESULTSSTATISTICS
---
RULECHECKNW_1.................TOTALResultCount=0
RULECHECKNW_2a................TOTALResultCount=0
RULECHECKNW_2b................TOTALResultCount=0
RULECHECKNW_3.................TOTALResultCount=0
RULECHECKNR_1.................TOTALResultCount=0
RULECHECKNR_2.................TOTALResultCount=0
RULECHECKNR_3.................TOTALResultCount=0
RULECHECKNR_4.................TOTALResultCount=0
RULECHECKNR_5.................TOTALResultCount=0
RULECHECKNR_6.................TOTALResultCount=0
RULECHECKNR_7.................TOTALResultCount=0
RULECHECKNR_8.................TOTALResultCount=0
如RULECHECKNR_8.................TOTALResultCount=0表示NR_8这条规则
检查的结果是0个错误,具体NR_8规则的含义要看DRCRunsetFile中的定义,检查有错的如:
RULECHECKCT_9.................TOTALResultCount=0
RULECHECKCT_10................TOTALResultCount=0
RULECHECKCT_11................TOTALResultCount=0
RULECHECKCT_12................TOTALResultCount=0
RULECHECKM1_1.................TOTALResultCount=0
RULECHECKM1_2.................TOTALResultCount=1
RULECHECKM1_3&4...............TOTALResultCount=0
RULECHECKM1_5.................TOTALResultCount=0
RULECHECKM1_6.................TOTALResultCount=3
RULECHECKM2_1.................TOTALResultCount=0
RULECHECKM2_2.................TOTALResultCount=0
RULECHECKPD_M1................TOTALResultCount=0
RULECHECKPD_M2................TOTALResultCount=1
RULECHECKPD_M3................TOTALResultCount=1
RULECHECKPD_M4................TOTALResultCount=1
RULECHECKPD_M5................TOTALResultCount=1
RULECHECKPD_M6................TOTALResultCount=1
RULECHECKConvention_FLT_NW....TOTALResultCount=0
分别是1,3,1,1,1,1个错误,最后是错误统计:
---SUMMARY
---
TOTALCPUTime:
0
TOTALREALTime:
1
TOTALOriginalLayerGeometries:
73
TOTALDRCRuleChecksExecuted:
205
TOTALDRCResultsGenerated:
9
可见一共检查出9个DRC错误。
如果没有错,则最后的TOTALDRCResults
Generated为0。
还可以查看DRC检查结果的数据库“drc_err”,如下:
test_nand31000
NW_1
002Jan220:
10:
472004
RuleFilePathname:
MinimumwidthofanNWregionis
NW_2a
003Jan220:
10:
472004
RuleFilePathname:
MinimumspacebetweentwoNWregionswiththesamepotentialis
Mergeifspaceislessthan
NW_2b
002Jan220:
10:
472004
RuleFilePathname:
MinimumspacebetweentwoNWwithdifferentpotentialis
NW_3
……
RuleFilePathname:
NWwithoutN+pickup
Convention_BPMO
002Jan220:
10:
482004
RuleFilePathname:
PmosinPW
Convention_BAD_IMP
002Jan220:
10:
482004
RuleFilePathname:
AAareawithoutanyimplant
__RVE_ERROR_TAG2__
0014Jan1110:
10:
572004
M1_21511
1
M1_61541
000
PD_M21971
0
PD_M31981
0
PD_M41991
0
PD_M52001
0
PD_M62011
0
也包含了检查的错误信息,该数据库主要是被后面的RVE来调用的。
然后要根据错误去版图中相应的位置改,Calibre提供了良好的RVE(ResultViewEnviroment)界面,它能直接调用DRC或者LVS检查后的结果数据库,图形化很直观地显示错误所在,并且可以调用版图工具如Virtuoso,直接在Virtuoso中快速定位错误位置。
2、用RVE查看结果和改错
RVE(ResultViewEnviroment)是Calibre自带的看验证结果的集成工具。
启动
方式为:
calibre–rvedatabase
database为DRC或LVS检查结果的数据库,这里是drc_err:
calibre-rvedrc_err
激活后界面如图1
可见左边显示DRC错误种类和数目,右边显示坐标位置,下面是对该Rule的解释。
清晰的界面,方便的操作能帮助用户快速找到错误和修改。
RVE能调用很多版图工
具,把错误直接反映在版图位置上,见菜单Setup——>Layout,这里可以设置调
用的版图工具。
具体配置方法见在线帮助中Calibre与其他工具的接口。
在Cadence
的Virtuoso中集成了Calibre以后,Virtuoso的菜单中会多出Calibre的菜单,如:
即可以直接从Virtuoso中调用图形化的DRC,LVS和RVE,显得十分方便。
点击
StartRVE,选择数据库名称,同样可以得到同图1一样的界面,这时RVE已经
和版图工具集成在一起,可以在RVE中点击一些错误坐标,Virtuoso中立刻会显示
错误的位置,如图3:
这里点击M1小于最小面积的错误中的第1个错误点:
右边坐标红色下划线的,
),在版图工具中会立刻高亮显示位置,如图4:
因此改错起来十分方便。
可以在RVE菜单View――>ByCheck,RVE左边会显
示出Check每条rule的结果,见图5:
绿色的表示检查该rule无误。
而且利用File菜单中可以方便地打开DRC结果报告、
DRCRunset等,如图6:
第三章CalibreLVS
3.1数据准备
需要的数据为版图数据、电路图数据和runset文件。
Calibre把电路图网表
的部分叫SOURCE。
SOURCE部分要求的网表格式为标准spice格式或者Calibre
自身的一种类似spice的格式。
Calibre有一种把verilog转为自身类spice格式的
功能,叫v2lvs,下面先介绍v2lvs:
v2lvs能够把verilog网表和相对应的spice库、verilog子库转成CalibreLVS用
到的电路图SOURCE网表,其功能如图:
转换的原理是verilog网表根据verilog子库对元件端口的定义,去spice子库找同样
名称和端口的元件,然后进行网表和格式上的替换。
因此v2lvs转类spice网表时,
需要verilog网表、spice库、verilog子库描述(可选),其命令格式如下:
v2lvs–vverilog_file–ospice_like_file[-lverilog_lib_file][-lspspice_lib_file]
[-lsrspice_lib_file][-sspice_lib_file][-s0groundnet][-s1powernet][-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–o–s0VSS–s1VDD–sk–l
-l–l–l-lsr–lsr
–lsp-lsp-s–s–s–s
根据几个子模块的情况,转出整个芯片的LVS网表。
实际上,verilog子库并不是都需要的,v2lvs在转spice网表的时候,是根据verilog子库中元件端口和spice子库中的元件端口名称对应关系来转的。
如果在verilog网表中没有数组端口,则该元件端口名称在spice子库网表中元件的端口名称中也是唯一的标识,因此不会转错。
但是对于数组端口(如PA[31:
0]),如果没有verilog子库对模块的端口定义,v2lvs按照缺省的从高位到低位的方式转出端口对应关系,因此会出错。
因此对于有数组端口的verilog网表,一定要求有verilog子库网表。
上面的例子可以简化为:
v2lvs–v–o–s0VSS–s1VDD–sk-l
–l-lsr-lsr-lsp
–lsp-s–s–s–s
3.2LVS流程
从下面的流程中可看出,CalibreLVS都先把版图提取出SPICE格式的网表来,实际上CalibreLVS比对的是两个SPICE网表。
CompletedLayout
RuleFile
CompletedSource
CalibreLVS
LVSResultsDatabase
ASCIIReport
Extractednetlist
CorrectLayoutErrors
LocateErrorsusingCalibreRVEandLayoutTool
DetermineErrorsfromReport
3.3一个简单的LVSRunset文件
.
.
bulk=EXTENT.
.
.
.
PropertySpecification
Bulkpinlayer
Drainpinlayer
Sourcepinlayer
Gatepinlayer
Devicelayer
Model_name
Element_name
(1)run_lvs命令就可。
运行完后可以到存放结果文件的目录里看ReportFile,还可以在版图里用RVE调LVSDatabase进行Debug
(2)hcell_file的格式如下
Error:
Differentnumbersofinstances.
Error:
Connectivityerrors.
Error:
Instancesofdifferenttypesorsubtypeswerematched.
Error:
Propertyerrors.
Warning:
Unbalancedsmashedmosfetswerematched.
Warning:
Ambiguitypointswerefoundandresolvedarbitrarily.
*******************************************************************************
*CELLSUMMARY*
*******************************************************************************
ResultLayoutSource
-----------------------------------
INCORRECTTOPCELLTOPCELL
可见总的比较结果是不正确,错误有5种:
不同网络、不同元件个数、连接错误、不同元件类型、属性错误,CELLSUMMARY里面有Layout和Source的TOPCELL不匹配。
然后直接翻页到文件的后面,看到INFORMATIONANDWARNINGS栏:
*******************************************************************************
INFORMATIONANDWARNINGS
*******************************************************************************
这里列出了匹配的统计情况(同dracula的最后),可以看见SOURCE和
LAYOUT匹配了多少,各有多少没有匹配,错在哪种单元上面等,这里可以看出共
有10个layout单元和16个source单元没有匹配。
下面是管子等删减的情况统计:
oStatistics:
310940layoutmostransistorswerereducedto94596.24286connectingnetswere
deleted.
171921mostransistorsweredeletedbyparallelreduction.
16mostransistorsand16connectingnetsweredeletedbyseriesreduction.
44407mostransistorsand24270connectingnetsweredeletedbysplit-gate
reduction.
106383sourcemostransistorswerereducedto28181.22460connectingnetswere
deleted.
36983mostransistorsweredeletedbyparallelreduction.
16mostransistorsand16connectingnetsweredeletedbyseriesreduction.
41203mostransistorsand22444connectingnetsweredeletedbysplit-gate
reduction.
20series/parallellayoutresistorswerereducedto6.8connectingnetswere
deleted.
141unusedlayoutmostransistorsweredeleted.
141unusedsourcemostransistorsweredeleted.
2unusedlayoutresistorsweredeleted.
47netswerematchedarbitrarily.
下面是顶层端口对应情况,这个很重要:
InitialCorrespondencePoints:
Ports:
vddVDD33SAVDDVSSVSSDSAVSSEB_RDVALEB_WDRDYEB_RBERREB_WBERRSI_NMI
SI_INT[5]SI_INT[4]SI_INT[3]SI_INT[2]SI_INT[1]SI_INT[0]SI_ENDIAN
SI_COLDRESETEB_ARDYSI_RESETEJ_DINTSUPEJ_DINTCACHE_CETRSTTMSTCKTDI
SI_ERLSI_EXLSI_RPSI_CLKOUTSI_SLEEPSI_TIMERINTEB_AVALIDEXT_CLK
EXT_CLKENEB_INSTREB_WRITEEB_BURSTEB_BFIRSTEB_BLASTEJ_DEBUGM
EB_BE[3]EB_BE[2]EB_BE[1]EB_BE[0]FREFPLL_TESTSI_PLLCLK
如果Ports部分没有出现顶层模块的所有端口,则肯定会导致整个比较的