Featured image of post calibredrv一行命令让GDS规规矩矩重新做“人”

calibredrv一行命令让GDS规规矩矩重新做“人”

calibredrv 的layout filemerge 命令可以让GDS产生多种变化,如map layer, cell改名, 多个合并, 添加前后缀,创建reference等,实用无敌,仅需要一行命令就能让你的GDS数据按你的规矩重新做“人”。再也不用在 virtuoso 中导进导出了。

关于 Calibre DESIGNrev

Calibre DESIGNrev(常简称 calibredrv)是 Mentor(现在 Siemens EDA)旗下的版图查看与处理工具。它不只是个"gdsview",更是一把瑞士军刀:磁盘级文件合并、层映射、单元重命名、精度转换、OASIS压缩都不需要把数据load进内存。对于10GB以上的版图文件,这是唯一能保证不爆内存的批处理方式。


1. 层过滤:只取我需要的

# 排除指定层:把GND层、dummy层统统扔掉,生成轻量版GDS
calibredrv -a layout filemerge -in input.gds -out output.gds -exclude_layer [list 61.20 99.3 10...]
# 只保留指定层:只提取M1~M5 + Via + Contact,给后续工具加速
calibredrv -a layout filemerge -in input.gds -out output.gds -include_layer [list 61.20 99.3 ... ]

2. 层映射:一键改版图层次结构

# 层号重映射:把Foundry的层号映射到内部Flow的层号
# 格式: [list 原层.原datatype 目标层.目标datatype ...]
calibredrv -a layout filemerge -in input.gds -out output.gds -map_layer [list 61.20 61.1 61.55 61.1 99.3 100.3 ]

3. 多文件层过滤合并:IP拼接标准流程

# 场景: Memory GDS只取层1-50,Standard Cell GDS只取层51-100
# 支持通过文本文件指定层号,方便版本管理

calibredrv -a layout filemerge \
    -in [list -name layout1.oas -include_layer oas_layers.txt] \
    -in [list -name layout2.gds -include_layer gds_layers.txt] \
    -out merged.oas

4. 批量文件追加:拼接无数次迭代

# 场景: 把10次Place&Route的迭代结果按顺序拼在一起,用于对比
calibredrv -a layout filemerge -in gds1 -in gds2 -in gds3  ... -mode append -out output.gds

5. 单元名映射:解决IP重名冲突

先准备映射表 cell_map.txt

a1240 layout1_a1240 
a2311 layout1_a2311 
a1220 layout1_a1220 
a1620 layout1_a1620 
a1720 layout1_a1720
# 执行映射:把Memory中的单元统一加前缀,避免和STD CELL撞名
calibredrv -a layout filemerge -in gds1 -in gds2  -out output.gds -map_cell  cell_map.txt

6. 后缀改名:快速标识文件来源

# 场景: 给不同版本的Fill GDS加标记,一眼看出是哪个工具生成的
calibredrv -a layout filemerge -in [list -name input.gds -suffix _chiplayout ] -out output.gds

7. 版图拼接:创建新的Top Cell

这是最高频的用法——把Floorplan、Power、Fill、IP拼成最终版图:

calibredrv -a layout filemerge \
-in top.gds \
-in [list -name input1.gds -placecell [list -refcell gds1_top_or_children_cell_name -x 0 -y 0]] \
-in [list -name input2.gds -placecell [list -refcell gds2_top_or_children_cell_name -x 0 -y 0]] \
-in [list -name input3.gds -placecell [list -refcell gds3_top_or_children_cell_name -x 0 -y 0]] \
-out output.gds \
-createtop new_top

实战扩展示例

示例A:Layer Bump + 层过滤(工艺迁移必备)

# 把28nm的GDS bump到40nm层号,但只保留 metal & via
calibredrv -a layout filemerge \
  -in [list -name block_28nm.gds -layerbump 1000] \
  -include_layer [list 1001 1002 1003 1100 1200] \
  -out block_40nm_ready.gds

示例B:OASIS压缩 + Strict Mode控制

# 合并后输出严格模式OASIS,并启用CBLOCK压缩
calibredrv -a layout filemerge \
  -in design.gds -in fill.oas \
  -oasisout final.oas \
  -cblockmode 1 -strictmode 1

示例C:检测冲突模式(上线前必跑)

# 先检查哪些cell会冲突,再决定用append还是rename
calibredrv -a layout filemerge -in ip1.gds -in ip2.gds -mode reportconflictsonly

示例D:混合GDS/OASIS,自动转格式

# 输入GDS+OASIS混合,统一输出OASIS
calibredrv -a layout filemerge \
  -in core.gds \
  -in [list -name memory.oas -suffix _mem] \
  -oasisout top_merged.oas

完整参数速查

# 这是命令的完整签名,建议收藏
layout filemerge -in {layoutfile | directory | textfile | {-name layoutfile ...}} ... 
  {{-out output_file}|{-oasisout output_file}} 
  [-mode append|overwrite|rename|forcerename|reportconflictsonly]
  [-map_layer {{from_layer[.dt1] to_layer[.dt2]} ...}]
  [-layerbump bump_value]
  [-exclude_layer {l1[.dt] ...}]
  [-include_layer {l1[.dt] ...}]
  [-map_cell {cellname mapped_cellname} | filename]
  [-prefix prefix] [-suffix suffix]
  [-placecell [-refcell cell] [-x x] [-y y] [-mirror] [-angle] [-mag]]
  [-createtop cellname] [-topcell topcellname]
  [-smartdiff] [-reportconflicts] [-strictmode 0|1]
  [-precision value] [-integerScaling]
  [-tmp tmp_dir] [-cblockmode 0|1|auto]

碎碎念

这个命令最爽的地方是磁盘级处理,10GB的GDS合并内存占用不到100MB。我们Flow里用它做:

  1. Tapeout前拼接:TOP + STD + MEMORY + FILL + DECAP
  2. LVS准备:过滤掉dummy layer,减少运行时间
  3. IP整合:不同vendor的IP层号统一映射
  4. 版本对比-smartdiff模式快速定位改版差异

延伸阅读 https://chiplayout.net/search/?keyword=calibredrv

陕ICP备20000710号
本站已运行15年4月27天
发表了393篇文章 · 总计13万8千字
Built with Hugo
Theme Stack designed by Jimmy