1616module rr_distributor # (
1717 // / Number of outputs to distribute to.
1818 parameter int unsigned NumOut = 1 ,
19- // / Data width of the payload in bits. Not needed if `payload_t ` is overwritten.
19+ // / Data width of the payload in bits. Not needed if `data_t ` is overwritten.
2020 parameter int unsigned Width = 1 ,
2121 // / Data type of the payload, can be overwritten with a custom type. Only use of `Width`.
22- parameter type payload_t = logic [Width- 1 : 0 ],
22+ parameter type data_t = logic [Width- 1 : 0 ],
2323 // / Dependent parameter, do **not** overwrite.
2424 // / Width of the selected index
25- parameter int unsigned IdxWidth = (NumOut > 32'd1 ) ? unsigned '($clog2(NumOut)) : 32'd1 ,
25+ parameter int unsigned IdxWidth = cf_math_pkg :: idx_width (NumOut) ,
2626 // / Dependent parameter, do **not** overwrite.
2727 // / type of the selected index
2828 parameter type idx_t = logic [IdxWidth- 1 : 0 ]
2929) (
30- input logic clk_i,
31- input logic rst_ni,
30+ input logic clk_i,
31+ input logic rst_ni,
3232 // input stream
33- input logic valid_i,
34- output logic ready_o,
35- input payload_t payload_i,
33+ input logic valid_i,
34+ output logic ready_o,
35+ input data_t payload_i,
3636 // output stream
37- output logic [NumOut- 1 : 0 ] valid_o,
38- input logic [NumOut- 1 : 0 ] ready_i,
39- output payload_t [NumOut- 1 : 0 ] payload_o,
40- output idx_t sel_o
37+ output logic [NumOut- 1 : 0 ] valid_o,
38+ input logic [NumOut- 1 : 0 ] ready_i,
39+ output data_t [NumOut- 1 : 0 ] payload_o,
40+ output idx_t sel_o
4141);
4242
4343 if (NumOut == 1 ) begin : gen_bypass
@@ -49,8 +49,16 @@ module rr_distributor # (
4949 idx_t rr_d, rr_q;
5050 logic one_ready;
5151
52- assign rr_d = (valid_i & one_ready) ?
53- ((rr_q == idx_t ' (NumOut- 1 )) ? '0 : rr_q + 1'b1 ) : rr_q;
52+ always_comb begin : rr_next
53+ rr_d = rr_q;
54+ if (valid_i && one_ready) begin
55+ if (rr_q == idx_t ' (NumOut - 1 )) begin
56+ rr_d = '0 ;
57+ end else begin
58+ rr_d = rr_q + 1'b1 ;
59+ end
60+ end
61+ end
5462
5563 assign one_ready = | ready_i;
5664
0 commit comments