Skip to content

Commit 38861d9

Browse files
committed
minor updates
1 parent 82b0eed commit 38861d9

File tree

4 files changed

+23
-14
lines changed

4 files changed

+23
-14
lines changed

hw/rtl/VX_config.vh

+1-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@
191191
`endif
192192

193193
`ifndef PLATFORM_MEMORY_INTERLEAVE
194-
`define PLATFORM_MEMORY_INTERLEAVE 0
194+
`define PLATFORM_MEMORY_INTERLEAVE 1
195195
`endif
196196

197197
`ifdef XLEN_64

hw/rtl/afu/xrt/VX_afu_wrap.sv

+13-10
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,16 @@
1616
`include "vortex_afu.vh"
1717

1818
module 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,
@@ -58,7 +62,7 @@ module VX_afu_wrap #(
5862

5963
output wire interrupt
6064
);
61-
localparam M_AXI_MEM_ADDR_WIDTH = `PLATFORM_MEMORY_ADDR_WIDTH - $clog2(C_M_AXI_MEM_NUM_BANKS);
65+
localparam M_AXI_MEM_ADDR_WIDTH = `PLATFORM_MEMORY_ADDR_WIDTH;
6266

6367
typedef enum logic [1:0] {
6468
STATE_IDLE = 0,
@@ -283,9 +287,8 @@ module VX_afu_wrap #(
283287
wire [M_AXI_MEM_ADDR_WIDTH-1:0] m_axi_mem_araddr_u [C_M_AXI_MEM_NUM_BANKS];
284288

285289
for (genvar i = 0; i < C_M_AXI_MEM_NUM_BANKS; ++i) begin : g_addressing
286-
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;
287-
assign m_axi_mem_awaddr_a[i] = C_M_AXI_MEM_ADDR_WIDTH'(m_axi_mem_awaddr_u[i]) + BANK_OFFSET;
288-
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);
289292
end
290293

291294
`SCOPE_IO_SWITCH (2);

hw/rtl/libs/VX_axi_adapter.sv

+7-1
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,13 @@ module VX_axi_adapter #(
251251
// AXI write address channel
252252

253253
assign m_axi_awvalid[i] = req_xbar_valid_out[i] && xbar_rw_out && ~m_axi_aw_ack;
254-
assign m_axi_awaddr[i] = ADDR_WIDTH_OUT'(xbar_addr_out) << LOG2_DATA_SIZE;
254+
255+
if (INTERLEAVE) begin : g_m_axi_awaddr_i
256+
assign m_axi_awaddr[i] = (ADDR_WIDTH_OUT'(xbar_addr_out) << (BANK_SEL_BITS + LOG2_DATA_SIZE)) | (ADDR_WIDTH_OUT'(i) << LOG2_DATA_SIZE);
257+
end else begin : g_m_axi_awaddr_ni
258+
assign m_axi_awaddr[i] = (ADDR_WIDTH_OUT'(xbar_addr_out) << LOG2_DATA_SIZE) | (ADDR_WIDTH_OUT'(i) << (BANK_ADDR_WIDTH + LOG2_DATA_SIZE));
259+
end
260+
255261
assign m_axi_awid[i] = TAG_WIDTH_OUT'(xbar_tag_out);
256262
assign m_axi_awlen[i] = 8'b00000000;
257263
assign m_axi_awsize[i] = 3'(LOG2_DATA_SIZE);

sim/xrtsim/xrt_sim.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ class xrt_sim::Impl {
490490

491491
/*printf("%0ld: [sim] axi-mem-read[%d]: addr=0x%lx, tag=0x%x, data=0x", timestamp, b, mem_req->addr, mem_req->tag);
492492
for (int i = PLATFORM_MEMORY_DATA_SIZE-1; i >= 0; --i) {
493-
printf("%02x", mem_req->data[b]);
493+
printf("%02x", mem_req->data[i]);
494494
}
495495
printf("\n");*/
496496

@@ -533,7 +533,7 @@ class xrt_sim::Impl {
533533

534534
/*printf("%0ld: [sim] axi-mem-write[%d]: addr=0x%lx, byteen=0x%lx, tag=0x%x, data=0x", timestamp, b, mem_req->addr, byteen, mem_req->tag);
535535
for (int i = PLATFORM_MEMORY_DATA_SIZE-1; i >= 0; --i) {
536-
printf("%02x", m_axi_states_[b].write_req_data[i]]);
536+
printf("%02x", m_axi_states_[b].write_req_data[i]);
537537
}
538538
printf("\n");*/
539539

0 commit comments

Comments
 (0)