Open ekiwi opened 3 years ago
Update
In my Chisel source, changing:
io.rdt := Cat(mem.map(_.read(wordAlignedAddress)))
to
io.rdt := Cat(mem.map(_.read(wordAlignedAddress, true.B)))
seems to fix the problem.
This is the same issue as #840 and #913. TLDR: the mport
interface effectively has no spec aside from how the current implementation works, and many patterns that use non-wires as addresses do not work.
The current reliable workaround is to use store the address in an intermediate wire.
What is the current behavior?
I have this Chirrtl file which is a simplified version of one of my Chisel designs:
Somehow the read port inference fails for all but the last read port. The read ports for memory 0-2 all get their enabled field set to
UInt(0)
which results in their address being stuck at zero in the final Verilog output.After RemoveChirrtl:
What is the expected behavior?
.en
should beUInt(1)
for all four read ports.@albert-magyar : is this a known bug?