1

$dumpvars, $dumpon $dumpoffシーケンスの body() から呼び出す方法はありますか? モジュールタスクから可能です。$dumpon $dumpoff を制御して、ダンプが大きくなりすぎないようにする必要があります。代わりの方法は、シーケンスでビット top.dump_on をオンにして、テストベンチでこのビットを待機することです。

編集:

トップレベルのモジュールを追加しました:

  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

しかし、2 番目のダンプを呼び出そうとすると、次のエラーが発生します。

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.

何か案は ?どうも

4

2 に答える 2

1

bodyはい、これらのシステム タスクをUVM シーケンスのタスクから呼び出すことができます。ただし、bodyタスクがシミュレーションで複数回呼び出されると、警告が表示される場合があります$dumpvarIEEE Std 1800-2012のセクション 21.7.1.2「ダンプする変数の指定 ($dumpvars)」によると:

$dumpvars タスクは、モデル全体 (たとえば、さまざまなブロック内) で必要に応じて何度でも呼び出すことができますが、すべての $dumpvars タスクの実行は同じシミュレーション時間でなければなりません。

于 2013-12-18T15:26:17.670 に答える
1

確かにシーケンスの本体から$dumponorを呼び出すことができます$dumpoffが、シーケンスが a で定義されている場合package(そうあるべきです)、ダンプする特定の階層パス名を指定することはできません。

于 2013-12-18T16:43:48.177 に答える