Тестовый пример висит на 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 родительского секвенсора.