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.oas4. 批量文件追加:拼接无数次迭代
# 场景: 把10次Place&Route的迭代结果按顺序拼在一起,用于对比
calibredrv -a layout filemerge -in gds1 -in gds2 -in gds3 ... -mode append -out output.gds5. 单元名映射:解决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.txt6. 后缀改名:快速标识文件来源
# 场景: 给不同版本的Fill GDS加标记,一眼看出是哪个工具生成的
calibredrv -a layout filemerge -in [list -name input.gds -suffix _chiplayout ] -out output.gds7. 版图拼接:创建新的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里用它做:
- Tapeout前拼接:TOP + STD + MEMORY + FILL + DECAP
- LVS准备:过滤掉dummy layer,减少运行时间
- IP整合:不同vendor的IP层号统一映射
- 版本对比:
-smartdiff模式快速定位改版差异
