AMBA AXI · Module 6
AxID
AXI transaction IDs — AWID/ARID tagging, BID/RID pairing, the same-ID ordering rule, different-ID reordering, and how interconnects route responses and remap ID width.
AxID is the small field that makes AXI's concurrency work: a transaction identifier the manager attaches to each request, which the response carries back. It does two jobs at once — it scopes ordering (same-ID transactions complete in order; different-ID ones may reorder) and it lets the interconnect route responses to the right manager. This chapter covers the ID semantics (AWID/BID, ARID/RID), the same-ID/different-ID rule that's the heart of out-of-order traffic, and how interconnects use and remap IDs across ports. The full ordering model (Module 9) and outstanding-transaction depth (Module 8) build directly on what AxID establishes here.
1. The Transaction Tag
AxID is a tag the manager puts on a transaction's address: AWID on a write, ARID on a read. The response carries the matching tag back — BID on the write response, RID on every read-data beat. So a manager that issues several transactions can tell which response belongs to which request by matching the returned ID to the one it sent.
That pairing is what makes outstanding transactions usable: without IDs, a manager couldn't tell whose response is whose when several are in flight, so it would have to wait for each to finish before issuing the next (serializing itself). With IDs, responses can come back tagged and the manager sorts them — the foundation of concurrency.
2. Same-ID Ordering, Different-ID Freedom
The ID's ordering rule is the single most important thing about it:
- Same
AxID→ ordered. Transactions issued with the same ID must complete in the order they were issued. A manager that needs A-before-B gives them the same ID. - Different
AxID→ may reorder. Transactions with different IDs have no ordering guarantee between them — the subordinate/interconnect may complete them in any order (out-of-order completion).
So the ID is how a manager expresses ordering requirements: shared ID means "keep these in order"; distinct IDs means "these are independent, reorder freely for performance." This is the lever behind out-of-order completion (Chapters 2.4/5.2) — and the reason a high-throughput master uses multiple IDs (to allow reordering) while a strictly-ordered one may use a single constant ID.
3. How the Interconnect Uses IDs — Routing and Width Remapping
IDs do double duty: besides ordering, they're how the interconnect routes responses back to the right manager. When several managers share a subordinate, the interconnect must remember which manager issued each transaction so it can return the response there. It does this by extending the ID: on the way to the subordinate, it appends bits identifying the source manager port, producing a wider ID that's unique across managers; on the response, it uses those appended bits to route back, then strips them so the manager sees its original ID.
Two consequences: the subordinate-side ID width is larger than the manager-side width (it must hold the appended routing bits), and a subordinate may see more distinct IDs than any single manager uses. Conversely, the ordering rule is scoped to the full ID seen at each point: same-ID-from-the-same-manager stays ordered, but two managers' same-numbered IDs are different full IDs after remapping, so they're (correctly) independent.
4. Read and Write ID Spaces Are Separate
AWID and ARID are independent ID spaces: a write with AWID=3 and a read with ARID=3 are not related by their shared number — the write-ordering rule applies among writes, the read-ordering rule among reads, and the two channels are independent anyway (Chapter 2.4). So sharing a numeric value between a read ID and a write ID implies no ordering between that read and that write.
// Conceptual — ID semantics in one place.
// Pairing: BID == the write's AWID; RID == the read's ARID (every beat).
// Ordering: same AxID → complete in issue order
// diff AxID → may complete out of order
// Spaces: AWID and ARID are separate — same number ≠ related
// Routing: interconnect appends source-port bits (slave-side ID is wider),
// routes the response back by those bits, strips them for the master.5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
AxID is the transaction tag that does two jobs. Pairing/routing: AWID/ARID tag a request and the matching BID/RID come back, so a manager pairs responses to requests when many are outstanding, and an interconnect routes each response to the issuing manager. Ordering: same-AxID transactions complete in issue order; different-AxID transactions may reorder — so the ID is how a manager chooses ordering (one ID to serialize, many IDs to allow reordering for throughput). Read (ARID) and write (AWID) IDs are separate spaces — a shared number implies nothing.
Interconnects remap ID width, appending source-port bits so the subordinate-side ID is wider and unique across managers, then routing responses back by those bits and restoring the original ID — which is why subordinate IDs are wider and where multi-master mis-routing bugs live. Debug ID problems as either response mis-pairing (routing/remap) or ordering surprises (check whether transactions share an ID); verify with a per-ID-scoped scoreboard that allows different-ID reordering but flags same-ID violations. Next: AxLOCK and AxCACHE — the exclusive-access and memory-attribute encodings.
10. What Comes Next
You understand how IDs route and order traffic; next, the access-attribute signals:
- 6.4 — AxLOCK & AxCACHE (coming next) — the lock (exclusive) and cache/memory-attribute encodings.
- 6.5 — AxPROT, AxQOS & AxREGION (coming soon) — protection, QoS, and region signals and their system use.
Previous: 6.2 — AxBURST. For the broader protocol catalog, see the AMBA family overview doc.