使用Calibre对GDS进行数据遍历

B站影视 韩国电影 2025-06-28 18:54 1

摘要:在芯片的GDS数据里,使用Calibre对数据进行处理是非常常见的操作,但是GDS是一种和常规设计结构不太一样的一种数据,这里,通过这个小小的科普文章,一起看看怎么样在GDS里边做数据漫游吧!闲言少叙,ICer GO!

(转自:艾思后端实现)

在芯片的GDS数据里,使用Calibre对数据进行处理是非常常见的操作,但是GDS是一种和常规设计结构不太一样的一种数据,这里,通过这个小小的科普文章,一起看看怎么样在GDS里边做数据漫游吧!闲言少叙,ICer GO!

Verilog-like 数据结构

在芯片设计的世界中常用的数据结构就是verilog类型的了,通常是由module(设计)和instance(例化)组成,这样通过对module的不断instance,就可以形成一个层次化(hierarchy)的完整设计,在EDA工具里边,不同家对verilog有自己的独特的命名定义

S家

module:design/ref_name

instance:cell/leaf_cell

C家

module:cell/ref_lib_cell_name

instance:insts/Hinsts

基本在工作中,用上述的名词,就可以完成对verilog-like的数据进行准确的描述。

GDS-like 数据结构

对于GDS数据,由于其添加了很多的物理信息,所以这个数据结构和verilog-like相比,有其特殊性,基于常用的Calibre系列工具,它的数据命名大概类似如下:

基础元素(base element)

top-cell:当前GDS的顶层设计(top-design),类似verilog里的current_design

cell:数据库所有的设计,相当于verilog里的module,cell本层可以包含下列的实际结构,可以简单的理解为leaf-instance

poly/wire:指定cell下的metal 类型,可以是任何层的物理图案,会出现在最后的wafer上,PS:需要mask的支持

text:指定cell下的text,只是字符描述,不会出现在最后的wafer上,PS:常见的芯片logo等字符,其实是用某一层的polygon实现的

Via:一个完整的VIA是包含cut、upper和lower layer的,这个不是单纯的metal/text,所以在GDS里边,这个被归为cell*

ref:指定cell所使用的设计,

如果只有名称,那么可以理解为verilog里的module

如果具备了名称和物理信息,那么可以理解为verilog里的instance。

支持嵌套调用

不支持hierarchy design(ref)

可以看到,整个GDS的主要结构还是仿效verilog-like,但是由于都是基于实际的物理设计,所以对于instance和hierarchy做了一些简化处理。cell/ref可能灵活切换,取决于用户看数据的层级/角度。

Cell/ref

Poly/text

具备了上述的数据定义知识,用户就可以通过calibredrv里边提供的命令完成数据的抽取和遍历了。

注意:calibredrv命令默认返回的信息都是去重的(unique ),除非特殊声明

GDS 数据遍历

Calibre的家族可谓博大精深,根据用途,一般可以分为两类

对GDS的查看(GUI)和数据遍历:calibredrv系统,启动命令:calibredrv

对GDS的进行静态规则检查(DRC/LVS etc.):calibre系统,启动命令:calibre

这里,使用calibredrv -shell命令,就可以启动calibredrv的命令行模式了,这个时候并不会弹出calibre的GUI,只有一个提示符。

这个也是一个TCL命令接口(PS:这个TCL接口比较古早,不支持命令自动补全 auto-complete,可能对于用惯S家/C家的用户,还是有一些不太习惯。)

加载一个GDS文件set L [layout create BIST.gds -dt_expand]

这里的L是GDS创建后的文件句柄,后面所有的操作,都需要借助这个句柄。

获取当前设计(top-cell)

$L topcell

这个GDS的顶层只有一个就是BIST,当然Calibre也支持多个top-cell的GDS数据,但是这个违背了层次化设计规则,建议所有的GDS都有且只有一个topcell

罗列出所有的cell(唯一化过的)

$L cells

这里的返回并没有排序,也没有上下级关系,有点类似于get_designs这类命令。

罗列出指定cell下的第一层引用(ref)

对所有当前层次(cell)下的所有leaf(包含ref)进行罗列,

结合下面的截图,可以看到,只有第一层的高亮ref被返回,所以,类似verilog下的get_cells命令:

对于指定ref,查看在当前设计(top-cell)被引用了多少次

这个例子表明了nand_4p在整个BIST设计下,被例化的16次,每次例化都有不同的物理坐标信息,尽管设计内容是一样的:

所以类似的,在当前top-cell下,top-cell(BIST),并没有被例化过任何一次,这个和verilog里的current_design的道理是类似的。

获取指定cell下的所有和具体inst和inst数量

获取指定cell下的具体inst

$L iterarot ref $cell

这里返回的是ref以及具体的坐标等信息,这个就是上文说GDS里边例化(instance)了

具体的返回信息解释如下:

获取指定cell的所有inst数量

方法一: $L refcount -parent nand_4p

方法二:llength [$L iterarot ref $cell]

这个命令是得到了指定cell下的所有子inst,这个和比children(只打印第一层)有如下区别:

- Children只输出第一层的ref,iterator则包含了所有层次的 ref

- Children的输出是uniq 后的ref信息

- Iterator 则是inst的信息

获取指定cell下的所有poly

$L iterator poly $cell $layer_list range 0 n

返回值的说明:

所以,可以看到,是一个水平走线的一段metal

获取指定cell下的所有text

$L iterator text $cell $layer_list range 0 n

返回值的说明:

【敲黑板划重点】

通过上述讲解,用户基本上可以通过命令模式,遍历出GDS里边的所有类型的数据,这个对于GDS的信息抓取或者数据比对有很好的参考作用,如果加以灵活运用,对于一些之前需要在APR里边生成的信息,可以在完整的GDS里边实现了,譬如:单孔的检查,metal的面积/密度统计,layer信息的抽取等等,通过Calibre,可以给后端工程师提供更多维度的数据评判和比对。

Mentor Calibre® DESIGNrev™ Reference Manual

欢迎一起加入号主的知识星球,近期热门话题:

PAD ring planning

eBook share: tech_file and design rule

PT tips

LVS naming conversion and physical cell handling

Calibre GDS operation

......

转自:市场资讯

来源:新浪财经

相关推荐