4. DRC结果文件解析

DRC(Design Rule Check)运行完成后,EDA工具会输出包含所有违规信息的结果文件。正确解析这些文件是定位和修复物理验证问题的前提。本章将深入剖析DRC结果文件的三种常见格式、基本结构、错误标记方式以及坐标系统。

4.1 DRC结果文件格式

根据工具和用户需求的不同,DRC结果文件主要分为以下三种格式:

格式类型 扩展名示例 特点 适用场景
ASCII文本 .drc, .txt, .log 人类可读,体积较大,包含详细的错误描述、坐标和层次信息 调试、脚本解析、人工审查
二进制 .db, .bin, .drcb 机器可读,体积小,解析速度快,通常包含索引结构 大规模设计、工具间数据交换、GUI加载
GDSII .gds, .gds2 图形化标记,将错误标记为多边形或路径,可直接在版图编辑器中叠加显示 可视化定位、版图修复、最终签核
关键提示: 在大型SoC项目中,ASCII格式的DRC结果文件可能达到数GB。建议优先使用二进制格式进行自动化处理,仅在需要人工详细分析时导出ASCII摘要。

4.2 结果文件的基本结构

无论采用何种格式,一个完整的DRC结果文件通常遵循以下分层结构:

  1. 文件头(Header):包含工具名称、版本、运行日期、设计名称、工艺文件版本等元信息。
  2. 规则组(Rule Group):按规则类别(如金属间距、阱密度、天线效应)组织的错误集合。
  3. 违规条目(Violation Entry):每个具体的DRC错误,包含规则名称、违规类型、严重等级。
  4. 几何描述(Geometry Description):描述违规形状的坐标、层次、多边形顶点列表。
  5. 文件尾(Footer):汇总统计信息,如总错误数、各规则错误数、运行时间等。
解析技巧: 在编写自动化脚本解析ASCII结果时,建议先定位“Violation”或“Error”关键字,然后按规则名称分组提取坐标信息,避免逐行扫描整个文件。

4.3 错误标记与坐标系统

DRC工具在标记错误时,会使用特定的标记层(Marker Layer)和坐标系统来精确定位违规位置。

4.3.1 错误标记方式

常见的错误标记方式包括:

  • 多边形标记(Polygon Marker):用实心或空心多边形直接勾勒出违规的几何区域,适用于面积类规则(如最小面积、密度)。
  • 边缘标记(Edge Marker):用线段或路径标记违规的边或拐角,适用于间距类规则(如最小间距、包围)。
  • 点标记(Point Marker):用一个坐标点指示违规位置,通常配合文字描述,适用于天线效应、ERC类规则。
  • 层次化标记(Hierarchical Marker):在顶层标记违规,同时保留违规所在子模块的引用路径。

4.3.2 坐标系统

DRC结果文件中的坐标系统通常与版图数据库一致,遵循以下规范:

坐标属性 说明 示例
单位 通常为纳米(nm)或微米(μm),取决于工艺数据库单位 1 μm = 1000 nm
原点 芯片左下角为 (0, 0),坐标值随芯片尺寸增大而增大 芯片右上角 (5000, 5000)
精度 整数坐标,最小分辨率为数据库网格(如 1 nm 或 0.5 nm) 坐标 (12345, 67890)
层次偏移 子模块坐标相对于顶层原点的偏移量,用于层次化解析 偏移 (100, 200)
常见陷阱: 不同EDA工具(如Calibre、ICV、Assura)对坐标原点的定义可能不同。有些工具将芯片中心定义为 (0,0),有些则使用左下角。在跨工具流转时,务必确认坐标偏移量,否则会导致错误定位偏差。

4.4 DRC结果文件结构示意图

下图展示了一个典型的ASCII格式DRC结果文件的内部结构,以及错误标记与坐标系统的对应关系:

DRC结果文件结构与坐标系统 DRC结果文件结构与坐标系统 文件结构 文件头 (Header) 规则组 (Rule Group) 违规条目 (Violation Entry) 几何描述 (Geometry) 文件尾 (Footer) 错误标记与坐标 多边形标记 边缘标记 点标记 (x,y) X Y (0,0) 坐标单位:纳米 (nm) 精度:1 nm 网格 原点:芯片左下角 几何描述包含坐标

4.5 ASCII格式示例解析

以下是一个典型的ASCII格式DRC结果文件片段,展示了规则名称、坐标和错误标记的对应关系:

// DRC 结果文件示例 (Calibre .drc 格式)
// 工具: Calibre v2023.3
// 设计: top_chip
// 工艺: 7nm_tech

RULE: M1_M2_VIA_ENCLOSURE (VIA1)
  VIOLATION: 1
    LAYER: M1
    COORDINATES: (12345, 67890) (12400, 67950)
    MARKER: POLYGON
    DESCRIPTION: M1 enclosure of VIA1 is less than minimum 0.02um

  VIOLATION: 2
    LAYER: M2
    COORDINATES: (23456, 78901)
    MARKER: EDGE
    DESCRIPTION: M2 edge to VIA1 edge spacing violation

RULE: METAL1_SPACING
  VIOLATION: 3
    LAYER: M1
    COORDINATES: (34567, 89012) (34600, 89100)
    MARKER: POLYGON
    DESCRIPTION: M1 to M1 spacing 0.015um, required 0.020um

// 统计信息
TOTAL VIOLATIONS: 3
RUNTIME: 125.3 seconds
解析要点: 上述示例中,每个违规条目都包含了规则名称、层次、坐标和标记类型。在自动化脚本中,可以通过正则表达式提取“COORDINATES”后的数值对,并结合“MARKER”类型决定如何生成标记图形。

4.6 二进制与GDS格式的差异

与ASCII格式相比,二进制和GDS格式在存储和解析上有显著差异:

特性 ASCII格式 二进制格式 GDS格式
可读性 高(文本编辑器可打开) 低(需专用工具解析) 低(需版图工具打开)
文件大小 大(冗余信息多) 小(紧凑存储) 中等(包含图形数据)
解析速度 慢(逐行解析) 快(随机访问) 中等(需解析GDS记录)
坐标精度 整数或浮点数 整数(数据库单位) 整数(数据库单位)
错误标记 文本描述+坐标 二进制结构+索引 图形多边形+层次

4.7 坐标系统转换示例

在层次化设计中,子模块的坐标需要经过偏移转换才能映射到顶层坐标。以下是一个转换示例:

// 子模块实例化信息
INSTANCE: u_core
  ORIGIN: (1000, 2000)  // 子模块在顶层中的左下角坐标

// 子模块内部的DRC错误坐标(相对于子模块原点)
LOCAL_COORD: (500, 300)

// 转换为顶层坐标
TOP_COORD_X = 1000 + 500 = 1500
TOP_COORD_Y = 2000 + 300 = 2300
注意: 如果子模块存在旋转(Rotation)或镜像(Mirror)操作,坐标转换还需要考虑变换矩阵。例如,旋转90度后,局部坐标 (x, y) 在顶层中变为 (y, -x) 再叠加偏移。在解析层次化DRC结果时,务必检查实例的变换属性。

4.8 本章小结

DRC结果文件的解析是物理验证流程中的关键环节。通过理解ASCII、二进制和GDS三种格式的差异,掌握文件的基本结构(文件头、规则组、违规条目、几何描述、文件尾),以及熟悉错误标记方式(多边形、边缘、点标记)和坐标系统(单位、原点、层次偏移),工程师可以高效地定位和修复设计规则违规。在实际项目中,建议结合自动化脚本和版图工具,实现从结果解析到错误修复的闭环流程。