Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

SystemVerilog: process(その4)

Verification Engineerの戯言 : SystemVerilogの世界へようこそ

processは、VVM 1.2の中でも使われています。使われている場所は、

vmm-1.2/sv/RAL/vmm_ral_backdoor.svの210行目です。

 210:    local process update_thread;

ハンドルが生成される場所は、同じファイルのの286行目です。
fork/join_noe内で使われています。
 282:    fork
 283:      begin
 284:         vmm_ral_field fields[];
 285:
 286:         this.update_thread = process::self();

ハンドル(update_thread)は、同じファイルの次の場所でつかわれています。

 310:  function void vmm_ral_reg_backdoor::kill_update_thread();
 311:   if (this.update_thread != null) begin
 312:      this.update_thread.kill();
 313:      this.update_thread = null;
 314:   end
endfunction

277行目でも使われていますが、kill_update_thread関数で同じチェックをしているので、
このif文の条件は必要無いと思います
 277:   if (this.update_thread != null) begin
 278:      this.kill_update_thread();
 279:   end

今回のVMM 1.2とOVM 2.1processの使っている部分は同じ使い方です。
selfでハンドルを獲得し、killでプロセスを強制終了しています。

検証、Verification、SystemVerilog