Skip to content

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 resetVALIDs 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.

Design mistakes: VALID-waits-READY (deadlock, #1), coupled R/W FSM, ignored WSTRB, mis-timed LAST/extra B, forgotten reset.VALID waits READY#1 — deadlockCoupled R/W FSMserializes channelsIgnored WSTRBclobbers neighborsMis-timed LAST /extra Bburst brokenForgotten resetundefined startupDeadlock rule = topnever gate VALID on READY12
Figure 1 — the recurring design mistakes. #1: VALID waits for READY (gating VALID/payload combinationally on READY — the single most common fatal RTL bug, deadlocks the bus). Coupling reads and writes into one FSM (serializing independent channels). Ignoring WSTRB byte-by-byte (clobbering neighbors). Mis-timing LAST (not on beat LEN) or emitting more than one B per burst. Forgetting reset (VALIDs not low, registers uninitialized). The deadlock rule is by far the most important — made once, it 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.

Verification mistakes: compliance-as-correctness, no coverage closure, unverified checks, skipped negative testing.Compliance = correctnessthe deepest mistakeNo coverage closureunexercised proves nothingUnverified checksvacuous / bad monitorSkipped negative testingerror paths untested12
Figure 2 — the recurring verification mistakes. Mistaking compliance for correctness (a clean checker proves legal traffic, not right behavior — need a scoreboard); skipping coverage closure (a clean run on unexercised traffic proves nothing); not verifying the checks themselves (trusting an unverified monitor or a vacuous assertion); skipping negative testing (error paths untested, failing in the field). The deepest is compliance ≠ correctness — the mistake that lets wrong-but-legal designs pass verification.

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 cycles
VALID held high with READY low at one cycle (a stall); only the cycles where both are high are beats, not the stalled cycle.beats 0,1 (both high)STALL — not a beatbeat 2don't count the stalldon't count the stallACLKVALIDREADYDATA.D0 D1 t0t1t2t3t4t5t6
Figure 3 — the canonical debugging mistake (and the ordering reversal). Counting a stall as a beat: VALID is held high but READY is low at one cycle (a stall, not a transfer), yet a careless reader counts it — getting the burst length wrong. Only the VALID && READY overlaps are beats. The related ordering mistake is reversing the rule (only same-ID is ordered, different-ID is free). Both stem from not reading the handshake precisely — count beats only at the handshake, and check IDs before judging ordering.

4. 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.

Integration mistakes (compose-assumption, address map, CDC, reset, QoS) and interview mistakes (confident-wrong, myth, ramble, guess); one principle: understand + operationalize.avoid byavoid byIntegration:compose-assumption,map, CDC, reset,QoSInterview:confident-wrong,myth, ramble, guessUnderstand the why+ applysystematically= the wholedefense
Figure 4 — the integration and interview mistakes, and the one principle behind avoiding all of them. Integration: assuming verified blocks compose (deadlock/starvation/glue emerge at system level), wrong address map, missing CDC bridge, mis-sequenced reset, no QoS. Interview: confident-wrong answer (worst outcome), stating a myth, rambling, guessing when unsure. The one principle: understand the why, then apply it systematically — mistakes happen when you act without understanding (state a myth, gate VALID on READY) or understand without operationalizing (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.