Функция просмотра uvm_reg занимает много времени, чтобы вернуться
Я думал 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
0, когда state==DISABLE
,
В симуляционном прогоне я замечаю, что это нормально, пока не my_reg
меняется. В этот момент Start peek -> End peek занимает около 10 тактов. В это время мое состояние больше не отключено и, разумеется, val!= 'H0. Почему заглядывать так долго, чтобы вернуться?
Я использую Questasim 10.4a
1 ответ
Это может занять некоторое время, потому что peek
это задача SystemVerilog, а не функция.
Функция будет выполнена в 0 Simulation Time, но задачи также могут иметь временные задержки.
Вот это определение.
virtual task peek( output uvm_status_e status,
output uvm_reg_data_t value,
input string kind = "",
input uvm_sequence_base parent = null,
input uvm_object extension = null,
input string fname = "",
input int lineno = 0 )