做动态仿真验证通常会遇到要等待仿真结果的情况,特别是在调试某个测试用例的时候。很多时候,工程师们会自然地认为仿真速度大部分依赖于跑仿真任务的服务器本身的性能,以及EDA仿真工具的能力。而实际上,高效的验证环境以及代码质量也是影响仿真速度的关键因素。
另一方面,提高仿真速度这回事,对于芯片工程师来说本身就是“求人不如求己”。提高服务器机器性能意味着更大的资金投入,更高性能的仿真工具也不是一时半会能达成的。而探索更高效的验证方法学,构建更高执行效率的代码是当下就能做的事情。
本文的主要内容参考来自于Cliff Cummings在2019年DVCon会议上发表的文章:Yikes! Why is My SystemVerilog Still So Slooooow. 这篇文章主要探讨了SystemVerilog仿真速度跟Coding风格之间的关系,文章中有详细的实验目标、方法和数据结果呈现。本文将摘录和分析那些对仿真速度影响较大的编码风格。
使用向量操作代替单bit操作
仿真器在做完整向量计算的速度比单bit计算要高。根据参考文献的数据,在某款仿真工具下,最高提速可以达到3倍以上。
下面是一个例程,分别呈现不同的代码实现风格。