Verilog 从任务调用$dumpvars()
是否有方法从序列的body()调用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
$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
。