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。
四、文本与属性保留
版图中的文本(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设置有问题。
最后强调一个容易被忽视的细节:数据版本冻结。签核用的GDS/OASIS必须与设计端最终版图完全一致,任何在Calibre运行期间的版图改动都会导致签核结果失效。建议在导出后计算文件的MD5或SHA256,并记录在签核报告中。如果后续需要重新跑Calibre,先校验哈希值是否一致,避免“用旧数据跑新规则”的低级错误。
DRC MAXIMUM DISTANCE或LVS MAXIMUM DISTANCE),overlap至少取该值的2倍。如果规则中有跨窗口的密度检查(density check),还需要额外考虑密度计算窗口的尺寸。总结来说,版图数据准备的核心是“一致性”:格式与工具一致、层号与规则一致、单位与精度一致、切割与合并逻辑一致。把这四个一致性做扎实,Calibre签核的输入质量就有了保障,后续的DRC/LVS结果才值得信赖。