Vengineerの妄想(準備期間)

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

fork/join


Verilog HDLでは、fork/joinという並列プロセスを起動するための機能がサポートされています。
SystemVerilogでは加えて、fork/join_anyとfork/join_noneが追加されました。
  ・fork/join_any  : どれか一つのプロセスが終了したら、fork部分が終了
  ・fork/join_none : どのプロセスが終了しなくても、fork部が終了。
                       つまり、子プロセスを起動するのに使えます。

で、この2つのfork/joinはVeraから取り入れられたのだと思います。
昔、SynopsysでT氏からVeraの半日トレーニングを受けたとき、出てきました。
確か、そのとき、受講者は私だけ(他にSynopsys社内のエンジニアが一人)でした。

ちなみに起動したforkの終了を待つのが、
  wait fork;
です。
起動したforkを強制終了するのが、
  disable fork;
です。

このfork/join関連は、検証では結構使われるんですけどね。
みなさん、どうでしょうか?

検証、Verification、SystemVerilog