RTL Studio Open IDE

Arbiters

4-Input Sliding Window Arbiter — L2 Upgrade

A 4-input sliding window arbiter with weighted priority, masking, parking, and hold capabilities for fair resource allocation.

About this block

Simulate it in the Verilog IDE

Mediumverilogsimsyn

4-Input Sliding Window Arbiter — L2 Upgrade is a Verilog reference block in the Arbiters catalog. Round-robin, fixed-priority, and grant-based resource arbiters. Marked Medium: more state or a wider datapath, still one workspace in the IDE.

This IP implements a 4-input sliding window arbiter with weighted priority, masking, parking, and hold capabilities.

It rotates a priority window to ensure fair access among requestors.

High-priority requests are served based on the current window position.

  1. Choose Open in IDE. RTL Studio loads the packaged workspace for 4-Input Sliding Window Arbiter — L2 Upgrade.
  2. Read the Verilog module in the editor. The catalog line for this block: A 4-input sliding window arbiter with weighted priority, masking, parking, and hold capabilities for fair resource allocation.
  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.

Features

  • Supports 4 concurrent request inputs.
  • Implements sliding window algorithm for round-robin fairness.
  • Configurable weight via window rotation.
  • Bitwise masking for request filtering.
  • Park mode for deterministic idle behavior.
  • Hold mode for state preservation.
  • Synchronous reset with active-low polarity.

Ports

PortDirectionWidthDescription
clkInput1Clock input
rst_nInput1Active-low synchronous reset
reqInput[3:0]Request signals from 4 masters
maskInput[3:0]Mask bits to disable specific requests
parkInput[3:0]Park bits to force grant on idle
holdInput1Hold signal to freeze grant
gntOutput[3:0]Grant signals to 4 masters
validOutput1Valid flag indicating active grant

Architecture

The arbiter uses a sliding window to determine priority. Window bit 1 indicates high priority for the corresponding request. Window bit 0 indicates low priority for the corresponding request. On each clock cycle, the window rotates left if a grant was previously issued. Requests are evaluated against the current window position. Masked requests are ignored during evaluation. Parked requests are granted if no other requests are active. Hold mode prevents window rotation and grant updates.

Integration

To integrate this IP into your design:

  1. Include sliding_window_arbiter_4_weight_mask.v in your project.
  2. Instantiate the module with your clock, reset, and request signals.
  3. Configure mask, park, and hold signals as needed for your application.
  4. Connect the gnt and valid outputs to your downstream logic.

Verification

The testbench verifies basic functionality, masking, parking, hold, and reset. All test cases passed successfully in simulation. Simulation was performed using Icarus Verilog. VCD dump is available for waveform analysis.

Test CaseDescriptionResult
TC1Basic single requestPASS
TC2Masking functionalityPASS
TC3Park modePASS
TC4Hold modePASS
TC5Weighted priority slidingPASS
TC6Reset behaviorPASS

More in Arbiters

All Arbiters blocks