2. 版图数据准备与GDS/OASIS处理
签核工具(Quantus、Pegasus、PVS、Voltus、Tempus 等)并不直接读取 Innovus 的物理设计数据库,而是消费标准版图交换格式。因此,从 Encounter/Innovus 到签核工具之间,存在一条必须被显式管理的“数据准备链”:导出什么格式、保留多少层次、标签如何携带、器件如何被识别、填充与 dummy 如何处理、多份数据如何合并与压缩。这一节围绕这条链展开,重点讲清楚每一步的输入、操作与判据。
一、导出格式的选择:GDSII 还是 OASIS
Innovus 通过 streamOut 命令导出流片数据。GDSII 是事实标准,兼容性最好,但文件体积大、层次记录冗余;OASIS 采用压缩记录与重复结构引用,同一设计通常可缩小到 GDSII 的 1/5~1/20,且支持 64 位坐标与更大的 cell 数量,适合大规模 SoC 的签核流转。选择原则是:下游工具与 foundry 明确接受 OASIS 时优先用 OASIS;需要与第三方 IP 或旧流程交换时退回 GDSII。两者可通过 Cadence 的 strmout/strmin 或 gds2oasis/oasis2gds 互转,但每次转换都要核对层次与标签是否完整。
一个典型的导出命令如下,注意 -mapFile 决定 layer/datatype 映射,-outputMacros 决定宏单元是否单独成文件:
streamOut ./out/chip.gds \
-mapFile ./tech/lef2gds.map \
-libName chip_top \
-structureName chip_top \
-merge { ./macro/*.gds } \
-uniquifyCellNames \
-outputMacros \
-mode ALL
其中 -merge 把宏单元、IP、IO 的 GDS 合并进顶层;-uniquifyCellNames 避免不同来源的同名 cell 冲突;-mode ALL 表示导出全部层次。若只导出顶层展平结果,可用 -flatten,但会丢失层次信息,签核阶段一般不推荐。
二、层次化结构与文本标签
签核工具需要层次信息来做 LVS 比对、寄生提取的层次化复用以及 ECO 定位。导出时应保持与设计一致的层次树,避免过早展平。文本标签(TEXT)是连接版图与网表的关键:pin 标签、net 标签、device 标签必须落在正确的 layer/datatype 上,否则 LVS 会报“未识别端口”或“器件无对应”。常见做法是在 map 文件中把 MET1/TEXT、MET1/PIN、POLY/TEXT 分别映射到 foundry 规定的层号,并在 Innovus 中用 addText 或 editPin 生成标签。
标签的坐标参照系必须统一:通常以版图原点 (0,0) 为基准,标签锚点落在 pin 形状中心或指定边上。若导出时发生坐标平移或镜像,标签会整体偏移,导致 LVS 端口错位。因此导出后应做一次“标签层可视化检查”,确认标签与 pin 图形重合。
三、器件识别层与金属填充/dummy
器件识别层(device recognition layer,如 OD、POLY、NWELL、RPO 等)是 LVS 与寄生提取判断器件类型和边界的依据。导出时必须保证这些层完整、无缺失,且与 foundry 的 layer map 一致。若某些识别层在 Innovus 中由 addFiller 或 addWellTap 生成,需确认它们已被写入 GDS。
金属填充(metal fill)和 dummy 图形用于满足 CMP 密度要求,但它们会显著增加寄生电容,影响签核精度。处理策略分两种:签核前保留填充并让提取工具识别填充层(Quantus 支持 fill 层建模),或签核前临时删除填充、签核后再加回。前者更真实,后者更快。无论哪种,都要在导出时用 -skipFill 或 layer 过滤明确控制,避免填充层被误当作信号层参与提取。
四、数据合并、层次化压缩与格式转换实战
实际项目中,顶层 GDS 往往由多个来源拼合:数字 P&R 结果、模拟 IP、SRAM、IO ring、PLL 等。合并时最容易出问题的是 cell 名冲突和 layer 映射不一致。推荐流程是:先对每个来源单独做 strmin 回读检查,确认 layer 与标签正确;再用 streamOut -merge 或独立的 merge 工具合并;合并后用 strmin 回读顶层,统计 cell 数量与层次深度,确认没有意外展平或重复。
层次化压缩(hierarchical compression)用于减小文件体积并加速签核。OASIS 的 CBLOCK、PLACEMENT 重复引用、XYRELATIVE 等机制可显著压缩。Cadence 的 gds2oasis 支持 -compression 级别设置,级别越高压缩越强但转换时间越长。压缩后必须回读验证:用 oasis2gds 转回 GDS,再与原始 GDS 做 XOR 比对,确认图形完全一致。若 XOR 结果非空,说明压缩过程中丢失或改变了图形,必须回退。
strmin 回读并统计 cell 数与层次深度;② 可视化检查标签层与器件识别层;③ 对 OASIS 做一次 GDS 回读 XOR 比对。这三步能把绝大多数数据准备问题挡在签核之前。
-flatten,层次信息丢失,寄生提取无法复用;④ fill 层未单独映射,被提取工具当作信号层,寄生电容偏大。
最后,格式转换不是单向的。签核工具可能输出 OASIS 格式的修复结果,需要再转回 GDS 给 P&R 工具做 ECO。因此建议在项目目录中保留一份“黄金 GDS”作为基准,所有转换都从它出发,并在每次转换后做回读比对。这样即使中间环节出错,也能快速定位是导出、合并还是压缩阶段引入的问题。