Skip to content
VLSI Mentor

Wishbone · Module 20

Design Trade-offs

A protocol-to-protocol seam neither specification describes, six ways to get it wrong of which five are legal, and the first defect in twelve modules that a conformance checker actually catches.

Chapter 20.3 ended with three readings of the same system, all true, decided by the slaves rather than the protocol. In a real SoC the answer is usually "both", and then the decision is not which bus — it is the seam between them.

Module 19's seams were core-to-bus and bus-to-register. This one is protocol-to-protocol, and neither specification describes it.

1. The Seam

A Wishbone master reaching an AXI4-Lite slave through a bridge. The Wishbone master drives a single coupled request phase carrying CYC, STB, WE, address, data and SEL into the bridge's Wishbone slave port. The bridge's AXI-Lite master port drives five independent channels into the AXI slave: write address, write data, write response, read address and read data. The bridge is the only component in the diagram that neither specification describes, and all three of its obligations, carrying byte lanes, meaning the termination and translating the error, belong to the integrator.Wishbonemasterone outstandingwb2axil_bridgedescribed by NOBODYAW / W / Bwrite channelsAR / Rread channelsAXI-Lite slavedepth 4one phaseACK / ERR12

The amber box is the only component in that figure that no specification covers. B3 describes a Wishbone master and a Wishbone slave. IHI 0022H describes an AXI master and an AXI slave. The thing that makes one look like the other is entirely yours.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
// ── THE THREE THINGS IT HAS TO GET RIGHT ────────────────────────────────
//
// 1. THE BYTE LANES MUST SURVIVE.
//    Wishbone  "The array boundaries are determined by the granularity of
//               a port."                        (B3, DESC SEL_O)
//    AXI       "There is one write strobe for each 8 bits of the write
//               data bus, therefore WSTRB[n] corresponds to
//               WDATA[(8n)+7:(8n)]."            (IHI 0022H, A3.4)
//    The two definitions agree, so SEL_O maps to WSTRB one bit to one
//    bit. It is the easiest thing in this module to get right and the
//    easiest to leave out, because a bridge that drives WSTRB to all-ones
//    works perfectly for every full-word access.
//
// 2. THE TERMINATION MUST MEAN THE TRANSFER HAPPENED.
//    B3 RULE 3.35 makes [ACK_O] the answer to the request. If this bridge
//    asserts [ACK_O] before the AXI side has answered, the Wishbone master
//    is told a write committed that is still in flight - and on a READ it
//    is handed data that has not arrived. NOTHING IN B3 IS VIOLATED by
//    doing this: the bridge is a conformant slave that simply answers
//    early. The lie is in the meaning, not in the timing rules.
//
// 3. THE ERROR MUST SURVIVE TRANSLATION.
//    AXI's SLVERR is "Slave error... to the originating master"; Wishbone
//    has [ERR_O]. Mapping one to the other is arithmetic. Dropping it
//    turns a failed access into a successful one, which is Chapter 19.4's
//    ERR_SWALLOWED finding arriving at a different seam.
//

2. The Bridge Works — Measured, Not Asserted

SIM I runs the same sixteen records through the bridge and, alongside, straight onto a Wishbone RAM with the same latency. The bridge is the only difference between the two.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
      answers           bridged 16   direct 16
      order signature   bridged 0x98b97cbd   direct 0x98b97cbd
      out-of-order      bridged 0   direct 0
      errors reported   bridged 0   direct 0

      EVERY VALUE AND EVERY ORDER IDENTICAL. A protocol
      translation sat in the middle of all 16 accesses and
      nothing the master could observe changed.

      bridge bookkeeping
        Wishbone requests forwarded to AXI   16
        answers returned to Wishbone         16
        non-OKAY responses seen              0
        AXI slave writes / reads             7 / 9

      clocks to finish   bridged 146   direct 82
      -> THE COST OF THE SEAM IS 64 CLOCKS over 16 accesses.
         And it cannot be recovered by making the AXI side
         deeper, because the Wishbone master supplies one
         request at a time. A bridge cannot use depth its
         other side cannot express - which is why Chapter
         20.5 argues the seam, not the bus, is the decision.

Every value identical, every order identical, sixteen requests forwarded and sixteen answered. A protocol translation sat in the middle of every access and nothing the master could observe changed.

3. Six Ways To Get The Seam Wrong

A checker that has only ever passed has not been shown to check anything. Six checkers, seven complete systems, each differing from the correct one by exactly one parameter.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  === NEGATIVE-CONTROL GATE ===
    one stimulus set, seven systems. Each broken system
    differs from the correct one by exactly one parameter.

    checker                        corr STRB EARL RESP COUP BRST REORD
    WRITE STROBES SURVIVE          PASS FAIL PASS PASS PASS PASS PASS
    ONE RESPONSE PER REQUEST       PASS PASS FAIL PASS PASS PASS PASS
    ERROR SURVIVES TRANSLATION     PASS PASS FAIL FAIL PASS PASS PASS
    CHANNELS ARE INDEPENDENT       PASS PASS PASS PASS FAIL PASS PASS
    A BURST IS N TRANSFERS         PASS PASS PASS PASS PASS FAIL PASS
    RESPONSES MATCH THEIR REQUESTS PASS PASS PASS PASS PASS FAIL FAIL

    raw numbers behind those verdicts
      column          strb  early  errs  alone  beats  RID order
      correct          0      0      3     7      8    0x00005500
      STRB_DROP        4      0      3     7      8    0x00005500
      EARLY_ACK        0      16      0     7      8    0x00005500
      RESP_IGNORE      0      0      0     7      8    0x00005500
      AR_R_COUPLED     0      0      3     0      8    0x00005500
      BURST_AS_ONE     0      0      3     7      2    0x00000004
      REORDER          0      0      3     7      8    0x00000055

Six checkers, six targets, six detections, and the correct system passes all six:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
    CHECKERS REQUIRED:                >= 5
    CHECKERS DECLARED:                6
    CHECKERS PASSING THE CORRECT SYSTEM:                   6/6
    EACH CHECKER FAILS ITS OWN TARGET:
      6/6

4. The Off-Diagonal Cell Is Worth More Than The Diagonal

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
    READ THE OFF-DIAGONAL. EARLY_ACK fails TWO checkers,
    and the second one is worth more than the first. A
    bridge that terminates the Wishbone cycle when the AXI
    request is ACCEPTED has already answered by the time the
    SLVERR arrives, so the error is not translated - it is
    not there to translate. Its error count is 0 against
    the correct system's 3. ONE WRONG DECISION ABOUT WHAT
    A TERMINATION MEANS SILENTLY DISABLED THE ENTIRE ERROR
    PATH, and nothing in either specification was violated.

EARLY_ACK fails two checkers, and the second one is not obviously related to the first.

A bridge that terminates the Wishbone cycle when the AXI request is accepted rather than answered has already told the master "done" by the time the SLVERR arrives. The error is not mistranslated. It is not there to translate. Its error count is 0 against the correct system's 3.

One wrong decision about what a termination means silently disabled the entire error path — and RULE 3.35 was not violated, because the bridge is a conformant Wishbone slave that simply answered sooner than it should have. The lie is in the meaning, not in the timing.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
    FIVE OF THESE SIX ARE LEGAL. A bridge that drops byte
    strobes, one that answers early, one that discards a
    SLVERR, a slave that collapses a burst, a slave that
    reorders across IDs - none of them violates Wishbone B3
    or IHI 0022H. They are all decisions somebody could
    defend in a review.

    AR_R_COUPLED IS THE EXCEPTION AND IT IS THE POINT.
    "VALID signal of the AXI interface sending information
     must not be dependent on the READY signal of the AXI
     interface receiving that information."   (A3.3.1)
    That defect breaks a rule, so a conformance checker
    finds it without knowing anything about this design.
    Across Modules 9-19 the count of published defects a
    bus-level protocol checker would catch stood at ONE.
    Module 20 adds the second.

    Note what it took: the defect is invisible unless the
    stimulus withholds RREADY. The correct column's "alone"
    count is 7 and the coupled column's is 0 - and if
    this testbench had left RREADY tied high, as both of
    this module's masters do, both numbers would be zero
    and the checker would have proved nothing.

6. The Same Invariants As Assertions

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  // ── GROUP 3: THE BRIDGE — owned by neither specification ─────────────
  //
  // Every property below is this design's own. There is no rule number to
  // put beside any of them, which is the whole reason Module 20 measures
  // the bridge rather than citing it.

  // The byte lanes must survive translation. SEL_O and WSTRB are defined
  // identically by the two specifications, so this is a wire, and it is
  // the easiest thing in the module to leave out.
  property p_strobes_survive;
    @(posedge clk_i)
      (wvalid_i && wready_i) |-> (wstrb_i == sel_i);
  endproperty
  a_strobes_survive: assert property (p_strobes_survive);

7. Choosing

Ask about the slaves and the master before asking about the bus.

ifthenevidence
every slave answers in a clock or twothe coupling costs almost nothing and the channels buy almost nothing20.3 §3 — Wishbone ahead by 2 clocks
slaves are slow and the master keeps several requests in flightthe decoupling is worth a lot20.3 §4 — AXI finishes in 60% of the time
slaves are slow and the master issues one at a timeAXI is the worst option in the table20.3 §4 — 39% slower than Wishbone
you need answers in issue orderAXI tells you to serialise, which is Wishbone's permanent stateA6, and 20.3 §6
you are moving large contiguous blocksAXI's burst descriptor is genuinely stronger20.3 §5 — 1 address against 8
you are bridging one onto the otherthe seam is the design, and the narrower side caps the pair§2 above

The decision that is almost always wrong is "AXI because it is the standard, driven one transaction at a time." That configuration was measured here and it is slower than the simpler protocol on identical work, while costing five channels' worth of bookkeeping — including the bookkeeping that Chapter 20.4 §5 records getting wrong.

8. What Module 20 Established

the difference, normativelyRULE 3.35 couples; A3.3.1 decouples — both quoted from source
what it costs to compare badlythe sign of the difference reverses between two slave latencies
what the channels buy14 decoupled acceptances, 35 clocks of read-and-write concurrency, 33 clocks saved
what they cost32 clocks when unused; 5 handshake pairs instead of 1
the ordering priceAXI's own remedy is to stop being outstanding — A6
the seam64 clocks, and depth the other side cannot express is inert
defects seeded6, of which 5 are legal under both specifications
protocol-checker catchable, Modules 9–202

Continue learning

Standards & specifications

Governing standard
Wishbone SoC Interconnection Architecture (OpenCores)(opens OpenCores in a new tab)

Defines the Wishbone signal set, the bus cycles built from it and the interface rules a portable IP core must follow. It deliberately leaves interconnect topology, address map and arbitration policy to the integrator, so those are system decisions rather than requirements of the specification.

This page also covers RTL structure, verification approach and debugging technique. Those are engineering practice built on the standard, not requirements the standard itself imposes.

Where this fits

Part of the Wishbone curriculum.