1. SVRF语言与Calibre物理验证工具的关系
在芯片设计领域,物理验证是确保设计符合制造规则的关键环节。Calibre作为业界领先的物理验证工具套件,其核心能力很大程度上依赖于SVRF(Standard Verification Rule Format)语言的规则定义。这套专用语言最早由Mentor Graphics(现Siemens EDA)开发,专门用于描述芯片设计需要遵守的物理设计规则。
SVRF不是通用编程语言,而是针对半导体制造工艺特点设计的领域特定语言(DSL)。它通过声明式的语法结构,让验证工程师能够精确描述几何图形之间的空间关系约束。例如,定义晶体管栅极与有源区的最小重叠距离,或者金属线之间的最小间距要求。这些规则直接对应晶圆厂提供的设计规则手册(DRM)中的条款。
提示:虽然Calibre也支持较新的TVF(Tcl Verification Format)格式,但SVRF仍然是目前绝大多数工艺厂PDK(工艺设计套件)中提供的标准规则格式,掌握SVRF对物理验证工程师而言是必备技能。
2. SVRF规则文件的基本结构解析
一个完整的SVRF规则文件通常包含多个逻辑部分,每个部分通过特定的命令关键字进行划分。以下是典型的结构组成:
2.1 文件头声明
规则文件通常以版本声明开头,例如:
code复制LAYOUT SYSTEM GDSII
LAYOUT PATH "./gds/design.gds"
LAYOUT PRIMARY "top_cell"
这部分定义了输入文件格式(如GDSII或OASIS)、文件路径以及顶层单元名称。值得注意的是,路径声明中的反斜杠在Unix/Linux系统下需要特别注意转义问题。
2.2 层次映射定义
由于不同EDA工具对图层编号的处理方式可能不同,SVRF提供了层次映射功能:
code复制LAYER MAP
1 0 -> METAL1
2 0 -> VIA1
END MAP
这个片段将GDSII中的层号/数据类型对(1,0)映射为逻辑层名METAL1。实际项目中,这部分内容通常直接来自PDK提供的模板。
2.3 设计规则检查(DRC)规则
这是文件的核心部分,包含各种几何检查命令。以金属间距检查为例:
code复制DRC CHECK METAL1_SPACING
INT METAL1 < 0.1 ABUT<90 SINGULAR REGION
ENCLOSE METAL1 BY METAL2 < 0.2
END CHECK
第一条规则检查METAL1层内部间距是否小于0.1微米,第二条检查METAL2包围METAL1时的最小包边要求。ABUT<90和SINGULAR等修饰词用于定义特殊情况的处理方式。
3. SVRF语言的语法特点与调试技巧
3.1 基于关键字的命令结构
SVRF采用类似自然语言的命令结构,主要包含:
- 动作命令(CHECK、MEASURE等)
- 几何操作符(AND、OR、NOT等)
- 条件修饰符(INSIDE、OUTSIDE等)
例如检查晶体管有源区被栅极完全覆盖的规则:
code复制DRC CHECK ACT_GATE_COV
NOT GATE OUTSIDE ACTIVE
END CHECK
3.2 常见调试方法
当规则文件执行报错时,可以采取以下排查步骤:
- 使用Calibre的交互模式逐行检查:
code复制calibre -drc -hier -interactive rule_file.svrf
- 关注错误信息中的行号定位问题源,典型的语法错误包括:
- 缺少END语句匹配
- 图层名称拼写错误
- 参数类型不匹配
- 对于复杂规则,可以分阶段验证:
- 先注释掉大部分规则,逐步放开检查
- 使用PRINT命令输出中间图层辅助调试
4. SVRF在先进工艺节点下的特殊应用
随着工艺节点不断缩小,SVRF也需要处理更复杂的验证场景:
4.1 多重曝光相关规则
在28nm及以下节点,光刻技术需要使用多重曝光,相应产生了新的检查需求:
code复制DRC CHECK SADP_CUT
ENCLOSE CUT_MASK BY SADP_TEMPLATE >= 0.05
SPACING CUT_MASK TO SADP_LINE >= 0.07
END CHECK
这类规则确保切割掩模与自对准双重成像(SADP)模板的正确配合。
4.2 基于模型的检查
传统基于规则的检查(RBC)逐渐向模型基础检查(MBC)演进,SVRF也支持调用外部模型:
code复制DRC MODEL CHECK "litho_model.cal"
MODEL PARAMETERS {
defocus = 0.15
dose = 30
}
CHECK VIA1_RISK = "via_risk.cal" THRESHOLD 0.7
END CHECK
4.3 机器学习增强检查
最新版本的Calibre开始集成机器学习能力,SVRF可以通过特定接口调用训练好的模型:
code复制ML MODEL "hotspot_detect.mlm"
DRC ML CHECK CRITICAL_AREA
APPLY MODEL TO METAL1 WITH PARAMS {threshold=0.95}
END CHECK
5. SVRF规则开发的最佳实践
根据我在多个工艺节点下的规则开发经验,总结出以下实用建议:
- 模块化组织规则文件
- 将不同模块的规则分开存放(如frontend.svrf、backend.svrf)
- 使用INCLUDE命令整合:
code复制INCLUDE "common_defs.svrf"
INCLUDE "metal_rules.svrf"
- 完善的注释系统
每个重要规则段应包含:
- 对应的DRM条款编号
- 规则目的说明
- 最后修改记录
例如:
code复制// DRM 5.3.1: Minimum metal spacing
// Last modified: 2023-04-15 by John
DRC CHECK METAL1_SPACE
SPACING METAL1 < 0.1
END CHECK
- 版本控制集成
- 将SVRF文件纳入Git等版本控制系统
- 为不同工艺版本创建分支
- 每次PDK更新时进行diff检查
- 性能优化技巧
- 对大型设计使用HIERARCHICAL处理
- 适当使用FAST模式进行初步检查
- 并行化处理选项设置:
code复制DISTRIBUTED DRC 4 // 使用4个CPU核心
- 单元测试方法
建立测试用例库,包含:
- 故意违反规则的测试结构
- 边界条件测试案例
- 复杂交互场景模拟
我在实际项目中发现,一个完善的测试套件可以节省约40%的规则调试时间。建议为每个重要规则至少设计3个测试案例:一个明显违规、一个明显合规、一个边界情况。
