06 · Latency tolerance without lost order
AXI scoreboards need per-ID order, not one global FIFO.
AXI permits useful concurrency and response reordering while preserving required order within the applicable ID and destination relationship.
Ordering-domain explorer
Cross-ID reordering can be legal while same-ID reversal is not.
- 01Request 0ID 3 · A
Queue A at the tail of ordering domain ID 3.
- 02Request 1ID 8 · B
Queue B independently in ordering domain ID 8.
- 03Request 2ID 3 · C
C follows A in the same ID 3 queue.
- 04ResponseID 8 · B
B may complete before A because the IDs differ.
- 05ID 3 responsesA then C
The head of the ID 3 queue must complete first.
Queue A at the tail of ordering domain ID 3.
- Different IDs
- May reorder
- Do not impose a global response FIFO.
- Same ordering domain
- Preserve order
- Compare against the domain's queue head.
- Interconnect
- May extend IDs
- Master identity can be appended and later removed.
- End of test
- Zero outstanding
- Every request must resolve, abort or be accounted for.
The scoreboard should accept every architecturally legal completion order and reject only real ordering, association, duplication, loss or data errors.
Observe
Track accepted requests by channel, ID, destination, burst shape and reset epoch; observe responses with their RID or BID.
Decide
Use a queue per ordering domain, plus a transaction map when the interconnect extends, remaps or routes IDs.
Failure
A global FIFO rejects legal cross-ID reordering, or an associative lookup accidentally allows same-ID responses to reverse.
Prove
Constrain comparison to legal ordering domains, check unmatched and duplicate responses, drain all outstanding work and cover reorder depth across IDs.
Define the ordering key before choosing a data structure
An ID is part of the ordering domain, not automatically a globally unique transaction handle. The complete key depends on the manager, direction, destination and interconnect transformations.
- Keep read and write response bookkeeping separate.
- Use the response ID to choose a queue, then compare the queue head.
- Track every beat within the selected burst before retiring the request.
- Model any interconnect-added master bits and verify they are stripped on the correct return path.
| Structure | Use | Characteristic mistake |
|---|---|---|
| One global FIFO | Only a globally ordered interface | Rejects legal AXI cross-ID reordering. |
| Queue per ID/domain | Preserve order inside each domain | Needs a complete routing key. |
| Associative transaction map | Find independent outstanding work | Can hide illegal same-ID reversal if used alone. |
| Age or deadline map | Progress and timeout policy | Must distinguish legal latency from starvation. |
Make reordering explicit in the scoreboard
The pseudocode below uses one queue for each response ordering key. A production model also retains expected beat data, responses, destination and reset epoch.
- Report unknown IDs, empty-queue responses, duplicate terminal beats and missing responses separately.
- Do not retire a burst until its final response beat is accepted.
- If the architecture permits additional reordering within an ID, encode that exact rule rather than weakening all comparisons.
on_request(req):
key = {direction, manager, destination, req.id, reset_epoch}
expected[key].push_back(predict(req))
on_response(rsp):
key = {direction, manager, destination, rsp.id, reset_epoch}
require expected.exists(key) and !expected[key].empty()
exp = expected[key].front()
compare_current_beat(exp, rsp)
if rsp.is_last_accepted_beat:
expected[key].pop_front()
end_of_test:
require every expected queue is emptyPrevent reset and ID reuse from creating aliases
Reset may discard work in one scope while another fabric segment remains alive. A checker needs an explicit flush, abort or epoch policy rather than silently clearing every map.
- Tag expected work with a reset epoch when late responses can remain visible.
- Delay ID reuse or reject stale-epoch responses according to the product contract.
- Cover maximum outstanding depth, repeated IDs, mixed destinations and long response inversions.
- At end of test, classify every nonempty queue as a DUT loss, legal outstanding work or intentional reset abort.
Explain it out loud
Interview reasoning checkpoints
Yes. Different IDs allow independent ordering domains, so a later request on another ID can complete first.
- The response ID associates the result with its request stream.
- A global FIFO would report a false failure.
- The scoreboard still checks data, response, beat count and legal routing.
This tests whether the candidate understands why AXI has IDs and how a latency-tolerant checker uses them.
Answering that any order is legal and forgetting same-ID constraints.
Not if that lookup ignores order. Same-ID transactions in the applicable ordering domain must be compared in the required order, normally through a queue.
- Both transactions share the same visible identifier.
- Returning the second first can violate the protocol even if its data matches.
- The checker needs both association and order, not one of them.
This exposes scoreboards that are flexible enough to accept a real DUT bug.
Searching all expected items for any payload match and removing whichever happens to compare.
It can append manager identity or routing context so overlapping source IDs remain unique inside the merged fabric, then remove that extension on the response path.
- Two managers may legally issue the same local ID.
- The subordinate-facing ID must retain enough context to return each response correctly.
- Verification checks extension, routing, ordering and restoration together.
This connects pin-level protocol knowledge to a multi-port interconnect implementation.
Assuming an ID is globally unique across all managers without inspecting the fabric's transformation.
