来源:市场资讯
(来源:艾思后端实现)
在做LV的DRC分析的时候,尤其是full-chip level,会有很多IP内部或者一些已经明确/可移除的DRC violation,如果每次都进行分析会影响收敛效率,对此Calibre提出了waived的工作流程,从而对上述DRC进行预处理,减少一些反复分析的重复工作。闲言少叙,ICer GO!
Calibre的Waiver分类
Calibre在waive的操作中,目前有两种方式。
方式一:.waived file
传统的.waived方式:通过在RVE里边对已知的violation进行waive处理,calibre自动生成对应的.waived文件,这样在每次加载drc.db的时候,会把.waived标注的violation进行过滤标灰。如果工具没有在当前目录找到.waived文件,那么不会做任何的标灰动作
方式二:Auto waived
Auto waive是当前Calibre主推的方式,通过waive GDS和waive setup文件等输入,在启动calibre DRC的时候,加载进合适的waive数据,这样最终生成的drc.db就是被waive后的数据,查验DRC的时候非常清爽。
Auto waived 标准流程见下
传统的.waived上手很容易,基本零起点,auto waive 相对复杂。但是在当下设计越来越大的情形下,calibre 还是推荐用户使用auto waive的方式:高效。可控,安全,不易出错。两者的异同见下表:
对于auto waive flow,分为创建waive GDS 和使用Run Calibre with auto waived 两个部分,具体流程详述见下。
创建waive GDS
DRC RSF的调整
在auto waived flow里边,是针对指定IP的指定类型DRC类型进行waive,这个时候需要对于这个IP下的这个类型的DRC violation进行auto waive 处理,最终会生成基于这个IP和这类DRC violation的GDS文件给后续步骤使用
前提条件
Calibre会对每一个violation都是去判断是基于哪个层级(level)的。如果产生相关violation的shape都是来自于同一个IP,那么这个violation就是属于这个IP,如果不是同一IP,那么这个violation就属于top-level。
为了满足auto waive的这个分类标准,需要先对每一个violation进行IP的归类,这里则要在DRC 的RSF文件里边添加下面的SVRF语句
// DRC RSFDRC CELL NAME YES CELL SPACE XFORM
这个语句会对所有生成的DRC进行IP归类,默认NO,所有的violation都指向top-level。
当DRC CELL NAME YES的violation信息
这里的DRC1被归类到了IP1里边,同时,这个语句的后面也会标注上这个IP1在top-level的坐标。但是在violation描述的坐标是基于IP1的
当DRC CELL NAME NO的violation 信息
DRC1的violation 坐标都是基于top level的。所以这里也不会需要IP1在top-level的例化坐标了。
生成auto waive GDS
和常规一样,先对top-level进行DRC检查。这里会得到常规的drc.db。而后使用下列命令生成waive GDS:
drc_waiv_asc2gds -i drc_results.ascii.db -o waive.batch.gds -e waiver_criteria -c waiver_cell
因为这里的waive.batch.gds是独立于原始IP GDS之外的,从auto waive flow而言,是属于Non-Embedded 的waive 方式。
在生成这个gds的时候,需要配置两个文件,
文件:对cell和DRC violation进行描述
这里声明对IP1的DRC1和DRC2进行waive 处理。
文件:对waive的识别方式进行配置
这里是对指定violation 的面积覆盖识别进行定义。譬如这里是指定了violation覆盖面积大于98则判定为可以被waive.
具体的语法意义如下解释:
SINGLE 100 100:指violation和waive完全匹配。
SINGLE 98 98: 指violation和waive匹配度大于等于98%
命令结束后会生成对应的waive GDS:waive.batch.gds
auto waive GDS的数据结构说明
cell tree
waive GDS是基于IP的,所以它的top-cell就是IP name。而后,会在这个top-cell下会根据violation 和cell 名称等信息,生成对应的GDS child cell 。Child cell 命名格式如下
Waive$wv$_checkname_in_cellname_?count?
checkname:violaiton的名称
cellname:IP name
count:当前violation的增量起点,如果是全新的violation,那就意味着没有增量概念,count就是0
其他字段都是默认格式
譬如这里的waive.batch.gds的cell tree是下列情形
violation layer
和所有的GDS一样,waive DRC的polygon也是需要归属层的,对于auto waive,默认是使用的下面层进行标记:1234.5678
具体的层,用户可以通过下列语法进行配置:
所以waive的violation都被保存到LAYER_NUMBER.DTATYPE_NUMBER下。默认是1234.5678,如果这个layer和DRC RSF里边有冲突,需要用户通过waive setup进行重新配置,并通过drc_waiv_asc2gds -s waive_setup的方式进行waive GDS生成处理,这里不做赘述
这个gds有一个默认的Geometrylayer checksum,在1234.1。这个是对waive GDS图案的校验,避免waiver GDS的内容被误更改
Auto waive flow默认会检查这个chksum,如果不一致,工具是不会向下跑的(除非用户强制关闭这个chksum检查)。这样确保了waive GDS的一致性。
到此为止,用户已经创建好了基于IP和violation DRC1/DRC2类型的waive gds (waive.batch.gds)了。
使用waive gds
准备waive setup文件
对于auto waive flow,用户需要对如何调用waive进行配置,而后将这个waive setup文件给入到DRC run里边,从而实现enable auto waive的目的
譬如这里有一个setup文件如下
注意:
上述的layer number和datatype number需要和waive GDS保持一致
Waiver criteria 用户可以调整配置,这个可以灵活改变匹配策略
在Non-Embedded 模式下MERGE 需要配置成NO
使用auto waive 方式运行Calibre DRC
在常规的DRC运行下,需要指定waive setup文件,才可以将waive带入进行auto waive 命令如下:
calibre -hier -drc drc.rsf -waiver waive.setup
这个时候会在log里边看到下列和waive相关的信息:
Calibre是先完成了传统意义上的DRC check,而后启动了waive (subprocess)流程
这里则对waive GDS进行了读入和waive 标记:
最后则生成了本次waiver的运行结果和相关的文件:
文件的描述如下
所有的waive简报,都可以从calibre-waiver.summary里边看到
DRC db的变化
对于带有waive的DRC run,最终的DRC db是不会包含被waive的DRC violation的(譬如这里的 DRC1和DRC2)。这里也就达到了被确认DRC不用被反复分析的目的。
DRC db的查看
基于上,waive后的DRC db已经生产了,这个时候用户使用命令调取drc DB,会有如下的变化:RVE会自动把waive相关的rdb 调用起来,供用户查验,但是注意,这个是独立在DRC db之外的数据。在传统的DRC DB区域下会多了一个Check WAIVER_RDBS的部件
这样对于design的DRC DB 的auto waive就完成了,用户无论是使用calibredrv或者invs对这个DRC DB进行查验的时候,都不会再看到被waive的DRC violation,为了保持数据一致性,建议用户在完成DRC 查验后,也一并要保存如下的auto-waive相关的几个文件,以备后期完整DRC查验的需要
waived.rdbused_waiver.rdbunused_waiver.rdbcalibre-waiver.summary
【敲黑板划重点】
使用auto waive可以加速full chip的LV收敛速度,对于waive的DRC进行统一管理和review可以提升设计效率。
对于IP设计人员,可以通过auto waived方式,对交付的数据库多一个补充描述,减少了IP的交付迭代,提升交付质量。
TO的时候,也可以通过auto waive 方式,对芯片的LV质量进行合理的数据传递,降低沟通成本,提升交付效率
参考资料
Mentor Calibre® Auto-Waivers™ User’s and Reference Manual