Verilog 从任务调用$dumpvars()

Verilog 从任务调用$dumpvars(),verilog,system-verilog,uvm,Verilog,System Verilog,Uvm,是否有方法从序列的body()调用$dumpvars,$dumpon$dumpoff? 它可以从模块任务中执行。 我需要控制$dumpon$dumpoff,这样转储就不会太大 另一种方法是在序列中打开bit top.dump_,然后在测试台上等待该位 编辑: 我添加了一个顶级模块: module dump (); bit stop=1'b0; task do_dump(string id); fork begin $display("DUMP ST

是否有方法从序列的body()调用
$dumpvars,$dumpon$dumpoff
? 它可以从模块任务中执行。 我需要控制$dumpon$dumpoff,这样转储就不会太大 另一种方法是在序列中打开bit top.dump_,然后在测试台上等待该位

编辑:

我添加了一个顶级模块:

  module dump ();

   bit stop=1'b0;

   task do_dump(string id);

     fork begin
        $display("DUMP START %s", id);
        $dumpfile($psprintf("dump_%s.vcd", id));  
        $dumpvars(1, hmr_top.i_hmr.REF_CLK_IN, 
                     hmr_top.i_hmr.RST_N, 
                     hmr_top.i_hmr.SER_CLK, 
                     hmr_top.i_hmr.VMKMODE, 
                     hmr_top.i_hmr.SERIN, 
                     hmr_top.i_hmr.SEROUT, 
                     hmr_top.i_hmr.REF_CLK_OUT);
        $dumpon;
        wait(stop);
        stop = 1'b0;
        $dumpoff;
        $display("DUMP END %s", id);
     end join_none
   endtask

  function stop_dump();
      stop = 1'b1;
  endfunction

endmodule // dump
但当我尝试调用第二个转储时,会出现以下错误:

Warning-[TFX-DUMPVARCA] DumpVar called previously   As $dumpvars was called in previous time step, ignoring this call.$dumpfile    at time
#11551000   Please refer to section 18.1.2 in the IEEE Verilog Standard 1364-2001 for    details on $dumpvars.

有什么想法吗?Thx

是的,您可以从
正文
任务中以UVM顺序调用这些系统任务。但是,如果在模拟中多次调用
主体
任务,您可能会收到
$dumpvar
的警告。根据第21.7.1.2节“指定要转储的变量($dumpvars)”:

在整个过程中,可以根据需要随时调用$dumpvars任务 模型(例如,在各个块中),但所有 $dumpvars任务应同时进行模拟


您当然可以从序列体调用
$dumpon
$dumpoff
,但是如果序列是在
包中定义的(应该是这样),您将无法指定要转储的特定层次路径名。

我还需要更改转储文件名。已编辑的原始帖子,请参阅第二次转储。再次转储;再次从seq dump_调用。未创建vcd文件。问题的关键是在simulation@Toolict期间是否可以创建多个转储文件这是一个完全不同的问题。阅读IEEE标准。我找不到任何关于在模拟过程中转储多个文件的内容。另请参见
$fopen