Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RRArbiter Unconnected X Generation #51

Open
seldridge opened this issue Sep 18, 2018 · 0 comments
Open

RRArbiter Unconnected X Generation #51

seldridge opened this issue Sep 18, 2018 · 0 comments
Assignees

Comments

@seldridge
Copy link
Collaborator

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.

@seldridge seldridge self-assigned this Sep 18, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant