peek
の関数はuvm_reg
シミュレーション時間 0 で値を返すと思いました。この機能が必要だったので、すべての HDL バックドア アクセス パスを実装しました。これは、スコアボードで使用しているコードです
while (state == DISABLE) begin
uvm_reg_data_t val = 'hDEADBEEF;
uvm_status_e status;
`uvm_info(get_name(), "Start peek", UVM_LOW)
my_reg_block.my_reg.peek(status, val);
`uvm_info(get_name(), "End peek", UVM_LOW)
assert (val == 'h0)
@posedge(my_vif.clk); //Advance clock
end
私の意図は次のとおりです。すべてのクロック サイクルで、ゼロ シミュレーション時間でmy_reg
、state==DISABLE
.
my_reg
シミュレーションの実行では、変化する時間まではこれで問題ないことに気付きました。この時点で、Start peek -> End peek に約 10 クロック サイクルかかります。この時点で、私の状態はもはや DISABLE ではなく、もちろん val != 'h0. Peek が戻るまでに時間がかかるのはなぜですか?
Questasim 10.4a を使用しています