HDL のカスタム関数 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: カスタム IP の作成とパッケージ (UG1118)

Document ID
UG1118
Release Date
2023-11-06
Version
2023.2 日本語

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] ページを参照してください。