タスク宣言の構文は、次のとおりです。
task name (ports); [optional declarations]; statements;
endtask
タスクには、次の 2 種類があります。
- スタティック タスク
- 宣言文に、次にタスクが呼び出されたときに前の値が保持されます。
- 自動タスク
- 宣言文には前の値は保持されません。
注意:
Vivado 合成ではすべてのタスクが自動タスクとして処理されるので、タスクを使用する際は注意が必要です。
多くのシミュレータでは、スタティックか自動かを指定しない場合のデフォルトがスタティック タスクなので、シミュレーションで不一致が発生する可能性があります。タスクを自動またはスタティックに指定する方法は、次のとおりです。
task automatic my_mult... //or
task static my_mult ...