当代码的bug需要波形调试时,你用 Verilator 进行仿真并且生成波形,但是使用 VCD 生成的波形过大,速度过慢,你想要降低生成的波形文件的大小并提升生成的速度,可以怎么做?
理解问题当代码的bug需要波形调试时,你用 Verilator 进行仿真并且生成波形,但是使用 VCD 生成的波形过大,速度过慢,你想要降低生成的波形文件的大小并提升生成的速度,可以怎么做?
已完成理解「当代码的bug需要波形调试时,你用 Verilator 进行仿真并且生成波形,但是使用 VCD 生成的波形过大,速度过慢,你想要降低生成的波形文件的大小并提升生成的速度,可以怎么做?」
展开阅读网页
当代码的bug需要波形调试时,使用Verilator进行仿真并生成波形,但VCD文件过大且生成速度慢,可以通过以下几种方法来降低波形文件的大小并提升生成速度。123
📉 优化波形文件生成
-
要点总结1:使用FST格式替代VCD:FST(Fast Signal Trace)格式是一种高效的波形文件格式,相比于VCD,FST文件更小且生成速度更快。Verilator支持生成FST格式的波形文件,只需在命令行中添加
--trace-fst
选项即可。45 -
要点总结2:选择性记录信号:在生成波形文件时,可以选择性地记录感兴趣的信号,而不是记录所有信号。这可以通过在Verilog代码中使用
$dumpvars
系统任务来实现,指定需要记录的模块和信号,从而减少不必要的记录,降低文件大小。67 -
要点总结3:压缩波形文件:Verilator生成的VCD文件可以通过外部工具进行压缩,如使用
vcd2fst
工具将VCD文件转换为FST格式,或者使用vcd2vcd
工具对VCD文件进行压缩。这些工具可以显著减小文件大小,同时保持波形信息的完整性。89
🚀 提升仿真速度
-
要点总结1:优化仿真参数:Verilator提供了多种仿真参数来优化仿真速度。例如,使用
--threads
选项可以启用多线程仿真,显著提升仿真速度。此外,--unroll-count
选项可以控制循环展开的次数,减少不必要的计算。1011 -
要点总结2:减少仿真时间:在调试阶段,可以减少仿真时间,只仿真到出现bug的时间点。这可以通过在仿真命令中指定仿真时间来实现,例如使用
--timescale
选项来设置仿真时间单位和精度,从而减少不必要的仿真时间。1213 -
要点总结3:使用C++测试平台:Verilator支持使用C++编写测试平台,相比于SystemVerilog,C++测试平台更具灵活性,可以更高效地控制仿真流程。通过优化C++测试平台的代码,可以进一步提升仿真速度。1415
🛠️ 操作步骤
-
步骤1:生成FST波形文件:在Verilator命令中添加
--trace-fst
选项,生成FST格式的波形文件。例如:verilator --trace-fst -cc top.v
。4 -
步骤2:选择性记录信号:在Verilog代码中使用
$dumpvars
系统任务,指定需要记录的模块和信号。例如:initial begin $dumpfile("wave.vcd"); $dumpvars(0, top); end
。6 -
步骤3:压缩波形文件:使用
vcd2fst
工具将VCD文件转换为FST格式,或者使用vcd2vcd
工具对VCD文件进行压缩。例如:vcd2fst wave.vcd -o wave.fst
。8 -
步骤4:优化仿真参数:在Verilator命令中添加优化参数,如
--threads
和--unroll-count
。例如:verilator --threads 4 --unroll-count 100 -cc top.v
。10 -
步骤5:减少仿真时间:在仿真命令中指定仿真时间,例如:
verilator --timescale 1ns/1ps -cc top.v
。12 -
步骤6:使用C++测试平台:编写C++测试平台代码,优化仿真流程,提升仿真速度。例如:
verilator --cc top.v --exe sim_main.cpp
。14