首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SystemVerilog QuestaSim -将字符串传递给$fdumpvars以保存多个VCD文件

SystemVerilog QuestaSim -将字符串传递给$fdumpvars以保存多个VCD文件
EN

Stack Overflow用户
提问于 2022-06-29 09:45:27
回答 1查看 90关注 0票数 0

我试图在同一个initial begin中生成多个QuestaSim 2021.3中的VCD文件(最新)。

我在QuestaSim用户手册中找到了这一节:

但是,我只能将"/hardcoded/path/ to /vcdfile.vcd“作为文件名传递,这对于单个VCD文件是正确的。

这是我的密码:

代码语言:javascript
复制
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上。

说清楚点,我试过:

代码语言:javascript
复制
$typename(dump1); // returns string
$typename("path/to/vcdfile.vcd"); // returns string

因此,对于Questa,它们都是字符串,但第一个字符串不能传递给$fdumpvars()

EN

回答 1

Stack Overflow用户

发布于 2022-06-29 10:16:07

$fdumpvars不是标准的Verilog系统任务。它没有在IEEEST1800-2017中定义,这意味着它的行为是特定于实现它的供应商,即QuestaSim。

如果希望任务接受string变量类型作为参数,则应直接向供应商请求该功能。

也许其他人已经报告了这一点,并且有一个新版本的QuestaSim已经具备了这一特性。再一次,与供应商联系。

作为比较,用于转储VCD文件$dumpfile的标准Verilog任务确实接受string变量类型:

代码语言:javascript
复制
$dumpfile(dump1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72799240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档