Я изучаю UVM и задаюсь вопросом, как работает возражение. Я думал, что следующий код (в моем производном агенте) выполняет seq.start (секвенсор); и после того, как секвенсор завершает работу, drop_objection выполняется для завершения моделирования. Если это правда, даже если я удалю raise_objection и drop_objection, он должен выполнить то, на что запрограммирован секвенсор (отправка 8 элементов последовательности в DUT). Но когда я закомментировал raise_objection и drop_objection, симуляция завершается без каких-либо действий секвенсора, хотя seq.start должен был быть выполнен. Пожалуйста, помогите мне понять, как работает возражение в UVM в этом случае. Полную среду тестирования можно найти здесь: https://www.edaplayground.com/x/3_bM а>
task run_phase(uvm_phase phase);
// We raise objection to keep the test from completing
phase.raise_objection(this);
begin
my_sequence seq;
seq = my_sequence::type_id::create("seq");
seq.start(sequencer);
end
// We drop objection to allow the test to complete
phase.drop_objection(this);
endtask