4. 后端平台集成架构概览

在先进工艺节点下,物理实现工具(如 Cadence Innovus、Synopsys ICC2)负责布局布线、时钟树综合、时序优化等核心工作,而 Calibre 则承担物理验证(DRC/LVS)、寄生参数提取(PEX)和可靠性检查(ERC)等签核任务。两者并非孤立运行,而是通过一套清晰的集成架构协同工作。理解这套架构,是搭建稳定、高效后端流程的前提。

一、集成架构的三个层次

典型后端平台与 Calibre 的集成可以拆解为三个层次:数据交换层、调用接口层和流程编排层。数据交换层解决“传什么”,调用接口层解决“怎么调”,流程编排层解决“何时调、调完做什么”。三者共同构成从设计数据库到签核结果的完整链路。

数据交换的核心是版图与网表。物理实现工具输出的 GDSII/OASIS 是 Calibre 进行 DRC/LVS 的几何输入;工具内部的设计数据库(如 Innovus 的 .enc、ICC2 的 .nlib)通常不直接交给 Calibre,而是先导出为标准格式。网表方面,LVS 需要与版图对应的 SPICE 网表,通常由物理实现工具导出 Verilog 网表后,再经 v2lvs 等工具转换为 SPICE 格式。此外,Calibre 的 PEX 结果(如 SPEF 或 DSPF)需要回注到物理实现工具中用于时序签核,形成双向数据流。

后端平台与 Calibre 集成架构 物理实现平台 Cadence Innovus .enc / .gds / .v Synopsys ICC2 .nlib / .gds / .v 时序签核引擎 Tempus / PrimeTime 物理验证环境 Calibre 集成接口 设计数据库 LEF / DEF / .lib / .lef Calibre 签核套件 Calibre nmDRC 设计规则检查 Calibre nmLVS 版图与原理图一致性 Calibre xRC / PEX 寄生参数提取 Calibre ERC / PERC 电气规则与可靠性 规则文件与运行目录 .rule / runset / svdb 数据交换与调用接口 GDSII / OASIS 版图几何数据 SPICE 网表 v2lvs 转换后输入 SPEF / DSPF 寄生参数回注 TCL 脚本 / Shell 调用接口与参数传递 Make / Flow 脚本 流程编排与依赖管理 结果数据库 svdb / 报告 / 日志 PEX 结果回注时序签核 设计数据库与实现环境 签核验证与规则环境

二、调用接口:从命令行到脚本集成

Calibre 的调用方式主要有三种。最基础的是命令行调用,例如 calibre -drc -hier -turbo 8 drc_runset,其中 -turbo 指定并行线程数,-hier 启用层次化处理。第二种是TCL 脚本集成,物理实现工具在运行过程中通过 exec 或专用接口调用 Calibre,并解析其输出报告。第三种是流程引擎调用,如 Make、Jenkins 或自研 Flow 平台,将 Calibre 作为流程中的一个任务节点,通过依赖关系触发。

以 Innovus 为例,在时序签核阶段调用 Calibre PEX 的典型 TCL 片段如下:

# Innovus 中调用 Calibre xRC 提取寄生参数
set pex_runset "./calibre_pex/pex_runset"
exec calibre -xrc -phdb -turbo 16 $pex_runset
# 读取生成的 SPEF 文件
read_spef "./calibre_pex/output/design.spef"
# 更新时序并报告
update_timing -full
report_timing -max_paths 10 > ./reports/post_pex_timing.rpt

这段脚本的关键在于:-phdb 生成寄生参数数据库,-turbo 16 利用多核加速,生成的 SPEF 通过 read_spef 回注到 Innovus 的时序引擎中。执行后应检查 post_pex_timing.rpt 中的 WNS(最差负裕量)和 TNS(总负裕量),若与 PEX 前差异超过预期(例如 WNS 恶化超过 50ps),则需要检查提取模式是否与签核标准一致。

三、流程编排:从单点调用到流水线

实际项目中,Calibre 不会孤立运行,而是嵌入到一条完整的后端流水线中。典型的编排顺序是:物理实现完成布线 → 导出 GDS 和网表 → 运行 DRC/LVS → 修复违规 → 重新验证 → 运行 PEX → 回注时序 → 最终签核。每个环节都有明确的输入输出和判断条件。

流程编排工具通常采用 Makefile 或 Python 脚本管理依赖。例如,用 Makefile 定义任务依赖:

drc: design.gds drc.rule
	calibre -drc -hier -turbo 8 drc.rule
lvs: design.gds design.spi lvs.rule
	calibre -lvs -hier -turbo 8 lvs.rule
pex: design.gds pex.rule
	calibre -xrc -phdb -turbo 16 pex.rule
signoff: drc lvs pex
	@echo "All signoff checks completed"

这种编排方式的好处是:任一环节失败时,后续任务不会盲目执行;同时支持增量运行,例如仅当 GDS 更新时才重新触发 DRC。在大型 SoC 项目中,还会引入任务调度系统(如 LSF、SGE)将 Calibre 作业分发到计算集群,通过 bsub 或 qsub 提交,并监控作业状态。

四、集成中的关键参数与判断依据

无论采用哪种集成方式,以下几个参数和判断点都需要重点关注:

  • 规则文件版本:DRC/LVS 规则文件必须与工艺库版本严格对应,版本错配会导致误报或漏报。运行前应核对 rule file 的 revision 号与 PDK 发布说明。
  • 线程数与内存:-turbo 设置过高可能导致内存溢出,通常建议根据单机内存和版图规模调整,例如 64GB 内存对应 8~16 线程。
  • 层次化与扁平化:-hier 适合大规模设计,但某些复杂规则可能需要扁平化处理,需根据规则文件说明选择。
  • 结果数据库:Calibre 生成的 svdb 目录包含违规标记和交叉引用信息,是后续调试和修复的依据。应确保该目录可写且不被意外清理。
  • 日志与报告:每次运行应保留完整的 .log 和摘要报告,便于回溯。关键指标包括违规数量、运行时间、内存峰值。
在实际项目中,建议将 Calibre 运行封装为独立函数或模块,统一管理规则文件路径、线程数、输出目录和日志命名。这样在 Innovus 和 ICC2 之间切换时,只需调整数据导出和回注部分,Calibre 调用逻辑可以复用。

五、典型集成架构的对比

Innovus 与 ICC2 在集成 Calibre 时存在一些差异。Innovus 通常使用 exec 直接调用 Calibre 命令,并通过 read_spef 回注结果;ICC2 则更多依赖 saif 和 spef 的标准化接口,且其 signoff 流程中常与 PrimeTime 配合。但无论哪种平台,数据交换的核心格式(GDS、SPICE、SPEF)和 Calibre 的调用方式(命令行 + 规则文件)是一致的。理解这一点,就能在不同平台间迁移集成方案。

总结来说,后端平台与 Calibre 的集成架构可以概括为:物理实现工具负责生成和消费数据,Calibre 负责签核验证,流程编排层负责调度和依赖管理。掌握数据格式、调用接口和编排方式,是构建可靠后端流程的基础。