メモリを UltraRAM ブロックにマップ - 2023.2 日本語

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

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

UltraRAM は、1 つのクロックを使用する 2 つのポートを持つ 4Kx72 メモリ ブロックです。このプリミティブは、一部の AMD UltraScale+™ デバイスでのみ使用可能です。これらのデバイスでは、ブロック RAM リソースに加えて UltraRAM が含まれています。

デザインで UltraRAM を使用するには、次のいずれかの方法を使用します。

  • HDL のメモリ宣言に ram_style = "ultra" 属性を設定して合成で UltraRAM が推論されるようにする。
  • AMD XPM_MEMORY プリミティブをインスタンシエートする。
  • UltraRAM UNISIM プリミティブをインスタンシエートする。

下に示すコード例は、HDL 言語テンプレートに含まれる XPM メモリのインスタンシエーションです。ハイライトされている MEMORY_PRIMITIVE および READ_LATENCY が、メモリを UltraRAM に推論してリソース マップの効率を最適化するための主要なパラメーターです。

  • MEMORY_PRIMITIVE = "ultra" は、メモリを UltraRAM として推論するよう指定します。
  • READ_LATENCY は、メモリの出力に存在するパイプライン レジスタの数を指定します。

大型メモリは、複数の UltraRAM セルを行 x 列の構造に構成した UltraRAM マトリックスにマップされます。

マトリックスは、ワード数によって、1 列または複数列で作成できます。UltraRAM 列の高さのデフォルトしきい値は 8 ですが、CASCADE_HEIGHT 属性を使用して制御できます。

1 列と複数列の UltraRAM マトリックスの違いは、次のとおりです。

  • 1 列 UltraRAM マトリックスでは、ファブリック ロジックを使用せずにビルトインのハードウェア カスケードが使用されます。
  • 複数列 UltraRAM マトリックスでは、各列にビルトインのハードウェア カスケードが使用され、列どうしを接続するためにファブリック ロジックが使用されます。達成可能なクロック周波数を保持するため、パイプラインを追加する必要がある場合があります。これは、読み出しレイテンシを増加することにより制御されます。Vivado ツールでは、必要に応じてこれらのレジスタが UltraRAM に自動的に挿入されます。
    図 1. RTL コードでの UltraRAM の指定 (XPM を使用)

上記の例では、8 つの UltraRAM を使用する 32K x 72 メモリ構造が使用されています。UltraRAM の最大クロック周波数を向上するには、カスケード チェーンにさらにパイプライン レジスタを追加する必要があります。これは、読み出しレイテンシのパラメーター値を増加することにより達成されます。

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