Тестовый пример висит на start_item

Я столкнулся с проблемой с start_item. Каждый раз, когда дело доходит до start_item, весь мой тест зависает, и я никак не могу выяснить, в чем проблема. Любые указатели будут с благодарностью.

Вот как выглядит код:

task good_bad_seq_0_task ();
  RX_eth10g req;
  RX_eth10g rsp;
  RX_eth10g_knobs t;
  int good_bad_seq_count;
  //'Vy_good_bad_long_seq' is a loop Variable
  int Vy_good_bad_long_seq;
  int tmp_rand_status;
  tmp_rand_status = std::randomize (good_bad_seq_count) with { 
    good_bad_seq_count inside {100};
  };
  if(!tmp_rand_status) begin
    `uvm_error(get_full_name(), "Randomization failed!");
  end
  `uvm_info(get_full_name(), $sformatf(": Driving good_bad_long_seq %0d times ...",good_bad_seq_count), UVM_HIGH)
  for(Vy_good_bad_long_seq = 0; Vy_good_bad_long_seq < good_bad_seq_count; Vy_good_bad_long_seq++) begin
    req = new();
    start_item (req);     // Nothing after this is executed
    t = good_bad_seq_knob;
    req.set_seqitem_type (t);
    if(!req.randomize ()) begin
      `uvm_error("RAND_FAILED", $psprintf("Randomization failed : %s",req.get_full_name()));
    end
    finish_item (req);
    get_response (rsp);
  end
  `uvm_info(get_full_name(), $sformatf(": Completed %0d times ...",good_bad_seq_count), UVM_HIGH)
endtask: good_bad_seq_0_task

Большое спасибо.

2 ответа

start_item(...) задача будет разблокирована, когда драйвер, подключенный к родительскому секвенсору, вызывает get_next_item(...), Вам нужно будет проверить реализацию вашего драйвера.

req не был предоставлен родительский секвенсор. Смотрите документацию для create_item(...) в uvm_sequence_base, Как отметил Тудор get_next_item(...) также должен быть вызван на seq_item_export родительского секвенсора.

Другие вопросы по тегам