mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-22 21:09:15 -04:00
minor update
This commit is contained in:
parent
44fdc13cba
commit
874e3e138e
19 changed files with 141 additions and 149 deletions
|
@ -6,15 +6,14 @@ module VX_afu_wrap #(
|
|||
parameter C_S_AXI_CTRL_DATA_WIDTH = 32,
|
||||
parameter C_M_AXI_MEM_ID_WIDTH = 16,
|
||||
parameter C_M_AXI_MEM_ADDR_WIDTH = 32,
|
||||
parameter C_M_AXI_MEM_DATA_WIDTH = 512,
|
||||
parameter C_M_AXI_MEM_NUM_BANKS = 1
|
||||
parameter C_M_AXI_MEM_DATA_WIDTH = 512
|
||||
) (
|
||||
// System signals
|
||||
input wire ap_clk,
|
||||
input wire ap_rst_n,
|
||||
|
||||
// AXI4 master interface
|
||||
`GEN_AXI_MEM(0),
|
||||
`REPEAT (`M_AXI_MEM_NUM_BANKS, GEN_AXI_MEM, REPEAT_COMMA),
|
||||
|
||||
// AXI4-Lite slave interface
|
||||
input wire s_axi_ctrl_awvalid,
|
||||
|
@ -37,6 +36,8 @@ module VX_afu_wrap #(
|
|||
|
||||
output wire interrupt
|
||||
);
|
||||
localparam C_M_AXI_MEM_NUM_BANKS = `M_AXI_MEM_NUM_BANKS;
|
||||
|
||||
wire m_axi_mem_awvalid_a [C_M_AXI_MEM_NUM_BANKS];
|
||||
wire m_axi_mem_awready_a [C_M_AXI_MEM_NUM_BANKS];
|
||||
wire [C_M_AXI_MEM_ADDR_WIDTH-1:0] m_axi_mem_awaddr_a [C_M_AXI_MEM_NUM_BANKS];
|
||||
|
@ -64,7 +65,7 @@ module VX_afu_wrap #(
|
|||
wire [1:0] m_axi_mem_rresp_a [C_M_AXI_MEM_NUM_BANKS];
|
||||
|
||||
// convert memory interface to array
|
||||
`AXI_MEM_TO_ARRAY(0);
|
||||
`REPEAT (`M_AXI_MEM_NUM_BANKS, AXI_MEM_TO_ARRAY, REPEAT_SEMICOLON);
|
||||
|
||||
wire reset = ~ap_rst_n;
|
||||
|
||||
|
|
|
@ -1,32 +1,19 @@
|
|||
`include "VX_define.vh"
|
||||
`include "vortex_afu.vh"
|
||||
|
||||
`ifndef M_AXI_MEM_NUM_BANKS
|
||||
`define M_AXI_MEM_NUM_BANKS 1
|
||||
`endif
|
||||
|
||||
`ifndef M_AXI_MEM_ID_WIDTH
|
||||
`ifdef NDEBUG
|
||||
`define M_AXI_MEM_ID_WIDTH 20
|
||||
`else
|
||||
`define M_AXI_MEM_ID_WIDTH 32
|
||||
`endif
|
||||
`endif
|
||||
|
||||
module vortex_afu #(
|
||||
parameter C_S_AXI_CTRL_ADDR_WIDTH = 6,
|
||||
parameter C_S_AXI_CTRL_DATA_WIDTH = 32,
|
||||
parameter C_M_AXI_MEM_ID_WIDTH = `M_AXI_MEM_ID_WIDTH,
|
||||
parameter C_M_AXI_MEM_ADDR_WIDTH = 64,
|
||||
parameter C_M_AXI_MEM_DATA_WIDTH = `VX_MEM_DATA_WIDTH,
|
||||
parameter C_M_AXI_MEM_NUM_BANKS = `M_AXI_MEM_NUM_BANKS
|
||||
parameter C_M_AXI_MEM_DATA_WIDTH = `VX_MEM_DATA_WIDTH
|
||||
) (
|
||||
// System signals
|
||||
input wire ap_clk,
|
||||
input wire ap_rst_n,
|
||||
|
||||
// AXI4 master interface
|
||||
`GEN_AXI_MEM(0),
|
||||
`REPEAT (`M_AXI_MEM_NUM_BANKS, GEN_AXI_MEM, REPEAT_COMMA),
|
||||
|
||||
// AXI4-Lite slave interface
|
||||
input wire s_axi_ctrl_awvalid,
|
||||
|
@ -60,7 +47,7 @@ module vortex_afu #(
|
|||
.ap_clk (ap_clk),
|
||||
.ap_rst_n (ap_rst_n),
|
||||
|
||||
`AXI_MEM_ARGS(0),
|
||||
`REPEAT (`M_AXI_MEM_NUM_BANKS, AXI_MEM_ARGS, REPEAT_COMMA),
|
||||
|
||||
.s_axi_ctrl_awvalid (s_axi_ctrl_awvalid),
|
||||
.s_axi_ctrl_awready (s_axi_ctrl_awready),
|
||||
|
|
|
@ -1,87 +1,97 @@
|
|||
`ifndef VORTEX_AFU_VH
|
||||
`define VORTEX_AFU_VH
|
||||
|
||||
`define PP(x) x
|
||||
`ifndef M_AXI_MEM_NUM_BANKS
|
||||
`define M_AXI_MEM_NUM_BANKS 1
|
||||
`endif
|
||||
|
||||
`ifndef M_AXI_MEM_ID_WIDTH
|
||||
`ifdef NDEBUG
|
||||
`define M_AXI_MEM_ID_WIDTH 20
|
||||
`else
|
||||
`define M_AXI_MEM_ID_WIDTH 32
|
||||
`endif
|
||||
`endif
|
||||
|
||||
`define GEN_AXI_MEM(i) \
|
||||
output wire m`PP(``i)_axi_mem_awvalid, \
|
||||
input wire m`PP(``i)_axi_mem_awready, \
|
||||
output wire [C_M_AXI_MEM_ADDR_WIDTH-1:0] m`PP(``i)_axi_mem_awaddr, \
|
||||
output wire [C_M_AXI_MEM_ID_WIDTH - 1:0] m`PP(``i)_axi_mem_awid, \
|
||||
output wire [7:0] m`PP(``i)_axi_mem_awlen, \
|
||||
output wire m`PP(``i)_axi_mem_wvalid, \
|
||||
input wire m`PP(``i)_axi_mem_wready, \
|
||||
output wire [C_M_AXI_MEM_DATA_WIDTH-1:0] m`PP(``i)_axi_mem_wdata, \
|
||||
output wire [C_M_AXI_MEM_DATA_WIDTH/8-1:0] m`PP(``i)_axi_mem_wstrb, \
|
||||
output wire m`PP(``i)_axi_mem_wlast, \
|
||||
output wire m`PP(``i)_axi_mem_arvalid, \
|
||||
input wire m`PP(``i)_axi_mem_arready, \
|
||||
output wire [C_M_AXI_MEM_ADDR_WIDTH-1:0] m`PP(``i)_axi_mem_araddr, \
|
||||
output wire [C_M_AXI_MEM_ID_WIDTH-1:0] m`PP(``i)_axi_mem_arid, \
|
||||
output wire [7:0] m`PP(``i)_axi_mem_arlen, \
|
||||
input wire m`PP(``i)_axi_mem_rvalid, \
|
||||
output wire m`PP(``i)_axi_mem_rready, \
|
||||
input wire [C_M_AXI_MEM_DATA_WIDTH - 1:0] m`PP(``i)_axi_mem_rdata, \
|
||||
input wire m`PP(``i)_axi_mem_rlast, \
|
||||
input wire [C_M_AXI_MEM_ID_WIDTH - 1:0] m`PP(``i)_axi_mem_rid, \
|
||||
input wire [1:0] m`PP(``i)_axi_mem_rresp, \
|
||||
input wire m`PP(``i)_axi_mem_bvalid, \
|
||||
output wire m`PP(``i)_axi_mem_bready, \
|
||||
input wire [1:0] m`PP(``i)_axi_mem_bresp, \
|
||||
input wire [C_M_AXI_MEM_ID_WIDTH - 1:0] m`PP(``i)_axi_mem_bid
|
||||
output wire m``i``_axi_mem_awvalid, \
|
||||
input wire m``i``_axi_mem_awready, \
|
||||
output wire [C_M_AXI_MEM_ADDR_WIDTH-1:0] m``i``_axi_mem_awaddr, \
|
||||
output wire [C_M_AXI_MEM_ID_WIDTH - 1:0] m``i``_axi_mem_awid, \
|
||||
output wire [7:0] m``i``_axi_mem_awlen, \
|
||||
output wire m``i``_axi_mem_wvalid, \
|
||||
input wire m``i``_axi_mem_wready, \
|
||||
output wire [C_M_AXI_MEM_DATA_WIDTH-1:0] m``i``_axi_mem_wdata, \
|
||||
output wire [C_M_AXI_MEM_DATA_WIDTH/8-1:0] m``i``_axi_mem_wstrb, \
|
||||
output wire m``i``_axi_mem_wlast, \
|
||||
output wire m``i``_axi_mem_arvalid, \
|
||||
input wire m``i``_axi_mem_arready, \
|
||||
output wire [C_M_AXI_MEM_ADDR_WIDTH-1:0] m``i``_axi_mem_araddr, \
|
||||
output wire [C_M_AXI_MEM_ID_WIDTH-1:0] m``i``_axi_mem_arid, \
|
||||
output wire [7:0] m``i``_axi_mem_arlen, \
|
||||
input wire m``i``_axi_mem_rvalid, \
|
||||
output wire m``i``_axi_mem_rready, \
|
||||
input wire [C_M_AXI_MEM_DATA_WIDTH - 1:0] m``i``_axi_mem_rdata, \
|
||||
input wire m``i``_axi_mem_rlast, \
|
||||
input wire [C_M_AXI_MEM_ID_WIDTH - 1:0] m``i``_axi_mem_rid, \
|
||||
input wire [1:0] m``i``_axi_mem_rresp, \
|
||||
input wire m``i``_axi_mem_bvalid, \
|
||||
output wire m``i``_axi_mem_bready, \
|
||||
input wire [1:0] m``i``_axi_mem_bresp, \
|
||||
input wire [C_M_AXI_MEM_ID_WIDTH - 1:0] m``i``_axi_mem_bid
|
||||
|
||||
`define AXI_MEM_ARGS(i) \
|
||||
.m`PP(``i)_axi_mem_awvalid(m`PP(``i)_axi_mem_awvalid), \
|
||||
.m`PP(``i)_axi_mem_awready(m`PP(``i)_axi_mem_awready), \
|
||||
.m`PP(``i)_axi_mem_awaddr(m`PP(``i)_axi_mem_awaddr), \
|
||||
.m`PP(``i)_axi_mem_awid(m`PP(``i)_axi_mem_awid), \
|
||||
.m`PP(``i)_axi_mem_awlen(m`PP(``i)_axi_mem_awlen), \
|
||||
.m`PP(``i)_axi_mem_wvalid(m`PP(``i)_axi_mem_wvalid), \
|
||||
.m`PP(``i)_axi_mem_wready(m`PP(``i)_axi_mem_wready), \
|
||||
.m`PP(``i)_axi_mem_wdata(m`PP(``i)_axi_mem_wdata), \
|
||||
.m`PP(``i)_axi_mem_wstrb(m`PP(``i)_axi_mem_wstrb), \
|
||||
.m`PP(``i)_axi_mem_wlast(m`PP(``i)_axi_mem_wlast), \
|
||||
.m`PP(``i)_axi_mem_arvalid(m`PP(``i)_axi_mem_arvalid), \
|
||||
.m`PP(``i)_axi_mem_arready(m`PP(``i)_axi_mem_arready), \
|
||||
.m`PP(``i)_axi_mem_araddr(m`PP(``i)_axi_mem_araddr), \
|
||||
.m`PP(``i)_axi_mem_arid(m`PP(``i)_axi_mem_arid), \
|
||||
.m`PP(``i)_axi_mem_arlen(m`PP(``i)_axi_mem_arlen), \
|
||||
.m`PP(``i)_axi_mem_rvalid(m`PP(``i)_axi_mem_rvalid), \
|
||||
.m`PP(``i)_axi_mem_rready(m`PP(``i)_axi_mem_rready), \
|
||||
.m`PP(``i)_axi_mem_rdata(m`PP(``i)_axi_mem_rdata), \
|
||||
.m`PP(``i)_axi_mem_rlast(m`PP(``i)_axi_mem_rlast), \
|
||||
.m`PP(``i)_axi_mem_rid(m`PP(``i)_axi_mem_rid), \
|
||||
.m`PP(``i)_axi_mem_rresp(m`PP(``i)_axi_mem_rresp), \
|
||||
.m`PP(``i)_axi_mem_bvalid(m`PP(``i)_axi_mem_bvalid), \
|
||||
.m`PP(``i)_axi_mem_bready(m`PP(``i)_axi_mem_bready), \
|
||||
.m`PP(``i)_axi_mem_bresp(m`PP(``i)_axi_mem_bresp), \
|
||||
.m`PP(``i)_axi_mem_bid(m`PP(``i)_axi_mem_bid)
|
||||
.m``i``_axi_mem_awvalid(m``i``_axi_mem_awvalid), \
|
||||
.m``i``_axi_mem_awready(m``i``_axi_mem_awready), \
|
||||
.m``i``_axi_mem_awaddr(m``i``_axi_mem_awaddr), \
|
||||
.m``i``_axi_mem_awid(m``i``_axi_mem_awid), \
|
||||
.m``i``_axi_mem_awlen(m``i``_axi_mem_awlen), \
|
||||
.m``i``_axi_mem_wvalid(m``i``_axi_mem_wvalid), \
|
||||
.m``i``_axi_mem_wready(m``i``_axi_mem_wready), \
|
||||
.m``i``_axi_mem_wdata(m``i``_axi_mem_wdata), \
|
||||
.m``i``_axi_mem_wstrb(m``i``_axi_mem_wstrb), \
|
||||
.m``i``_axi_mem_wlast(m``i``_axi_mem_wlast), \
|
||||
.m``i``_axi_mem_arvalid(m``i``_axi_mem_arvalid), \
|
||||
.m``i``_axi_mem_arready(m``i``_axi_mem_arready), \
|
||||
.m``i``_axi_mem_araddr(m``i``_axi_mem_araddr), \
|
||||
.m``i``_axi_mem_arid(m``i``_axi_mem_arid), \
|
||||
.m``i``_axi_mem_arlen(m``i``_axi_mem_arlen), \
|
||||
.m``i``_axi_mem_rvalid(m``i``_axi_mem_rvalid), \
|
||||
.m``i``_axi_mem_rready(m``i``_axi_mem_rready), \
|
||||
.m``i``_axi_mem_rdata(m``i``_axi_mem_rdata), \
|
||||
.m``i``_axi_mem_rlast(m``i``_axi_mem_rlast), \
|
||||
.m``i``_axi_mem_rid(m``i``_axi_mem_rid), \
|
||||
.m``i``_axi_mem_rresp(m``i``_axi_mem_rresp), \
|
||||
.m``i``_axi_mem_bvalid(m``i``_axi_mem_bvalid), \
|
||||
.m``i``_axi_mem_bready(m``i``_axi_mem_bready), \
|
||||
.m``i``_axi_mem_bresp(m``i``_axi_mem_bresp), \
|
||||
.m``i``_axi_mem_bid(m``i``_axi_mem_bid)
|
||||
|
||||
`define AXI_MEM_TO_ARRAY(i) \
|
||||
assign m`PP(``i)_axi_mem_awvalid = m_axi_mem_awvalid_w[i]; \
|
||||
assign m_axi_mem_awready_w[i] = m`PP(``i)_axi_mem_awready; \
|
||||
assign m`PP(``i)_axi_mem_awaddr = m_axi_mem_awaddr_w[i]; \
|
||||
assign m`PP(``i)_axi_mem_awid = m_axi_mem_awid_w[i]; \
|
||||
assign m`PP(``i)_axi_mem_awlen = m_axi_mem_awlen_w[i]; \
|
||||
assign m`PP(``i)_axi_mem_wvalid = m_axi_mem_wvalid_w[i]; \
|
||||
assign m_axi_mem_wready_w[i] = m`PP(``i)_axi_mem_wready; \
|
||||
assign m`PP(``i)_axi_mem_wdata = m_axi_mem_wdata_w[i]; \
|
||||
assign m`PP(``i)_axi_mem_wstrb = m_axi_mem_wstrb_w[i]; \
|
||||
assign m`PP(``i)_axi_mem_wlast = m_axi_mem_wlast_w[i]; \
|
||||
assign m`PP(``i)_axi_mem_arvalid = m_axi_mem_arvalid_w[i]; \
|
||||
assign m_axi_mem_arready_w[i] = m`PP(``i)_axi_mem_arready; \
|
||||
assign m`PP(``i)_axi_mem_araddr = m_axi_mem_araddr_w[i]; \
|
||||
assign m`PP(``i)_axi_mem_arid = m_axi_mem_arid_w[i]; \
|
||||
assign m`PP(``i)_axi_mem_arlen = m_axi_mem_arlen_w[i]; \
|
||||
assign m_axi_mem_rvalid_w[i] = m`PP(``i)_axi_mem_rvalid; \
|
||||
assign m`PP(``i)_axi_mem_rready = m_axi_mem_rready_w[i]; \
|
||||
assign m_axi_mem_rdata_w[i] = m`PP(``i)_axi_mem_rdata; \
|
||||
assign m_axi_mem_rlast_w[i] = m`PP(``i)_axi_mem_rlast; \
|
||||
assign m_axi_mem_rid_w[i] = m`PP(``i)_axi_mem_rid; \
|
||||
assign m_axi_mem_rresp_w[i] = m`PP(``i)_axi_mem_rresp; \
|
||||
assign m_axi_mem_bvalid_w[i] = m`PP(``i)_axi_mem_bvalid; \
|
||||
assign m`PP(``i)_axi_mem_bready = m_axi_mem_bready_w[i]; \
|
||||
assign m_axi_mem_bresp_w[i] = m`PP(``i)_axi_mem_bresp; \
|
||||
assign m_axi_mem_bid_w[i] = m`PP(``i)_axi_mem_bid
|
||||
assign m``i``_axi_mem_awvalid = m_axi_mem_awvalid_a[i]; \
|
||||
assign m_axi_mem_awready_a[i] = m``i``_axi_mem_awready; \
|
||||
assign m``i``_axi_mem_awaddr = m_axi_mem_awaddr_a[i]; \
|
||||
assign m``i``_axi_mem_awid = m_axi_mem_awid_a[i]; \
|
||||
assign m``i``_axi_mem_awlen = m_axi_mem_awlen_a[i]; \
|
||||
assign m``i``_axi_mem_wvalid = m_axi_mem_wvalid_a[i]; \
|
||||
assign m_axi_mem_wready_a[i] = m``i``_axi_mem_wready; \
|
||||
assign m``i``_axi_mem_wdata = m_axi_mem_wdata_a[i]; \
|
||||
assign m``i``_axi_mem_wstrb = m_axi_mem_wstrb_a[i]; \
|
||||
assign m``i``_axi_mem_wlast = m_axi_mem_wlast_a[i]; \
|
||||
assign m``i``_axi_mem_arvalid = m_axi_mem_arvalid_a[i]; \
|
||||
assign m_axi_mem_arready_a[i] = m``i``_axi_mem_arready; \
|
||||
assign m``i``_axi_mem_araddr = m_axi_mem_araddr_a[i]; \
|
||||
assign m``i``_axi_mem_arid = m_axi_mem_arid_a[i]; \
|
||||
assign m``i``_axi_mem_arlen = m_axi_mem_arlen_a[i]; \
|
||||
assign m_axi_mem_rvalid_a[i] = m``i``_axi_mem_rvalid; \
|
||||
assign m``i``_axi_mem_rready = m_axi_mem_rready_a[i]; \
|
||||
assign m_axi_mem_rdata_a[i] = m``i``_axi_mem_rdata; \
|
||||
assign m_axi_mem_rlast_a[i] = m``i``_axi_mem_rlast; \
|
||||
assign m_axi_mem_rid_a[i] = m``i``_axi_mem_rid; \
|
||||
assign m_axi_mem_rresp_a[i] = m``i``_axi_mem_rresp; \
|
||||
assign m_axi_mem_bvalid_a[i] = m``i``_axi_mem_bvalid; \
|
||||
assign m``i``_axi_mem_bready = m_axi_mem_bready_a[i]; \
|
||||
assign m_axi_mem_bresp_a[i] = m``i``_axi_mem_bresp; \
|
||||
assign m_axi_mem_bid_a[i] = m``i``_axi_mem_bid
|
||||
|
||||
`endif
|
||||
|
|
|
@ -239,4 +239,7 @@
|
|||
`define _REPEAT_31(f,s) `f(30) `s `_REPEAT_30(f,s)
|
||||
`define _REPEAT_32(f,s) `f(31) `s `_REPEAT_31(f,s)
|
||||
|
||||
`define REPEAT_COMMA ,
|
||||
`define REPEAT_SEMICOLON ;
|
||||
|
||||
`endif
|
||||
|
|
|
@ -2,20 +2,46 @@
|
|||
|
||||
macros=()
|
||||
includes=()
|
||||
excludes=()
|
||||
|
||||
output_file=""
|
||||
global_file=""
|
||||
dest_folder=""
|
||||
|
||||
function absolute_path() {
|
||||
if [ -d "$1" ]; then
|
||||
(cd "$1"; pwd)
|
||||
elif [ -f "$1" ]; then
|
||||
if [[ $1 = /* ]]; then
|
||||
echo "$1"
|
||||
elif [[ $1 == */* ]]; then
|
||||
echo "$(cd "${1%/*}"; pwd)/${1##*/}"
|
||||
else
|
||||
echo "$(pwd)/$1"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function check_not_excluded() {
|
||||
for fe in ${excludes[@]}; do
|
||||
if [[ $1 =~ $fe ]]; then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
# parse command arguments
|
||||
while getopts D:I:O:G:F:h flag
|
||||
while getopts D:I:E:O:G:F:h flag
|
||||
do
|
||||
case "${flag}" in
|
||||
D) macros+=( ${OPTARG} );;
|
||||
I) includes+=( ${OPTARG} );;
|
||||
E) excludes+=( ${OPTARG} );;
|
||||
O) output_file=( ${OPTARG} );;
|
||||
G) global_file=( ${OPTARG} );;
|
||||
F) dest_folder=( ${OPTARG} );;
|
||||
h) echo "Usage: [-D macro] [-I include] [-O output_file] [-F destination_folder] [-G global_header] [-h help]"
|
||||
h) echo "Usage: [-D macro] [-I include] [-E exclude] [-O output_file] [-F destination_folder] [-G global_header] [-h help]"
|
||||
exit 0
|
||||
;;
|
||||
\?)
|
||||
|
@ -46,7 +72,9 @@ then
|
|||
# copy source files
|
||||
for dir in ${includes[@]}; do
|
||||
for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -o -name '*.vh' -o -name '*.svh' -o -name '*.hex' -type f); do
|
||||
cp $file $dest_folder
|
||||
if check_not_excluded $file; then
|
||||
cp $(absolute_path $file) $dest_folder
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
@ -72,7 +100,9 @@ then
|
|||
# dump source files
|
||||
for dir in ${includes[@]}; do
|
||||
for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -type f); do
|
||||
echo $file
|
||||
if check_not_excluded $file; then
|
||||
echo $(absolute_path $file)
|
||||
fi
|
||||
done
|
||||
done
|
||||
else
|
||||
|
@ -81,7 +111,9 @@ then
|
|||
|
||||
# dump source files
|
||||
for file in $(find $dest_folder -maxdepth 1 -name '*.v' -o -name '*.sv' -type f); do
|
||||
echo $file
|
||||
if check_not_excluded $file; then
|
||||
echo $(absolute_path $file)
|
||||
fi
|
||||
done
|
||||
fi
|
||||
} > $output_file
|
||||
|
|
|
@ -18,6 +18,7 @@ MAX_JOBS ?= 8
|
|||
|
||||
RTL_DIR = ../../../../rtl
|
||||
AFU_DIR = ../../../../afu/xrt
|
||||
SCRIPT_DIR = ../../../../scripts
|
||||
|
||||
PLATFORM_TO_XSA = $(strip $(patsubst %.xpfm, % , $(shell basename $(PLATFORM))))
|
||||
XSA := $(call PLATFORM_TO_XSA, $(PLATFORM))
|
||||
|
@ -134,7 +135,11 @@ all: check-devices emconfig $(XCLBIN_CONTAINER)
|
|||
|
||||
gen-sources: $(BUILD_DIR)/sources.txt
|
||||
$(BUILD_DIR)/sources.txt:
|
||||
mkdir -p $(BUILD_DIR); cd $(BUILD_DIR); ../scripts/gen_sources.sh $(RTL_INCLUDE) $(CONFIGS) > sources.txt
|
||||
mkdir -p $(BUILD_DIR); cd $(BUILD_DIR); $(SCRIPT_DIR)/gen_sources.sh $(RTL_INCLUDE) $(CONFIGS) -EVX_fpu_fpnew.sv -Evortex_afu.v -EVX_afu_wrap.sv -Osources.txt
|
||||
cd $(BUILD_DIR); verilator -E -DNOGLOBALS $(RTL_INCLUDE) $(CONFIGS) $(AFU_DIR)/VX_afu_wrap.sv | sed '/^`line /d' > VX_afu_wrap.sv
|
||||
cd $(BUILD_DIR); verilator -E -DNOGLOBALS $(RTL_INCLUDE) $(CONFIGS) $(AFU_DIR)/vortex_afu.v | sed '/^`line /d' > vortex_afu.v
|
||||
echo "$(PWD)/$(BUILD_DIR)/VX_afu_wrap.sv" >> $(BUILD_DIR)/sources.txt
|
||||
echo "$(PWD)/$(BUILD_DIR)/vortex_afu.v" >> $(BUILD_DIR)/sources.txt
|
||||
|
||||
$(XO_CONTAINER): $(BUILD_DIR)/sources.txt ./kernel.xml
|
||||
mkdir -p $(BUILD_DIR); cd $(BUILD_DIR); $(VIVADO) -mode batch -source ../scripts/gen_xo.tcl -tclargs ../$(XO_CONTAINER) vortex_afu sources.txt ../kernel.xml ../$(BUILD_DIR)
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
exclude_list="VX_fpu_fpnew.sv"
|
||||
macros=()
|
||||
includes=()
|
||||
|
||||
# parse command arguments
|
||||
while getopts D:I:h flag
|
||||
do
|
||||
case "${flag}" in
|
||||
D) macros+=( ${OPTARG} );;
|
||||
I) includes+=( ${OPTARG} );;
|
||||
h) echo "Usage: [-D macro] [-I include] [-h help]"
|
||||
exit 0
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# dump macros
|
||||
for value in ${macros[@]}; do
|
||||
echo "+define+$value"
|
||||
done
|
||||
|
||||
# dump include directories
|
||||
for dir in ${includes[@]}; do
|
||||
echo "+incdir+$dir"
|
||||
done
|
||||
|
||||
# dump source files
|
||||
for dir in ${includes[@]}; do
|
||||
for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -type f); do
|
||||
exclude=0
|
||||
for fe in $exclude_list; do
|
||||
if [[ $file =~ $fe ]]; then
|
||||
exclude=1
|
||||
fi
|
||||
done
|
||||
if [[ $exclude == 0 ]]; then
|
||||
echo $file
|
||||
fi
|
||||
done
|
||||
done
|
|
@ -154,7 +154,7 @@ foreach up [ipx::get_user_parameters] {
|
|||
}
|
||||
|
||||
ipx::associate_bus_interfaces -busif s_axi_ctrl -clock ap_clk $core
|
||||
ipx::associate_bus_interfaces -busif m0_axi_mem -clock ap_clk $core
|
||||
ipx::associate_bus_interfaces -busif m0_axi_mem -clock ap_clk $core
|
||||
|
||||
set_property xpm_libraries {XPM_CDC XPM_MEMORY XPM_FIFO} $core
|
||||
set_property sdx_kernel true $core
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue