You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Under some narrow conditions, an X shows up when simulating multiple transactions that have multiple outputs that are writing to output queues at the same time:
Given two or more transactions that are both have work to do for overlapping periods of time (e.g., during scratchpad to output queue writeback)
An X will be generated when arbitrating between the two transactions
This is because the ready line of the ioArbiter is left unconnected. This gets realized as a connection to an uninitialized flip flop. In 2-state simulation (or in an FPGA or on an ASIC) this doesn't matter, but in 4-state simulation, this starts as an X and will be used to arbitrate between the two transactions only when both transactions are both valid (this rarely happens apparently).
It's a weird situation where either one or zero is fine, but X is not. 🤷♀️
This should still be fixed in DANA's Transaction Table nonetheless.
This may be worth filing an issue on Chisel3 as this is really a problem if you create an RRArbiter and don't connect it's ready line. This'll work in 2-state (kind of oddly) and in taped-out designs, but will barf in 4-state. It's not clear to me if 4-state simulation is even supposed to be consistent with 2-state simulation.
The text was updated successfully, but these errors were encountered:
Under some narrow conditions, an
X
shows up when simulating multiple transactions that have multiple outputs that are writing to output queues at the same time:X
will be generated when arbitrating between the two transactionsThis is because the
ready
line of theioArbiter
is left unconnected. This gets realized as a connection to an uninitialized flip flop. In 2-state simulation (or in an FPGA or on an ASIC) this doesn't matter, but in 4-state simulation, this starts as anX
and will be used to arbitrate between the two transactions only when both transactions are both valid (this rarely happens apparently).It's a weird situation where either one or zero is fine, but
X
is not. 🤷♀️This should still be fixed in DANA's Transaction Table nonetheless.
This may be worth filing an issue on Chisel3 as this is really a problem if you create an
RRArbiter
and don't connect it's ready line. This'll work in 2-state (kind of oddly) and in taped-out designs, but will barf in 4-state. It's not clear to me if 4-state simulation is even supposed to be consistent with 2-state simulation.The text was updated successfully, but these errors were encountered: