amaranth icon indicating copy to clipboard operation
amaranth copied to clipboard

Memory with async read ports can synthesize to a BRAM on Xilinx platforms

Open nmigen-issue-migration opened this issue 6 years ago • 0 comments

Issue by whitequark Friday Sep 20, 2019 at 20:13 GMT Originally opened as https://github.com/m-labs/nmigen/issues/218


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.

nmigen-issue-migration avatar Sep 20 '19 20:09 nmigen-issue-migration