захватить финиш в $ uvm_component - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу записать $ финиш в uvm_component.Я имею в виду, что мой uvm_component должен выполнять некоторый пользовательский код при вызове $ finish.

Я использовал обратный вызов pre_abort в uvm_component.Но проблема в том, что у моего testbench есть несколько компонентов uvm_components, и они также регистрируют обратный вызов pre_abort.

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

1 Ответ

1 голос
/ 25 сентября 2019

В verilog единственный способ «поймать» $finish - использовать блок final.Следующий пример иллюстрирует возможное решение.

package TB;
class WorkHorse;
  function void start;
    $display("I am statging");
  endfunction

  task finish;
    $display("finishing");
    $finish;
  endtask

  function void done ;
    $display("I am done");
  endfunction

endclass
endpackage

program tb;
  TB::WorkHorse wh = new;

  initial begin
    #2 wh.start;
    #2 wh.finish;
  end

  final begin
    wh.done;
  end
endprogram
...