lib.fifo: work around Yosys issue with handling of \TRANSPARENT.
authorwhitequark <cz@m-labs.hk>
Fri, 20 Sep 2019 19:38:42 +0000 (19:38 +0000)
committerwhitequark <cz@m-labs.hk>
Fri, 20 Sep 2019 19:54:27 +0000 (19:54 +0000)
commit52345983b5c5769425d799d3b8d5d971e069778c
tree8656dc0f4bae7058daf950ec80bb62f46b534c6d
parent53b3468780c349d6a17572cfe617495fa3b0a281
lib.fifo: work around Yosys issue with handling of \TRANSPARENT.

Because of YosysHQ/yosys#1390, using a transparent port in AsyncFIFO,
instead of being a no-op (as the semantics of \TRANSPARENT would
require it to be in this case), results in a failure to infer BRAM.

This can be easily avoided by using a non-transparent port instead,
which produces the desirable result with Yosys. It does not affect
the semantics on Xilinx platforms, since the interaction between
the two ports in case of address collision is undefined in either
transparent (WRITE_FIRST) or non-transparent (READ_FIRST) case, and
the data out of the write port is not used at all.

Fixes #172.
nmigen/lib/fifo.py