UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 21239

7.1i UniSim、SimPrim、シミュレーション - CLKA で CLKB に対してブロック RAM (セットアップ) メモリ競合が発生する (アドレスの競合)

説明

キーワード : RTL, RAMB4, RAMB16, violated, Verilog, VHDL, BRAM, 違反

重要度 : 標準

概要 :
RTL シミュレーションを実行すると、デュアル ポート ブロック RAM で次のようなエラーが発生します。

"Memory Collision Error on RAMB16_S36_S36:<instance_name> at simulation time <time> ns
A write was requested to the same address simultaneously at both Port A and Port B of the RAM. The contents written to the RAM at address location <address> (hex) of Port A and address location <address> (hex) of Port B are unknown.''

これらの違反は、1 つのポートであるアドレスにデータを書き込み、もう 1 つのポートで同じアドレスから読み出す場合に発生します。 これは、読み出しポートのリード データが無効であるためです。 ハードウェアでは、読み出される値は古い値、新しい値、またはその組み合わせです。 シミュレーションの場合、読み出される値が不明なため、出力が X になります。 詳細は、次のサイトから『Virtex-II ユーザー ガイド』を参照してください。[FPGA デバイス ファミリ]→[VIrtex-II]→[Virtex-II Platform FPGA ユーザー ガイド]を選択します。
http://www.xilinx.co.jp/xlnx/xweb/xil_publications_index.jsp?category=User+Guides

このユーザーガイドの
[デザインに関する注意事項]→[ブロック SelectRAM メモリの使用 ]→[同期デュアル ポートおよびシングル ポート RAM]→[競合の解消]を参照してください。

ソリューション

競合は、できる限り回避する必要があります。 1 つのポートにアドレスが書き込まれている場合、もう 1 つのポートの同じアドレスから読み出すことはできません。 ただし、アプリケーションによってはこのような状況を回避できません。 2 番目のポートに読み込まれた値をデザインで使用していなければ、この警告メッセージを無視しても問題ありません。

ISE 7.1i から、SIM_COLLISION_CHECK という新しいジェネリック/パラメータが使用できるようになりました。 次の値は、SIM_COLLISION_CHECK に設定できます。

ALL
競合がある場合、競合メッセージを出力し、出力に X を出力します。

WARNING_ONLY
競合がある場合は、メッセージのみ出力し、X を出力しません。

GENERATE_X_ONLY
競合がある場合、出力に X を出力します。 メッセージは出力されません。

NONE
競合がある場合、メッセージも出力への X も出力されません。

SIM_COLLISION_CHECK パラメータ/ジェネリックは、インスタンスのレベルで適用できます。 これにより、各ブロック RAM インスタンスの設定を変更できます。

この属性は、デュアル ポート RAMB16 を使用したすべての反復実行でサポートされます。

インスタンス例については、ISE に含まれている HDL 言語テンプレートを参照してください。
AR# 21239
日付 05/04/2012
ステータス アーカイブ
種類 一般
このページをブックマークに追加