Vivado IP パッケージャーでは、HDL ファイルのポート記述内に IP ポートが含まれている必要があり、ユーザーが HDL で定義したカスタム関数はサポートされません。
Vivado IP パッケージャーでは、必要な数式を作成するために標準の算術演算子と論理演算子がサポートされます。複雑な数式をサポートするため、XPATH
関数がサポートされます。次に、サポートされる XPATH
関数を示します。
- number max(number, number)
- number min(number, number)
- number sum(number, number)
- number log(base number, number)
- number pow(number, exp number)
- number floor(number)
- number ceiling(number)
- number round(number)
- number abs(number)
- boolean not(boolean)
- boolean true()
- boolean false()
XPATH
およびサポートされる関数の詳細は、W3Cx ウェブサイトを参照してください。
たとえば、次の Verilog コードでは、出力ポートが宣言されており、幅は ceil_log2
パラメーターの max_count
関数呼び出しから定義されています。この関数では、入力の底が 2 の対数が計算され、対数の結果以上で最小の整数が返されます。
output [ceil_log2(max_count)-1:0] count;
この関数を IP パッケージャーが使用できる式に変換するには、カスタム関数を XPATH
関数に置き換えます。この変更は、HDL ではカスタム関数がまだ使用されるので HDL では実行されませんが、IP パッケージャーでは正しい値を計算するため別のメカニズムが使用されます。次の XPATH
式は、上記のカスタム関数と同じ結果になります。
ceiling(log(2, $max_count))-1
この式では、まず XPATH log()
関数に底 2 と max_count
パラメーターの値が代入されます。その後 log()
関数の出力が ceiling()
関数に代入され、log の結果以上で最小の整数が返されます。最後に、ceiling の結果から 1 が引かれます。
カスタム IP のポートに XPATH
を設定する方法の詳細は、[Ports and Interfaces] ページを参照してください。