实用文档
需要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 –lsp std.sp -lsp pad.sp -s pll_risc.sp –s cache_try_new.sp –s std.sp –s pad.sp
根据几个子模块的情况,转出整个芯片的LVS 网表。
实际上,verilog 子库并不是都需要的,v2lvs 在转spice 网表的时候,是根据verilog 子库中元件端口和spice 子库中的元件端口名称对应关系来转的。如果在verilog 网表中没有数组端口,则该元件端口名称在spice 子库网表中元件的端口名称中也是唯一的标识,因此不会转错。但是对于数组端口(如PA[31:0]),如果没有verilog 子库对模块的端口定义,v2lvs 按照缺省的从高位到低位的方式转出端口对应关系,因此会出错。因此对于有数组端口的verilog 网表,一定要求有verilog子库网表。上面的例子可以简化为:
v2lvs –v top_design.hv –o top_design.sp –s0 VSS –s1 VDD –sk -l pll_risc.v –l cache_core.v -lsr pll_ric.sp -lsr cache_try_new.sp -lsp std.sp –lsp pad.sp -s pll_risc.sp –s cache_try_new.sp –s std.sp –s pad.sp
3.2 LVS 流程
从下面的流程中可看出,Calibre LVS都先把版图提取出SPICE格式的网表来,实际上Calibre LVS比对的是两个SPICE网表。
Rule File Completed Layout Completed Source
Calibre LVS
ASCII Extracted LVS Results
Report netlist Database
实用文档
Determine Errors from Report Locate Errors using Calibre RVE and Layout Tool Correct Layout Errors 3.3一个简单的LVS Runset文件
// 注释
LAYOUT PATH “/home/*” //版图数据的路径及名称 LAYOUT PRIMARY “*” //版图的顶单元名 LAYOUT SYSTEM GDSII //版图数据的格式
//---------------------------------------------------------------- SOURCE PATH “/home/*” //逻辑网表的路径及名称 SOURCE PRIMARY “*” //顶层逻辑名 SOURCE SYSTEM SPICE //逻辑网表的格式
//----------------------------------------------------------------- LVS REPORT “/home/*” //LVS Report的路径及名称 LVS REPORT OPTION S //显示软连接的冲突 PRECISION 1000
RESOLUTION 10 //格点为0.01 UNIT CAPACITANCE FF UNIT RESISTANCE OHM
UNIT LENGTH U //定义文件里电容、电阻、长度的单位
//-------------------------------------------------------------------- LVS POWER NAME “?VDD?” “?vdd?” “?VCC?” “?vcc?” //定义电源 ?为通配符
LVS GROUND NAME “?GND?” “?gnd?” “?VSS?” “?vss?”//定义地 TEXT DEPTH PRIMARY // 定义只认顶层的TEXT,用ALL表示认识所有的TEXT VIRTUAL CONNECT COLON YES//定义允许用名字的虚拟连接
//-------------------------------------------------------------------- LVS ABORT ON SUPPLY ERROR YES //电源地短路就中断LVS,要检查短路才设为NO LVS ISOLATE SHORTS NO //发现电源地短路时改为YES,因为它需要很长时间 LVS IGNORE PORTS NO //不忽略PORTS
LVS CHECK PORT NAMES YES //比PORTS的名字
LVS RECOGNIZE GATES ALL// 同上面图形界面里Gates的设置 LVS ALL CAPACITOR PINS SWAPPABLE YES //允许电容两端互换
//------------------------------------------------------------------------- LVS FILTER UNUSED MOS YES //忽略版图里不用的MOS管,下面有详细控制 LVS FILTER UNUSED RESISTORS YES //忽略版图里不用的电阻,下面有详细控制 LVS FILTER UNUSEDC CAPACITORS YES //忽略版图里不用的电容,下面有详细控制 LVS FILTER UNUSED OPTION AB RC RE RG YC O
//定义哪些器件是不用的器件:AB表示去掉G S D三端连一起的MOS管,RC表示去 //两端连一起的电阻,RE表示去掉两端连一起的电容,RG表示去掉两端连一起的二极 //管,YC表示去掉三端连一起的三极管,O是过滤的重复设置,一般都加上。
实用文档
LVS REDUCE PARALLEL BIPOLAR YES //将并联的三极管当成一个 LVS REDUCE PARALLEL MOS YES //将并联的MOS管当成一个 LVS REDUCE PARALLEL DIODES YES //将并联的二极管当成一个 LVS REDUCE PARALLEL CAPACITORS YES //将并联的电容当成一个 LVS REDUCE PARALLEL RESISTORS YES //将并联的电阻当成一个 LVS REDUCE SERIES RESISTORS YES //将串联的电阻当成一个 LVS REDUCE SERIES CAPACITORS YES //将串联的电容当成一个
//------------------------------------------------------------------------------------- //输入层次定义 LAYER nwelli 1 LAYER ndiffi 2 LAYER pdiffi 3
. . .
bulk = EXTENT //定义大衬底,EXTENT表示数据的最外框 TEXT LAYER 60 ATTACH 60 met1 PORT LAYER TEXT 60
TEXT LAYER 70 ATTACH 70 met2
PORT LAYER TEXT 70 //定义TEXT的连接
LAYOUT TOP LAYER padi met3i met2i via2i via1i // 将这些数据当成顶层 //-------------------------------------------------------------------------------------------
//层次运算,同DRC
ndiffx = rlocosi AND nimpi . . .
//------------------------------------------------------------------------------------
//定义连接,同DRC
CONNECT met2 met1 BY via1 . . .
//------------------------------------------------------------------------------------- //器件定义
DEVICE MN(N) ngate tpoly tnsd tnsd bulk [0.5] //定义NMOS管,拐角因子为0.5 TRACE PROPERTY MN(N) L L 0.1 //比对沟道长度 允许10%的误差 TRACE PROPERTY MN(N) W W 0.1//比对沟道宽度 允许10%的误差
DEVICE MP(P) tpgate tpoly tpsd tpsd tnwell [0.5] //定义PMOS管,拐角因子为0.5
实用文档
TRACE PROPERTY MP(P) L L 0.1 //比对沟道长度 允许10%的误差 TRACE PROPERTY MP(P) W W 0.1 //比对沟道宽度 允许10%的误差
DEVICE R(RW) bnwell tnsd tnsd [800] //定义电阻,方块阻值为800OHM TRACE PROPERTY R(RW) R R 0.3 //比对电阻值,允许30%的误差
DEVICE C(CL) pccap cpo2 tpoly [0.72 0] //定义电容,每平方电容值0.72FF,0表示不计
//算周长效应的电容
TRACE PROPERTY C(CL) C C 0.3 //比对电容值,允许30%的误差 DEVICE Q(PL) TRImk coll base emit //定义三极管 DEVICE D(DN) ndiomk bulk tndio // 定义二极管
TRACE PROPERTY D(DN) A A 0.3 //比对二极管的面积,允许30%的误差
//------------------------------------------------------------------ //ERC CHECK 部分
LVS SOFTCHK tnwell CONTACT LVS SOFTCHK bulk CONTACT ERC PATHCHK GROUND&& !POWER ERC PATHCHK POWER&& !GROUND ERC PATHCHK !POWER&&!GROUND ERC PATHCHK !LABELED psub_to_power {
NET psub “?VDD?” “?vdd?” “?VCC?” “?vcc?”
}
nsub_to_ground {
NET nsub “?VSS?” “?vss?” “?GND?” “?gnd?” }
3.4 Runset文件里器件的定义
器件定义的一般格式 DEVICE element_name [(model_name)] device_layer {pin_layer} [property_spectification]
Example: Source pin Drain pin Bulk pin Property Gate pin layer layer layer Specification layer DEV MP(P) GATE POLY(G) SRC(S) DRN(D) NWELL(B) [0.5] Element_name Model_name Device layer
实用文档
Element name MN MP MD ME Definition MOS Transistor Pin names Default Parameters for Properties for Property Tracing Specification stG(gate) 1 pin Width layer Length ndS(source) 2 pin layer rdD(drain) 3 pin layer thB(bulk) 4 pin layer is optional POS(+pin) 1 pin Area layer Perimeter ndNEG(-pin)2 pin layer rdSUB(substrate)3 pin layer is optional POS 1 pin layer Capacitance ndNEG 2 pin layer rdSUB 3 pin layer is optional stststEffective_width_factor (weffect) D Diode C Capacitor Area_cap Perim_cap R Resistor POS 1 pin layer Resistance ndNEG 2 pin layer rdSUB 3 pin layer is optional Bipolar Transistor C(coll) 1 pin NONE layer ndB(base) 2 pin layer rdE(emit) 3 pin layer thSUB 4 pin layer is optional stresistivity Q
3.5用commond line 来运行Calibre LVS检查
(1)先必须有一个完整的规则检查文件,必须包含运行设置、层次定义、层次运算、器件定义等几部分。
(2)建一个批处理命令比如叫run_lvs,内容为