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

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

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

UltraRAM は、1 つのクロックを使用する 2 つのポートを持つ大型のメモリ ブロックです。UltraRAM は、ブロック RAM リソースに加えて含まれています。UltraRAM は、4Kx72、8Kx36、16Kx18、および 32Kx9 に設定できます。

デザインで 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)このセクションを参照してください。