首页 > 最新动态 > 【RISC-V论文解读 】面向大规模设计的高速 RTL 软件仿真器
最新动态
【RISC-V论文解读 】面向大规模设计的高速 RTL 软件仿真器
2025-07-015
图片

面向大规模设计的

高速 RTL 软件仿真器

寄存器传输级(RTL)仿真是验证设计正确性的重要手段,被广泛地应用于设计空间探索、功能验证和调试、初步性能评估等多个场景中。但在复杂芯片设计中,RTL仿真过慢的速度成为了验证的瓶颈。

中国科学院计算技术研究所(简称“计算所”)和北京开源芯片研究院(简称“开芯院”)在 DAC 2025发表了题为《GSIM: Accelerating RTL Simulation for Large-Scale Designs》的论文,对 RTL 仿真过程的开销进行建模分析,提出超节点层、节点层、比特层三层创新优化,并将其实现成高性能 RTL 软件仿真器 GSIM,大幅提高仿真速度。

image.png





01
研究背景

寄存器传输级(RTL)仿真是验证设计正确性的重要手段,作为设计早期验证的重要步骤,能够在设计阶段尽早发现潜在问题,从而加快设计迭代和优化过程,被广泛地应用于设计空间探索、功能验证和调试、初步性能评估等多个场景中。但在复杂芯片设计中,RTL仿真过慢的速度成为了验证的瓶颈,因此,提高RTL仿真速度,从而加快开发流程成为了当前芯片设计流程中的重要需求。在所有仿真方式中,软件仿真由于其灵活性、低成本、易于调试的优点,是最常用的RTL仿真方式。但是,随着电路规模的增大,软件仿真的速度急速下降,也成为了验证的瓶颈。

处理器

架构

节点数目

边数目

仿真速度

stuCore

顺序单发射

9933

17369

900KHz

Rocket

顺序单发射

234807

293164

30KHz

BOOM

乱序三发射

571038

827619

9KHz

香山

乱序六发射

6218427

9007005

0.9KHz


单线程verilator在不同的处理器核上启动linux的仿真速度。节点数目表示RTL中的寄存器和逻辑单元数目,边数目表示节点之间的连接数目。stuCore表示由学生设计的一生一芯处理器。

对于大规模设计,加速RTL仿真比较困难,软件仿真器需要仿真整个电路的信号传播,庞大的计算量是导致仿真速度慢的主要原因。为了提高RTL软件仿真的速度,研究团队设计了RTL软件仿真器GSIM,应用多种策略来优化软件仿真的速度。


02
建模与分析

GSIM基于ESSENT惰性仿真的策略,对于每一个节点,都绑定一个激活位,如果激活位未设置,说明该节点值没有发生改变,可以复用无需计算,反之则会重新计算该节点的值,如果节点发生改变,意味着依赖于该节点的下游节点可能也发生改变,此时将设置所有下游节点的激活位。

为了分析计算量的来源,研究团队对计算量进行了分解,每周期的仿真时间可以用如下公式进行表示:

a24246e6c5e80894d7fa6468e1434db.jpg
image.png

其中,T表示每周期的仿真开销;E表示计算每个节点新值的计算开销;267d90b423ae98bc8fabfc9ec1e0366.jpg表示激活后续节点的开销,包括保存节点的旧值,设置下游节点的激活位两部分;af表示活跃节点的占比,也就是每周期有多少个节点被激活,在大多数电路中af较小,例如香山运行Coremark时,af为4.61%;d91bafed4191e85c46ee82c33130203.jpg表示检查激活位的开销,通常需要为每一个节点引入一条分支指令;N表示节点数目,由具体的电路设计决定。


03
GSIM 设计

为了加速RTL仿真,GSIM通过超节点层、节点层、比特层这三种层面的优化技术,来减少每个因子的开销。部分技术可能会优化其中一个因素,但劣化另一个因素,这种情况下GSIM建立开销模型来进行权衡取舍。

image.png
超节点级优化:智能分组,减少冗余检查

目标:为了降低激活开销91b649ac951670015712fb804f9bb6f.jpg,GSIM将节点打包成超节点,以超节点为粒度激活,超节点中所有节点同时激活,这可能导致活跃节点占比af提高,需要在降低91b649ac951670015712fb804f9bb6f.jpg的同时,尽可能保持较小的af,也即将可能同时激活的节点放入同一个超节点中。

挑战:传统图划分算法(如Kernighan)为最小化边切割,割裂了本应同时激活的节点组。

ed3f4329ad1e1521d12de779f3f95a8.png

创新:提出增强型图划分算法,先基于节点关联规则(如单入/单出节点、同源节点)动态构建超节点,再使用传统的图划分算法。

image.png
节点级优化:精准剪枝,拒绝无效重复计算

消除四类冗余节点:别名节点、死节点、短路节点、无用寄存器。

image.png

内联决策模型:建立成本评估公式,动态选择节点内联或拆分,平衡计算量与节点数。

image.png

复位信号慢路径处理:传统的寄存器更新策略会检查每一个寄存器是否复位,但是复位信号数量通常较少,并且复位很少发生,因此GSIM将复位检查移出主路径,在周期末进行统一判断,将检查次数从寄存器数目降低到复位信号数目。

比特级优化:细粒度激活,拒绝浪费

关键发现:香山中23.7%的多比特节点由拼接构成,23.2%的访问仅涉及部分比特,如果下游节点仅适用到未改变的比特,它无需被激活。

解决方案:按比特访问模式拆分节点,仅激活受影响的后继节点,降低激活节点的比例。尽管节点拆分增加了节点数目,但可以应用节点层优化策略来优化新增节点。

image.png


04
实验结果

在本项工作中,研究团队全面评估了GSIM在多个处理器核上的仿真速度,并和其他RTL仿真器进行对比。从结果上看,GSIM性能远超其他单线程RTL仿真器,仿真香山启动Linux性能为verilator的7.34倍,仿真Rocket运行CoreMark性能为verilator的19.94倍,在大多数处理器核上性能超过多线程verilator,充分展现了GSIM的优化效果。

图片1(1).png

为了评估GSIM在真实开发场景的仿真速度,研究团队考虑香山的性能回归场景,其通常使用检查点来加速性能回归。研究团队通过SimPoint从SPEC CPU2006 采样得到包含40M条指令的片段,并构建检查点,测试程序覆盖多种不同类型的负载,包括流式和不规则内存访问、整数和浮点计算、分支密集、ICache密集等多种类型。经测试,GSIM在这些检查点上仿真性能为单线程Verilator的3.72倍,8线程Verilator的1.18倍。

图片1(2).png

为了进一步分析GSIM各项优化对整体性能的贡献,研究团队对仿真性能进行分解,以不应用任何优化的仿真器作为基准,增量式地应用所有优化,评估各优化对于整体性能的贡献。结果表示如下图所示,其中,引入超节点对所有设计的性能都有显著提升,节点的比特级拆分对BOOM提升较为显著,对香山也有小幅度提升,对其他处理器核影响不大。

image.png

寄存器传输级(RTL)仿真是验证设计正确性的重要手段,但在复杂芯片设计中,RTL仿真过慢的速度成为了验证的瓶颈,为了提高RTL仿真速度,本研究对RTL仿真开销进行建模,并设计了GSIM,应用多种策略来优化软件仿真的速度,性能远超其他单线程RTL仿真器,并将持续探索对RTL仿真的加速。


点我访问原文链接