Open tymcauley opened 5 years ago
Sorry for the slow reply.
Yeah, you're absolutely correct. TLMasterModel
has always been a bit rickety compared to AXI, perhaps this is one reason why. I'll assign fixing this to myself. The model should really be tested more.
No problem, thanks for the confirmation! Let me know if I can do anything to help out. I can certainly submit a PR to fix these logical bugs in the TLMasterModel
trait, but since I'm not so familiar with the code base, I don't know if I'll really be able to add new tests (which it sounds like you'd like to do).
In the TLMasterModel Trait, there are
tlWrite*
andtlRead*
functions for each TileLink channel. All of them contain logic that looks something like this:I'm a bit confused by the line
while(peek(memTL.a.ready) != BigInt(0)) {
. That would suggest the logic of this function looks something like this:valid
.ready
to deassert.valid
.Since the TileLink transaction fires when both
ready
andvalid
are high, shouldn't we wait forready
to assert, not deassert? Should that line readwhile(peek(memTL.a.ready) == BigInt(0)) {
orwhile(peek(memTL.a.ready) != BigInt(1)) {
?