メモリのワード数が 2 のべき乗でない場合の RAMB 使用率の最適化 - 2022.1 日本語

Vivado Design Suite ユーザー ガイド: デザイン解析およびクロージャ テクニック (UG906)

Document ID
UG906
Release Date
2022-05-04
Version
2022.1 日本語

次のテスト ケースは、合成ツールで生成されたログ ファイルを見て、ツールをより良い方法でガイドするために RTL に改善を加えることができるかどうかを確認するために使用できます。次の VHDL コードの抜粋は、ワード数 40K、幅 36 ビットのメモリを記述したものです。アドレス バスには 16 ビット必要です。

図 1. 40K x 36 ビットのメモリ: RTL の例

合成後に report_utilization コマンドを使用すると、次の図に示すように、合成ツールで 72 個のブロック RAM が生成されたことがわかります。

図 2. 使用量レポートに記載された合成で生成されたブロック RAM の数

40K x 36 メモリに推論されるはずのブロック RAM の数を計算すると、ブロック RAM の数は合成ツールで生成された数よりも少なくなります。

このメモリ構成に必要なブロック RAM の数を手動で計算すると、次のようになります。

  • 40K x 36 は、(32K x 36) と (8K x 36) の 2 つのメモリに分けることができます。
  • 読み出しおよび書き込み操作のためにいずれかのメモリをイネーブルにし、適切な出力データを選択するため、MSB アドレス ビットに基づくアドレス デコーダーが必要です。
  • 32K x 36 メモリは、32 個の RAMB を使用してインプリメントできます (4 * 8 * (4K x 9))。
  • 8K x 36 メモリは、8 個の RAMB を使用してインプリメントできます (8 * (1K x 36))。
  • 40K x 36 メモリを最適にインプリメントするには、合計 40 個の RAMB が必要です。

最適な数の RAMB が推論されたかどうかを確認するには、合成ログ ファイルを開き、各メモリがどのように構成されているか、どのように FPGA プリミティブにマップされているかを示すセクションを確認します。次の図に示すように、メモリのワード数は 64K として処理されています。これは、ワード数が 2 のべき乗でない場合は最適な方法で処理されないことを示しています。

図 3. 合成ログ ファイルの RAM の構成とマップに関するセクション

合成ツールでは、64K x 1 (カスケード機能を使用した 2 個のブロック RAM) が使用され、36 ビット データであるためその構造が 36 個があります。つまり、ブロック RAM の数は合計で 36 x 2 = 72 個になります。次の図に、合成で最適な数の RAMB が推論されるよう強制するコードの抜粋を示します。

図 4. 40 K x 36 ビットのメモリ: 最適化された RTL の例