1. 课程导入与Calibre在IC设计流中的定位
在数字与模拟混合的芯片研发链条中,前端设计完成RTL综合、布局布线之后,版图数据(GDSII/OASIS)并不等于可以直接送交晶圆厂。真正决定这颗芯片能否被制造、良率是否可控、性能是否达标的关键环节,是物理验证(Physical Verification)。而在这个环节里,Calibre 几乎是业界事实上的标准工具套件。本课程要解决的,不只是"会用 Calibre 跑一条命令",而是理解它在整个后端平台中扮演什么角色、与哪些系统交互、如何被集成进自动化流程。
Calibre 工具套件到底包含什么
很多初学者把 Calibre 等同于"跑 DRC 的软件",这是不完整的。Calibre 是一组围绕版图数据检查与签核(sign-off)构建的工具族,常见成员包括:
- Calibre nmDRC:设计规则检查,验证版图是否满足晶圆厂工艺规则,如最小线宽、间距、包围、密度等。
- Calibre nmLVS:版图与原理图一致性检查,从版图提取器件与连接关系,与网表比对,确认"画出来的电路"和"设计的电路"一致。
- Calibre ERC:电气规则检查,关注浮空节点、电源/地短路、衬底连接等电气合理性问题。
- Calibre DFM / LFD:可制造性与光刻友好性检查,评估版图在真实工艺窗口下的良率风险。
- Calibre xRC / PEX:寄生参数提取,为后仿提供带寄生信息的网表。
- Calibre RVE / DESIGNrev:结果查看与版图调试环境,把检查结果定位回版图坐标。
这些工具共享同一套规则文件语法(SVRF/TVF)、同一套运行框架和结果数据库,因此它们不是孤立软件,而是一个可被平台统一调度的验证系统。
它在IC设计流中的位置
从流程上看,Calibre 处在"版图完成"与"流片签核"之间。前端交付网表,后端完成布局布线得到 GDS,随后进入物理验证循环:DRC 找几何违规,LVS 找连接错误,ERC 找电气隐患,PEX 提取寄生再回标到仿真。只有全部通过签核,数据才会以 GDS + 各类报告的形式交付给晶圆厂(Tapeout)。
因此 Calibre 的定位可以概括为三点:它是版图数据的"质检关口",是设计与制造之间的"翻译与校验层",也是后端平台自动化流水线中最重的计算任务之一。一次完整的 DRC+LVS 在先进工艺上可能消耗数百 CPU 核时,这直接决定了平台必须解决任务调度、License 管理、结果归档等问题。
后端平台集成的整体目标
如果只有一两个工程师手动跑 Calibre,问题不大。但在真实项目中,一个 SoC 可能包含几十个模块、多个工艺角、多套规则版本,每天要跑成百上千次验证。此时"手动跑"完全不可行,必须把 Calibre 集成进后端平台。集成的目标可以归纳为四条:
- 可调度:把 DRC/LVS 等任务提交到计算集群(如 LSF/SGE),按优先级排队,充分利用算力。
- 可复现:固定规则文件版本、工具版本、环境变量,保证今天跑和三个月后跑结果一致。
- 可追溯:每次运行的结果、日志、报告、违规坐标都归档,能回答"这个错误是什么时候引入的"。
- 可门禁:把验证结果作为流程卡点,DRC 未清零不允许进入下一阶段,防止带病流片。
这四条目标决定了平台需要管理的不只是"一条 Calibre 命令",而是规则文件、运行脚本、License、队列、结果数据库这一整套对象。
一个最小可运行的集成示例
为了建立直观感受,下面给出一个典型的 Calibre nmDRC 运行脚本骨架。它展示了平台集成时真正要控制的输入项:
# run_drc.sh —— 平台调度的最小 DRC 任务
export CALIBRE_HOME=/opt/calibre/2023.4
export PATH=$CALIBRE_HOME/bin:$PATH
export MGC_HOME=$CALIBRE_HOME
RULES=/proj/rules/smic55/DRC/calibre_drc.svrf
LAYOUT=/proj/run/top.gds
TOPCELL=top
REPORT=/proj/run/drc_results
calibre -drc -hier -turbo 8 \
-runset $RULES \
-layout $LAYOUT \
-topcell $TOPCELL \
-report $REPORT \
2>&1 | tee drc.log
# 平台据此判断:退出码 + 违规数
grep -c "TOTAL Result" $REPORT.summary
这里每个参数都对应平台要管理的一个维度:-turbo 8 决定并行度,影响 License 占用;-runset 指向规则文件,必须版本受控;-report 决定结果归档路径。平台脚本通常会在外层再包一层,读取项目配置、选择规则版本、提交队列、回收结果。
为什么值得专门学"集成"而不只是"使用"
会敲一条 calibre -drc 命令的人很多,但能设计一套稳定、可扩展、可追溯的验证平台的人很少。区别在于:前者解决"这一次能不能跑通",后者解决"一千次、一百人、一年之后还能不能跑通、结果还能不能信"。本课程的目标,就是把你从前者带到后者——既懂 Calibre 工具本身,也懂它如何被后端平台接住、调度、管理和签核。