The following sequence will occur for each VBUSM write which is sent to the source interface:
- RINGACC extracts ring number from incoming write transaction address
- RINGACC looks up ring state using ring number
- RINGACC calculates effective write address using ring base + ring_index
- RINGACC re-evaluates pending bit for ring
- RINGACC increments hardware index and hardware occupancy for ring
- RINGACC allocates cid from scoreboard and places original crouteid, cid, and ring number into scoreboard
- RINGACC pushes altered caddress, cid and unaltered remainder of command attributes to output FIFO (note routeid is not included)
At a later time when write status returns:
- RINGACC recovers original cid, crouteid, and ring number from scoreboard
- RINGACC increments software index and occupancy for ring
- RINGACC pushes restored srouteid, sid, and unaltered write status to output write status FIFO