寄存器传输级(RTL)仿真是验证设计正确性的重要手段,被广泛地应用于设计空间探索、功能验证和调试、初步性能评估等多个场景中。但在复杂芯片设计中,RTL仿真过慢的速度成为了验证的瓶颈。
中国科学院计算技术研究所(简称“计算所”)和北京开源芯片研究院(简称“开芯院”)在 DAC 2025发表了题为《GSIM: Accelerating RTL Simulation for Large-Scale Designs》的论文,对 RTL 仿真过程的开销进行建模分析,提出超节点层、节点层、比特层三层创新优化,并将其实现成高性能 RTL 软件仿真器 GSIM,大幅提高仿真速度。
寄存器传输级(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,应用多种策略来优化软件仿真的速度。
GSIM基于ESSENT惰性仿真的策略,对于每一个节点,都绑定一个激活位,如果激活位未设置,说明该节点值没有发生改变,可以复用无需计算,反之则会重新计算该节点的值,如果节点发生改变,意味着依赖于该节点的下游节点可能也发生改变,此时将设置所有下游节点的激活位。
为了分析计算量的来源,研究团队对计算量进行了分解,每周期的仿真时间可以用如下公式进行表示:
其中,T表示每周期的仿真开销;E表示计算每个节点新值的计算开销;表示激活后续节点的开销,包括保存节点的旧值,设置下游节点的激活位两部分;af表示活跃节点的占比,也就是每周期有多少个节点被激活,在大多数电路中af较小,例如香山运行Coremark时,af为4.61%;
表示检查激活位的开销,通常需要为每一个节点引入一条分支指令;N表示节点数目,由具体的电路设计决定。
为了加速RTL仿真,GSIM通过超节点层、节点层、比特层这三种层面的优化技术,来减少每个因子的开销。部分技术可能会优化其中一个因素,但劣化另一个因素,这种情况下GSIM建立开销模型来进行权衡取舍。
目标:为了降低激活开销,GSIM将节点打包成超节点,以超节点为粒度激活,超节点中所有节点同时激活,这可能导致活跃节点占比af提高,需要在降低
的同时,尽可能保持较小的af,也即将可能同时激活的节点放入同一个超节点中。
挑战:传统图划分算法(如Kernighan)为最小化边切割,割裂了本应同时激活的节点组。
创新:提出增强型图划分算法,先基于节点关联规则(如单入/单出节点、同源节点)动态构建超节点,再使用传统的图划分算法。
消除四类冗余节点:别名节点、死节点、短路节点、无用寄存器。
内联决策模型:建立成本评估公式,动态选择节点内联或拆分,平衡计算量与节点数。
复位信号慢路径处理:传统的寄存器更新策略会检查每一个寄存器是否复位,但是复位信号数量通常较少,并且复位很少发生,因此GSIM将复位检查移出主路径,在周期末进行统一判断,将检查次数从寄存器数目降低到复位信号数目。
关键发现:香山中23.7%的多比特节点由拼接构成,23.2%的访问仅涉及部分比特,如果下游节点仅适用到未改变的比特,它无需被激活。
解决方案:按比特访问模式拆分节点,仅激活受影响的后继节点,降低激活节点的比例。尽管节点拆分增加了节点数目,但可以应用节点层优化策略来优化新增节点。
在本项工作中,研究团队全面评估了GSIM在多个处理器核上的仿真速度,并和其他RTL仿真器进行对比。从结果上看,GSIM性能远超其他单线程RTL仿真器,仿真香山启动Linux性能为verilator的7.34倍,仿真Rocket运行CoreMark性能为verilator的19.94倍,在大多数处理器核上性能超过多线程verilator,充分展现了GSIM的优化效果。
为了评估GSIM在真实开发场景的仿真速度,研究团队考虑香山的性能回归场景,其通常使用检查点来加速性能回归。研究团队通过SimPoint从SPEC CPU2006 采样得到包含40M条指令的片段,并构建检查点,测试程序覆盖多种不同类型的负载,包括流式和不规则内存访问、整数和浮点计算、分支密集、ICache密集等多种类型。经测试,GSIM在这些检查点上仿真性能为单线程Verilator的3.72倍,8线程Verilator的1.18倍。
为了进一步分析GSIM各项优化对整体性能的贡献,研究团队对仿真性能进行分解,以不应用任何优化的仿真器作为基准,增量式地应用所有优化,评估各优化对于整体性能的贡献。结果表示如下图所示,其中,引入超节点对所有设计的性能都有显著提升,节点的比特级拆分对BOOM提升较为显著,对香山也有小幅度提升,对其他处理器核影响不大。
寄存器传输级(RTL)仿真是验证设计正确性的重要手段,但在复杂芯片设计中,RTL仿真过慢的速度成为了验证的瓶颈,为了提高RTL仿真速度,本研究对RTL仿真开销进行建模,并设计了GSIM,应用多种策略来优化软件仿真的速度,性能远超其他单线程RTL仿真器,并将持续探索对RTL仿真的加速。