Skip to content

Why source.ready := ingress.flit.ready && beat === 1.U ? #1553

Answered by jerryz123
JL102 asked this question in Q&A
Discussion options

You must be logged in to vote

Most of it makes sense to me, but I'm stuck on source.ready := ingress.flit.ready && beat === 1.U. I understand what it means -- "Mark that the module is ready to retrieve data from source, when the ingress is ready to retrieve data and the beat register === 1". But why 1 and not 0?

The example assumes packets have fixed size of 2 flits. So a packet can only be dequeued from the source queue when the seconf flit fires (ingress.flit.ready && beat === 1.U).

This bit of logic is converting each source message into a 2-flit packet, so each source.fire has to generate 2 ingress.flit.fire.

EDIT: second question: Why is there a 2-long Queue for the ingress/source logic, but no Queue for the e…

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@JL102
Comment options

Answer selected by JL102
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants