RTL Studio Open IDE

Bus Interfaces

Wishbone B3 Single-Beat Master

Wishbone B3 master for classic single-beat read/write transactions.

About this block

Simulate it in the Verilog IDE

Hardsystemverilogsimsyn

Wishbone B3 Single-Beat Master is a SystemVerilog reference block in the Bus Interfaces catalog. AXI, APB, Wishbone, and other on-chip bus interface adapters. Marked Hard: a larger reference. Simulate the packaged testbench before you change the RTL.

This IP implements a simple Wishbone B3 master supporting single-beat transactions. It handles non-burst read and write operations via an FSM-based control interface. The design uses a command handshake for input commands and provides a response interface for data retrieval. It is suitable for low-complexity system integration where burst transactions are not required.

This module provides a basic Wishbone B3 master interface. It is designed for simplicity and ease of integration into systems that do not require complex burst transactions or arbitration. The master operates on a single-beat basis, ensuring that one transaction completes before the next command is accepted.

  1. Choose Open in IDE. RTL Studio loads the packaged workspace for Wishbone B3 Single-Beat Master.
  2. Read the SystemVerilog module in the editor. The catalog line for this block: Wishbone B3 master for classic single-beat read/write transactions.
  3. Run the packaged testbench with the in-browser Verilator simulator, then open the VCD in the waveform viewer.
  4. Run Yosys in the same IDE for a generic netlist. Sky130 liberty mapping is a separate Pro library option.

RTL Studio is the Verilog simulator and IDE around this block: Slang lint, Verilator, VCD waveforms, and Yosys, in the browser. Simulation guide · Yosys guide.

Architecture

The module consists of a finite state machine (FSM) controlling the Wishbone bus interface. It transitions between three states:

  1. IDLE: Waiting for a new command.
  2. WAIT_ACK: Driving the Wishbone address and data, waiting for the slave acknowledge (wb_ack).
  3. RESP_DATA: Latching the response data and signaling completion to the master controller.

Internal registers hold command parameters (cmd_addr, cmd_wdata, cmd_is_read) during the transaction to ensure stable bus signals.

Ports

Port NameDirectionWidthDescription
clkInput1Clock input
rst_nInput1Active-low reset
cmd_validInput1Command valid signal
cmd_readyOutput1Command ready signal (High when IDLE)
cmd_is_readInput11 for Read, 0 for Write
cmd_addrInputADDR_WIDTHTarget address
cmd_wdataInputDATA_WIDTHWrite data
resp_validOutput1Response valid signal
resp_readyInput1Response ready signal
resp_rdataOutputDATA_WIDTHRead data response
resp_errOutput1Error signal (Always 0)
wb_adrOutputADDR_WIDTHWishbone address

Parameters

ParameterDefaultDescription
DATA_WIDTH32Data bus width in bits
ADDR_WIDTH32Address bus width in bits

Verification

The testbench includes three test cases to verify functionality:

Test CaseDescriptionStatus
TC1Single Write TransactionPASS
TC2Single Read TransactionPASS
TC3Multiple Sequential Write TransactionsPASS

Expected Simulation Output:

More in Bus Interfaces

All Bus Interfaces blocks