1. 签核交付工程总览

在数字芯片与IP的交付链条中,“签核”不是一次简单的仿真通过,而是一组有明确证据、明确责任人和明确验收口径的工程活动。Xcelium与Jasper分别承担动态仿真验证与形式化验证两条主线的签核任务:Xcelium以激励驱动的方式覆盖时序行为、协议交互和系统场景,Jasper以数学穷举的方式证明或反证属性、等价性和安全性。两者不是替代关系,而是互补关系——动态仿真回答“在给定激励下是否出现错误”,形式化回答“在所有合法输入下是否可能出错”。签核交付工程的核心,就是把这两类证据组织成可追溯、可复现、可评审的交付包。

一、签核流程中的定位:两条证据链的交汇

从流程位置看,Xcelium通常位于模块级、子系统级和SoC级验证的中后段,承接UVM环境、回归用例和覆盖率收敛;Jasper通常位于模块级和关键控制逻辑的前中段,承接属性提取、断言验证、等价性检查和X-propagation分析。两者在签核节点上交汇:动态仿真提供覆盖率与场景通过率,形式化提供属性证明与反例波形。签核评审时,评审人需要同时看到“覆盖率是否达标”和“关键属性是否全部证明”,缺一不可。

一个常见的误区是把Jasper当作“补充手段”,只在仿真跑不动时才启用。实际上,在签核交付工程中,Jasper的证明结果往往具有更高的确定性权重:一旦属性被证明,就不需要再依赖随机激励的覆盖程度。因此,合理的策略是先用Jasper收敛控制逻辑和接口协议的核心属性,再用Xcelium覆盖数据通路、性能场景和系统集成行为。

签核交付工程:双证据链与协作接口 Xcelium 动态仿真签核 输入:UVM环境 / 回归用例 / 覆盖率模型 激励序列、约束、检查器、覆盖率采集点 过程:编译 → 仿真 → 回归 → 覆盖率合并 xrun / xmsim / imc 覆盖率分析 输出:通过率 / 功能覆盖率 / 断言触发记录 回归报告、失败用例波形、覆盖率数据库 签核判据:覆盖率达标 + 关键用例全通过 无未关闭的失败用例、无未豁免的覆盖率空洞 Jasper 形式化签核 输入:RTL / 属性SVA / 约束 / 时钟复位定义 assertion、assume、cover、等价性映射 过程:属性提取 → 证明 → 反例分析 → 收敛 prove / cover / 等价性检查 / X-prop 输出:证明结果 / 反例波形 / 覆盖属性清单 proven、cex、unreachable、covered 签核判据:关键属性全部proven + 无未解释cex 约束合理、无过约束、覆盖属性已确认 签核 证据 交汇 统一交付物:签核报告 + 覆盖率/证明数据库 + 回归脚本 + 评审记录 + 豁免清单

二、交付物定义:从“跑过了”到“可评审”

签核交付物不是仿真日志的堆砌,而是经过整理、可追溯、可复现的证据集合。Xcelium侧的核心交付物包括:回归通过率报告、功能覆盖率与代码覆盖率合并数据库、失败用例清单及根因分析、覆盖率豁免申请与批准记录。Jasper侧的核心交付物包括:属性证明报告(proven/cex/unreachable分类统计)、反例波形及根因分析、等价性检查报告、X-propagation分析结果、约束合理性评审记录。

两类交付物最终汇入统一的签核包,通常包含以下字段:签核对象(模块/IP/SoC)、签核版本(RTL commit ID)、工具版本(Xcelium/Jasper版本号)、运行环境(OS、license、机器配置)、用例/属性清单、通过/证明状态、未关闭项及责任人、评审结论。这些字段不是形式主义,而是当后续版本出现回归问题时,能够快速定位“当时签核的是哪个版本、哪些项被豁免、谁批准的”。

实践提示:签核包中的“豁免清单”必须与“未关闭项”分开管理。豁免是经过评审并批准的不修复项,未关闭项是仍需处理的问题。两者混在一起会导致签核结论失真。

三、团队角色与协作接口

签核交付工程涉及四类核心角色:验证工程师(DV)、形式化工程师(FV)、设计工程师(RTL)和签核评审人(Sign-off Reviewer)。DV负责Xcelium环境搭建、用例编写、回归执行和覆盖率收敛;FV负责Jasper属性提取、证明收敛、反例分析和约束评审;RTL负责修复设计缺陷、提供设计意图说明和时钟复位定义;评审人负责确认证据完整性、判据合理性和豁免项合规性。

协作接口的关键在于“问题传递”和“证据回传”。当Jasper发现反例时,FV需要将反例波形、触发属性、约束条件和复现脚本打包传递给RTL和DV;RTL修复后,DV需要在Xcelium中补充对应场景的定向用例,FV需要重新证明该属性。当Xcelium发现覆盖率空洞时,DV需要判断是激励不足还是设计不可达,前者补充用例,后者提交豁免申请并附上Jasper的unreachable证明作为依据。

协作场景 发起方 接收方 传递内容 回传证据
Jasper发现反例 FV RTL / DV 反例波形、触发属性、约束条件、复现脚本 RTL修复commit、DV定向用例通过记录、FV重新proven
Xcelium覆盖率空洞 DV FV / RTL 空洞位置、覆盖率模型、激励约束 FV unreachable证明或RTL可达性说明、豁免批准记录
约束过强导致误证明 评审人 FV 约束评审意见、过约束嫌疑点 约束修正记录、重新证明结果、约束合理性说明
签核版本冻结 评审人 DV / FV RTL commit ID、工具版本、签核范围 签核报告、覆盖率/证明数据库、评审签字记录

四、签核交付的常见风险与判断依据

签核交付工程中最常见的风险不是工具跑不起来,而是“证据看起来完整但实际不可信”。典型情况包括:Jasper约束过强导致属性被虚假证明;Xcelium覆盖率通过但关键场景未被激励;签核版本与最终交付版本不一致;豁免项未经评审直接关闭。判断签核是否真正完成,不能只看“通过率100%”或“proven数量”,而要检查三个一致性:签核版本与交付版本一致、签核判据与项目验收标准一致、豁免项与评审记录一致。

在实际项目中,建议在签核启动前先冻结RTL版本和工具版本,生成签核范围清单,明确哪些模块走Xcelium签核、哪些走Jasper签核、哪些需要双签。签核过程中,每周同步一次未关闭项和豁免申请,避免在签核截止前集中处理导致评审质量下降。签核完成后,交付包应包含完整的复现脚本和运行命令,使第三方能够在相同环境下复现签核结果——这是签核交付工程区别于普通验证活动的最终标志。

注意:签核交付包中的运行命令必须包含工具版本、编译选项、仿真选项和随机种子。缺少随机种子的回归结果无法复现,不能作为签核证据。