第6章 版图验证
主要内容 6.1 概述 6.2 Diva DRC规则文的件建立 6.3 Dracula规则文件 6.4 运行Diva DRC 6.5 运行Dracula 6.6 运行Dracula LVS 6.7 关于ERC
6.1 概述 版图验证是指采用专门的软件工具,对版图进行几个项目的验证,例如是否符合设计规则?版图和电路图是否一致?版图是否存在短路、断路及悬空的节点?借助于计算机和Cadence软件的功能,对版图设计进行高效而全面的验证。经过版图验证后,一次流片成功率大大提高。
6.1.1版图验证的项目 版图验证项目包括五项: (1) DRC (Design Rule Check) 设计规则检查。 (2) ERC(Electrical Rule Check) 电学规则检查。 (3) LVS(Layout Versus Schemati) 版图和电路图一致性比较 (4) LPE(Layout Parameter Extruction) 版图寄生参数提取 (5) PRE(Parasitic Resistance Extruction) 寄生电阻提取 其中,DRC和LVS是必做的验证,其余为可选项目。 凡做过DRC和LVS验证的版图设计,基本上能一次流片成功。
6.1.2 Cadence的版图验证工具 Cadence软件包含两种验证工具:Diva和Dracula。 1. Diva 有速度较快、使用方便的特点。 在运行 Diva前,事先要准备验证的规则文件。 2. Dracula 有运算速度快,功能强大,能验证和提取较大电路的特点,一般在交付制版之前都用Dracula验证产品来发现设计错误。但验证过程要复杂一些。 做DRC选用Diva,完成后用 Dracula运行LVS。
6.1.3 版图验证过程简介 用Dracula进行版图验证过程包括的过程如下: Dracula版图验证过程
(1) 建立规则文件(Rule File) (2) 编译规则文件 (3) 运行Dracula程序。 (4) 如果Dracula发现验证的错误,它会产生错误报告和出错的数据库,包含可以用来消除版图中错误的信息。纠正错误后重新进行验证工作,继续消除错误直到获得正确的版图。
6.2 Diva DRC规则文的件建立
6.3 Dracula规则文件 6.3.1 Dracula规则文件的结构 1. 规则文件的模块 规则文件包含4个块,每个块从“*块名”开始,块的最后一行以“*END”语句结束。 (1) 描述块 (Description Block) (2) 输入层块(Input-Layer Block) (3) 操作块 (Operation Block) (4) 绘画块 (Plotting Block)
2. 语法 在Dracula规则文件中使用的一些特殊字符总结为下表。 Dracula规则文件语法 字 符 说 明 例 空白 分隔变量 AND NDIFF POLY NGATE 间隔 ,逗号 分隔变量 GROUND-NODY = VSS1,VSS2,GND = 等号 分隔变量 AUTOMATCH = YES * 星号 表示控制语句、单元定义或断 *END 点,必须在第一行 & 表示and 表示连接规则,必须在第一行的 EXT lay1 lay2 LT 1 & 的符号 最后一个字符 EXT lay1 lay3 LT 1 & EXT lay1[O]lay3 LT OUTPUT err1 23 [ ]括号 包围选项,不能放空白在括号中 ENC[T] ptie pwell SELLT 10 bodptie ; 分号 引入注释,可放在命令行或分开 * INPUT-LAYER 的行,输入到分号右边的是注释 diff=1;diffusion input layer poly=5;polysilicon input layer metal=7;metal input layer
; System description data input section PRIMARY = iomux SYSTEM = GDS2 3.Dracula规则文件例 * DESCRIPTION ; ; System description data input section PRIMARY = iomux SYSTEM = GDS2 INDISK = 1234 OUTDISK = 5678 SCALE = .001 MICRON MODE = EXEC NOW RESOLUITON = .25 MICRON . * END * INPUT–LAYER ; Layer mnemonic name definition section poly = 5 diff = 7 implant = 2 metal = 9 mcl = 10 epi = 11
CONNECT–LAYER = diff poly metal PAD–LAYER = vapox *END ; *OPERATION ;Logical,resizing,connection,and spacing operations AND poly diff gate SIZE gate BY 1 ovgate AND diff ovgate difgate ENC[O] difgate implant LT 4 OUTPUT rule01 5 . CONNECT metal poly BY mc1 CONNECT poly diff BY epi CONNECT metal diff BY mc1
6.3.2 建立Dracula规则文件
6.3.3 Dracula规则文件至Diva规则文件的转换 程序转换的过程和命令如下: % DraculaToDiva↙ :/get [filename][nolist]↙ ;nolist选项使规则文件在屏幕上不显示 :/finish↙ ;告诉翻译器已经完成输入,且产生了新的Diva规则文件。 Diva文件名比filename后多了“iv”两个字母,使用时要连 同这两个字母一起输入,或者将Diva文件名改为drc.rul。 :/abort ;结束转换器工作 命令get和finish可以分别略写为g和f。
6.4 运行Diva DRC Diva DRC的运行过程:在版图窗,选择命令Verify→DRC...,出现DRC对话框。 DRC对话框
对话框的绝大部分选项都根据默认设定,只有Rule File 和Rule Library 要输入规则文件名和规则文件所在厍名。设置完毕按Ok按钮,这时CIW窗显示运行信息,版图上也出现高亮度的区域或线段。对检查出的错误逐个纠正,然后存盘。 错误高亮度显示 CIW窗显示共有6个错误
查看版图文件的错误,选择Verify→ Markers→ Find 查看版图文件的错误,选择Verify→ Markers→ Find...,出现“Find Markers”对话框。打开框中Zoom To Markers 开关,单击apply,出现marker text 对话框,指出了错误的原因和位置。 Find Marker 对话框 marker text 对话框
提示最后一个错误 到最后一个错误时,出现对话框提。 在对话框中每按Next 键一次,屏幕就翻动一页并显示一个新错误(按Previous 键则向前翻动一页且显示错误) 。 按Next 键和Previous 键向前和向后翻页并显示错误 到最后一个错误时,出现对话框提。 提示最后一个错误
反相器版图的4个错误都是由于P+注入包围P管有源区的宽度不足1μm(只有0.9 μm) 造成, 把这个错误纠正了,版图中就不再有错误。 错误数减少为4个
可以选择命令Verify→ Markers→ Explain查看错误原因。方法:选中该命令,用鼠标在版图上有错误并且需要了解原因的地方单击。选择命令Verify→ Markers→ Delete 可把这些错误提示删除。 P+注入包围有源区的宽度只有0.9 μΜm 造成错误
6.5 运行Dracula DRC 6.5.1 验证步骤 对版图进行DRC检查前,先要根据设计规则编写相应的规则文件。 用Dracula运行DRC的步骤(以二选一多路选择器(mux2)的版图为例): (1)建立单元mux2的gds文件 ① 在CIW中,选File→Export→Strem...,出现Virtuoso Stream Out对话框。 Strem Out对话框的设置
② 在Run Directoty中键入~/test/mux2/drc,再按OK键即可。 Virtuoso Stream Out对话框刚打开时,库名、单元名和视图类型名都是空白,点击Library Browsor按钮,出现Library Browsor对话框,点击框中的库、单元和视图类型名,即test,mux2和layout(都高亮度),再点击Close关闭右框,上述三个名字会自动导入左框中相应的位置。 ② 在Run Directoty中键入~/test/mux2/drc,再按OK键即可。 ③ 在Output File中会自动生成mux2.gds,表示输出文件是GDS格式。 Stream Out对话框设置完成后,CIW和STRMOUT PopUp Message框都会显示GDS文件已经建立成功。 显示GDS文件建立成功
(2)建立运行目录 1)mux2的全路径是/root/test/mux2,相对路径是~/test/mux2。在单元mux2下建立运行drc的目录,目录名定为drc。 2)设提示符为%,操作如下: % pwd % /root/test/mux2 % mkdir drc % ls schematic layout drc % cd drc % /root/test/mux2/drc 3)用Dracula编写的运行DRC的规则文件为csmc06.drc,这个文件在/root/verify目录下: % /root/verify csmc06.drc csmc06.lvs …… 4)把文件csmc06.drc拷贝到运行drc的目录下: % cp ~/verify/csmc06.drc ~/test/mux2/drc
(3) 修改规则文件 1)对文件csmc06.drc进行修改。在/root/test/mux2/drc目录下,用vi(或more)打开文件 % vi csmc06.drc 2)csmc06.drc文件中改动的部分用黑线框画出来。 (4) 在~/test/mux2/drc目录下执行: % PDRACULA : /g csmc06.drc : /f
(5) 运行jxrun.com % jxrun.com 这时屏幕显示如下:运行119级后,DRC验证过程结束。
6.5.2 结果分析 DRC运行完成后会产生很多文件, 如图所示。其中drcpr.sum为输出结果,可进入该文件查看错误信息,包括所有的错误种类、显示cell中错误所在的位置等。 显示输出文件和目录
drcpr.sum包括4个部分: (1)All ERROR CELLS LISTING 表示DRC所有错误的种类。 (2)OUTPUT CELL SUMMARY 区域显示cell中有DRC错误的位置,有5个违犯设计规则的错误。
(3)PROBLEM GEOMETRY ERROR LISTING 列出有问题的单元。
选择 Dracula Interactive (4)INPUT COMMAND LISTING 显示DRC要执行的命令文件内容。 要进一步了解错误信息,进入版图窗,选择命令Tools→Dracula Interactive, 如图所示。运行这个命令前,版图窗菜单栏中命令菜单只有Tools、Design等9项,运行命令后命令菜单变为13项,增加了DRC、LVS和LPE等项。 选择 Dracula Interactive 菜单栏的命令菜单增加了新选项
在版图窗选命令DRC→Setup...,出现对话框。在框内输入路径~/test/mux2/drc,点击OK键,会出现图示的3个窗口:第一个窗口(View DRC Error)表示DRC错误显示的地方,第二个窗口(Rules Layer Window)显示DRC错误的种类,第三个窗口(Reference Window)显示目前的图形在单元版图中的位置。 图 6.16 选DRC→Setup
3个显示错误信息的窗口
View DRC Error对话框中,Command的下拉菜单如图所示。
在图 Rules Layer Window对话框中,显示了4个错误,它们和文件drcpr.sum中第二部份显示的几个错误文件相同。 2)第二条错误的代码(c09D61.DAT)进入View DRC Error对话框的文本区。点击它的Fit Current Error按钮,对应的错误就显示在版图上。 3)再按View DRC Error对话框中的Explain按钮,错误原因会显示在另一个对话框中。 显示错误的过程
执行完命令DRC→Setup后,版图窗中DRC的下拉菜单都变得可选了,如图所示。在下拉菜单中,选命令DRC→Select Error File...,出现Select DRC Error File对话框。检查出的几条错误列在框中,如果打开每条错误项前面的开关,就可把错误显示在版图当中,选择了几个选项就显示几个错误。 菜单DRC的下拉菜单 Select DRC Error File对话框
6.6 运行Dracula LVS 6.6.2 运行过程 LVS的运行过程图。 LVS运行流程
用Dracula运行LVS的步骤如下: 1)建立运行目录,即在单元mux2下建立运行lvs的目录,设目录名为lvs。 % /root/test/mux2/lvs 2)准备版图的gds文件(与运行DRC步骤1相同)。 3)建立电路网表。在CIW窗中,选命令File→Export→CDL...,出现“Virtuoso CDL Out”对话框。
4)运行LVS的规则文件csmc06.lvs包含在verify目录下,把这个文件拷贝到运行LVS的目录下。 Virtuoso CDL Out 对话框 4)运行LVS的规则文件csmc06.lvs包含在verify目录下,把这个文件拷贝到运行LVS的目录下。 % cp ~/verify/csmc06.lvs ~/test/mux2/lvs 5)修改规则文件。 % cd ~/test/mux2/lvs % vi csmc05.lvs 规则文件中有3处需要修改: PRIMARY = ××× ;改为单元名mux2 INDISK = ××× ;改为gds文件名,如mux2.gds PRINTFILE =××× ;改为err.gds 修改完毕存盘(save)。
6)输入命令 % LOGLVS 这一步由LOGLVS的逻辑网表编译器将电路图的CDL描述转换为晶体管级网表。 7)继续输入 :cir mux2.cdl : con mux2 : x ;退出LOGLVS编译系统 8)在~/test/mux2/LVS下执行: % PDRACULA ;/g csmc06.lvs :/f PDRACULA是个预处理器,它完成3个任务: ① 检查规则文件csmc06.lvs中有无语法错误; ② 编译规则文件并存储到jxrun.com文件中,jxrun.com文件包含提供Dracula任务的命令; ③ 从主库至运行目录建立符号连接,并将它放入jxrun.com文件中。 9)运行 % jxrun.com
在当前目录~/test/mux2/lvs下,运行查阅目录命令: 6.6.3 输出报告解读 在当前目录~/test/mux2/lvs下,运行查阅目录命令: % pwd % ~/test/mux2/lvs % ls
其中的lvspr.lvs是发现错误的输出报告。 报告的开头及前面几个项目如下所示。
1. LVS报告格式 FILTER(layout)summary 将80列打印行分为两部分,前40列是电路图部分,后40列为版图部分,中间以冒号(:)隔开。本部分打印版图一边的统计摘要。 REDUCE(layout)summary 对REDUCE选项列表。由于这些选项和电路图一边是相同的,它们在REDUCE(schematic)部分不重复。 FILTER(schematic)summary 打印电路图一边的统计摘要。 REDUCE(schematic)summary 对电路图边的简化统计列表。 Main LVS report body 是LVS报告的核心。Repeat summary 是LVS报告的结尾部分,重复报告主体部分的摘要,可以迅速浏览LVS的结果。
2. LVS报告惯例 当列表显示LVS发现的错误时,遵循下列惯例: (1) 匹配和不匹配器件数 (2) 电路图部分和版图部分 在LVS报告中,位于行中点的冒号(:)将行分为左右两部分,左边为电路图部分,右边为版图部分。 (3) 匹配节点识别 版图节点和电路图节点都使用电路图的节点名。 (4) 不匹配电路图节点识别 若在电路图中找到的节点没有对应的版图节点,就在这些节点前加问号,如?A、?B和?C。 (5) 匹配器件的识别 把匹配的器件并排列表,电路图器件列在冒号(:)左边,版图器件列在右边。两种器件都有内部产生的唯一器件编号,后面紧跟器件类型和可选的器件子类型。电路图器件也可能有逻辑门类型和该特殊门内的器件名。版图器件有自然单位的X和Y地址。 然后LVS按连接到匹配器件的节点列表。 (6) 不匹配电路图器件的识别 若找到的电路图器件版图中没有对应的版图器件,就在器件号前加问号(?),在版图器件一边为(***** UNMATCHED *****)。 (7) 不匹配版图器件的识别 和(6)相同,若找到的版图器件没有对应的电路图器件,仍然在器件号前加问号(?) 对应的电路图器件为(***** UNMATCHED *****)。 (8) 连接节点表
3. 查找和消除错误 LVS使用节点和器件的扩展名识别错误的电路图节点、器件或子电路,也识别较高级别的门或部件的功能块。对于版图器件,LVS以自然单位打印X和Y的位置,而且,LVS的错误类型能产生图示输出,在某些情况下,它比列表(像表示阵列的重复错误)能更直接指出错误。 4. LVS的错误类型 LVS错误类型有以下15种: (1) 匹配的节点上没有器件; (2) 匹配的器件上有不匹配的节点; (3) 器件不匹配; (4) 匹配的节点上有多余的版图器件; (5) 匹配的节点上有多余的电路图器件; (6) 匹配的节点上有非匹配的版图和电路图器件; (7) 其它不匹配的版图器件; (8) 其它不匹配的电路图器件; (9) 器件类型(N型和P型,多晶电阻或扩散电阻)不匹配; (10) 器件的尺寸(W或L)不匹配; (11) MOS可逆性错误; (12) 衬底连接不匹配; (13) 器件的电源连接不匹配(多电源供电的情况); (14) 简化多个并联MOS管为单个MOS管时出错; (15) 过滤多余的器件时出错。
6.6.4 错误的纠正 在进行LVS验证的版图窗,选择命令LVS→Setup…,出现LVS Setup对话框,如图所示,输入运行路径后按OK键,对话框消失,出现View LVS、DLW等对话框。 LVS Setup对话框 View LVS对话框如图所示,它是专门用来寻找LVS错误的对话框。
运行LVS之后,就要把版图中错误的位置和性质找出并进行纠正。所用的工具是View LVS对话框和Lvspr.lvs错误输出报告。
下面是错误输出报告的一部分,它列出了DISCREPANCY1和2。 查找错误的步骤:① 将序号(1或2)输入到View LVS对话框第一部分Number右面的框中,并用鼠标点击Add按钮,在版图上就会显示该数所指的错误信息,即错误图形会高亮度显示。如果选择了View LVS第4部分中的Outline,则高亮度的只是图形的外框。找到了错误的位置,再根据该错误的性质,改正就不难了。
和运行DRC一样,运行LVS也是一个需要反复的过程。 ② 查找版图上某个区域内的错误,先点击View LVS对话框第3部分的Cursor Pick按钮,并在版图上点击该区域内的一个图形,会出现Select net/device name对话框。如果在对话框中选择Y并点击OK,则Y会自动进入View LVS对话框第3部分NAME右面的文本区中,再点击Add,版图中标注Y的金属线就会高亮度显示。 和运行DRC一样,运行LVS也是一个需要反复的过程。 出现Select net/device name对话框
6.7 关于ERC 在DRC和LVS运行结束后,都要产生很多文件,从中可以找到扩展名为erc的文件,例如运行DRC产生的drcpr.erc,运行LVS产生的lvspr.erc,这两个文件都是附产品,即Dracula在运行DRC或LVS的时候,附带做了ERC验证,因此,在Dracula验证工具中,ERC不必单独运行。 运行mux2的Dracula DRC时,所产生的drcpr.erc文件如下。由于该版图没有违反电学规则的错误(如短路、断路或悬浮节点),报告内容很简单。