在uvm_component中捕获$ finish

问题描述 投票:-1回答:1

我想在uvm_component中捕获$ finish。我的意思是,在调用$ finish时,我的uvm_component需要执行一些自定义代码。

我曾在uvm_component中使用pre_abort回调。但是问题是我的测试台有多个uvm_components,它们还注册了pre_abort回调。

我想确保我的自定义代码应在模拟退出之前最后执行。

system-verilog uvm
1个回答
0
投票

在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
© www.soinside.com 2019 - 2024. All rights reserved.