AMBA AXI · Module 20
Common Mistakes Checklist
The recurring AXI mistakes to never make — across design, verification, debugging, integration, and interviews — distilled into one final checklist: the handshake deadlock, compliance-mistaken-for-correctness, the ordering-rule reversal, the unhandled corner, and the confident-wrong answer, with the single principle behind avoiding each.
This is the final chapter, and the most valuable list: the recurring AXI mistakes to never make. Across the whole curriculum — design, verification, debugging, integration, interviews — a small set of mistakes recur far more than any others, and avoiding just these prevents the majority of real AXI failures. This checklist gathers them: the handshake deadlock (VALID waiting on READY), mistaking compliance for correctness, reversing the ordering rule, the unhandled corner case, the unverified checks, the integration glue, and the confident-wrong interview answer. Each has appeared in its module's "misconceptions" callout; here they're consolidated as the one list to internalize. If you remember nothing else from the curriculum, remember not to make these — they're where AXI work most often goes wrong.
1. The Design Mistakes
The recurring design mistakes. #1 — VALID waits for READY (the deadlock rule): gating VALID (or its payload) combinationally on READY — the single most common fatal AXI RTL bug; drive VALID independently and hold it. Coupling reads and writes into one FSM, serializing the independent channels — keep them separate. Ignoring WSTRB byte-by-byte, clobbering neighbors on partial writes. Mis-timing LAST (not on beat LEN) or emitting more than one B per burst. Forgetting reset — VALIDs not low during reset, registers uninitialized. These are the design-checklist (20.1) failures; the deadlock rule is by far the most important — it's the mistake that, made once, hangs the bus.
2. The Verification Mistakes
The recurring verification mistakes. Mistaking compliance for correctness — thinking a clean protocol checker means the design is verified; it proves legal traffic, not right behavior (you need a scoreboard). Skipping coverage closure — a clean check run on unexercised traffic proves nothing; confirm the scenarios were hit. Not verifying the checks themselves — trusting an unverified monitor (the scoreboard depends on it) or a vacuous assertion (one that can't fire). Skipping negative testing — never exercising the error paths, which fail in the field. These are the verification-checklist (20.2) failures; the deepest is compliance ≠ correctness, the mistake that lets wrong-but-legal designs pass.
3. The Debugging and Ordering Mistakes
The recurring debugging and ordering mistakes. Reversing the ordering rule — thinking all responses (or different-ID) must be ordered; only same-ID is ordered, different-ID is free. Debugging the stuck signal instead of the root — a stuck channel's cause is usually elsewhere (the other side, or another channel); trace who-waits-on-whom. Confusing a deadlock with a stall — a deadlock is a permanent cycle with no root, not a long stall; find the cycle. Trusting internal consistency — a wrong LEN/SIZE or crossed ID is internally self-consistent; only comparison against intent catches it. No timeout instrumentation — leaving liveness failures as silent hangs. The waveform shows the canonical mistake: counting a stall as a beat.
The canonical mistake: counting a stall as a beat
7 cycles4. The Integration and Interview Mistakes, and the One Principle
The recurring integration mistakes: assuming verified blocks compose correctly (deadlock, starvation, glue emerge at the system level); a wrong address map (overlap, gap, unreachable); a missing CDC bridge across clock domains (intermittent corruption); mis-sequenced reset; no QoS for mixed traffic (starvation). And the recurring interview mistakes: the confident-wrong answer (the worst outcome), stating a myth fluently, rambling, and guessing instead of reasoning when unsure. Behind avoiding all of these is one principle: understand the why, then apply it systematically — the mistakes happen when you act without understanding (state a myth, gate VALID on READY) or understand without systematically applying (forget a corner, skip coverage). Understanding + operationalization is the whole defense.
5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
The recurring AXI mistakes — a small set that cause the majority of real failures across design, verification, debugging, integration, and interviews — are the curriculum's most actionable distillation. Design: the VALID-on-READY deadlock (the #1 fatal bug — never gate VALID on READY), coupled read/write FSMs, ignored WSTRB, mis-timed LAST/extra B, forgotten reset. Verification: compliance mistaken for correctness (the deepest — a clean checker isn't verification), skipped coverage closure, unverified checks (vacuous assertions, untrusted monitor), skipped negative testing. Debugging: the ordering-rule reversal (only same-ID ordered), debugging the stuck signal not the root, deadlock-vs-stall confusion, trusting internal consistency over intent, no timeout instrumentation. Integration: assuming verified blocks compose, address-map errors, missing CDC, mis-sequenced reset, no QoS. Interview: the confident-wrong answer, stated myths, rambling, guessing instead of reasoning.
The one principle behind avoiding all of them: understand the why, then apply it systematically. The mistakes split into acting without understanding (stating a myth, gating VALID on READY, conflating compliance with correctness) and understanding without operationalizing (forgetting a corner, skipping coverage, assuming blocks compose) — and the defense is the conjunction: deep understanding (Modules 1–19) so you don't act on misconception, plus systematic operationalization (the checklists, Module 20) so it's applied every time. This list doubles as the master debug index (the recurring mistakes are the failure taxonomy — a hang → deadlock rule, wrong-legal-data → compliance≠correctness, reorder → ordering reversal, self-consistent corruption → trusted internal consistency, works-alone-fails → integration glue). The highest-impact single item is the deadlock rule. This is the curriculum's telos made explicit: every module exists to prevent some of these mistakes, and mastery is not making them reliably under pressure — the conjunction of understanding and operationalization. From the first handshake to this final list, the curriculum built AXI understanding deep enough to use and operationalized it reliably enough to apply: that is mastery, and this checklist is its actionable endpoint.
10. The Curriculum, Complete
This is the final chapter of the AXI curriculum — 20 modules from the first VALID/READY handshake through the full protocol, interconnect, verification, debugging, real systems, and these closing checklists. You now have AXI understanding deep enough to design it, verify it, debug it, integrate it, and articulate it — and, with this chapter, the operational list to avoid where it most often goes wrong. Carry forward the one principle: understand the why, then apply it systematically.
Apply it: revisit the AMBA family overview to place AXI among its siblings (AHB, APB, ACE, CHI), build the AXI4-Lite slave and skid buffer for real, and run the design, verification, and integration checklists on your own AXI work.
Previous: 20.4 — AXI Interview Checklist. Related: 3.5 — Handshake Dependency & Deadlock Rules for the #1 mistake, 16.1 — The Protocol-Checker Mindset for compliance vs. correctness, and 18.8 — Tricky Misconceptions for the interview myths.