RW_ADDR_COLLISION
属性は特定のタイプの RAM に使用します。RAM がシンプル デュアル ポートで読み出しアドレスにレジスタが付いている場合、タイミングが最適になるように Vivado 合成でブロック RAM が推論され、書き込みモードは WRITE_FIRST
に設定されます。また、デザインで読み出されているアドレスに同時に書き込みが実行された場合に RAM の出力が不確定になるからです。RW_ADDR_COLLISION
はこの処理を制御します。
RW_ADDR_COLLISION
の値は次のとおりです。
- auto
- 前述のとおり、デフォルト動作です。
- yes
- バイパス ロジックが挿入されて、アドレスが書き込みと同時に読み出される場合に、入力値が出力に現れ、配列全体が WRITE_FIRST になるようにします。
- no
- タイミングおよび競合が問題とならない場合に使用します。書き込みモードが
NO_CHANGE
に設定され、消費電力が削減されます。
RW_ADDR_COLLISION
は RTL でのみサポートされます。