原文基于Verilog-XL仿真器,测试了以下几种方式对仿真效率的影响。
1. 使用 Case 语句而不是 if / else if 语句
八选一多路选择器 case 实现效率比 if / else if 提升 6% 。
2. 如果可以尽量不使用 begin end 语句
使用 begin end 的 ff 触发器比不使用 begin end 的 ff 触发器仿真多消耗 6% 的内存与 6% 的仿真时间。
3. 使用 define 而不是使用 parameter / defparam
使用 parameter / defparam 相比使用define多消耗25%-35%的内存。
4. 尽量在一个always块里赋值
使用 4 个always块给 4 个变量赋值比使用 1 个 always 块给 4 个变量赋值慢 34% 。
5. 尽量少声明不使用的引脚 / 减少不必要的层级
具有 4 个外部引脚的模块仿真比无外部引脚的模块仿真多 46% 仿真时间。
6. 尽量降低仿真精度
使用 1ns / 1ps 为仿真精度相比 1ns / 1ns 精度多耗费 156% 内存和 99% 执行时间。
7. 尽量减少 $time 精度和执行次数
8. 尽量使用 always 进行循环操作如时钟产生