用calibre进行LVS,步骤是怎样的
发布网友
发布时间:2022-05-05 14:30
我来回答
共5个回答
热心网友
时间:2022-06-27 15:15
Calibre环境做LVS步骤(后面附注意事项,供参考)
1、LVS数据准备
在Astro中完成芯片后提取.fv文件及.gds文件,这两个文件是做LVS必备的。.v文件用来生成在LVS过程中用来和Layout进行比对的.spi文件,而.gds文件用来读入calibre得到Layout。 2、将.gds文件读入calibre 具体步骤省略。 3、生成.spi文件
.spi文件是由.v和一些.cdl、.spi文件一同生成的。
生成.spi文件有一个脚本,以SMIC18 工艺xxx目录为例: v2lvs \
-lsp xxx/smic18.cdl \ -lsp xxx/POR.cdl \
-lsp xxx/RAM256X8.cdl \ -lsp xxx/SP018W.sp \ -s xxx/smic18.cdl \ -s xxx/POR.cdl \
-s xxx/RAM256X8.cdl \ -s xxx/SP018W.sp \ -s0 VSS \ -s1 VDD \
-v $topCell.v \ -o $topCell.spi
格式是固定的,-lsp后面列出你所要做LVS的芯片用到的IP的.spi(.sp)文件,rom、ram、stdcell是.cdl文件。-s后面再把-lsp列出的文件重复一遍。-s0和-s1不变,-v后面写你要进行转换的.fv文件,-o后面写你要输出的.spi文件。
文件写好后,在文件所在目录直接键入文件名,文件即开始自动执行。执行后若无warning和error即可。
icc中提取出来的.v文件需要有phsical only的器件,但是不需要corner和filler pad,pcut和power IO必须加进去。还有一些格式要求,需要使用如下选项:
wirte_verilog –diode_ports –split_bus –no_pad_filler –no_corner_filler_cells -pg这些信息加好后,再进行上面转换.spi文件的步骤。 4、完善layout和.spi文件
在smic工艺下: (1)、layout完善
此时要先检查pad上面的text是否打好。之后要把FP打上。关于FP,以下是从smic的IO文档中找到的解释:
FP stands for ‘From Power Pad’ and FP pin is for global signal. Under normal condition, FP is activated by PVDD2W of Standard I/O library SP018W to ‘HIGH’ (3.3V). FP rail will be automatically connected while joining with other digital I/O cells.
打TEXT的时候要打FP,但是注意:只有digital pad有FP。 (2)、.spi完善
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/chuan/ns.js'; document.body.appendChild(script);
在.spi文件中要加入pcut的连接关系,即VSS1=…,VSS2=…。VSS1和VSS2是pcut的port名字,…处你要写他们和什么相连。
另外,一些打了字的pad也要写清楚它的连接关系,如VSSD=VSSD_pad,等号前面是pad出的port,等号后面写pad上打的text。
另外,在.spi文件中的出现的变量名,要写在.GLOBAL后面,否则LVS的时候会报错。如果有连接关系要注明,则在.spi文件后面写*.CONNECT后面写明两个要连接的名字就可以了。 5、进行LVS
所有准备工作都做完了,开始LVS。 启动calibre,选nmLVS,出现LVS界面。选左边一栏的Rules,在Calibre Rules File中填入LVS的rule。一般我们在做LVS的时候,会先把rom,ram,analog等IP部分box起来不查,先让其他部分的LVS通过了,再查整体的LVS。因此这个rule可以自己加一些box,格式是LVS BOX instance name。
在左边一栏中选Inputs,Layout一栏不动,选Netlist,在Files处填入你修改好了的.spi文件。之后在上面一条菜单中选Setup>LVS Options,选Connect中的Connect nets with colon (:)。选好后,点左侧的Run LVS,则LVS过程就开始了。
运行完后,如果没有问题,则你会看到绿色的笑脸,如果有问题,则要进行分析,修改.spi或者layout来通过LVS。
补充资料:
Useful Abbreviations
SVRF——Standard Verification Rule Format Mentor Rule
RVE——Results Viewing Environment 显示环境
SVDB——Standard Verification Rule Database (LVS results)
在LVS rule中写上这句话,LVS会产生一个SVDB的文件夹存放一些中间结果文件。
ERC——Electrical Rule Verification PEX——Parasitic Ectraction
MDP——Mask Data Preparation 是foundary做的mask的ORC检查。(ORC:optical rules checking 光学规则校验)
TVF——Tcl Verification Format 65nm以下的rule file格式,SVRF很难cover所有的corner所以有TVF
Connect nets with colon (:) 虚拟连接,例如A:1和A:2将被认为是一条net
有时候smic18工艺中,ram,rom的LVS netlist文件.cdl是由dataprepare生成的,但是要把文件中N,P后面加上18变成N18和P18(必须保证stdcell和其rule的命名相匹配才可以)还有要把文件中DN改为NDIO18。
在.v转换成.spi文件的过程中,会在instance前面加X。当有IP Merge时,一些IP的PIN、PORT都要当作BOX注释掉,否则在LVS中会报错。
热心网友
时间:2022-06-27 15:15
可以用命令方式运行lvs,不过要写个文件,逐个读入gds和netlist,这两个文件很容易产生。另外也可以建立一个topcell layout和schematic,做hierarchical lvs,选match cells by name,这样就可以查看所有cell的lvs情况。
热心网友
时间:2022-06-27 15:16
最近学习用calibre跑LVS,遇到问题,不知道哪一步做错了,请教一下。
我的步骤是这样的:
1. encounter完成版图后,输出GDS和verilog netlist。 verilog netlist内容如下:
mole lvstest (a_in,b_in, c_out);
input a_in,b_in;
output c_out;
wire N1,N2,N3;
NAND2X1 U1 (.Y(N1), .B(b_in), .A(a_in));
INVX1 U2 (.Y(N2), .A(N1));
BUFX3 U3 (.Y(c_out), .A(N2));
endmole
2. 用calibre的v2lvs,将verilog netlist转换成spice netlist。
v2lvs -l tsmc18.v -lsp tsmc18.cdl -s tsmc18.cdl -s0 VSS -s1 VDD -o lvs.cdl -v lvstest_rout.v
得到spice netlist内容如下:
.INCLUDE "tsmc18.cdl"
.SUBCKT lvstest a_in b_in c_out
XU1 NAND2X1 $PINS Y=N1 B=b_in A=a_in
XU2 INVX1 $PINS Y=N2 A=N1
XU3 BUFX3 $PINS Y=c_out A=N2
.ENDS
.GLOBAL VDD
.GLOBAL VSS
3.启动calibredrv,读入GDS,如下图所示:
热心网友
时间:2022-06-27 15:16
我的步骤是这样的:
1. encounter完成版图后,输出GDS和verilog netlist。 verilog netlist内容如下:
mole lvstest (a_in,b_in, c_out);
input a_in,b_in;
output c_out;
wire N1,N2,N3;
NAND2X1 U1 (.Y(N1), .B(b_in), .A(a_in));
INVX1 U2 (.Y(N2), .A(N1));
BUFX3 U3 (.Y(c_out), .A(N2));
endmole
2. 用calibre的v2lvs,将verilog netlist转换成spice netlist。
v2lvs -l tsmc18.v -lsp tsmc18.cdl -s tsmc18.cdl -s0 VSS -s1 VDD -o lvs.cdl -v lvstest_rout.v
得到spice netlist内容如下:
.INCLUDE "tsmc18.cdl"
.SUBCKT lvstest a_in b_in c_out
XU1 NAND2X1 $PINS Y=N1 B=b_in A=a_in
XU2 INVX1 $PINS Y=N2 A=N1
XU3 BUFX3 $PINS Y=c_out A=N2
.ENDS
.GLOBAL VDD
.GLOBAL VSS
3.启动calibredrv,读入GDS,如下图所示:
热心网友
时间:2022-06-27 15:17
1. encounter完成版图后,输出GDS和verilog netlist。 verilog netlist内容如下:
mole lvstest (a_in,b_in, c_out);
input a_in,b_in;
output c_out;
wire N1,N2,N3;
NAND2X1 U1 (.Y(N1), .B(b_in), .A(a_in));
INVX1 U2 (.Y(N2), .A(N1));
BUFX3 U3 (.Y(c_out), .A(N2));
endmole
2. 用calibre的v2lvs,将verilog netlist转换成spice netlist。
v2lvs -l tsmc18.v -lsp tsmc18.cdl -s tsmc18.cdl -s0 VSS -s1 VDD -o lvs.cdl -v lvstest_rout.v
得到spice netlist内容如下:
.INCLUDE "tsmc18.cdl"
.SUBCKT lvstest a_in b_in c_out
XU1 NAND2X1 $PINS Y=N1 B=b_in A=a_in
XU2 INVX1 $PINS Y=N2 A=N1
XU3 BUFX3 $PINS Y=c_out A=N2
.ENDS
.GLOBAL VDD
.GLOBAL VSS