@@ -36,16 +36,15 @@ module VX_mem_arb import VX_gpu_pkg::*; #(
36
36
localparam LOG_NUM_REQS = `ARB_SEL_BITS (NUM_INPUTS , NUM_OUTPUTS );
37
37
localparam REQ_DATAW = 1 + ADDR_WIDTH + DATA_WIDTH + DATA_SIZE + FLAGS_WIDTH + TAG_WIDTH ;
38
38
localparam RSP_DATAW = DATA_WIDTH + TAG_WIDTH ;
39
-
40
- `STATIC_ASSERT ((NUM_INPUTS >= NUM_OUTPUTS ), (" invalid parameter: NUM_INPUTS=%0d , NUM_OUTPUTS=%0d " , NUM_INPUTS , NUM_OUTPUTS ));
39
+ localparam SEL_COUNT = `MIN (NUM_INPUTS , NUM_OUTPUTS );
41
40
42
41
wire [NUM_INPUTS - 1 : 0 ] req_valid_in;
43
42
wire [NUM_INPUTS - 1 : 0 ][REQ_DATAW - 1 : 0 ] req_data_in;
44
43
wire [NUM_INPUTS - 1 : 0 ] req_ready_in;
45
44
46
45
wire [NUM_OUTPUTS - 1 : 0 ] req_valid_out;
47
46
wire [NUM_OUTPUTS - 1 : 0 ][REQ_DATAW - 1 : 0 ] req_data_out;
48
- wire [NUM_OUTPUTS - 1 : 0 ][`UP (LOG_NUM_REQS )- 1 : 0 ] req_sel_out;
47
+ wire [SEL_COUNT - 1 : 0 ][`UP (LOG_NUM_REQS )- 1 : 0 ] req_sel_out;
49
48
wire [NUM_OUTPUTS - 1 : 0 ] req_ready_out;
50
49
51
50
for (genvar i = 0 ; i < NUM_INPUTS ; ++ i) begin : g_req_data_in
@@ -74,15 +73,6 @@ module VX_mem_arb import VX_gpu_pkg::*; #(
74
73
75
74
for (genvar i = 0 ; i < NUM_OUTPUTS ; ++ i) begin : g_bus_out_if
76
75
wire [TAG_WIDTH - 1 : 0 ] req_tag_out;
77
- VX_bits_insert # (
78
- .N (TAG_WIDTH ),
79
- .S (LOG_NUM_REQS ),
80
- .POS (TAG_SEL_IDX )
81
- ) bits_insert (
82
- .data_in (req_tag_out),
83
- .ins_in (req_sel_out[i]),
84
- .data_out (bus_out_if[i].req_data.tag)
85
- );
86
76
assign bus_out_if[i].req_valid = req_valid_out[i];
87
77
assign {
88
78
bus_out_if[i].req_data.rw,
@@ -93,6 +83,21 @@ module VX_mem_arb import VX_gpu_pkg::*; #(
93
83
req_tag_out
94
84
} = req_data_out[i];
95
85
assign req_ready_out[i] = bus_out_if[i].req_ready;
86
+
87
+ if (NUM_INPUTS > NUM_OUTPUTS ) begin : g_req_tag_sel_out
88
+ VX_bits_insert # (
89
+ .N (TAG_WIDTH ),
90
+ .S (LOG_NUM_REQS ),
91
+ .POS (TAG_SEL_IDX )
92
+ ) bits_insert (
93
+ .data_in (req_tag_out),
94
+ .ins_in (req_sel_out[i]),
95
+ .data_out (bus_out_if[i].req_data.tag)
96
+ );
97
+ end else begin : g_req_tag_out
98
+ `UNUSED_VAR (req_sel_out)
99
+ assign bus_out_if[i].req_data.tag = req_tag_out;
100
+ end
96
101
end
97
102
98
103
// /////////////////////////////////////////////////////////////////////////
0 commit comments