Skip to content
VLSI Mentor

Wishbone · Module 20

Performance Comparison

One identical workload, two protocols, two slave latencies — and the sign of the difference reverses between the tables. Plus the complete list of performance claims this module refuses to make.

This chapter begins with what it will not claim, because the refusals are load-bearing.

Some performance questions can be counted in a simulator. Others cannot be answered without silicon. Mixing the two produces a number that is citable and wrong.

1. The Refusal List

No synthesis tool was run on any RTL in this module. No place-and-route, no timing analysis, no library. The following therefore appear nowhere in Module 20, and anyone who tells you one of them without showing you a report has not measured it either:

refusedwhy it cannot be claimed here
fmax for either protocola function of the netlist, the library, the constraints and the tool — none of which exist in this module
gate count / LUT count / areaa port is not a wire; a line of RTL is not a flip-flop
powerrequires switching activity on a real netlist
MB/s, GB/s, any absolute bandwidthrequires a clock period, which requires timing closure
"AXI is faster than Wishbone"see §3 and §4 — the sign of the difference reverses on identical work
"Wishbone is lighter"plausible, widely repeated, and not measured here

What can be counted, and is:

measuredwhere
clocks to complete a fixed workload§3, §4
maximum outstanding transactions the protocol permits§2
clocks a master had work and nothing in flight§5
addresses accepted while an earlier answer was outstanding§2
distinct addresses sent for an N-word transfer§5
what a reordering costs§6

2. One Workload, Read By Both Masters

The comparison is worthless unless both protocols do exactly the same work. In this module that is guaranteed structurally rather than by care: there is one wl_workload instance per testbench and both masters index into it.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
// ─────────────────────────────────────────────────────────────────────────
// wl_workload — ONE workload, read by both protocol rigs.
//
// This module exists to make a comparison honest. The methodological
// failure that would ruin Module 20 is comparing a Wishbone system to an
// AXI system doing different work, and the cheapest way to make that
// impossible is to have exactly one description of the work and let both
// masters read it.
//
// There is ONE INSTANCE of this module in every comparison testbench. The
// Wishbone master and the AXI master each have their own index port into
// it. They cannot diverge, because there is nothing to diverge from.

Sixteen records — nine reads, seven writes, three of them sub-word so the byte-strobe path is exercised, and addresses that revisit words already written so a scoreboard can catch a lost or misdirected write.

SIM D measures how much of the work each protocol could have in flight at once.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  === SIM D - outstanding depth, same workload ===
    the workload is 16 records: 9 reads, 7 writes, three of
    them sub-word. Every rig below ran exactly those.

      rig                     deepest out   AW+AR accepted
                                            while unanswered
      Wishbone (any latency)        1              0
      AXI fast  MAXOUT 4            2              1
      AXI slow  MAXOUT 4            4              14
      AXI slow  MAXOUT 1            1              0

      clocks with a read AND a write both in flight
        AXI fast 0    AXI slow 35    AXI slow/MAXOUT1 0
      -> Wishbone's value here is structurally zero. One
         [ADR_O], one [WE_O]: the access in flight is a read
         or it is a write, never both.

Wishbone's row is not a tuning result. It is 1 and 0 and 0 at every latency, for the reason Chapter 20.1 established: one [ADR_O], one [WE_O], RULE 3.60 qualifying both with [STB_O].

The last line is the one to keep. Thirty-five clocks on which the AXI rig had a read and a write simultaneously in the air. A Wishbone master's value for that is structurally zero — the access in flight is a read or it is a write.

3. The First Table: Fast Slaves

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  === SIM E - FAST slaves, zero wait states ===
    clocks from start to the sixteenth answer.

      Wishbone      34 clocks
      AXI-Lite      36 clocks
      difference    2 clocks in Wishbone's favour

      READ THIS ONE CAREFULLY BEFORE DRAWING A CONCLUSION.
      The Wishbone RAM answers COMBINATIONALLY. B3 permits
      exactly that:
        "If the SLAVE guarantees it can keep pace with all
         MASTER interfaces and if the [ERR_I] and [RTY_I]
         signals are not used, then the SLAVE's [ACK_O]
         signal MAY be tied to the logical AND of the
         SLAVE's [STB_I] and [CYC_I] inputs."
                                     (B3, PERMISSION 3.10)
      The AXI-Lite slave registers its response, which is
      the ordinary way to build one. THAT ONE-CLOCK
      DIFFERENCE IS A SLAVE IMPLEMENTATION CHOICE, NOT A
      PROTOCOL PROPERTY, and it is stated rather than
      quietly banked as a win for Wishbone.

      What IS a protocol property: with no wait states there
      is almost nothing for extra channels to overlap. The
      decoupling had 1 opportunities and the coupled
      protocol lost nothing by not having it.

Wishbone finished first. Thirty-four clocks against thirty-six.

And the honest explanation is printed with the result rather than left for the reader to discover. Two of those clocks are a slave implementation difference, not a protocol one: the Wishbone RAM answers combinationally, which PERMISSION 3.10 expressly allows, while the AXI-Lite slave registers its response the way an AXI-Lite slave normally does.

The protocol part of the result is the other observation: with no wait states there is nothing to overlap. The decoupling had one opportunity in sixteen records and the coupled protocol lost nothing by not having it.

4. The Second Table: Slow Slaves

Identical workload. Identical memory. Identical master. Three wait states on both sides. Nothing else changed.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  === SIM F - SLOW slaves, three wait states ===
    identical workload, identical memory, both slaves now
    take three extra clocks. Nothing else changed.

      Wishbone                 82 clocks
      AXI-Lite MAXOUT 1        114 clocks
      AXI-Lite MAXOUT 4        49 clocks

      AXI MAXOUT 4 against AXI MAXOUT 1   65 clocks saved
      AXI MAXOUT 4 against Wishbone       33 clocks FASTER
      AXI MAXOUT 1 against Wishbone       32 clocks SLOWER
      -> the AXI rig that does not USE its channels is the
         slowest thing in the table. Five channels cost
         handshakes whether or not anything overlaps.

      THE COMPARISON THAT MATTERS is the middle row against
      the bottom row: same protocol, same slave, same work,
      one parameter. Everything separating them is the
      decoupling being used.

      E vs F - the difference between the two tables:
        fast   Wishbone 34, AXI/4 36   gap 2
        slow   Wishbone 82, AXI/4 49   gap 33
      THE SIGN OF THE DIFFERENCE REVERSED BETWEEN THE TWO
      TABLES. Wishbone was ahead with fast slaves and behind
      with slow ones, on identical work. A single benchmark
      number for "which bus is faster" would have been
      true, citable, and worthless.

The middle row is the most useful line in the table and it is the one nobody expects. AXI-Lite restricted to one outstanding transaction took 114 clocks — thirty-two clocks slower than Wishbone on the same slaves.

Five channels cost handshakes whether or not anything overlaps. An AXI system that does not use its decoupling has paid for it and received nothing. That is not a criticism of AXI; it is a statement about what the extra structure is for, and it is the strongest argument in this module against reaching for AXI reflexively.

5. Bursts Against Block Cycles

The comparison that would have been rigged is one AXI burst against N separate Wishbone SINGLE cycles. Wishbone has a block cycle and RULE 3.25 covers it — "MASTER interfaces MUST assert [CYC_O] for the duration of SINGLE READ / WRITE, BLOCK and RMW cycles" — so one [CYC_O] spans the block exactly as one ARVALID spans the burst. That is the honest pairing, and it is what SIM G runs.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
      measure                      Wishbone   AXI4
        words delivered                8          8
        distinct addresses sent        8          1
        clocks an address was driven   32         1
        RLAST / final termination      1          1
        data signature          0xadf3d1d7  0xadf3d1d7

      Same 8 words, same order, identical signature.

      THE DIFFERENCE IS NOT THE CLOCK COUNT. It is 8
      distinct addresses against 1. B3 RULE 3.60 qualifies
      [ADR_O] with [STB_O] on EVERY transfer, so a block
      cycle re-presents a full address per word - and holds
      it for all 4 clocks of every wait state, which is the
      32-clock figure above. An AXI burst sends ONE address
      and a length:
        "AXI4 extends burst length support for the INCR
         burst type to 1-256 transfers."  (A3.4.1)
      What that buys is not measured here as area or wires,

Identical data, identical order, identical signature. The difference is not the clock count.

It is eight distinct addresses against one. And the 32-clock figure is worth a second look: because RULE 3.60 qualifies [ADR_O] with [STB_O], the address is not merely re-sent per word — it is held on the wires for every clock of every wait state. An AXI burst sends one address and a length.

What that buys is not measured here as area or wires, for the reasons in §1.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
      Chapter 20.3 refusal list.

    THE COST OF A BURST THAT IS THE WRONG SIZE
      A master that asked for 8 and needs 4 cannot simply
      stop. The specification is explicit for writes -
      "the master can disable further writing by
       deasserting all the write strobes. In this case, the
       master must complete the remaining transfers in the
       burst." - and for reads: "the master can discard
      read data, but it must complete all transfers in the
      burst."
      So the 4 unwanted beats are still delivered and still
      occupy the read data channel. A Wishbone block cycle
      negates [CYC_O] and stops. Neither is free: one wastes
      beats, the other re-sends addresses.

A burst that is the wrong size cannot be abandoned. The specification is explicit for writes and for reads, and a Wishbone block cycle simply negates [CYC_O] and stops. Neither is free: one wastes beats, the other re-sends addresses.

6. The Ordering Cost — The Half That Usually Gets Left Out

SIM H issues two read bursts with different IDs, back to back, without waiting.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  === SIM H - two outstanding reads, and their order ===
    two bursts of 8 words, IDs 0 and 1, issued back to
    back without waiting. Two slaves, identical except that
    one returns the second burst first.

      rig            bursts  beats  RLASTs  RID order (hex)
      in order         2      16      2     0x55550000
      reordered        2      16      2     0x00005555

      the RID order word packs each returned beat's RID two
      bits at a time, oldest in the LOW bits. ID 0 is 2'b00
      and ID 1 is 2'b01, so eight beats of ID 0 followed by
      eight of ID 1 reads 0x55550000 - the zeros are the
      first burst - and the reverse reads 0x00005555.
Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
      THE ORDER DIFFERED AND BOTH ARE LEGAL. Two reads
      with different IDs have no ordering guarantee
      between them - the specification lists exactly that
      case - so a master that cared has to do something
      about it. IHI 0022H A6 says what:

        "If a master requires ordering between
         transactions that have no ordering guarantee, the
         master must wait to receive a response to the
         first transaction before issuing the second
         transaction."

      READ THAT AS A COST. The remedy for needing order
      is to stop having two transactions outstanding -
      which is Wishbone's permanent, unavoidable state.
      AXI does not remove the coupling; it makes the
      coupling OPTIONAL, and hands you the bookkeeping.

      data signatures   in order 0xf3e2df99   reordered 0xf3e52061

  === errors: 0 ===

7. What The Decoupling Changed On The Full Workload

SIM J runs the whole comparison and checks whether the four rigs agreed.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
    2. DID EVERY RIG GET THE SAME ANSWERS?
       order-sensitive signature over (index, data, error)
       WB  fast             0x98b97cbd
       AXI fast             0x98b97cbd
       WB  slow             0x98b97cbd
       AXI slow  MAXOUT 1   0x98b97cbd
       AXI slow  MAXOUT 4   0x67468348   <-- DIFFERENT

       The four ORDERED rigs agree exactly. The fifth does
       not, and it is the most important number in this
       module.

Four signatures match. The fifth does not.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
       WHAT DIFFERED, PRECISELY: THE ORDER, NOT THE DATA.
       Section 7 prints all sixteen values side by side
       and every one of them matches. The signature is
       order-sensitive, so what separates 0x67468348 from
       0x98b97cbd is the SEQUENCE the answers arrived in.

       answers that did not follow their predecessor
         WB fast 0   AXI fast 0   WB slow 0
         AXI slow MAXOUT 1 0   AXI slow MAXOUT 4 3

       That is the protocol behaving exactly as written.
       Ordering is NOT guaranteed between:
           Transactions from different masters
           Read and write transactions

Every value was correct. Section 7 of the audit prints all sixteen side by side and they match; what differed was the sequence the answers arrived in. Three answers in the deep rig did not follow their predecessor, because write responses and read data return on separate channels and A6.1 lists "Read and write transactions" among the pairs with no ordering guarantee.

Nothing was wrong, nothing was lost, and nothing was violated. Whether that reordering matters depends entirely on what the software does with the answers — which is precisely why the specification refuses to decide it for you.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
         "If a master requires ordering between
          transactions that have no ordering guarantee,
          the master must wait to receive a response to
          the first transaction before issuing the second
          transaction."                (IHI 0022H, A6)

       THE MAXOUT 1 ROW IS THAT INSTRUCTION OBEYED, and
       its signature matches Wishbone's exactly. The
       remedy for needing order is to stop having two
       transactions outstanding - which is the permanent,
       unavoidable state of a Wishbone master.

       AXI DOES NOT REMOVE THE COUPLING. It makes the
       coupling OPTIONAL and hands you the bookkeeping.
       Chapter 20.5 records what happened when this
       module's own AXI master got that bookkeeping wrong.

8. The Summary Worth Keeping

slavesWishboneAXI, 1 outstandingAXI, 4 outstanding
fast (0 waits)3436
slow (3 waits)8211449

Three readings of the same system, all true:

  • With fast slaves, the coupled protocol is marginally ahead and the channels are idle overhead.
  • With slow slaves and the decoupling used, AXI finishes in 60% of Wishbone's time.
  • With slow slaves and the decoupling unused, AXI is 39% slower than Wishbone.

The protocol did not decide any of those. The slave latency and the master's outstanding depth did.

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.