书接上文,在前一讲中(Calibre物理验证技术点滴 (上)),曾经提到calibredrv (DESIGNrev)这个工具,这个工具是calibre进行物理验证视图查验的重要GUI工具。简明来讲,Calibre的工作主要就是两大步骤,规则检查和视图查验,在上一章节对规则检查的初步了解后,本章节一起进入Calibredrv的世界中,瞧瞧这里的技术细节。
大多数的工程师都是很有windows的操作经验的(),对于带有图形接口/操作的工具额外有好感。所以calibredrv的友好界面一定能够取得大家的一致认可,加之其强大的配色方案、快速渲染、GDS版图分层管理等特性,一致被广大后端工程师/FAB津津乐道,基本已经成为业界的GDS版图查看、四眼(four-eyes)查验、数据交流的标准工具。可以不算夸张的比喻:calibredrv是GDS世界里的可视化沟通的标准工具(语言)。
启动比较简单,在shell里边直接键入下列命令即可以唤起calibredrv
calibredrv
只要没有DISPLAY的问题,就可以看到如下的GUI界面跳出:
默认这个窗口的中间会显示当前calibredrv的工具版本,譬如笔者的环境是如下的版本信息。
Calibredrv支持非常多的数据输入格式,譬如:
通常的用户都是在某个工艺下进行版图查看,对于不同工艺的数据库,对应的版层信息都是完全独立的,这时候很有必要添加明码的版层描述文件(具体细节后面会提到),可以使用下列选项预加载此信息
calibredrv -dl tech.layerprops
使用此选项打开的calibredrv,在GUI里边后续打开的所有GDS都会以tech.layerprops的版层描述来解析。
多线程支持。现在的版图越来越大,使用64位和多线程加速已经是常规做法,calibredrv也不例外,使用下列选项来打开相应的功能
calibredrv -64 -threads 16
RVE是calibre里边查看物理验证结果的数据环境,RVE也是一个GUI交互界面,可以在calibredrv启动的时候同时唤起RVE,让专业的用户操作快人一步
calibredrv -rve -drc DRC.db
通常GDS的数据都是非常重要的,具有极强的不可复制和私密性,使用只读模式打开GDS通常是一个很好的防止数据被误操作的方法,命令如下
calibredrv -noedit
calibredrv -64 -threads 16 -dl tech.layerprops
calibredrv -individual -dl tech.layerprops -m $GDS1 -m $GDS2
这里需要注意的是选项-individual,默认calibredrv是以merge(合并)模式打开
3. 使用calibedrv同时打开版图文件和RVE GUI打开对应的DRC DB
calibredrv -dl tech.layerprops -m $GDS -rve -drc DRC.db
这个时候,GUI的结果会有一些不同,用户可以开到两个窗口,一个是DRV,另外一个就是RVE
calibredrv -noedit -m $GDS
可以看到,此时的Edit下拉菜单完全是灰色的,这就是在calibredrv禁止编辑的状态
在展开calibredrv的一些操作描述之前,很有必要了解一下版图文件(这里以GDS为例)的基础信息和数据格式。
每一个版图文件都需要具备一下一些基础信息
唯一化:在APR的过程中为了保证所有的模块都可以被独立优化,通常都会最module的unique(唯一化处理)。但是在APR工具里边,所有module只有LEF的边界描述信息,在GDS导出的时候,由于更多的数据和子模块被同时导出,APR工具会在这里做重命名,确保所有的module都是唯一的,便于GDS版图的数据处理。
模块的嵌套:由于上述唯一化的保证,在最终导出的GDS里边,是不会存在模块之间互相调用的问题的,这里给GDS的版图操作提供了更多的空间。从calibredrv的视角来看,顶层设计(也是一个module)会对底层module有调用关系,对于所有的module来言,都是平行的,或罗列在module list里边
模块的结构:无论是顶层设计还是做小的模块,都有类似的结构:深度(depth),版层(layers),层次化(hierarchy),多边形(polygon)等。
在了解了GDS版图结构以后calibredrv的微操作接踵而来。
在calibredrv的命令行启动的时候,可以使用-dl来定义当前会话的版层描述信息。GDS里边保存的都是以数字描述的本层信息,大体结构是layernumber.datatype。
默认情况下,calibredrv展现的GDS版层就是数字的描述,譬如:
这里边有两列,第一列是GDS里边真实的数字版层信息,后面是版层描述信息,由于这里启动的会话是不带版层描述文件的,所以默认版层描述和版层信息一致。
如果使用了版层描述文件,版层信息看起来就会有好很多,很像在APR里边工作
这个对于GDS查看会非常友好。上述描述信息就是使用下列命令打开GDS的效果:
calibredrv -dl tech.layerprops -m $GDS
这里一定要好好看看这个tech.layerprops文本文件,合理的配置可已让这个文件发挥大用途,通常的文件如下
语法并不复杂,基本释义如下
也有一些其他的选项,有一个用户可配置版层顺序的方案可以试一下,其他的大多不太常用
customLayerDrawOrder 1 3 5 7 11 4 2
使用用户定义的顺序描述版层,默认时使用数字,也可以选择版层描述字符等顺序配置,具体可以参见layer选项
这里有一个技巧,尽管用户定义了整个工艺支持的左右版层描述信息,如果在当前GDS里边又找不到的描述的层号,calibredrv依然会使用数字描述来显示。同样,如果GDS里边不包含某些定义在layerprops的版层,calibredrv的layer里边也不会显示,换言之,在calibredrv里边显示的layer,就是这个GDS里边用到的所有版层的信息。
GDS的结构支持层次化,所以也会有深度的问题,在此处,calibredrv的深度(depth)可以查看任何版层,甚至是任何起止深度的信息。用户可以单击Step1,唤出Step2的窗口,从而调整显示版图深度
上图可以看到,这个module的总层深是17层,目前是全部打开(0~9999)。用户也可以在calibredrv的界面里边直接敲击数字9999来改变截至层深
由于所有的设计都有顶层module,对于用户而言可以使用0~0的版层深度快速查看顶层的GDS信息,这个调整深度的功能对于调测顶层和底层的layer short/spacing很有帮助
使用0~0的depth,只显示顶层的M6绕线信息
- 使用命令行优雅的打开calibredrv,快人一步的同时也彰显技术能力。
- 灵活使用版层信息描述配置,让你的DRV开起来就是那么别具一格
- 了解module的结构,是灵活使用calibredrv的技术基础。
- 最后一波的可配置操作高效且灵活,步步稳赢,玩转GDS的查看的零零总总。
读者须知:处于表达方便和技术保密条例,上述技术细节描述可能会存在转义或别名,请读者周知和理解