优化RTL仿真性能
优化RTL仿真性能
作者: Scott Fields, NVIDIA, Beaverton, OR, USA (www.nvidia.com)
摘要
仿真吞吐量是现代功能验证流程中的关键问题。仿真效率的改进可以带来功能覆盖率的提高、调试周转时间的减少以及硬件和软件成本的降低。本文讨论了针对Verilog RTL模型、Verilog/PLI 编程语言接口协同仿真测试平台以及Synopsys VCS仿真器的各种优化方法。还详述了每种方法在十亿门GPU 图形处理器的全芯片RTL级仿真中的优点。通过使用这些技术,测试案例的平均仿真时间提高了900%以上。
目录
1. 引言 2. 验证环境 3. 优化方法 - 3.1 待测设计(DUT) - 3.2 测试平台 - 3.3 工具 4. 结果 5. 结论 6. 参考文献
1 引言
仿真吞吐量通常是现代功能验证流程中的首要瓶颈。随着设计复杂度的增加,RTL仿真需要更多的时间来运行相同的测试集。这对功能覆盖率、调试周转时间和项目进度有直接的负面影响。本文详细介绍了应用于大规模GPU 图形处理器设计的RTL仿真优化的系统方法。
2 验证环境
验证环境包括一个全芯片Verilog RTL模型、一个基于Verilog/PLI的协同仿真测试平台,以及Synopsys VCS仿真器。待测设计(DUT)规模约为十亿门,包含多个复杂IP模块、存储器和处理器核心。
3 优化方法
3.1 待测设计(DUT)优化
时钟门控优化:时钟门控 Clock Gating减少了仿真器事件的数量,从而提高性能。
大always块拆分:从大型always块中移除独立逻辑改善了VCS性能。将一个包含多个独立功能的大型always块拆分为更小的独立块,使仿真器能够更好地优化事件调度。
3.2 测试平台优化
存储器后门加载:设计中的存储器可以通过后门从映像文件在零时间内加载,避免了通过前门访问所需的数百万个时钟周期。
层次化引用的影响:示例分析报告显示了层次化引用的影响:编译器优化被禁用,具有复杂模型的实例在报告中排名靠前。层次化引用阻止了VCS执行某些优化,通过消除不必要的层次化引用可以显著提高性能。
监视器的影响:监视器可能对运行时间产生分散且显著的影响。每个监视器都在仿真中增加了事件处理开销。通过优化监视器代码、减少不必要的监视器或仅在需要时启用它们,可以减少这种影响。
3.3 工具优化
全局PLI回调的影响:分析报告显示全局PLI 编程语言接口回调的影响:具有最高实例数的低级实例在报告中排名靠前。减少全局PLI回调的使用,转而使用有针对性的回调可以显著降低开销。
VCS编译选项:使用适当的VCS编译选项可以对仿真性能产生重大影响。关键的优化选项包括使用更高的优化级别、启用增量编译以及使用适当的调试级别。
仿真运行时选项:VCS提供了多个运行时选项来优化仿真性能,包括事件调度优化、存储器管理选项和并行化设置。
4 结果
表1:各项优化分别禁用时的运行时间
通过系统地应用上述优化方法,测试案例的平均仿真时间从基准的约360分钟减少到约36分钟,提高了约900%(10倍)。最大的改进来自于时钟门控优化(约4倍)、测试平台优化(约2.5倍)和VCS工具优化(约2倍)的组合效果。
5 结论
本文证明了通过系统的方法优化RTL仿真性能可以取得显著的效果。通过结合DUT优化、测试平台优化和工具配置优化,实现了900%以上的仿真吞吐量改进。这些改进转化为更快的调试周转时间、更高的功能覆盖率和降低的硬件/软件成本。
建议验证工程师采用类似的方法,从分析当前仿真性能瓶颈开始,然后系统地应用最适合其特定环境的优化方法。
6 参考文献
[1] VCS User Guide, Synopsys
[2] Verilog PLI Handbook, Stuart Sutherland
图片索引
本文共6张图片(原文含0张提取图片 -- 图片内容嵌入PDF中),存放于 _images/ 目录。