4. DRC工具与流程:主流DRC工具在28nm密度检查中的配置与运行流程

在28nm工艺节点下,金属层密度违例的检查与修复高度依赖EDA工具的精确配置。本章聚焦于两大主流物理验证工具——Calibre (Mentor/Siemens) 与 ICV (Synopsys),详细讲解它们在密度检查中的运行流程、关键配置参数以及常见差异。

4.1 工具选择与核心差异

虽然Calibre与ICV在DRC引擎上均支持“图形运算+布尔逻辑”的密度检查,但在规则卡格式、运行脚本语法、密度梯度检查算法上存在显著差异。下表总结了在28nm密度检查场景下的关键对比:

对比维度 Calibre (Siemens) ICV (Synopsys)
规则卡格式 SVRF (Standard Verification Rule Format) TVF (Tcl Verification Format)
密度检查命令 DENSITY / DFM DENSITY check_density / density_map
窗口滑动方式 固定步长 (step) 或重叠窗口 (overlap) 支持自适应步长与多窗口并行
密度梯度检查 通过 DENSITY_GRADIENT 语句实现 通过 check_density_gradient 命令实现
填充单元识别 需手动定义 FILL_LAYER 排除列表 自动识别标准单元库中的填充单元
运行效率 (28nm) 单核运算快,多核扩展性中等 多核并行效率高,内存优化较好
实战提示:在28nm节点下,多数代工厂(如TSMC、SMIC)同时提供Calibre和ICV两套规则卡。建议团队根据内部IT基础设施选择主工具,但必须确保两套规则卡均通过一致性验证(Golden Sign-off)。

4.2 Calibre密度检查配置与运行流程

Calibre的密度检查通常集成在DRC运行脚本中。以下是一个典型的28nm金属层密度检查配置流程:

  1. 加载GDS/OASIS版图数据:通过 LAYOUT PATH 指定输入文件。
  2. 定义检查窗口:使用 DENSITY WINDOW 指定窗口尺寸(如 100μm × 100μm)和步长(如 50μm)。
  3. 设置密度上下限:根据代工厂规则卡,设置最小密度(如 20%)和最大密度(如 80%)。
  4. 执行密度计算:调用 DENSITY 命令生成密度热力图。
  5. 输出违例标记:将违例区域输出为 MARKER 层,用于后续修复。
// Calibre SVRF 密度检查示例片段
LAYOUT PATH "top.gds"
LAYOUT PRIMARY "top"
DRC RESULTS DATABASE "density_results.db"

// 定义检查窗口:100um x 100um,步长50um
DENSITY WINDOW 100 100 STEP 50

// 对M1层执行密度检查,下限20%,上限80%
DENSITY M1 20 80
{
  @ M1密度违例 (低于20%或高于80%)
  COPY M1
}

// 对M2层执行密度梯度检查
DENSITY_GRADIENT M2 10 0.5
{
  @ M2密度梯度违例 (10um窗口内密度变化超过50%)
  COPY M2
}
常见陷阱:Calibre默认将填充单元(如FILL1、FILL2)视为普通金属图形参与密度计算。必须在规则卡中显式使用 EXCLUDE LAYER 或 DFM FILL 语句将填充层排除,否则会导致“假违例”。

4.3 ICV密度检查配置与运行流程

ICV使用Tcl语法,密度检查通常通过 check_density 命令实现。其流程更强调模块化与并行化:

  1. 设置设计数据:通过 set_design 命令加载版图。
  2. 定义密度规则:使用 define_density_rule 指定窗口、步长、密度阈值。
  3. 运行检查:调用 check_density 执行计算。
  4. 生成报告:输出违例坐标、密度值及热力图数据。
  5. 密度梯度检查:使用 check_density_gradient 检查局部密度突变。
# ICV TVF 密度检查示例片段
set_design -gds top.gds -top_cell top

# 定义M1层密度规则:窗口100um,步长50um,密度范围20%-80%
define_density_rule -name M1_DENSITY \
  -layer M1 \
  -window_size {100 100} \
  -step_size {50 50} \
  -density_min 20 \
  -density_max 80

# 执行密度检查
check_density -rule M1_DENSITY \
  -output density_violations_m1 \
  -marker_layer M1_DENSITY_MARKER

# 定义并执行密度梯度检查
define_density_gradient_rule -name M2_GRADIENT \
  -layer M2 \
  -window_size {10 10} \
  -gradient_threshold 0.5

check_density_gradient -rule M2_GRADIENT \
  -output gradient_violations_m2
效率对比:在相同28nm测试用例(约500万门规模)下,ICV的多核并行密度检查比Calibre单核模式快约2.5倍,但Calibre通过 -hyper 模式启用多线程后差距缩小至1.2倍以内。

4.4 密度检查运行流程总览

下图展示了从版图输入到违例输出的完整密度检查流程,适用于Calibre与ICV两种工具:

28nm金属层密度检查运行流程 密度检查运行流程(Calibre / ICV 通用) 输入版图 (GDS/OASIS) 加载DRC规则卡 (SVRF/TVF) 配置密度参数 窗口尺寸 / 步长 / 密度上下限 执行密度计算 滑动窗口 / 密度梯度 / 并行运算 违例判定与标记输出 违例报告 / 热力图 关键配置项 • 窗口尺寸:50~200μm • 步长:窗口尺寸的50%~100% • 密度阈值:20%~80% (典型) • 梯度阈值:0.3~0.5 (变化率)

4.5 密度检查的关键配置参数

无论使用哪种工具,以下参数直接决定检查结果的准确性与运行时间:

  • 窗口尺寸 (Window Size):28nm工艺下,代工厂通常要求100μm × 100μm的方形窗口。窗口过小会导致局部密度波动被放大,过大则可能掩盖局部违例。
  • 步长 (Step Size):决定窗口滑动的重叠率。步长=窗口尺寸时无重叠(最快),步长=窗口尺寸/2时重叠50%(最准确)。建议使用50%重叠以捕获边界违例。
  • 密度上下限 (Density Min/Max):典型值为20%~80%,但不同金属层(如顶层厚金属)可能有特殊要求(如M1: 25%~75%,M9: 10%~90%)。
  • 密度梯度阈值 (Gradient Threshold):用于检测局部密度突变,通常设置为0.3~0.5(即30%~50%的变化率)。
实战建议:在28nm项目初期,建议先使用“粗粒度”参数(大窗口、大步长)快速扫描全局违例区域,再对高违例区域使用“细粒度”参数(小窗口、小步长)进行精确检查。这种分层策略可将总运行时间缩短40%~60%。

4.6 工具运行脚本模板对比

以下表格展示了Calibre与ICV在密度检查各步骤中的命令对应关系,便于工程师快速切换工具:

功能步骤 Calibre (SVRF) ICV (TVF)
加载版图 LAYOUT PATH "file.gds" set_design -gds file.gds
定义窗口 DENSITY WINDOW 100 100 STEP 50 -window_size {100 100} -step_size {50 50}
设置密度阈值 DENSITY M1 20 80 -density_min 20 -density_max 80
执行检查 内嵌在DRC规则卡中 check_density -rule M1_DENSITY
输出违例 COPY M1 到标记层 -marker_layer M1_MARKER
梯度检查 DENSITY_GRADIENT M2 10 0.5 check_density_gradient -gradient_threshold 0.5
版本兼容性提醒:28nm工艺的密度规则卡通常针对特定工具版本开发(如Calibre 2019+、ICV 2020+)。使用过旧版本可能导致密度计算算法不匹配,产生大量假违例或漏报。建议在项目启动前确认工具版本与规则卡版本的一致性。