DSP および演算ブロックを最適に推論するためのコード記述 - 2023.2 日本語

Versal アダプティブ SoC ハードウェア、IP、およびプラットフォーム開発設計手法ガイド (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 日本語

AMD デバイスの DSP ブロックでは、次のようなさまざまなファンクションを実行できます。

  • 乗算
  • 加算および除算
  • コンパレータ
  • カウンター
  • 汎用ロジック

DSP ブロックは複数のレジスタ段を使用してパイプライン処理されており、全体的なリソースの消費電力を削減しながら高速動作が可能です。AMDでは、コードを完全にパイプライン処理して DSP58 にマップされるようにし、すべてのパイプラン段が使用されるようにすることを勧めします。この追加リソースが柔軟に使用されるようにするには、セット条件をファンクション内に含めないようにして、DSP48 に正しくマップされるようにします。

AMD デバイス内の DSP58 スライス レジスタには、リセットのみが含まれ、セットは含まれません。そのため、必要でない限り、DSP58 スライス内にインプリメント可能な乗算器、加算器、カウンター、またはその他のロジックの付近にセット (信号適用時の値が 1) は記述しないようにしてください。

多くの DSP デザインは、AMD アーキテクチャに適しています。アーキテクチャが最適に使用されるようにするには、アーキテクチャの機能について理解し、デザイン入力コードでこれらのリソースが活用されるようにする必要があります。

DSP58 ブロックでは、符号付き演算のインプリメンテーションが使用されます。AMDでは、リソース機能に適した最も効率的なマップを達成できるように、HDL ソースに符号付きの値を記述することをお勧めします。符号なしのバス値がコードで使用された場合でも、合成ツールでこのリソースを使用できる可能性はありますが、符号なしから符号付きへの変換があるため、そのコンポーネントの完全なビット精度を得られない可能性があります。

AMDでは、ターゲット デザインに多数の加算器が含まれる場合は、デザインを評価して、DSP58 スライスの前置加算器と後置加算器がより多く使用されるようにすることをお勧めします。たとえば、FIR フィルターを使用する場合は、複数の加算器を連続して使用する (加算器ツリー) よりも、加算器カスケードを使用してシストリック (対称) フィルターを構築できます。フィルターが対称の場合は、専用の前置加算器を使用して、ファンクションをより少ない数の LUT とフリップフロップに、また、より少ない数の DSP スライス (ほとんどの場合リソース量は半分) に統合できるかどうかを確認します。

これらの機能を知っておくと、トレードオフを前もって認識できるので、インプリメンテーションが最初からよりスムーズで効率的に実行されるように RTL コードを記述できます。AMDでは、ほとんどの場合、DSP リソースを推論することをお勧めします。