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 数据流:输入格式 → 层次管理 → 结果输出 输入版图 GDSII 16位坐标 / 兼容广 OASIS 变长坐标 / 压缩高 层次化数据管理 保留层次 PRESERVE CELLS 选择性打平 FLATTEN CELL 层次深度控制 DFM HIERARCHY DEPTH Calibre DFM 引擎 规则检查 / 图形运算 层次化并行处理 结果标记生成 违规 / 热点 / 评分 DFM 结果输出格式与查看方式 RDB / DFM 数据库 Calibre 原生结果库 含坐标、层号、规则名 可用 RVE 交互查看 适合定位与调试 ASCII / CSV 报告 规则名、数量、坐标 便于脚本统计与归档 可导入 Excel / Python 适合汇总与趋势分析 图形化标记层 违规图形叠加在版图上 按规则/严重度着色 可在版图工具中加载 适合直观判读与评审 输入格式决定读取效率,层次管理决定资源占用,输出格式决定结果可用性

三、结果输出格式与查看方式

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 流程开始前,先用一个包含已知违规的小测试单元跑通“输入 → 层次处理 → 输出 → RVE 查看”全链路,确认坐标、层号、规则名均正确后,再对全芯片执行。这一步通常只需几分钟,却能避免数小时的全芯片返工。

总结来说,版图数据准备与输入输出是 DFM 流程的“地基”:GDSII/OASIS 的选择影响读取效率,层次化管理决定资源占用,而结果输出格式则决定后续分析与沟通的便利性。三者环环相扣,任何一环设置不当,都会让后续的 DFM 分析事倍功半。