e-works数字化企业网  »  文章频道  »  产品创新数字化(PLM)  »  EDA

单元库质量验证方法之compare library

2020/10/25    来源:单元库特征化及建库技术    作者:峰zou      
关键字:单元库  质量验证  compare library  
lib验证是单元库建库不可缺少的一环,关系到整个单元库的质量。这篇推文着重介绍compare_library。
        曾经看过一个帖子,有人问K库的痛点在哪里?部分回帖提到了lib的验证,怎么验证我们做出来的库。lib验证是单元库建库不可缺少的一环,关系到整个单元库的质量。
 
        SiliconSmart提供了一套完善的单元库验证流程,主要包括三块内容:compare_library比较两套lib文件的差异;qualify_library验证lib文件的质量;HDL(Verilog)验证。
 
        这篇推文着重介绍compare_library。
 
        既然compare_library是单元库质量验证中的一个必要环节,那么什么时候需要用到?Compare library在re-characterization中应用最为广泛,用来验证我们re-char出来的lib跟reference lib相比,结构是否一致,有无attribute丢失,table数值是否有较大的差异等等。
 
        Compare library的基本命令很简单:

        compare_library -reference reference.lib -test test.lib
 
        以上命令会比较test.lib与reference.lib的结构是否匹配,包括group,attributes,whens,但是这个命令不会比较table的数值。比较的结果会存放在当前工作目录下的compare_library文件夹下。可以使用-output_dir这个option来指定不同的存放路径。
 
        那么如果需要比较table的数值呢?其实很简单,加一个-value的option就可以:
 
        compare_library -reference reference.lib -test test.lib -value

        运行结束后会得到一个summary,你可以从summary.log里查看相应的结果。

图1

    如果你想看更加细节的数据,比如所有points的比较结果,这些数据放在.csv文件里,你可以进去查看。每一种meas类型都有对应的.csv文件,如delay,slew,energy,setup,hold等等。默认只列出比较结果为fail的点,如果需要所有点的比较结果,可以使用-all_points这个option。建议加上-tsv这个option,能使数据排列更整齐易读。

        下面介绍几个常见并且非常好用的compare_library的option。

        -compare_values
 
        指定哪些group的数值需要做比较,比如我们要比较ccst,lvf这两个group的数值在reference.lib和test.lib之间的差异,命令就可以这么下:
 
        compare_library -reference reference.lib -test test.lib -value -compare_value {ccst lvf}

        -compare_template_name

        默认是不比较templates的,可以通过打开-compare_template_name来比较templates:
 
        compare_library -reference reference.lib -test test.lib -value -compare_values (ccst) -compare_template_name

图2

        -ignore

        通过使用这个option来人为控制某些不需要比较的group或者attribute,如不需要比较“timing” group和“driver”相关的attribute:

        compare_library -reference reference.lib -test test.lib -value -cells {INVX2} -ignore {timing *driver*}

        -interpolation

        当reference.lib和test.lib的index里的数值不一样的时候,我们还能不能做compare了?使用-interpolation就可以。-interpolation有三个数值,分别是0,1,2。0代表不做内插计算,只有在table的size完全一致,并且数值的偏差小于某一个确定的tolerance的情况下才会做比较;1代表只做线性内插计算,不做外插计算;2代表即会做内插计算又会做外插计算。

        compare_library -reference reference.lib -test test.lib -value -interpolation 1
 
        SiS有一个参数compare_library_interpolation的作用跟这个option类似,一旦用了-interpolation这个option,那么compare_library_interpolation会自动失效。
 
        这里还要注意一点,-interpolation只针对1D,2D的table,3D的table不支持,也就是说如果要做3D的table的数值比较,两个lib的index必须要相同。
 
        -user_defined

        SiS默认是不比较user_defined相关的attribute的,必须打开-user_defined option才能比较。这里需要提醒大家的是,ECSM相关的group目前是被当作user_defined的,因此如果要比较ECSM相关的内容,不要忘了打开-user_defined这个option。
 
        compare_library -reference reference.lib -test test.lib -user_defined
 
        -ee_cells
 
        如果两个lib里有几个cell类似,但是名字不同,能比较吗?可以,用-ee_cells列出需要配对比较的cell的名字:

        compare_library -reference reference.lib -test test.lib -ee_cells {AND2X1 ANDP2X1}

        -tolerance_guide
 
        这个option也比较好用,它能告诉你设置不同的tolerance,比较出来结果的不同通过率(pass-rates),让用户对趋势有个大致的了解。
 
        compare_library -reference reference.lib -test test.lib -value -tolerance_guide

图3


       支持GUI
 
       Compare_library是支持GUI的,关于GUI的用法,后面打算专门推文详细介绍。

 图4

图5

 

        如何设置tolerance?

        首先,可以使用-tolerance开关来查看当前默认的tolerance:
 
        compare_library -tolerance
 
        如果需要调整当前的tolerance,可以使用set_config_opt命令,如:

        set_config_opt delay_absolute_tolerance 0.0005 (单位是lib里对应的单位)

        set_config_opt delay_relative_tolerance 0.02 (2%)

        如果两个lib的误差超过了设定的tolerance,那么就会报出来。

        几点建议
 
        -  对于第一次使用compare_library,建议分成两步来做,先比较结构,再比较数值。在比较数值之前,将结构等基础问题解决好,然后再做数值上的比较。
 
        -  对于数值的比较,建议设置合理的tolerance,不要太紧也不能太松。比如constraints,如果设置1ps的tolerance,显然就太紧了,因为constraint很难有这么高的匹配度。但是对于delay/slew,设置1ns,显然又太松了,因为delay/slew的量测很简单直接,一般设置1~5ps比较合理。
 
        -  要注意tolerance的单位,tolerance的单位是跟着lib走的,在设置tolerance之前必须弄清楚你的lib的单位,这点很重要。

        -  要注意,CCS,ECSM,LVF默认是不比较的,怎么让工具比较,上面已经提到了。

        最后,祝小伙伴们使用愉快!
责任编辑:杨培
本文来源于互联网,e-works本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供,并已尽力标明作者与出处,如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐