消費電力とクロック周波数のバランスを取るためのワード数の多いメモリの分解 - 2023.2 日本語

FPGA および SoC 用 UltraFast 設計手法ガイド (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 日本語

ワード数の多いメモリでは、RTL で RAM_DECOMP 合成属性を使用してメモリの構成を向上することにより、消費電力を削減できます。メモリ配列に RAM_DECOMP 属性を適用すると、メモリ ロジックは幅の広い配列のブロック RAM プリミティブにマップされます。消費電力とクロック周波数のバランスを取るため、CASCADE_HEIGHT 属性と RAM_DECOMP 属性を組み合わせて使用してカスケードを制御できます。この方法ではアドレス デコード ロジックがより多く必要になりますが、各読み出し操作でイネーブルになるブロック RAM の数が削減されるので、消費電力が削減されます。

次の図に、32x16K メモリの例を示します。

図 1. 32x16K メモリ

次の属性を適用するとします。
ram_decomp = "power"
cascade_height = 4

16 個の RAMB36E2 が推論され、メモリは次のように分解されます。

  • 基本のプリミティブは 32x1K です。
  • 4 つのブロック RAM がカスケード接続され、32x4K が作成されます。
  • これを 4 つ並列に構成することにより、ワード数が 16K のメモリが作成されます。
  • これらの出力がマルチプレクサーで結合され、出力データが作成されます。
    図 2. CASCADE_HEIGHT および RAM_DECOMP 属性を使用して生成された 32x16K メモリの構造例

次の RTL コードに、CASCADE_HEIGHT および RAM_DECOMP 属性の使用例を示します。

図 3. CASCADE_HEIGHT および RAM_DECOMP 属性を使用した 32x16K メモリの RTL コード例

ram_decomp = "power" 属性のみを適用すると、16 個の RAMB36E2 が推論され、メモリは次のように分解されます。

  • 基本のプリミティブは 32x1K です。
  • 8 つのブロック RAM がカスケード接続され、32x8K が作成されます。
  • これを 2 つ並列に構成することにより、ワード数が 16K のメモリが作成されます。
  • これらの出力が 2:1 マルチプレクサーで結合され、出力データが作成されます。
    図 4. RAM_DECOMP 属性を使用して生成された 32x16K メモリの構造例

次の RTL コードに、RAM_DECOMP 属性の使用例を示します。

図 5. RAM_DECOMP 属性を使用した 32x16K メモリの RTL コード例

RAM_DECOMP 属性のみを使用した場合、全体的な消費電力の削減量は RAM_DECOMP および CASCADE_HEIGHT 属性の両方を使用した場合に近いですが、一度にアクティブになるブロック RAM は 1 つのみです。4 ワード数のカスケード ブロック RAM チェーンの方が 8 ワード数のカスケード ブロック RAM チェーンよりも最大クロック周波数が向上します。

詳細は、 『Vivado Design Suite ユーザー ガイド: 合成』 (UG901)このセクションを参照してください。