Функция просмотра 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   )
Другие вопросы по тегам