シミュレーションでのブロック RAM の競合チェックのディスエーブル - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: ロジック シミュレーション (UG900)

Document ID
UG900
Release Date
2023-10-18
Version
2023.2 日本語

AMD ブロック RAM メモリは完全なデュアル ポート RAM で、両方のポートでいつでもどのメモリ ロケーションにもアクセスできますが、同じアドレス空間に対して同時に読み出しおよび書き込みが実行されると、ブロック RAM アドレスの競合が発生します。これは、読み出しポートから読み出されるデータが有効ではないために発生します。

ハードウェアでは、読み出される値は、以前のデータ、新しいデータ、または以前のデータと新しいデータの組み合わせとなります。

シミュレーションでは、読み出された値が不明となるため X が出力されます。ブロック RAM の競合の詳細は、デバイスのユーザー ガイドを参照してください。

アプリケーションによっては、この状態を回避したり、設計を変更したりできないことがあります。その場合、ブロック RAM でこれらの違反が検出されないように設定できます。これは、ブロック RAM プリミティブのジェネリック (VHDL) またはパラメーター (Verilog) の SIM_COLLISION_CHECK 文字列で制御します。

次の表に、競合が発生したときのシミュレーション ビヘイビアーを制御する SIM_COLLISION_CHECK に使用可能な文字列オプションを示します。

表 1. SIM_COLLISION_CHECK 文字列
文字列 書き込み競合メッセージ 出力への X の書き込み
ALL あり あり
WARNING_ONLY あり なし。競合発生時にのみ適用され、同じアドレス空間への後続の読み出しで、出力に X が示される可能性があります。
GENERATE_X_ONLY なし あり
None なし なし。競合発生時にのみ適用され、同じアドレス空間への後続の読み出しで、出力に X が示される可能性があります。

インスタンス レベルで SIM_COLLISION_CHECK を使用すると、各ブロック RAM インターフェイスの設定を変更できます。