如何在iverilog仿真的GTKWave中显示parameters与localparameters值?
GTKWave显示Verilog Parameters/LocalParameters的实用方案
将参数映射为调试信号输出
GTKWave仅能追踪仿真过程中实际存在的硬件信号,而parameter/localparameter属于编译期常量,不会默认出现在波形文件中。最可靠的方式是在代码里把参数赋值给一个wire/reg并引出到顶层端口:module demo_module #( parameter DATA_WIDTH = 16, localparam ADDR_WIDTH = DATA_WIDTH >> 1 )( output wire [31:0] dbg_DATA_WIDTH, output wire [31:0] dbg_ADDR_WIDTH ); assign dbg_DATA_WIDTH = DATA_WIDTH; assign dbg_ADDR_WIDTH = ADDR_WIDTH; // 模块核心逻辑... endmodule重新编译仿真后,就能在GTKWave的信号列表里找到这些调试信号,它们的值就是对应参数的固定值。
用系统函数打印参数值(辅助验证)
如果不想修改代码添加调试端口,可以在仿真代码里加入$display直接在终端打印参数值:initial begin $display("DATA_WIDTH = %0d, ADDR_WIDTH = %0d", DATA_WIDTH, ADDR_WIDTH); end编译时记得加上
iverilog -g2012参数以确保支持Verilog-2012标准的参数引用,运行仿真后终端会直接输出参数的编译值。尝试GTKWave的手动搜索添加
部分场景下,iverilog会把参数信息写入VCD文件但默认隐藏。可以在GTKWave中点击Edit->Insert->Add Items by Name,在搜索框输入参数名称(比如DATA_WIDTH),如果能匹配到结果,直接添加到波形窗口即可。不过这个方法的兼容性取决于编译选项和代码结构,不一定每次都有效。
内容的提问来源于stack exchange,提问作者AZ123
相关产品推荐
相关产品推荐

