Altifigence Academy

13 / 24 · Concept

Acceptance events and stability during stalls

Assign source and sink responsibilities and preserve stalled payloads.

A transfer requires both signals at an edge

Valid promises that the source has a payload to offer. Ready promises that the sink can accept one at the current edge. A rising edge with both signals high transfers exactly one transaction. Payload includes every companion field, such as tag, operation, or address. A valid signal held high can mean one stalled item or a sequence of items transferring on consecutive ready edges.

When valid is high and ready is low, keep valid and the complete payload stable. Our contract allows only reset or an explicit flush to cancel that obligation. If a source waits for ready before asserting valid while a sink waits for valid before asserting ready, both can wait forever. Offer a prepared item independently of ready. These handshake and stability principles are documented in Arm's AMBA AXI specification, section A3. This small stream is not an implementation of the complete AXI interface.

EdgevalidreadyPayloadTransfer
010tag4,y9None
110tag4,y9None
211tag4,y9tag4 once
311tag5,y12tag5 once
401IrrelevantNone

Tag4 must remain unchanged through the stall. After its edge-2 transfer, the source may present tag5. Ready alone at edge 4 does not create a transaction. Counting valid alone can lose inputs; reading data alone can duplicate outputs.

These rules assume one clock domain. They do not solve clock-domain crossing or metastability. Count accepted inputs and delivered outputs from their respective handshakes. Without reset, accepted minus delivered must equal internal outstanding work. Queue accepted tags and remove them only on delivery. Combine that accounting with stalled-payload checks to detect loss, duplication, and identity changes even when arithmetic values happen to match.

Try it yourself

Valid is high on four edges in the table. How many transfers occur, and which tags transfer? Which rule is violated if y changes to 10 at edge 1?

Read the explanation

Two transfers occur, tags 4 and 5 at edges 2 and 3. Changing y at edge 1 violates payload stability for the transaction stalled at edge 0.

Your choice applies to this browser. Change it any time using the footer.