4. 版图数据准备与输入输出
DFM 分析的质量,很大程度上取决于输入版图数据是否被正确、完整地读入,以及输出结果是否被准确、高效地解读。本节围绕 Calibre 在 DFM 流程中的数据入口与出口展开:输入侧处理 GDSII 与 OASIS 两种主流版图格式,并管理层次化数据;输出侧生成可查看、可定位、可统计的 DFM 结果。
一、输入格式:GDSII 与 OASIS 的差异与选择
GDSII 是历史最悠久、兼容性最好的版图交换格式,采用 16 位整数坐标记录几何,结构上由库(Library)、单元(Cell)、结构(Structure)和元素(Element)组成。它的局限在于:单个坐标值范围有限,大尺寸芯片或高精度坐标需要借助 UNITS 缩放;文件体积随版图复杂度线性膨胀,先进节点动辄数十 GB。
OASIS 是为解决上述问题而设计的后继格式,支持变长整数坐标、重复结构压缩、CBLOCK 压缩块以及更灵活的属性扩展。在相同版图下,OASIS 文件通常比 GDSII 小 5~20 倍,读取更快,且能保留更多元数据。Calibre 对两者均原生支持,实际项目中常以 OASIS 作为内部流转格式,以 GDSII 作为对外交付格式。
在 Calibre 中读入版图时,关键控制项包括:
LAYOUT PATH "chip_top.oas" # 输入版图文件
LAYOUT PRIMARY "chip_top" # 顶层单元名
LAYOUT SYSTEM OASIS # 或 GDSII
LAYOUT CASE YES # 大小写敏感
LAYOUT PRESERVE CELLS YES # 保留原始单元层次
其中 LAYOUT PRIMARY 必须与文件内真实顶层单元名一致,否则 Calibre 会报“找不到顶层单元”而终止。若版图含多个候选顶层,应显式指定,避免误选。
二、层次化数据管理
先进节点版图通常包含数万到数百万个单元实例,若在分析前全部打平(flatten),内存和运行时间都不可接受。Calibre 采用层次化处理:以单元为节点、以实例为边构建层次树,在共享单元上只计算一次,再按实例位置映射到全芯片。
层次化管理的核心操作有三类。第一是层次保留:通过 LAYOUT PRESERVE CELLS YES 保留原始层次,让 Calibre 自行决定展开深度。第二是选择性打平:对含参数化单元或特殊器件的局部层次,可用 FLATTEN CELL 指定打平,避免层次引用导致误判。第三是层次深度控制:通过 DFM HIERARCHY DEPTH 限制展开层数,在精度与资源之间取平衡。
需要特别注意的是,DFM 规则常涉及跨单元边界的图形关系(如邻接、包围、间距),若层次切分不当,可能漏检跨边界违规。因此,在正式跑 DFM 前,建议先用小规模测试单元验证层次设置是否正确。
三、结果输出格式与查看方式
Calibre DFM 的结果输出通常有三种形态,分别服务于不同场景。
RDB(Results Database)是 Calibre 原生结果库,记录每条违规的坐标、层号、规则名、严重等级等结构化信息。它体积小、查询快,配合 Calibre RVE(Results Viewing Environment)可交互式查看:在 RVE 中加载 RDB 与原始版图,点击某条违规即可高亮对应图形并跳转到版图位置。这是调试阶段最常用的方式。
ASCII/CSV 报告适合批量统计与归档。通过 DFM RESULTS FORMAT ASCII 或 CSV 输出,每行一条记录,字段包括规则名、坐标、层号、数量等。工程上常用 Python 脚本读取 CSV,按规则名聚合计数,生成趋势图或与上一版对比。
图形化标记层将违规图形以独立层(如 DFM_ERROR)叠加到版图上,可在 Virtuoso、KLayout 等工具中直接加载查看。这种方式最直观,适合设计评审和跨团队沟通。
四、实操要点与常见问题
在真实项目中,输入输出环节最容易出问题的几个点值得单独强调。
- 顶层单元名不匹配:OASIS 文件内顶层名可能与文件名不同,务必用版图工具确认后再填
LAYOUT PRIMARY。 - 单位不一致:GDSII 默认 1 μm = 1000 DBU,OASIS 可自定义。若 Calibre 读入后图形尺寸异常,优先检查
LAYOUT UNITS。 - 层次打平过度:全打平会导致内存爆炸,建议先用
DFM HIERARCHY DEPTH限制深度,再逐步调整。 - 结果坐标偏移:若 RDB 中的坐标与版图对不上,通常是读入时的原点或单位设置与输出时不一致,需统一参照系。
总结来说,版图数据准备与输入输出是 DFM 流程的“地基”:GDSII/OASIS 的选择影响读取效率,层次化管理决定资源占用,而结果输出格式则决定后续分析与沟通的便利性。三者环环相扣,任何一环设置不当,都会让后续的 DFM 分析事倍功半。