Featured image of post calibredrv 一行命令看透GDS

calibredrv 一行命令看透GDS

calibredrv 一行命令看透GDS

做芯片后端或者版图相关工作的朋友应该都有过这样的体验:想快速查看GDS文件的基本信息,却不想把整个文件加载到内存里,既耗时间又占资源。而calibredrv工具里的layout peek命令,恰好能解决这个痛点,不用完整加载GDS/OASIS文件,一行命令就能快速提取版图数据库的关键信息,堪称版图工程师的效率神器。

先从几个实用例子感受一下

日常使用中,我们很少会一次性用到所有参数,先分享几个高频使用的场景,帮你快速上手这个命令。

1. 快速查看GDS的精度(最基础用法)

如果只传入GDS文件名,layout peek默认会返回这个版图数据库的精度,也就是数据库单位和用户单位的比值,这是最基础也最常用的用法之一:

calibredrv -a layout peek lab1a.gds

执行后会返回类似这样的结果:1000.0,这个数值代表当前GDS的精度参数。

2. 查看版图的顶层单元

做版图调试时,先找到顶层单元是第一步,用-topcell参数就能快速定位:

calibredrv -a layout peek fullchip.oas -topcell

返回结果通常是顶层单元的名称,比如top。要是想查看所有顶层单元,换成-topcells参数即可:

calibredrv -a layout peek fullchip_mod.oas -topcells

执行后会列出所有顶层单元名称:LV top NV RM myram_bdec myram_block AV myram_rdec。

3. 查看指定单元的边界框

想知道某个单元的物理边界范围,-bbox参数就能满足需求,比如查看a1220和a2311两个单元的边界框:

calibredrv -a layout peek lab1a.gds -bbox a1220 -bbox a2311

返回的结果格式是{单元名 {x y width height}},比如{a1220 {-4250 0 28500 85000}} {a2311 {-4250 0 52500 85000}},其中x和y是边界框左下角坐标,width和height是宽高,单位都是dbu。

4. 统计版图里的单元总数

想快速知道整个版图数据库里有多少个单元,-cellcount参数一步到位:

calibredrv -a layout peek fullchip.oas -cellcount

执行后会返回具体的数字,比如295,就是当前版图里的单元总数。

核心参数与返回值说明

上面的例子用到的只是layout peek的冰山一角,下面把这个命令的核心参数(Arguments)和对应的返回值(Return Values)梳理清楚,方便你按需使用。

必选参数

fileName:这是唯一的必选参数,指定要读取的版图数据库文件名。如果文件不在当前目录,需要填写相对路径或绝对路径。

常用可选参数及返回值

  • fileName仅作为参数时:返回版图数据库的精度(数据库单位/用户单位)
  • -bbox [cell1 …celln]:返回指定单元的边界框,格式为{x y width height};若未指定单元,返回-topcell对应的顶层单元的名称+边界框信息;搭配-geometryonly可忽略文本和空单元引用
  • -cblock:返回1表示版图中有CBLOCKs,返回0则无
  • -cblockcount:返回版图中CBLOCKs的数量
  • -childbboxes parentcellname childcellname:返回父单元中指定子单元每次放置的边界框坐标,格式为{x1 y1 x2 y2}(左下角和右上角坐标)
  • -cellcount:返回版图数据库中的单元总数
  • -cells:返回版图中所有单元的名称列表
  • -child cell1 [… celln]:返回指定单元的子单元列表
  • -lastmodtime:返回GDS文件最后修改并保存的时间(仅支持GDS文件)
  • -layers:返回版图中所有层信息,OASIS文件会返回层号、数据类型、层名;GDS文件仅返回层号和数据类型
  • -fileproperty:返回版图的属性列表及对应值(仅支持OASIS文件)
  • -parent cell1 [… celln]:返回指定单元的父单元及层级中的所有子单元名称
  • -cellhlayers cell1 [… celln]:返回指定单元及其层级中存在的所有层
  • -celllayers cell1 [… celln]:仅返回指定单元中存在的层
  • -celltext cell1 [… celln]:返回指定单元中的文本信息(不含子单元),包括文本内容、坐标、层号和数据类型
  • -cellproperty cell1 [… celln]:返回指定单元的属性(仅支持OASIS文件)
  • -precision:返回版图数据库的精度
  • -refcount cell1 [… celln]:返回指定单元的引用次数
  • -topcell:返回拥有最多子节点的顶层单元名称
  • -topcells:返回版图中所有顶层单元名称
  • -format:返回版图文件格式(GDS或OASIS)
  • -tableoffsets:返回OASIS文件中的表偏移量,搭配-cellname/-textstring等子参数可返回对应类型的表偏移量
  • -strictmode:返回1表示OASIS文件处于严格模式,返回0则否
  • -sproperty property_name:返回OASIS文件级/单元级标准属性值
  • -undefcells:返回版图中被引用但未定义的单元列表
  • -units:返回版图文件的数据库单位(单位为微米)
  • -handle:为新建的peek对象分配句柄,避免重复读取文件
  • -cache directory:创建或更新PCR文件,指定目录存放;若未指定,会使用MGC_CWB_PCR_PATH环境变量,无该变量则存当前目录

更多实用示例

除了前面的高频例子,这些场景也经常会用到,你可以参考使用:

5. 查看GDS最后修改时间

calibredrv -a layout peek lab1a.gds -lastmodtime

返回结果:2018/06/28 22:50:15

6. 查看版图中的所有层信息

calibredrv -a layout peek lab1a.gds -layers

返回结果:{10 0} {8 0} {0 0} {300 0} {9 0} {4 0} {7 0} {6 0} {5 0} {2 0} {1 0}

7. 查看指定单元的子单元

calibredrv -a layout peek fullchip.oas -child BUFX2 BUFX4

返回结果:{BUFX2 {M1_P_27 nmos_vtl_1 nmos_vtl_2 M1_POLY_26 pmos_vtl_3}} {BUFX4 {M1_POLY_26 M1_P_27 nmos_vtl_1 nmos_vtl_0 pmos_vtl_3}}

8. 查看版图文件的单位

calibredrv -a layout peek lab1a.oas -units

返回结果:0.001(单位为微米)

将结果写入文件

可以将命令保存为文件, 直接 calibredrv fileName, 也可以 calibredrv -a layout peek .....> logcalibredrv -a layout peek ..... | tee log ,后面两个是常用方法,就不举例了。

9. 查看被引用但未定义的单元(写入文件)

有时候需要把结果保存下来,用Tcl脚本就能实现,比如把未定义的单元列表写入文件:

set outfile [open "./output/undefined_cells.txt" w]
puts $outfile [layout peek lab1a_TOP.gds -undefcells]
close $outfile

10. 批量提取精度和单元列表并保存

set outfile [open "./output/results.txt" w]
puts $outfile [layout peek mix.gds -cells -precision]
close $outfile

完整使用格式(Usage)

最后把layout peek的完整使用格式整理出来,方便你收藏备查:

layout peek fileName {-bbox [cell1 […celln]] [-geometryonly]} [-cblock | -cblockcount]
[-childbboxes parentcellname childcellname] [-cellcount] [-cells] [-child cell1 […celln]]
[-lastmodtime] [-layers] [-fileproperty] [-parent cell1 […celln] 
[-cellhlayers cell1 […celln]] [-celllayers cell1 […celln]] 
[-celltext cell1 […celln]] [-cellproperty cell1 […celln]] [-precision] 
[-refcount cell1 […celln]] [-topcell] [-topcells] [-format] 
[-tableoffsets [-cellname] [-textstring] [-propname] [-propstring] [-layername] [-xname]] 
[-strictmode] [-sproperty] [-undefcells] [-units] [-handle] [-cache directory]

总结

  1. layout peek的核心优势是无需加载整个版图文件到内存,就能快速提取GDS/OASIS的关键信息,大幅提升版图调试效率。
  2. fileName是该命令的唯一必选参数,其余均为可选参数,不同参数对应提取不同维度的版图信息。
  3. 日常使用可优先掌握-topcell、-cellcount、-bbox、-layers等高频参数,复杂需求可结合Tcl脚本将结果保存到文件中。
陕ICP备20000710号
本站已运行15年5月6天
发表了395篇文章 · 总计14万0千字
最后更新:2026-01-21
Built with Hugo
Theme Stack designed by Jimmy