QuestaSim $fdumpvars传字符串变量生成多VCD文件报错问题
QuestaSim 2021.3 同initial块多VCD文件动态生成异常问题
问题现象
在QuestaSim 2021.3版本中,尝试在同一个initial begin块内生成多个VCD文件,参考QuestaSim用户手册相关说明操作后发现:目前仅能向filename参数传入硬编码路径字符串(如"/hardcoded/path/to/vcdfile.vcd")实现单个VCD文件生成,传入string类型变量时功能异常。
测试复现代码
module adder( input logic clk, input logic rstn, input logic [31:0] a, b, output logic [31:0] sum ) ; always_ff @ (posedge clk or negedge rstn) if (!rstn) sum <=0; else sum <= a + b; endmodule: adder module tb; logic clk; logic rstn; logic [31:0] a, b; logic [31:0] sum; adder i_adder ( .clk (clk), .rstn (rstn), .a (a), .b (b), .sum (sum) ); always begin #1us clk = ~clk; end initial begin string dump1 = "dump1.vcd"; string dump2 = "dump2.vcd"; $fdumpfile(dump1); $fdumpvars(1, i_adder.a, dump1); clk = 0; rstn = 0; a = 4; b = 2; #10us rstn = 1; #10us $display("Sum: %d",i_adder.sum); $fdumpoff(dump1); $fdumpall(dump1); $exit; end
运行报错信息
运行上述代码后无VCD文件导出,QuestaSim抛出如下错误:
# ** Error (suppressible): (vsim-PLI-3111) $fdumpvars : Last argument must be a filename.
已验证结论
- 已在EdaPlayground平台上传该示例代码完成复现验证
- 通过
$typename检查确认,自定义string类型变量dump1与硬编码路径字符串的类型均为string,但前者无法作为参数传入$fdumpvars()系统任务
核心诉求
- 定位该参数传递异常的根本成因
- 给出同initial块内动态生成多个VCD文件的正确实现方案
内容的提问来源于stack exchange,提问作者a_bet
相关产品推荐
相关产品推荐

