Files
maksyuki 3b6a925a51 feat: add documentation for new utility components and scripts
- Created documentation for , , , and  modules, detailing their functionality, parameters, and usage examples.
- Implemented a script  to ensure required headings and content are present in documentation files.
- Developed  to generate and update documentation pages from SystemVerilog declarations, ensuring consistency and completeness.
2026-08-04 16:35:53 +08:00

3.4 KiB

stream_replicator

Property Value
Kind module
RTL source rtl/stream/stream_cells.sv
Availability Synthesizable RTL

Summary

Registered one-item stream distributor with per-target completion.

Functional Behavior

Captures one input payload and target mask, then presents it to every enabled target exactly once as each target becomes ready. It releases input backpressure only after all selected transfers complete.

Suitable Applications

Use for multicast command/data distribution with independently stalling consumers.

Parameters

The declaration below is canonical; retain the RTL-enforced parameter range.

Parameter Declaration
DATA_WIDTH parameter int DATA_WIDTH = 32
PORTS parameter int PORTS = 4

Interface Definition

module stream_replicator #(
    parameter int DATA_WIDTH = 32,
    parameter int PORTS      = 4
) (
    input  logic                                  clk_i,
    input  logic                                  rst_n_i,
    input  logic                                  flush_i,
    input  logic                                  in_valid_i,
    output logic                                  in_ready_o,
    input  logic [DATA_WIDTH-1:0]                 in_data_i,
    input  logic [     PORTS-1:0]                 enable_i,
    output logic [     PORTS-1:0]                 out_valid_o,
    input  logic [     PORTS-1:0]                 out_ready_i,
    output logic [     PORTS-1:0][DATA_WIDTH-1:0] out_data_o
);

Port Summary

Signal Direction Declaration
clk_i input input logic clk_i
rst_n_i input input logic rst_n_i
flush_i input input logic flush_i
in_valid_i input input logic in_valid_i
in_ready_o output output logic in_ready_o
in_data_i input input logic [DATA_WIDTH-1:0] in_data_i
enable_i input input logic [ PORTS-1:0] enable_i
out_valid_o output output logic [ PORTS-1:0] out_valid_o
out_ready_i input input logic [ PORTS-1:0] out_ready_i
out_data_o output output logic [ PORTS-1:0][DATA_WIDTH-1:0] out_data_o

Integration and Use

The mask is sampled only on input acceptance. flush_i aborts a retained item; downstream consumers must obey normal valid/ready semantics.

stream_replicator #(
    .DATA_WIDTH(DATA_WIDTH),
    .PORTS(PORTS)
) u_stream_replicator (
    .clk_i(clk_i),
    .rst_n_i(rst_n_i),
    .flush_i(flush_i),
    .in_valid_i(in_valid_i),
    .in_ready_o(in_ready_o),
    .in_data_i(in_data_i),
    .enable_i(enable_i),
    .out_valid_o(out_valid_o),
    .out_ready_i(out_ready_i),
    .out_data_o(out_data_o)
);

Dependencies and Verification

The linked RTL source is the implementation authority and contains local assertions for unsupported parameter combinations. See docs/design.md for repository-wide CDC, reset, stream, and storage contracts, and docs/verification.md for the verification matrix.