RTL Studio Open IDE

Bus Interfaces

APB3 Slave Register Interface

Configurable APB3 slave with word-aligned register file, byte-lane writes, and zero-wait-state PREADY.

About this block

Simulate it in the Verilog IDE

Hardsystemverilogsimsyn

APB3 Slave Register Interface 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.

APB3-compliant slave with a word-aligned internal register file and zero-wait-state PREADY. The default map spans 4 KB (ADDR_WIDTH = 12) with 32-bit data. Writes honor APB3 transfer size (PSIZE) and address byte lane selection; reads return the selected word combinationally during the access phase.

Unlike bus.apb_slave (fixed four control registers with PSTRB), this IP exposes a flat memory-style register array suitable as a lightweight CSR backing store.

Use this slave when a processor needs a simple APB3 window into a scratch register file without wait states. Pair it with bus.apb3_master_full or your SoC interconnect; widen ADDR_WIDTH if more than 4 KB of CSR space is required.

  1. Choose Open in IDE. RTL Studio loads the packaged workspace for APB3 Slave Register Interface.
  2. Read the SystemVerilog module in the editor. The catalog line for this block: Configurable APB3 slave with word-aligned register file, byte-lane writes, and zero-wait-state PREADY.
  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.

Ports

PortDirectionWidthDescription
PCLKinput1APB clock
PRESETninput1Active-low reset
PADDRinputADDR_WIDTHByte address
PSIZEinput2Transfer size (byte/half/word)
PBURSTinput2Burst type (unused; tied off in TB)
PWRITEinput11 = write, 0 = read
PSELinput1Slave select
PENABLEinput1Access phase
PWDATAinputDATA_WIDTHWrite data
PUSERinputUSER_WIDTHUser sideband (loopback on PUSER_OUT)
PRDATAoutputDATA_WIDTHRead data
PREADYoutput1Ready (asserted in access phase)

More in Bus Interfaces

All Bus Interfaces blocks