RTL Design #42 · 2026-11-04 · Packet arbitration · Medium · about 15 min
A bus lock that outlasts the packet
pkt_arb3 shares a bus between three requesters that send multi-beat packets. Each cycle it grants at most one of them, combinationally:
- When the bus is free, the lowest-numbered requester that is asking wins.
- A requester that wins keeps the grant, even if a lower-numbered one starts asking, until the cycle where
lastis high.lastis only high on a cycle that has a grant, and means the granted requester is sending its final beat. - The cycle after
last, the bus is free again, even if the same requester is still asking with its next packet. - A requester holds
reqhigh from the first beat of a packet to its last beat.
The current design lets a requester with back-to-back packets keep the bus while requester 0 waits. Fix arbiter.sv.
Write and run your answer in the browser. The hidden tests check it, and it’s free.