@@ -30,9 +30,9 @@ import cf_math_pkg::idx_width;
30
30
parameter type w_chan_t = logic ,
31
31
// / AXI4+ATOP B channel struct type for the slave ports.
32
32
parameter type b_chan_t = logic ,
33
- // / AXI4+ATOP AR channel struct type for the slave ports.
33
+ // / AXI4+ATOP AR channel struct type for the slave ports.
34
34
parameter type ar_chan_t = logic ,
35
- // / AXI4+ATOP R channel struct type for the slave ports.
35
+ // / AXI4+ATOP R channel struct type for the slave ports.
36
36
parameter type r_chan_t = logic ,
37
37
// / AXI4+ATOP request struct type for the slave ports.
38
38
parameter type req_t = logic ,
@@ -56,17 +56,17 @@ import cf_math_pkg::idx_width;
56
56
) (
57
57
// / Clock, positive edge triggered.
58
58
input logic clk_i,
59
- // / Asynchronous reset, active low.
59
+ // / Asynchronous reset, active low.
60
60
input logic rst_ni,
61
61
// / Testmode enable, active high.
62
62
input logic test_i,
63
- // / AXI4+ATOP requests to the slave ports.
63
+ // / AXI4+ATOP requests to the slave ports.
64
64
input req_t [Cfg.NoSlvPorts- 1 : 0 ] slv_ports_req_i,
65
- // / AXI4+ATOP responses of the slave ports.
65
+ // / AXI4+ATOP responses of the slave ports.
66
66
output resp_t [Cfg.NoSlvPorts- 1 : 0 ] slv_ports_resp_o,
67
- // / AXI4+ATOP requests of the master ports.
67
+ // / AXI4+ATOP requests of the master ports.
68
68
output req_t [Cfg.NoMstPorts- 1 : 0 ][Cfg.NoSlvPorts- 1 : 0 ] mst_ports_req_o,
69
- // / AXI4+ATOP responses to the master ports.
69
+ // / AXI4+ATOP responses to the master ports.
70
70
input resp_t [Cfg.NoMstPorts- 1 : 0 ][Cfg.NoSlvPorts- 1 : 0 ] mst_ports_resp_i,
71
71
// / Address map array input for the crossbar. This map is global for the whole module.
72
72
// / It is used for routing the transactions to the respective master ports.
@@ -77,12 +77,12 @@ import cf_math_pkg::idx_width;
77
77
`ifdef VCS
78
78
// / Enables a default master port for each slave port. When this is enabled unmapped
79
79
// / transactions get issued at the master port given by `default_mst_port_i`.
80
- // / When not used, tie to `'0`.
80
+ // / When not used, tie to `'0`.
81
81
input logic [Cfg.NoSlvPorts- 1 : 0 ][MstPortsIdxWidth- 1 : 0 ] default_mst_port_i
82
82
`else
83
83
// / Enables a default master port for each slave port. When this is enabled unmapped
84
84
// / transactions get issued at the master port given by `default_mst_port_i`.
85
- // / When not used, tie to `'0`.
85
+ // / When not used, tie to `'0`.
86
86
input logic [Cfg.NoSlvPorts- 1 : 0 ][idx_width (Cfg.NoMstPorts)- 1 : 0 ] default_mst_port_i
87
87
`endif
88
88
);
@@ -284,6 +284,8 @@ import cf_math_pkg::idx_width;
284
284
// pragma translate_on
285
285
endmodule
286
286
287
+ `ifndef VCS
288
+ // As of now, VCS does not support multi-dimensional array of interfaces.
287
289
`include " axi/assign.svh"
288
290
`include " axi/typedef.svh"
289
291
@@ -295,10 +297,6 @@ import cf_math_pkg::idx_width;
295
297
parameter bit ATOPS = 1'b1 ,
296
298
parameter bit [Cfg.NoSlvPorts- 1 : 0 ][Cfg.NoMstPorts- 1 : 0 ] CONNECTIVITY = '1 ,
297
299
parameter type rule_t = axi_pkg :: xbar_rule_64_t
298
- `ifdef VCS
299
- , localparam int unsigned MstPortsIdxWidth =
300
- (Cfg.NoMstPorts == 32'd1 ) ? 32'd1 : unsigned '($clog2 (Cfg.NoMstPorts))
301
- `endif
302
300
) (
303
301
input logic clk_i,
304
302
input logic rst_ni,
@@ -307,11 +305,7 @@ import cf_math_pkg::idx_width;
307
305
AXI_BUS .Master mst_ports [Cfg.NoMstPorts- 1 : 0 ][Cfg.NoSlvPorts- 1 : 0 ],
308
306
input rule_t [Cfg.NoAddrRules- 1 : 0 ] addr_map_i,
309
307
input logic [Cfg.NoSlvPorts- 1 : 0 ] en_default_mst_port_i,
310
- `ifdef VCS
311
- input logic [Cfg.NoSlvPorts- 1 : 0 ][MstPortsIdxWidth- 1 : 0 ] default_mst_port_i
312
- `else
313
308
input logic [Cfg.NoSlvPorts- 1 : 0 ][idx_width (Cfg.NoMstPorts)- 1 : 0 ] default_mst_port_i
314
- `endif
315
309
);
316
310
317
311
typedef logic [Cfg.AxiIdWidthSlvPorts - 1 : 0 ] id_t ;
@@ -371,3 +365,5 @@ import cf_math_pkg::idx_width;
371
365
);
372
366
373
367
endmodule
368
+
369
+ `endif
0 commit comments