AR# 34541

Spartan-6 FPGA ブロック RAM デザイン アドバイザリ - 9K ブロック RAM の Simple Dual Port (SDP) のデータ幅制限

説明

SDP モードの Spartan-6 FPGA の 9K ブロック RAM では、すべてのポート幅の組み合わせがサポートされるわけではありません。

ソリューション


問題の概要

ISE 12.1 よりも前のバージョンでは、Spartan-6 FPGA の RAMB8BWER を RAM_MODE=SDP に設定して、片方のポートにはどのデータ幅でも使用できました。予測されないハードウェア問題があったため、現在このモードでは、両方のポートで 36 ビットのデータ幅しかサポートされません。両方のポートを 36 ビットに設定 (DATA_WIDTH_A == DATA_WIDTH_B == 36) できないと、ブロック RAM からの読み出しでデータ破損が発生したように見えるファンクション エラーになります。12.1 以前のリリースでは、ソフトウェアでこの動作に関する警告メッセージが表示されず、すべてのポート幅が SDP モードで設定できてしまいます。

影響のあるコンポーネント

RAM_MODE が SDP に設定された RAMB8BWER で、WIDTH_A と WIDTH_B の両方または片方が 36 に設定されていない場合に影響があります。BRAM_SIZE="9Kb" で片方のポートが 18 ビットよりも大きく、もう片方が 18 ビット以下の場合の RAM_SDP_MACRO でも同じ問題が発生します。現在のところ、XST でこのような状況にならないようにできかどうかを検討中です。この問題に関するその他の合成ツールの動作については、未確認です。

ソフトウェア バージョン情報
  • ISE Design Suite 11.5 以前 - エラー メッセージも警告メッセージも表示されません。シミュレーション動作は問題ないように見えます。ハードウェアは読み出し中にファンクション エラー (データ破損) になる可能性があります。
  • ISE Design Suite 12.1 以降 - デザイン ルール チェック (DRC) が UNIMacro、UNISIM、マップ、物理 DRC に追加され、無効な設定が検出されるとエラー メッセージが表示されるようになっています。

回避策

RAM_MODE が SDP に設定された RAMB8BWER をインスタンシエートする場合は、A ポートと B ポートの両方を 36 に設定する必要があります。設定できない場合は、次の回避策を使用してください。
  • 両方のポートが 18 ビット以下の場合、RAMB8BWER を RAM_MODE=TDP にして、SDP のように接続します。
  • 書き込みポートが 18 ビット以下の場合、両方のポート幅を 36 ビットの RAM_MODE=SDP に設定でき、バイト ライト イネーブルを使用して書き込みに最適なバイト幅を選択できます。
この方法が一番エリアおよびパフォーマンスへの影響が少ないので、よく使用されます。これもできない場合は、RAMB16BWER を使用します。
  • 読み出しポートが 18 ビット以下で書き込みポートが 36 ビットの場合、パフォーマンスが必要であれば RAMB16BWE の使用をお勧めします。ブロック RAM リソースで Low の場合、RAMB8BWER は両方のポートを 36 ビットに設定した SDP モードで使用できますが、出力は MUX (マルチプレクサ) を介して、最適なワードをインデックスとして付ける必要があります。



マニュアル

The 『Spartan-6 FPGA ブロック RAM リソース ユーザー ガイド』 (UG383) の表 1 ~ 3 にポート幅の組み合わせがすべて記述されています。この問題の詳細はこのガイドと Spartan-6 FPGA ブロック RAM に関するその他の情報を参照してください。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
32651 Spartan-6 - ISE Design Suite 11 で Spartan-6 FPGA を使用する場合の既知の問題 N/A N/A
34856 Spartan-6 FPGA のデザイン アドバイザリのマスター アンサー N/A N/A

関連アンサー レコード

AR# 34541
日付 11/15/2012
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス
ツール 詳細 概略