Verification Engineerの戯言 : SystemVerilogの世界へようこそ
SystemVerilogには、processというクラスがあります。
今週は、このprocessについて、4連続でアップしていきます。
IEEE 1800-2005では、このprocessクラスは、つぎのように宣言されています(実装は別です)。
class process; enum state { FINISHED, RUNNING, WAITING, SUSPENDED, KILLED }; static function process self(); function state status(); function void kill(); task await(); function void suspend(); task resume(); endclass
各プロセスに対するアクセスをする前に、かならずプロセスのハンドルをself関数で獲得する必要があります。
process pid; pid = process::self();
self関数は、宣言の最初にstaticがついているのでクラス関数になります。
なので、process::self()のようにクラス名(process)の後に::を付け、
その後に関数名(self())が続きます。
なので、process::self()のようにクラス名(process)の後に::を付け、
その後に関数名(self())が続きます。
各プロセスは、状態を持ちます。この状態をstateで表現しています。
プロセスの状態を知りたいときは、status関数を呼びます。
プロセスの状態を知りたいときは、status関数を呼びます。
各状態は、次のようになります。
FINISHED :プロセスが正常終了した RUNNING :プロセスが現在、動作中である(ブロッキングされていない) WAITING :プロセスがブロッキング文で待ち状態である SUSPENDED :プロセスが停止中である(復帰を待っている状態) KILLED :プロセスが強制的に終了した(強制終了、あるいは、disableが実行された)
(その2)に続く。
検証、Verification、SystemVerilog