nmigen
nmigen copied to clipboard
Memory with async read ports can synthesize to a BRAM on Xilinx platforms
Due to what is arguably a bug in the Xilinx toolchain (since it synthesizes perfectly well-formed behavioral Verilog to something that has different behavior), any Memory
with an asynchronous read port (often a SyncFIFO
) can synthesize to a BRAM in an unpredictable way. To avoid this, a platform-specific pass should insert an attribute for any memory with asynchronous read ports that makes sure it ends up as distributed RAM.
@nakengelhardt tried to fix this in oMigen in https://github.com/m-labs/migen/pull/105, but oMigen does not have the infrastructure required to fix this properly.