You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:03:20