问题背景:彻底消除验证加速中的通信瓶颈
在处理器设计流程中,功能验证常常是最消耗时间和资源的部分,不仅占据 60% 以上的开发周期,并且是流片失败的主要风险。与此同时,随着算力需求的不断增长,芯片设计的功能丰富程度、微结构复杂度在迅速提升:RISC-V 指令集手册长度相比五年前早已翻番, RISC-V CPU 的性能水平距离 x86/ARM CPU 越来越近。在这样的背景下,如何保障复杂芯片的验证效率和质量变得比以往更为关键。
仿真是处理器验证的基础手段。通过将 RTL 代码描述的芯片设计转变为可执行的程序,仿真器让开发者拥有了在硅前开发阶段提前预知芯片硅后行为的能力。其中,硬件加速的仿真技术(如 FPGA、Emulator 等)在近年来得到广泛认可,它们能够实现数 MHz 至上百 MHz 的仿真速度,相比硅后现实世界仅有 1-3 个数量级的速度差异。
图1:三种协同仿真验证架构
如图1所示,为加速芯片的仿真验证,基于硬件加速仿真平台的处理器验证方法被提出,如我们先前已介绍过的 ENCORE(谈芯沙龙 | 芯片验证中的“灵珠“和“魔丸” 活动回顾)、DiffTest-H(【RISC-V论文解读】语义感知的处理器核硬件加速协同仿真验证框架),它们均遵循 RTL-Host 架构:
▲
RTL 侧:以 RTL 代码进行描述的待测芯片设计(Design Under Test,DUT)被映射至硬件加速仿真平台,以数 MHz 至上百 MHz 速度进行仿真。根据其指令处理性能高低,每秒可执行数百万至数亿条指令。
▲
Host 侧:以 C/C++ 代码进行描述的处理器参考模型(Reference Model,REF)运行在连接着硬件仿真逻辑的主机侧(如 x86 服务器或 Xilinx Zynq FPGA 的 PS),其指令执行速度最高可达上百 MIPS(即每秒执行上亿条指令),用于提供处理器行为的金标准。
▲
RTL-Host 通信:DUT 通过平台间通信机制(如 PCIe、以太网、InfiniBand、片间互联等)向 Host 侧传输关键验证数据,并利用 REF 检查 DUT 指令执行的正确性,完成协同仿真验证。
RTL-Host 架构为芯片仿真验证带来了数量级的速度提升,但问题随之而来:由于指令集丰富、DUT 微结构复杂,需要比对的数据规模巨大,通信带宽被迅速耗尽。在验证香山这样的复杂芯片时,99% 以上的时间被消耗在数据传输上。此前的 DiffTest-H 工作通过语义感知的压缩与打包技术缓解了通信开销,通信次数和通信数据量降低超过 97%,在 FPGA 和 Emulator 上分别实现了 7.8 MHz、0.5 MHz 的仿真验证速度。
然而,通信限制始终存在、通信优化终归有限,DiffTest-H 的验证速度距离平台理想值仍有差距。随着 RISC-V 处理器验证复杂度持续攀升,通信有可能无法支撑未来 RTL-Host 架构下的高效验证。
为克服该问题,本工作提出一种无主机(Hostless)的仿真验证加速架构 DiffTest-L:既然 RTL-Host 通信是速度提升瓶颈,为什么不直接把 REF 也实现为 RTL 逻辑、并放到硬件加速仿真平台上与 DUT 一起运行?
核心挑战:REF 如何和 DUT 同速?
DiffTest-L 架构期望把 REF 搬到硬件上以避免通信,这虽然听起来简单直接,但实际面临着验证基础假设与高性能架构设计之间的悖论。
DUT 是高性能处理器,它依靠乱序执行、多发射流水线、预测机制等复杂微结构设计才能实现高吞吐的指令执行。但对于验证来说,REF 需要尽可能设计简单以保证其正确性,否则就会违背其作为验证金标准的动机。
这也就是说:
▲
在仿真验证环境中,REF 必须跑得和 DUT 一样快(即 REF 的指令执行吞吐应不低于 DUT),否则整体验证速度就会被 REF 拖慢。
▲
但一个简化的 REF,天然缺乏 DUT 包含的复杂性能优化设计,怎么可能实现和 DUT 一样高的指令吞吐?
因此,DiffTest-L 的实现需要解决硬件化 REF 悖论:如何让一个极简的 REF,与任意指令吞吐性能的 DUT 保持同速?
SVM:并肩执行的参考模型
对于硬件化 REF 悖论,DiffTest-L 的回答是一种可综合的处理器验证参考模型(Synthesizable Verification Model,SVM)。
SVM 的关键洞察是:REF 并不是孤立运行的,它和 DUT 是并肩执行的。换句话说,REF 并不需要像 DUT 一样独立解决所有问题,它完全可以利用 DUT 的执行信息:
▲
DUT 的下一条 PC 值可以帮 REF 避免分支预测;
▲
DUT 的执行结果可以加速 REF 执行;
▲
DUT 的访存路径可以为 REF 提供参考,避免冗余内存操作。
因此,硬件 REF 的工作模式是:在利用 DUT 提供“捷径”的同时,始终保持一条独立的执行路径,并借此完成最终的正确性校验。这种“借力但不依赖”的协同方式,使得 REF 可以既简洁又高效,成为真正可行的硬件化验证方案。
在这一理念下,SVM 分别提出了针对指令执行和访存需求的两方面核心架构设计:RCore 和 RCache。
RCore:让简洁流水线也能跑得快
REF 的第一个核心任务是执行指令。如果它完全依赖自身流水线运行,就会陷入各种相关冲突并造成流水线阻塞:分支预测失败会停顿,数据依赖需要等待,复杂运算需要长延迟。
RCore 的思路是:保持顺序流水线的简洁性,但在关键环节直接利用 DUT 的信息来规避瓶颈。
▲
控制冒险:如图 2 所示,传统 REF 需要预测分支方向,而 RCore 直接读取 DUT 提供的下一条 PC 值进行执行,但在自身前序指令确定结果后,再次验证 PC 的正确性,从而完全避免预测错误带来的停顿。
图2:利用 DUT 执行信息消除控制冒险
▲
数据冒险:RCore 可以先用 DUT 的执行结果进行推测执行,继续前进,再在自己完成时进行比对,既能保持速度,也能保证验证。
▲
结构冒险:像除法运算这种耗时、难以流水化的操作, RCore 不需要重复构建复杂单元,而是通过 DUT 的结果进行逆向校验(基于乘法),实现复杂运算的简单验证。
通过这种方式,RCore 在逻辑上仍然是一条完整的“参考流水线”,但它的速度不受相关流水线冒险影响,能够与 DUT 保持同步执行。
RCache:验证场景下的轻量缓存
执行路径之外,访存是另一个大问题。DUT 需要频繁进行取指、访存、页表遍历,而 REF 如果独立维护完整内存,不仅开销高,还一定成为速度瓶颈。
RCache 提供了一种针对验证场景优化的轻量缓存,其核心观察是 DUT 侧的 RAM 是行为正确的,只要我们能验证 DUT 向 RAM 写入数据的正确性,就可以充分信任 DUT 侧 RAM 的读处值。
因此,如图 3 所示,RCache 复用 DUT 的内存读数据,在 REF 侧缓存结果,同时检查 DUT 的内存写数据。如此一来,RCache 就可以避免大量的 RAM 访问,支持硬件 REF 的访存需求。
图3:RCache 工作机制示意图
实现:用高级抽象降低成本
即便有了 RCore 和 RCache,构建硬件 REF 依然是一项工程挑战。为此,SVM 提供了一套硬件 REF 编程框架:
▲
指令语义迁移:SVM 可基于 Spike 指令集模拟器中维护的指令模板,自动解析生成相应的硬件逻辑,无需开发者手动完成每一条指令的实现。
▲
类软件环境的调试方法:在仿真过程中若 DUT 执行出错,REF 将转变为单独运行模式,并通过串口输出相应调试日志供分析,其中 Chisel 中插入的断言(assert)也会被自动捕获。
这种方式降低了 REF 的开发和维护成本,允许开发者可以用极简的设计复杂度描述硬件 REF,最终形成了图 4 所示的整体架构。
图 4:SVM 的整体架构
实验结果
针对果壳和香山处理器仿真验证,我们评估了 DiffTest-L 的仿真验证速度:
▲
在 FPGA 上,验证速度可达到 60 MHz,相比 DiffTest-H 提升 7.8 倍
▲
在 Cadence Palladium Emulator 上,验证速度超过 1.2 MHz,相比 DiffTest-H 提升最高达 1.9 倍
在 DiffTest-L 帮助下,我们也发现了新的香山处理器 Bug:在长达近 4 亿时钟周期运行后,我们发现 mstatus CSR 状态不一致。
总结
本工作展示了一条新的验证路径,通过将 REF 实现为简单、高效的硬件逻辑,我们有望充分利用硬件加速仿真平台的优势,实现高达数十 MHz 的处理器仿真验证。
目前,SVM 已开源(https://github.com/poemonsense/SVM),并与 DiffTest 开源项目(https://github.com/OpenXiangShan/difftest)配合形成完整的 DiffTest-L 框架,支持基于 FPGA/Emulator 的 RISC-V 处理器仿真验证加速。
由于 RISC-V 指令集设计复杂,其中涉及到的运算操作、内存管理、特权控制等丰富多样,SVM 当前仅实现了 RV64IMACB 指令集的验证支持,仍依赖更多资源投入支持浮点、向量等复杂指令集扩展。未来我们将结合香山项目实际需求,持续维护并不断完善这一验证框架,也欢迎大家通过各种方式与我们交流讨论。
徐易难,北京开源芯片研究院昆明湖项目基础设施组负责人,中国科学院计算技术研究所特别研究助理/助理研究员,2025 年博士毕业于中国科学院计算技术研究所,2019 年本科毕业于中国科学院大学。他是“香山”开源高性能 RISC-V 处理器项目的核心开发者,在芯片敏捷设计和验证方向提出多项创新技术并在香山项目落地,成果发表于 MICRO、DAC、JCST 等国际知名会议和期刊,其中“香山”及其敏捷设计方法被评选为 2022 年度体系结构领域全球 12 项亮点工作之一(IEEE Micro Top Picks)。博士期间他曾获中国科学院院长特别奖、计算所所长特别奖(夏培肃奖)、博士研究生国家奖学金等荣誉。