0
peek
の関数uvm_reg
がシミュレーション時間0の値を返したと思いました。この機能が必要なので、HDLバックドアアクセスパスをすべて実装しました。クロック・サイクルごとに、ゼロシミュレーション時間に、my_reg
が0 state==DISABLE
であることを主張する:これはだった私のスコアボードuvm_reg peek関数が返されるまでに時間がかかります
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
が変更される頃までこれは問題ありません。その時点で、開始ピーク - >終了ピークは約10クロックサイクルかかります。この時、私の状態はもはや無効ではなく、ofcourse val!= 'h0です。なぜピックは戻ってくるのに時間がかかりますか?
私はpeek
は、SystemVerilogのタスク、関数ではなくので、それは少し時間がかかる場合がありQuestasim 10.4a
あなたが正しいです、それはおそらくシミュレーション時間を取ることができる仕事です。私はいつも0シミュレーション時間がかかることを私が読んでいるか分からない。これは本当ですか、私は間違っていますか? – noobuntu
Nope。関数の場合にのみ、シミュレーション時間0で実行されると言うことができます。タスクの場合、100回のうち99回が実行されますが、0回のシミュレーション時間で実行される可能性がありますが、それでもタスクは確実ではありません。投稿が参考になった場合は、回答としてマークしてください。 –