calibre lvl
lvl 的rule file里面写上layout bump2 xxxx,xxxx是一个数值,比如一千好了,
还要有layout path2和layout primary2来设定第二个layout db信息,
再定义第二个layout的layer num每个都加1000,比如说第一个layout有layer a_1 1,那第二个layout就要有layer a_2 1001,
比较两个layout的layer 1差别的检查就是例如: a_check { a_1 xor a_2 },
这个具体你看calibre的帮助文档吧.工厂有没有提供现成的runset文件?
compare_gds a.gds. m16o16 a1.gds m16o16 m16o16.db
calibre -drc lvl.rsf 命令是这个。
rsf要自己写,具体参考calibre帮助文档
compare_gds很简单啊
#!/bin/csh -f
set gds1=FLS256K59DA_M5a.gds
set top1=FLS256K59DA
set gds2=FLS256K59DA.gds
set top2=FLS256K59DA
compare_gds${gds1} ${top1} ${gds2} ${top2}drc.db
有两种方法
一个是compare_gds-XOR
一个是写个runset,把想要比对的layer定义出来,然后run drc
compare_gds *.gdsTOPCELL *.gds TOPCELL lvl.db -XOR | tee lvl.log
谢谢各位的帮忙,你们说的两种方法都试过了,都可以啊,呵呵,现在我对第二种方法中的rulefile有个疑点,请大家再帮帮吗,在这一楼,我先把从网上找的rulefile贴一下,下一楼提出我的疑点,请大家帮帮啊:
LAYOUT PATH "1.gds"
LAYOUT PRIMARY "TOP1"
LAYOUT SYSTEM GDSII
LAYOUT PATH2 "2.gds"
LAYOUT PRIMARY2 "TOP2"
LAYOUT SYSTEM2 GDSII
LAYOUT BUMP2 400
DRC RESULTS DATABASE "/tmp/lvl.db"
LAYER OLD_M1 46
LAYER OLD_M2 48
LAYER OLD_VIA1 47
LAYER NEW_M1 446
LAYER NEW_M2 448
LAYER NEW_VIA1 447
diff_m1 {XOR OLD_M1 NEW_M1}
diff_m2 {XOR OLD_M2 NEW_M2}
diff_via1 {XOR OLD_VIA1 NEW_VIA1}
大家好,在上一楼的rulefile中,我们了解了calibre比对层的方法,但是,如果版图中有2层的datanumber是一样的,而datatype是不同的话,应该怎么写这个rulefile呢?
比如下面的情况:
HTNWl1310
SUBD1311
该怎么写rulefile呢?谢谢各位帮吗。
thunder的turbo LVL 很好用, 不用runset, 直接在gui里面比较, 又快又好用. 如果你的GDS比较大, 比如5G以上, 这个玩意很快.
咋用?说道说道呗
从他们代理商网站上抄的. www.lomicro.com
快速地大规模GDS版图的LVL
随着SOC的规模日益复杂, GDS的容量越来越大, 少则几个G, 多则几十个G. 当进行版图的修改或者做版图金属改版后,需要对之前的版本做个对比,这就是所谓的LVL(layout V.S layout).
之前的方式是使用calibre来做比较,利用calibre的compare_gds命令来做比对, 然后通过virtuoso等软件通过rve来load 进比对的结果进行查看.
当设计规模较小并且不复杂的时候, calibre+virtuoso的组合可以很方便的进行LVL和LVL结果的查看. 但是当设计复杂度的提高, 规模的变大, GDS达到10G数量级的时候, calibre+virtuoso的组合就显得力不从心了.
Thunder作为高效率的超大规模GDS编辑,浏览和调试工具, 不仅可以进行快速的LVL, 并且可以再统一的界面进行两个版本版图的同步显示,来方便的告知用户不同版本版图的差异.
Thunder的turbo LVL 这对于10G的GDS, 只需8分钟左右的时间进行LVL, 同类产品可能需要以小时为单位来计算. 下面是几个benchmark的数据:
GDS size thunder others
10G 8minutes 2-4hours
30G 12minutes 20 hours
55G 17 minutes 55hours

用户评语:
“We were very impressed by Thunder's performance.
Its GDS file loading and display speed is the fastest among the tools we know.
Also the turbo LVL and the turbo metal density check areblazingly fast from what we have seen so far.
The scripting API and the customization support helped our projects to increase the productivity and efficiency,”
Steven Chen,
“Thunder LVL is fast, linear to GDS size, and memory efficient,”
James Chen,
VLSI technology manager
nVIDIA.
看上去挺诱人的,不知道哪里有试用版,测试一下
小编大哥,这个compare_gds-XOR是在命令行里用的吗?calibre里加runset file老是出错,我是菜鸟,不要笑我
你启动calibredrv
把gds读入,然后用它的layout diff做
我靠,难道你们要自己写rule file吗!
写过
NB
不过低nm工艺的应该很复杂吧
LVL的目的性强,只对比修正的layer
如果全部对比,那就用calibredrv工具自带的功能。前面说了
新版本是dbdiff
用calibre做LVL的两种方法:
假设我们有两个版图文件,分别为1.gds和2.gds,顶层分别为TOP1和TOP2
方法1。
compare_gds 1.gds TOP1 2.gds TOP2 /tmp/diff.db -XOR
然后用calibre -rve /tmp/diff.db看结果
这种方法适用于比较整个版图;
方法2。
写一个简单的rule file,然后做DRC;
首先查出需要比较的那基层的layer number,比如M1为46,VIA1为47,M2为48,我们来比较这几层;
cat > lvl.cal
LAYOUT PATH "1.gds"
LAYOUT PRIMARY "TOP1"
LAYOUT SYSTEM GDSII
LAYOUT PATH2 "2.gds"
LAYOUT PRIMARY2 "TOP2"
LAYOUT SYSTEM2 GDSII
LAYOUT BUMP2 400
DRC RESULTS DATABASE "/tmp/lvl.db"
LAYER OLD_M1 46
LAYER OLD_M2 48
LAYER OLD_VIA1 47
LAYER NEW_M1 446
LAYER NEW_M2 448
LAYER NEW_VIA1 447
diff_m1 {XOR OLD_M1 NEW_M1}
diff_m2 {XOR OLD_M2 NEW_M2}
diff_via1 {XOR OLD_VIA1 NEW_VIA1}
^D
这样rule file就写好了
运行:
$ calibre -drc lvl.cal
看结果
$ calibre -rve /tmp/lvl.db
我觉得可以把不同的那一层通过virtuoso mapping到另一层,再做compare_gds
第二种新建文件的那种方式比较麻烦,而且新建之后若要比对其它的一些层次,直接修改之前的文件是无效的,因为后续的结果不会更新,一直保留第一次的结果。推荐第一种直接比对的方式!
最简单的方法是在calibredrv界面下就有
求详细介绍一下,两种方法怎么用的啊,是在calibre的drc文件中加上这些语句跑,还是单写个rule跑啊,求教!
方法一:楼上几位说的很清楚,使用compare_gds命令。
方法二:选择calibre licence,使用calibre自带命令:create_compare_rule lvl.rule top1.gds top2.gds
此方法生成的lvl.rule中的layer是不含datatype的,datatype都是0;如果您的gds中layer含有不同datatype,不能使此方法,会有偏差。可以用脚本(Perl)写一个rule设定layer层数,datatype根据具体情况而定
最新的calibre用db_diff了,大于2g的GDS用这个很快
2011以上calibre版本dbdiff应该是compare_gds的升级版吧
我是写rule file跑的,但是跑出来的结果默认数是1000,这个怎么样才能让它把所有的的结果都产生出来呢?
现在主要用的有3种方法:1.flash lvl用skipper这个工具;2.compare_gds;3.dbdiff
