RTL Studio Open IDE

Memory & FIFOs

8x32 Dual-Read Register File

An 8-deep, 32-bit wide register file with one synchronous write port and two independent combinational read ports.

About this block

Simulate it in the Verilog IDE

Mediumverilogsimsyn

8x32 Dual-Read Register File is a Verilog reference block in the Memory & FIFOs catalog. SRAM models, FIFOs, register files, and memory-style storage. Marked Medium: more state or a wider datapath, still one workspace in the IDE.

This IP core implements an 8x32 dual-read register file, featuring one synchronous write port and two independent combinational read ports.

It is designed for low-latency data storage and forwarding in digital pipelines.

The core supports asynchronous active-low reset and ensures predictable timing through combinational reads.

  • Depth: 8 words
  • Width: 32 bits
  • Write Port: 1 synchronous port (active on positive clock edge)
  • Read Ports: 2 independent combinational ports
  • Reset: Asynchronous, active-low
  1. Choose Open in IDE. RTL Studio loads the packaged workspace for 8x32 Dual-Read Register File.
  2. Read the Verilog module in the editor. The catalog line for this block: An 8-deep, 32-bit wide register file with one synchronous write port and two independent combinational read ports.
  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 internal memory array is 8-deep by 32-bit wide. Write operations are synchronous to the positive clock edge when wr_en is asserted. Read operations are combinational, meaning rd_data is available immediately upon address change.

Ports

Signal NameDirectionWidthDescription
clkInput1Clock input
rst_nInput1Asynchronous active-low reset
wr_addrInput3Write address bus
wr_dataInput32Write data bus
wr_enInput1Write enable signal
rd_addr_aInput3Read address bus for Port A
rd_data_aOutput32Read data output for Port A
rd_addr_bInput3Read address bus for Port B
rd_data_bOutput32Read data output for Port B

Integration

To integrate this IP into your design, instantiate the module as follows:

Verification

The included testbench (tb_register_file_8x32.v) performs comprehensive self-checking verification.

### Test Cases

Test CaseDescriptionResult
TC1Reset CheckPASS
TC2Write/Read Port APASS
TC3Write/Read Port BPASS
TC4Overwrite/IndependencePASS
TC5Boundary AddressesPASS

More in Memory & FIFOs

All Memory & FIFOs blocks