1616`include " vortex_afu.vh"
1717
1818module VX_afu_wrap # (
19- parameter C_S_AXI_CTRL_ADDR_WIDTH = 8 ,
20- parameter C_S_AXI_CTRL_DATA_WIDTH = 32 ,
21- parameter C_M_AXI_MEM_ID_WIDTH = 32 ,
22- parameter C_M_AXI_MEM_DATA_WIDTH = 512 ,
23- parameter C_M_AXI_MEM_ADDR_WIDTH = 25 ,
24- parameter C_M_AXI_MEM_NUM_BANKS = 2
19+ parameter C_S_AXI_CTRL_ADDR_WIDTH = 8 ,
20+ parameter C_S_AXI_CTRL_DATA_WIDTH = 32 ,
21+ parameter C_M_AXI_MEM_ID_WIDTH = `PLATFORM_MEMORY_ID_WIDTH ,
22+ parameter C_M_AXI_MEM_DATA_WIDTH = `PLATFORM_MEMORY_DATA_SIZE * 8 ,
23+ parameter C_M_AXI_MEM_ADDR_WIDTH = 64 ,
24+ `ifdef PLATFORM_MERGED_MEMORY_INTERFACE
25+ parameter C_M_AXI_MEM_NUM_BANKS = 1
26+ `else
27+ parameter C_M_AXI_MEM_NUM_BANKS = `PLATFORM_MEMORY_NUM_BANKS
28+ `endif
2529) (
2630 // System signals
2731 input wire clk,
@@ -31,7 +35,7 @@ module VX_afu_wrap #(
3135`ifdef PLATFORM_MERGED_MEMORY_INTERFACE
3236 `REPEAT (1 , GEN_AXI_MEM , REPEAT_COMMA ),
3337`else
34- `REPEAT (`PLATFORM_MEMORY_BANKS , GEN_AXI_MEM , REPEAT_COMMA ),
38+ `REPEAT (`PLATFORM_MEMORY_NUM_BANKS , GEN_AXI_MEM , REPEAT_COMMA ),
3539`endif
3640 // AXI4-Lite slave interface
3741 input wire s_axi_ctrl_awvalid,
@@ -58,11 +62,7 @@ module VX_afu_wrap #(
5862
5963 output wire interrupt
6064);
61- `ifdef PLATFORM_MERGED_MEMORY_INTERFACE
62- localparam M_AXI_MEM_ADDR_WIDTH = `PLATFORM_MEMORY_ADDR_WIDTH + $clog2 (`PLATFORM_MEMORY_BANKS );
63- `else
6465 localparam M_AXI_MEM_ADDR_WIDTH = `PLATFORM_MEMORY_ADDR_WIDTH ;
65- `endif
6666
6767 typedef enum logic [1 : 0 ] {
6868 STATE_IDLE = 0 ,
@@ -71,8 +71,8 @@ module VX_afu_wrap #(
7171 STATE_DONE = 3
7272 } state_e ;
7373
74- localparam PENDING_SIZEW = 12 ; // max outstanding requests size
75- localparam C_M_AXI_MEM_NUM_BANKS_SW = `CLOG2 (C_M_AXI_MEM_NUM_BANKS + 1 );
74+ localparam PENDING_WR_SIZEW = 12 ; // max outstanding requests size
75+ localparam NUM_MEM_BANKS_SIZEW = `CLOG2 (C_M_AXI_MEM_NUM_BANKS + 1 );
7676
7777 wire m_axi_mem_awvalid_a [C_M_AXI_MEM_NUM_BANKS ];
7878 wire m_axi_mem_awready_a [C_M_AXI_MEM_NUM_BANKS ];
@@ -108,11 +108,11 @@ module VX_afu_wrap #(
108108`ifdef PLATFORM_MERGED_MEMORY_INTERFACE
109109 `REPEAT (1 , AXI_MEM_TO_ARRAY , REPEAT_SEMICOLON );
110110`else
111- `REPEAT (`PLATFORM_MEMORY_BANKS , AXI_MEM_TO_ARRAY , REPEAT_SEMICOLON );
111+ `REPEAT (`PLATFORM_MEMORY_NUM_BANKS , AXI_MEM_TO_ARRAY , REPEAT_SEMICOLON );
112112`endif
113113
114114 reg [`CLOG2 (`RESET_DELAY + 1 )- 1 : 0 ] vx_reset_ctr;
115- reg [PENDING_SIZEW - 1 : 0 ] vx_pending_writes;
115+ reg [PENDING_WR_SIZEW - 1 : 0 ] vx_pending_writes;
116116 reg vx_reset = 1 ; // asserted at initialization
117117 wire vx_busy;
118118
@@ -200,7 +200,7 @@ module VX_afu_wrap #(
200200 end
201201
202202 wire [C_M_AXI_MEM_NUM_BANKS - 1 : 0 ] m_axi_wr_req_fire, m_axi_wr_rsp_fire;
203- wire [C_M_AXI_MEM_NUM_BANKS_SW - 1 : 0 ] cur_wr_reqs, cur_wr_rsps;
203+ wire [NUM_MEM_BANKS_SIZEW - 1 : 0 ] cur_wr_reqs, cur_wr_rsps;
204204
205205 for (genvar i = 0 ; i < C_M_AXI_MEM_NUM_BANKS ; ++ i) begin : g_m_axi_wr_req_fire
206206 VX_axi_write_ack axi_write_ack (
@@ -224,14 +224,14 @@ module VX_afu_wrap #(
224224 `POP_COUNT (cur_wr_reqs, m_axi_wr_req_fire);
225225 `POP_COUNT (cur_wr_rsps, m_axi_wr_rsp_fire);
226226
227- wire signed [C_M_AXI_MEM_NUM_BANKS_SW : 0 ] reqs_sub = (C_M_AXI_MEM_NUM_BANKS_SW + 1 )'(cur_wr_reqs) -
228- (C_M_AXI_MEM_NUM_BANKS_SW + 1 )'(cur_wr_rsps);
227+ wire signed [NUM_MEM_BANKS_SIZEW : 0 ] reqs_sub = (NUM_MEM_BANKS_SIZEW + 1 )'(cur_wr_reqs) -
228+ (NUM_MEM_BANKS_SIZEW + 1 )'(cur_wr_rsps);
229229
230230 always @ (posedge clk) begin
231231 if (reset) begin
232232 vx_pending_writes <= '0 ;
233233 end else begin
234- vx_pending_writes <= vx_pending_writes + PENDING_SIZEW ' (reqs_sub);
234+ vx_pending_writes <= vx_pending_writes + PENDING_WR_SIZEW ' (reqs_sub);
235235 end
236236 end
237237
@@ -270,7 +270,7 @@ module VX_afu_wrap #(
270270 .ap_ready (ap_ready),
271271 .ap_idle (ap_idle),
272272 .interrupt (interrupt),
273-
273+
274274 .ap_ctrl_read (ap_ctrl_read),
275275
276276 `ifdef SCOPE
@@ -287,9 +287,8 @@ module VX_afu_wrap #(
287287 wire [M_AXI_MEM_ADDR_WIDTH - 1 : 0 ] m_axi_mem_araddr_u [C_M_AXI_MEM_NUM_BANKS ];
288288
289289 for (genvar i = 0 ; i < C_M_AXI_MEM_NUM_BANKS ; ++ i) begin : g_addressing
290- localparam [C_M_AXI_MEM_ADDR_WIDTH - 1 : 0 ] BANK_OFFSET = C_M_AXI_MEM_ADDR_WIDTH ' (`PLATFORM_MEMORY_OFFSET ) + C_M_AXI_MEM_ADDR_WIDTH ' (i) << M_AXI_MEM_ADDR_WIDTH ;
291- assign m_axi_mem_awaddr_a[i] = C_M_AXI_MEM_ADDR_WIDTH ' (m_axi_mem_awaddr_u[i]) + BANK_OFFSET ;
292- assign m_axi_mem_araddr_a[i] = C_M_AXI_MEM_ADDR_WIDTH ' (m_axi_mem_araddr_u[i]) + BANK_OFFSET ;
290+ assign m_axi_mem_awaddr_a[i] = C_M_AXI_MEM_ADDR_WIDTH ' (m_axi_mem_awaddr_u[i]) + C_M_AXI_MEM_ADDR_WIDTH ' (`PLATFORM_MEMORY_OFFSET );
291+ assign m_axi_mem_araddr_a[i] = C_M_AXI_MEM_ADDR_WIDTH ' (m_axi_mem_araddr_u[i]) + C_M_AXI_MEM_ADDR_WIDTH ' (`PLATFORM_MEMORY_OFFSET );
293292 end
294293
295294 `SCOPE_IO_SWITCH (2 );
0 commit comments