関数はタスクと類似していますが、値が返される点が異なります。関数の構文は、次のとおりです。
function data_type function_name(inputs);
declarations;
statements;
endfunction : function_name
最後の function_name
はオプションですが、この方がコードが読みやすくなります。
関数は値を返すので、return 文を使用するか、関数名を記述しておく必要があります。
function_name = ....
タスクと同様、関数も自動またはスタティックにできます。
注意:
Vivado 合成ではすべての関数が自動として処理されますが、シミュレータによっては動作が異なります。関数をサードパーティ シミュレータで使用する場合は注意が必要です。