4. 版图数据准备与GDS/OASIS处理

在Calibre流片签核流程中,版图数据准备是物理验证的起点。无论后续是跑DRC、LVS还是天线检查,Calibre读到的版图数据质量直接决定了签核结果的可信度。本节聚焦GDSII与OASIS两种主流版图格式在导入导出、层次化处理、文本与属性保留,以及数据切割与合并中的关键工程问题。

一、GDSII与OASIS的格式差异与选择

GDSII是1980年代确立的二进制流格式,结构简单、工具兼容性极好,但存在两个硬伤:单文件不能超过2GB(受32位记录长度限制),且不支持压缩。OASIS(Open Artwork System Interchange Standard)是SEMI P39标准,采用变长整数编码、支持重复结构和CBLOCK压缩,同一版图通常只有GDSII的1/5到1/10大小,且没有2GB上限。先进工艺(如7nm及以下)的全芯片版图动辄数十GB,OASIS几乎是唯一可行的交付格式。

选择策略上:如果代工厂(Foundry)的Calibre规则文件明确要求GDSII,且版图小于1.5GB,用GDSII最省事;否则优先OASIS。需要注意的是,OASIS的--compression选项(如--compression 9)会显著影响读写速度,签核阶段建议用默认压缩级别,避免Calibre解析耗时过长。

二、数据导入导出:从设计到Calibre

Calibre本身不产生版图,它读取的是设计端导出的GDS/OASIS。典型链路是:版图工具(Virtuoso、ICC2、Innovus)→ 导出GDS/OASIS → Calibre读取。导出时最容易出问题的是层号映射(Layer Map)。例如Virtuoso中M1 drawing可能映射为GDS的layer 31 datatype 0,而Calibre规则文件里写的是layer MAP 31 0。如果映射表不一致,Calibre会报“layer not found”或更隐蔽地读到空图形。

实操中建议在导出后立即用calibre -drc -hier配合一个极简的layer check规则跑一遍,确认所有预期层都能被识别。导出命令示例(以Innovus为例):

write_stream -format oasis -output ./signoff/chip_top.oas \
  -map_file ./tech/lefdef2oas.map \
  -unit 1000 -mode ALL

其中-unit 1000表示1μm对应1000个数据库单位(即1nm精度),这是先进工艺的常见约定。如果设计端用2000,Calibre端用1000,所有图形会缩小一半,DRC结果完全错误。

三、层次化处理:FLAT与HIER的取舍

Calibre支持两种读取模式:FLAT(展平)和HIER(层次化)。FLAT把所有层次打散成多边形,内存占用极大,但规则检查最直接;HIER保留cell层次,Calibre会按cell做检查并复用结果,内存和运行时间通常能降低一个数量级。

对于全芯片DRC,强烈建议用HIER模式。但HIER有一个前提:版图的层次结构必须“干净”——不能有跨cell的图形重叠导致Calibre无法正确切分。如果设计中有大量cell被flatten过,或者存在array与cell混用,HIER可能报“hierarchy conflict”。此时可以用Calibre的LAYOUT HIERARCHY选项配合DFM命令做层次修复,或者对冲突区域局部FLAT。

判断是否该用HIER的简单方法:如果版图的cell实例数超过10万,且没有明显的跨cell重叠,HIER几乎总是更优。反之,如果设计是“平铺式”的,FLAT反而更稳定。

四、文本与属性保留

版图中的文本(TEXT)和属性(PROPERTY)在签核中常被忽略,但它们对LVS和ERC至关重要。例如,VDD、VSS的文本标签用于LVS的电源网络识别;pin属性用于确认端口连接。GDSII的TEXT记录包含层号、文本类型、坐标和字符串;OASIS则用TEXT和PLACEMENT组合表达。

导出时务必确认-preserve_text或等效选项已开启。Calibre读取时,用LAYOUT TEXT命令指定哪些层上的文本需要被识别。例如:

LAYOUT TEXT PRIMARY "VDD" "VSS"

如果文本丢失,LVS会报“no power net found”,而DRC可能完全正常——这种“单侧通过”的假象最容易误导签核判断。

五、数据切割与合并策略

全芯片版图往往超过单机内存上限,需要切割(partition)后并行跑Calibre,最后合并结果。切割有两种粒度:按坐标窗口切割和按层次切割。坐标窗口切割简单,但会切断跨窗口的图形,导致边界处DRC误报;层次切割保留cell完整性,但需要设计端配合做层次划分。

工程上常用“重叠窗口”策略:每个窗口向外扩展overlap距离(通常取规则中最大检查距离的2倍,如5μm),Calibre在窗口内检查后,只保留窗口核心区域的结果,边界重叠部分由相邻窗口覆盖。合并时用calibre -merge或DFM MERGE命令,按坐标去重。

合并后必须做一次结果一致性检查:对比切割前的小规模全图结果与合并结果,确认没有漏报或重复报。如果差异超过0.1%,说明切割窗口或overlap设置有问题。

版图数据准备与Calibre签核数据流 设计端版图 Virtuoso / ICC2 / Innovus 导出 GDS / OASIS Layer Map · Unit · Text Compression · Preserve Calibre 读取 FLAT / HIER 模式 LAYOUT TEXT / PROPERTY 数据切割与合并策略 全芯片版图 超出单机内存 需切割并行 窗口 W1 核心区 + overlap 5μm 扩展 窗口 W2 核心区 + overlap 5μm 扩展 窗口 W3 核心区 + overlap 5μm 扩展 合并 去重 关键检查点(签核前必查) Layer Map 一致性 层号/数据类型匹配 Unit 精度统一 Text/Property 保留 VDD/VSS 标签 Pin 属性完整 切割边界验证 Overlap ≥ 2×检查距离 合并后差异 < 0.1% 层次冲突检查 HIER 模式无冲突 Array/Cell 无重叠

最后强调一个容易被忽视的细节:数据版本冻结。签核用的GDS/OASIS必须与设计端最终版图完全一致,任何在Calibre运行期间的版图改动都会导致签核结果失效。建议在导出后计算文件的MD5或SHA256,并记录在签核报告中。如果后续需要重新跑Calibre,先校验哈希值是否一致,避免“用旧数据跑新规则”的低级错误。

切割窗口的overlap距离不能凭经验随意设定。必须查阅当前工艺规则文件中最大检查距离(如DRC MAXIMUM DISTANCE或LVS MAXIMUM DISTANCE),overlap至少取该值的2倍。如果规则中有跨窗口的密度检查(density check),还需要额外考虑密度计算窗口的尺寸。

总结来说,版图数据准备的核心是“一致性”:格式与工具一致、层号与规则一致、单位与精度一致、切割与合并逻辑一致。把这四个一致性做扎实,Calibre签核的输入质量就有了保障,后续的DRC/LVS结果才值得信赖。