fpga: x400: Update rfnoc_image_core files

Updates the RFNoC image core files to include DRAM and default image
changes.


Original-commit: 58a2dfee34e2b4e9909a326a024fda6a615c4913
This commit is contained in:
Wade Fife
2022-02-07 13:08:11 -07:00
parent c885f401c0
commit 1b84fb44b0
8 changed files with 1327 additions and 98 deletions
+609 -26
View File
@@ -1,5 +1,5 @@
// //
// Copyright 2021 Ettus Research, A National Instruments Brand // Copyright 2022 Ettus Research, A National Instruments Brand
// //
// SPDX-License-Identifier: LGPL-3.0-or-later // SPDX-License-Identifier: LGPL-3.0-or-later
// //
@@ -13,9 +13,9 @@
// This file was automatically generated by the RFNoC image builder tool. // This file was automatically generated by the RFNoC image builder tool.
// Re-running that tool will overwrite this file! // Re-running that tool will overwrite this file!
// //
// File generated on: 2021-05-03T08:46:03.650065 // File generated on: 2022-02-02T14:39:07.260299
// Source: x410_100_rfnoc_image_core.yml // Source: ./x410_100_rfnoc_image_core.yml
// Source SHA256: cb326c48a67d58ce1151b83a8943f02c24509946f974f9b1b090bc1780915f8a // Source SHA256: 0171fb376a68431d88c4d9a1f5b69c5b20ebb0e5b4efacb34173f9349a25e3d9
// //
`default_nettype none `default_nettype none
@@ -33,6 +33,7 @@ module rfnoc_image_core #(
input wire core_arst, input wire core_arst,
input wire radio_clk, input wire radio_clk,
input wire radio_2x_clk, input wire radio_2x_clk,
input wire dram_clk,
// Basic // Basic
input wire [ 15:0] device_id, input wire [ 15:0] device_id,
@@ -76,6 +77,52 @@ module rfnoc_image_core #(
output wire [ 255:0] radio_tx_data_radio1, output wire [ 255:0] radio_tx_data_radio1,
input wire [ 7:0] radio_tx_stb_radio1, input wire [ 7:0] radio_tx_stb_radio1,
output wire [ 7:0] radio_tx_running_radio1, output wire [ 7:0] radio_tx_running_radio1,
// dram
input wire [ 0:0] axi_rst,
output wire [ 3:0] m_axi_awid,
output wire [ 191:0] m_axi_awaddr,
output wire [ 31:0] m_axi_awlen,
output wire [ 11:0] m_axi_awsize,
output wire [ 7:0] m_axi_awburst,
output wire [ 3:0] m_axi_awlock,
output wire [ 15:0] m_axi_awcache,
output wire [ 11:0] m_axi_awprot,
output wire [ 15:0] m_axi_awqos,
output wire [ 15:0] m_axi_awregion,
output wire [ 3:0] m_axi_awuser,
output wire [ 3:0] m_axi_awvalid,
input wire [ 3:0] m_axi_awready,
output wire [2047:0] m_axi_wdata,
output wire [ 255:0] m_axi_wstrb,
output wire [ 3:0] m_axi_wlast,
output wire [ 3:0] m_axi_wuser,
output wire [ 3:0] m_axi_wvalid,
input wire [ 3:0] m_axi_wready,
input wire [ 3:0] m_axi_bid,
input wire [ 7:0] m_axi_bresp,
input wire [ 3:0] m_axi_buser,
input wire [ 3:0] m_axi_bvalid,
output wire [ 3:0] m_axi_bready,
output wire [ 3:0] m_axi_arid,
output wire [ 191:0] m_axi_araddr,
output wire [ 31:0] m_axi_arlen,
output wire [ 11:0] m_axi_arsize,
output wire [ 7:0] m_axi_arburst,
output wire [ 3:0] m_axi_arlock,
output wire [ 15:0] m_axi_arcache,
output wire [ 11:0] m_axi_arprot,
output wire [ 15:0] m_axi_arqos,
output wire [ 15:0] m_axi_arregion,
output wire [ 3:0] m_axi_aruser,
output wire [ 3:0] m_axi_arvalid,
input wire [ 3:0] m_axi_arready,
input wire [ 3:0] m_axi_rid,
input wire [2047:0] m_axi_rdata,
input wire [ 7:0] m_axi_rresp,
input wire [ 3:0] m_axi_rlast,
input wire [ 3:0] m_axi_ruser,
input wire [ 3:0] m_axi_rvalid,
output wire [ 3:0] m_axi_rready,
// Transport Adapters /////////////// // Transport Adapters ///////////////
@@ -177,10 +224,42 @@ module rfnoc_image_core #(
wire ep3_to_xb_tlast ; wire ep3_to_xb_tlast ;
wire ep3_to_xb_tvalid; wire ep3_to_xb_tvalid;
wire ep3_to_xb_tready; wire ep3_to_xb_tready;
wire [CHDR_W-1:0] xb_to_ep4_tdata ;
wire xb_to_ep4_tlast ;
wire xb_to_ep4_tvalid;
wire xb_to_ep4_tready;
wire [CHDR_W-1:0] ep4_to_xb_tdata ;
wire ep4_to_xb_tlast ;
wire ep4_to_xb_tvalid;
wire ep4_to_xb_tready;
wire [CHDR_W-1:0] xb_to_ep5_tdata ;
wire xb_to_ep5_tlast ;
wire xb_to_ep5_tvalid;
wire xb_to_ep5_tready;
wire [CHDR_W-1:0] ep5_to_xb_tdata ;
wire ep5_to_xb_tlast ;
wire ep5_to_xb_tvalid;
wire ep5_to_xb_tready;
wire [CHDR_W-1:0] xb_to_ep6_tdata ;
wire xb_to_ep6_tlast ;
wire xb_to_ep6_tvalid;
wire xb_to_ep6_tready;
wire [CHDR_W-1:0] ep6_to_xb_tdata ;
wire ep6_to_xb_tlast ;
wire ep6_to_xb_tvalid;
wire ep6_to_xb_tready;
wire [CHDR_W-1:0] xb_to_ep7_tdata ;
wire xb_to_ep7_tlast ;
wire xb_to_ep7_tvalid;
wire xb_to_ep7_tready;
wire [CHDR_W-1:0] ep7_to_xb_tdata ;
wire ep7_to_xb_tlast ;
wire ep7_to_xb_tvalid;
wire ep7_to_xb_tready;
chdr_crossbar_nxn #( chdr_crossbar_nxn #(
.CHDR_W (CHDR_W), .CHDR_W (CHDR_W),
.NPORTS (10), .NPORTS (14),
.DEFAULT_PORT (0), .DEFAULT_PORT (0),
.MTU (MTU), .MTU (MTU),
.ROUTE_TBL_SIZE (6), .ROUTE_TBL_SIZE (6),
@@ -193,14 +272,14 @@ module rfnoc_image_core #(
.clk (rfnoc_chdr_clk), .clk (rfnoc_chdr_clk),
.reset (rfnoc_chdr_rst), .reset (rfnoc_chdr_rst),
.device_id (device_id), .device_id (device_id),
.s_axis_tdata ({ep3_to_xb_tdata , ep2_to_xb_tdata , ep1_to_xb_tdata , ep0_to_xb_tdata , s_dma_tdata , s_eth4_tdata , s_eth3_tdata , s_eth2_tdata , s_eth1_tdata , s_eth0_tdata }), .s_axis_tdata ({ep7_to_xb_tdata , ep6_to_xb_tdata , ep5_to_xb_tdata , ep4_to_xb_tdata , ep3_to_xb_tdata , ep2_to_xb_tdata , ep1_to_xb_tdata , ep0_to_xb_tdata , s_dma_tdata , s_eth4_tdata , s_eth3_tdata , s_eth2_tdata , s_eth1_tdata , s_eth0_tdata }),
.s_axis_tlast ({ep3_to_xb_tlast , ep2_to_xb_tlast , ep1_to_xb_tlast , ep0_to_xb_tlast , s_dma_tlast , s_eth4_tlast , s_eth3_tlast , s_eth2_tlast , s_eth1_tlast , s_eth0_tlast }), .s_axis_tlast ({ep7_to_xb_tlast , ep6_to_xb_tlast , ep5_to_xb_tlast , ep4_to_xb_tlast , ep3_to_xb_tlast , ep2_to_xb_tlast , ep1_to_xb_tlast , ep0_to_xb_tlast , s_dma_tlast , s_eth4_tlast , s_eth3_tlast , s_eth2_tlast , s_eth1_tlast , s_eth0_tlast }),
.s_axis_tvalid ({ep3_to_xb_tvalid, ep2_to_xb_tvalid, ep1_to_xb_tvalid, ep0_to_xb_tvalid, s_dma_tvalid, s_eth4_tvalid, s_eth3_tvalid, s_eth2_tvalid, s_eth1_tvalid, s_eth0_tvalid}), .s_axis_tvalid ({ep7_to_xb_tvalid, ep6_to_xb_tvalid, ep5_to_xb_tvalid, ep4_to_xb_tvalid, ep3_to_xb_tvalid, ep2_to_xb_tvalid, ep1_to_xb_tvalid, ep0_to_xb_tvalid, s_dma_tvalid, s_eth4_tvalid, s_eth3_tvalid, s_eth2_tvalid, s_eth1_tvalid, s_eth0_tvalid}),
.s_axis_tready ({ep3_to_xb_tready, ep2_to_xb_tready, ep1_to_xb_tready, ep0_to_xb_tready, s_dma_tready, s_eth4_tready, s_eth3_tready, s_eth2_tready, s_eth1_tready, s_eth0_tready}), .s_axis_tready ({ep7_to_xb_tready, ep6_to_xb_tready, ep5_to_xb_tready, ep4_to_xb_tready, ep3_to_xb_tready, ep2_to_xb_tready, ep1_to_xb_tready, ep0_to_xb_tready, s_dma_tready, s_eth4_tready, s_eth3_tready, s_eth2_tready, s_eth1_tready, s_eth0_tready}),
.m_axis_tdata ({xb_to_ep3_tdata , xb_to_ep2_tdata , xb_to_ep1_tdata , xb_to_ep0_tdata , m_dma_tdata , m_eth4_tdata , m_eth3_tdata , m_eth2_tdata , m_eth1_tdata , m_eth0_tdata }), .m_axis_tdata ({xb_to_ep7_tdata , xb_to_ep6_tdata , xb_to_ep5_tdata , xb_to_ep4_tdata , xb_to_ep3_tdata , xb_to_ep2_tdata , xb_to_ep1_tdata , xb_to_ep0_tdata , m_dma_tdata , m_eth4_tdata , m_eth3_tdata , m_eth2_tdata , m_eth1_tdata , m_eth0_tdata }),
.m_axis_tlast ({xb_to_ep3_tlast , xb_to_ep2_tlast , xb_to_ep1_tlast , xb_to_ep0_tlast , m_dma_tlast , m_eth4_tlast , m_eth3_tlast , m_eth2_tlast , m_eth1_tlast , m_eth0_tlast }), .m_axis_tlast ({xb_to_ep7_tlast , xb_to_ep6_tlast , xb_to_ep5_tlast , xb_to_ep4_tlast , xb_to_ep3_tlast , xb_to_ep2_tlast , xb_to_ep1_tlast , xb_to_ep0_tlast , m_dma_tlast , m_eth4_tlast , m_eth3_tlast , m_eth2_tlast , m_eth1_tlast , m_eth0_tlast }),
.m_axis_tvalid ({xb_to_ep3_tvalid, xb_to_ep2_tvalid, xb_to_ep1_tvalid, xb_to_ep0_tvalid, m_dma_tvalid, m_eth4_tvalid, m_eth3_tvalid, m_eth2_tvalid, m_eth1_tvalid, m_eth0_tvalid}), .m_axis_tvalid ({xb_to_ep7_tvalid, xb_to_ep6_tvalid, xb_to_ep5_tvalid, xb_to_ep4_tvalid, xb_to_ep3_tvalid, xb_to_ep2_tvalid, xb_to_ep1_tvalid, xb_to_ep0_tvalid, m_dma_tvalid, m_eth4_tvalid, m_eth3_tvalid, m_eth2_tvalid, m_eth1_tvalid, m_eth0_tvalid}),
.m_axis_tready ({xb_to_ep3_tready, xb_to_ep2_tready, xb_to_ep1_tready, xb_to_ep0_tready, m_dma_tready, m_eth4_tready, m_eth3_tready, m_eth2_tready, m_eth1_tready, m_eth0_tready}), .m_axis_tready ({xb_to_ep7_tready, xb_to_ep6_tready, xb_to_ep5_tready, xb_to_ep4_tready, xb_to_ep3_tready, xb_to_ep2_tready, xb_to_ep1_tready, xb_to_ep0_tready, m_dma_tready, m_eth4_tready, m_eth3_tready, m_eth2_tready, m_eth1_tready, m_eth0_tready}),
.ext_rtcfg_stb (1'h0), .ext_rtcfg_stb (1'h0),
.ext_rtcfg_addr (16'h0), .ext_rtcfg_addr (16'h0),
.ext_rtcfg_data (32'h0), .ext_rtcfg_data (32'h0),
@@ -488,6 +567,282 @@ module rfnoc_image_core #(
.signal_data_err (1'b0) .signal_data_err (1'b0)
); );
// If requested buffer size is 0, use the minimum SRL-based FIFO size.
// Otherwise, make sure it's at least two MTU-sized packets.
localparam REQ_BUFF_SIZE_EP4 = (4096)/(CHDR_W/8);
localparam INGRESS_BUFF_SIZE_EP4 =
REQ_BUFF_SIZE_EP4 == 0 ? 5 :
REQ_BUFF_SIZE_EP4 < 2*(2**MTU) ? MTU+1 :
$clog2(REQ_BUFF_SIZE_EP4);
wire [CHDR_W-1:0] m_ep4_out0_tdata;
wire m_ep4_out0_tlast;
wire m_ep4_out0_tvalid;
wire m_ep4_out0_tready;
wire [CHDR_W-1:0] s_ep4_in0_tdata;
wire s_ep4_in0_tlast;
wire s_ep4_in0_tvalid;
wire s_ep4_in0_tready;
wire [ 31:0] m_ep4_ctrl_tdata, s_ep4_ctrl_tdata;
wire m_ep4_ctrl_tlast, s_ep4_ctrl_tlast;
wire m_ep4_ctrl_tvalid, s_ep4_ctrl_tvalid;
wire m_ep4_ctrl_tready, s_ep4_ctrl_tready;
chdr_stream_endpoint #(
.PROTOVER (PROTOVER),
.CHDR_W (CHDR_W),
.AXIS_CTRL_EN (0),
.AXIS_DATA_EN (1),
.NUM_DATA_I (1),
.NUM_DATA_O (1),
.INST_NUM (4),
.CTRL_XBAR_PORT (5),
.INGRESS_BUFF_SIZE (INGRESS_BUFF_SIZE_EP4),
.MTU (MTU),
.REPORT_STRM_ERRS (1)
) ep4_i (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_chdr_rst (rfnoc_chdr_rst),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
.device_id (device_id),
.s_axis_chdr_tdata (xb_to_ep4_tdata),
.s_axis_chdr_tlast (xb_to_ep4_tlast),
.s_axis_chdr_tvalid (xb_to_ep4_tvalid),
.s_axis_chdr_tready (xb_to_ep4_tready),
.m_axis_chdr_tdata (ep4_to_xb_tdata),
.m_axis_chdr_tlast (ep4_to_xb_tlast),
.m_axis_chdr_tvalid (ep4_to_xb_tvalid),
.m_axis_chdr_tready (ep4_to_xb_tready),
.s_axis_data_tdata ({s_ep4_in0_tdata}),
.s_axis_data_tlast ({s_ep4_in0_tlast}),
.s_axis_data_tvalid ({s_ep4_in0_tvalid}),
.s_axis_data_tready ({s_ep4_in0_tready}),
.m_axis_data_tdata ({m_ep4_out0_tdata}),
.m_axis_data_tlast ({m_ep4_out0_tlast}),
.m_axis_data_tvalid ({m_ep4_out0_tvalid}),
.m_axis_data_tready ({m_ep4_out0_tready}),
.s_axis_ctrl_tdata (s_ep4_ctrl_tdata),
.s_axis_ctrl_tlast (s_ep4_ctrl_tlast),
.s_axis_ctrl_tvalid (s_ep4_ctrl_tvalid),
.s_axis_ctrl_tready (s_ep4_ctrl_tready),
.m_axis_ctrl_tdata (m_ep4_ctrl_tdata),
.m_axis_ctrl_tlast (m_ep4_ctrl_tlast),
.m_axis_ctrl_tvalid (m_ep4_ctrl_tvalid),
.m_axis_ctrl_tready (m_ep4_ctrl_tready),
.strm_seq_err_stb (),
.strm_data_err_stb (),
.strm_route_err_stb (),
.signal_data_err (1'b0)
);
// If requested buffer size is 0, use the minimum SRL-based FIFO size.
// Otherwise, make sure it's at least two MTU-sized packets.
localparam REQ_BUFF_SIZE_EP5 = (4096)/(CHDR_W/8);
localparam INGRESS_BUFF_SIZE_EP5 =
REQ_BUFF_SIZE_EP5 == 0 ? 5 :
REQ_BUFF_SIZE_EP5 < 2*(2**MTU) ? MTU+1 :
$clog2(REQ_BUFF_SIZE_EP5);
wire [CHDR_W-1:0] m_ep5_out0_tdata;
wire m_ep5_out0_tlast;
wire m_ep5_out0_tvalid;
wire m_ep5_out0_tready;
wire [CHDR_W-1:0] s_ep5_in0_tdata;
wire s_ep5_in0_tlast;
wire s_ep5_in0_tvalid;
wire s_ep5_in0_tready;
wire [ 31:0] m_ep5_ctrl_tdata, s_ep5_ctrl_tdata;
wire m_ep5_ctrl_tlast, s_ep5_ctrl_tlast;
wire m_ep5_ctrl_tvalid, s_ep5_ctrl_tvalid;
wire m_ep5_ctrl_tready, s_ep5_ctrl_tready;
chdr_stream_endpoint #(
.PROTOVER (PROTOVER),
.CHDR_W (CHDR_W),
.AXIS_CTRL_EN (0),
.AXIS_DATA_EN (1),
.NUM_DATA_I (1),
.NUM_DATA_O (1),
.INST_NUM (5),
.CTRL_XBAR_PORT (6),
.INGRESS_BUFF_SIZE (INGRESS_BUFF_SIZE_EP5),
.MTU (MTU),
.REPORT_STRM_ERRS (1)
) ep5_i (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_chdr_rst (rfnoc_chdr_rst),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
.device_id (device_id),
.s_axis_chdr_tdata (xb_to_ep5_tdata),
.s_axis_chdr_tlast (xb_to_ep5_tlast),
.s_axis_chdr_tvalid (xb_to_ep5_tvalid),
.s_axis_chdr_tready (xb_to_ep5_tready),
.m_axis_chdr_tdata (ep5_to_xb_tdata),
.m_axis_chdr_tlast (ep5_to_xb_tlast),
.m_axis_chdr_tvalid (ep5_to_xb_tvalid),
.m_axis_chdr_tready (ep5_to_xb_tready),
.s_axis_data_tdata ({s_ep5_in0_tdata}),
.s_axis_data_tlast ({s_ep5_in0_tlast}),
.s_axis_data_tvalid ({s_ep5_in0_tvalid}),
.s_axis_data_tready ({s_ep5_in0_tready}),
.m_axis_data_tdata ({m_ep5_out0_tdata}),
.m_axis_data_tlast ({m_ep5_out0_tlast}),
.m_axis_data_tvalid ({m_ep5_out0_tvalid}),
.m_axis_data_tready ({m_ep5_out0_tready}),
.s_axis_ctrl_tdata (s_ep5_ctrl_tdata),
.s_axis_ctrl_tlast (s_ep5_ctrl_tlast),
.s_axis_ctrl_tvalid (s_ep5_ctrl_tvalid),
.s_axis_ctrl_tready (s_ep5_ctrl_tready),
.m_axis_ctrl_tdata (m_ep5_ctrl_tdata),
.m_axis_ctrl_tlast (m_ep5_ctrl_tlast),
.m_axis_ctrl_tvalid (m_ep5_ctrl_tvalid),
.m_axis_ctrl_tready (m_ep5_ctrl_tready),
.strm_seq_err_stb (),
.strm_data_err_stb (),
.strm_route_err_stb (),
.signal_data_err (1'b0)
);
// If requested buffer size is 0, use the minimum SRL-based FIFO size.
// Otherwise, make sure it's at least two MTU-sized packets.
localparam REQ_BUFF_SIZE_EP6 = (4096)/(CHDR_W/8);
localparam INGRESS_BUFF_SIZE_EP6 =
REQ_BUFF_SIZE_EP6 == 0 ? 5 :
REQ_BUFF_SIZE_EP6 < 2*(2**MTU) ? MTU+1 :
$clog2(REQ_BUFF_SIZE_EP6);
wire [CHDR_W-1:0] m_ep6_out0_tdata;
wire m_ep6_out0_tlast;
wire m_ep6_out0_tvalid;
wire m_ep6_out0_tready;
wire [CHDR_W-1:0] s_ep6_in0_tdata;
wire s_ep6_in0_tlast;
wire s_ep6_in0_tvalid;
wire s_ep6_in0_tready;
wire [ 31:0] m_ep6_ctrl_tdata, s_ep6_ctrl_tdata;
wire m_ep6_ctrl_tlast, s_ep6_ctrl_tlast;
wire m_ep6_ctrl_tvalid, s_ep6_ctrl_tvalid;
wire m_ep6_ctrl_tready, s_ep6_ctrl_tready;
chdr_stream_endpoint #(
.PROTOVER (PROTOVER),
.CHDR_W (CHDR_W),
.AXIS_CTRL_EN (0),
.AXIS_DATA_EN (1),
.NUM_DATA_I (1),
.NUM_DATA_O (1),
.INST_NUM (6),
.CTRL_XBAR_PORT (7),
.INGRESS_BUFF_SIZE (INGRESS_BUFF_SIZE_EP6),
.MTU (MTU),
.REPORT_STRM_ERRS (1)
) ep6_i (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_chdr_rst (rfnoc_chdr_rst),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
.device_id (device_id),
.s_axis_chdr_tdata (xb_to_ep6_tdata),
.s_axis_chdr_tlast (xb_to_ep6_tlast),
.s_axis_chdr_tvalid (xb_to_ep6_tvalid),
.s_axis_chdr_tready (xb_to_ep6_tready),
.m_axis_chdr_tdata (ep6_to_xb_tdata),
.m_axis_chdr_tlast (ep6_to_xb_tlast),
.m_axis_chdr_tvalid (ep6_to_xb_tvalid),
.m_axis_chdr_tready (ep6_to_xb_tready),
.s_axis_data_tdata ({s_ep6_in0_tdata}),
.s_axis_data_tlast ({s_ep6_in0_tlast}),
.s_axis_data_tvalid ({s_ep6_in0_tvalid}),
.s_axis_data_tready ({s_ep6_in0_tready}),
.m_axis_data_tdata ({m_ep6_out0_tdata}),
.m_axis_data_tlast ({m_ep6_out0_tlast}),
.m_axis_data_tvalid ({m_ep6_out0_tvalid}),
.m_axis_data_tready ({m_ep6_out0_tready}),
.s_axis_ctrl_tdata (s_ep6_ctrl_tdata),
.s_axis_ctrl_tlast (s_ep6_ctrl_tlast),
.s_axis_ctrl_tvalid (s_ep6_ctrl_tvalid),
.s_axis_ctrl_tready (s_ep6_ctrl_tready),
.m_axis_ctrl_tdata (m_ep6_ctrl_tdata),
.m_axis_ctrl_tlast (m_ep6_ctrl_tlast),
.m_axis_ctrl_tvalid (m_ep6_ctrl_tvalid),
.m_axis_ctrl_tready (m_ep6_ctrl_tready),
.strm_seq_err_stb (),
.strm_data_err_stb (),
.strm_route_err_stb (),
.signal_data_err (1'b0)
);
// If requested buffer size is 0, use the minimum SRL-based FIFO size.
// Otherwise, make sure it's at least two MTU-sized packets.
localparam REQ_BUFF_SIZE_EP7 = (4096)/(CHDR_W/8);
localparam INGRESS_BUFF_SIZE_EP7 =
REQ_BUFF_SIZE_EP7 == 0 ? 5 :
REQ_BUFF_SIZE_EP7 < 2*(2**MTU) ? MTU+1 :
$clog2(REQ_BUFF_SIZE_EP7);
wire [CHDR_W-1:0] m_ep7_out0_tdata;
wire m_ep7_out0_tlast;
wire m_ep7_out0_tvalid;
wire m_ep7_out0_tready;
wire [CHDR_W-1:0] s_ep7_in0_tdata;
wire s_ep7_in0_tlast;
wire s_ep7_in0_tvalid;
wire s_ep7_in0_tready;
wire [ 31:0] m_ep7_ctrl_tdata, s_ep7_ctrl_tdata;
wire m_ep7_ctrl_tlast, s_ep7_ctrl_tlast;
wire m_ep7_ctrl_tvalid, s_ep7_ctrl_tvalid;
wire m_ep7_ctrl_tready, s_ep7_ctrl_tready;
chdr_stream_endpoint #(
.PROTOVER (PROTOVER),
.CHDR_W (CHDR_W),
.AXIS_CTRL_EN (0),
.AXIS_DATA_EN (1),
.NUM_DATA_I (1),
.NUM_DATA_O (1),
.INST_NUM (7),
.CTRL_XBAR_PORT (8),
.INGRESS_BUFF_SIZE (INGRESS_BUFF_SIZE_EP7),
.MTU (MTU),
.REPORT_STRM_ERRS (1)
) ep7_i (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_chdr_rst (rfnoc_chdr_rst),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
.device_id (device_id),
.s_axis_chdr_tdata (xb_to_ep7_tdata),
.s_axis_chdr_tlast (xb_to_ep7_tlast),
.s_axis_chdr_tvalid (xb_to_ep7_tvalid),
.s_axis_chdr_tready (xb_to_ep7_tready),
.m_axis_chdr_tdata (ep7_to_xb_tdata),
.m_axis_chdr_tlast (ep7_to_xb_tlast),
.m_axis_chdr_tvalid (ep7_to_xb_tvalid),
.m_axis_chdr_tready (ep7_to_xb_tready),
.s_axis_data_tdata ({s_ep7_in0_tdata}),
.s_axis_data_tlast ({s_ep7_in0_tlast}),
.s_axis_data_tvalid ({s_ep7_in0_tvalid}),
.s_axis_data_tready ({s_ep7_in0_tready}),
.m_axis_data_tdata ({m_ep7_out0_tdata}),
.m_axis_data_tlast ({m_ep7_out0_tlast}),
.m_axis_data_tvalid ({m_ep7_out0_tvalid}),
.m_axis_data_tready ({m_ep7_out0_tready}),
.s_axis_ctrl_tdata (s_ep7_ctrl_tdata),
.s_axis_ctrl_tlast (s_ep7_ctrl_tlast),
.s_axis_ctrl_tvalid (s_ep7_ctrl_tvalid),
.s_axis_ctrl_tready (s_ep7_ctrl_tready),
.m_axis_ctrl_tdata (m_ep7_ctrl_tdata),
.m_axis_ctrl_tlast (m_ep7_ctrl_tlast),
.m_axis_ctrl_tvalid (m_ep7_ctrl_tvalid),
.m_axis_ctrl_tready (m_ep7_ctrl_tready),
.strm_seq_err_stb (),
.strm_data_err_stb (),
.strm_route_err_stb (),
.signal_data_err (1'b0)
);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Control Crossbar // Control Crossbar
@@ -521,10 +876,14 @@ module rfnoc_image_core #(
wire m_radio1_ctrl_tlast, s_radio1_ctrl_tlast; wire m_radio1_ctrl_tlast, s_radio1_ctrl_tlast;
wire m_radio1_ctrl_tvalid, s_radio1_ctrl_tvalid; wire m_radio1_ctrl_tvalid, s_radio1_ctrl_tvalid;
wire m_radio1_ctrl_tready, s_radio1_ctrl_tready; wire m_radio1_ctrl_tready, s_radio1_ctrl_tready;
wire [31:0] m_replay0_ctrl_tdata, s_replay0_ctrl_tdata;
wire m_replay0_ctrl_tlast, s_replay0_ctrl_tlast;
wire m_replay0_ctrl_tvalid, s_replay0_ctrl_tvalid;
wire m_replay0_ctrl_tready, s_replay0_ctrl_tready;
axis_ctrl_crossbar_nxn #( axis_ctrl_crossbar_nxn #(
.WIDTH (32), .WIDTH (32),
.NPORTS (8), .NPORTS (9),
.TOPOLOGY ("TORUS"), .TOPOLOGY ("TORUS"),
.INGRESS_BUFF_SIZE(5), .INGRESS_BUFF_SIZE(5),
.ROUTER_BUFF_SIZE (5), .ROUTER_BUFF_SIZE (5),
@@ -533,14 +892,14 @@ module rfnoc_image_core #(
) ctrl_xb_i ( ) ctrl_xb_i (
.clk (rfnoc_ctrl_clk), .clk (rfnoc_ctrl_clk),
.reset (rfnoc_ctrl_rst), .reset (rfnoc_ctrl_rst),
.s_axis_tdata ({m_radio1_ctrl_tdata , m_ddc1_ctrl_tdata , m_duc1_ctrl_tdata , m_radio0_ctrl_tdata , m_ddc0_ctrl_tdata , m_duc0_ctrl_tdata , m_ep0_ctrl_tdata , m_core_ctrl_tdata }), .s_axis_tdata ({m_replay0_ctrl_tdata , m_radio1_ctrl_tdata , m_ddc1_ctrl_tdata , m_duc1_ctrl_tdata , m_radio0_ctrl_tdata , m_ddc0_ctrl_tdata , m_duc0_ctrl_tdata , m_ep0_ctrl_tdata , m_core_ctrl_tdata }),
.s_axis_tvalid ({m_radio1_ctrl_tvalid, m_ddc1_ctrl_tvalid, m_duc1_ctrl_tvalid, m_radio0_ctrl_tvalid, m_ddc0_ctrl_tvalid, m_duc0_ctrl_tvalid, m_ep0_ctrl_tvalid, m_core_ctrl_tvalid}), .s_axis_tvalid ({m_replay0_ctrl_tvalid, m_radio1_ctrl_tvalid, m_ddc1_ctrl_tvalid, m_duc1_ctrl_tvalid, m_radio0_ctrl_tvalid, m_ddc0_ctrl_tvalid, m_duc0_ctrl_tvalid, m_ep0_ctrl_tvalid, m_core_ctrl_tvalid}),
.s_axis_tlast ({m_radio1_ctrl_tlast , m_ddc1_ctrl_tlast , m_duc1_ctrl_tlast , m_radio0_ctrl_tlast , m_ddc0_ctrl_tlast , m_duc0_ctrl_tlast , m_ep0_ctrl_tlast , m_core_ctrl_tlast }), .s_axis_tlast ({m_replay0_ctrl_tlast , m_radio1_ctrl_tlast , m_ddc1_ctrl_tlast , m_duc1_ctrl_tlast , m_radio0_ctrl_tlast , m_ddc0_ctrl_tlast , m_duc0_ctrl_tlast , m_ep0_ctrl_tlast , m_core_ctrl_tlast }),
.s_axis_tready ({m_radio1_ctrl_tready, m_ddc1_ctrl_tready, m_duc1_ctrl_tready, m_radio0_ctrl_tready, m_ddc0_ctrl_tready, m_duc0_ctrl_tready, m_ep0_ctrl_tready, m_core_ctrl_tready}), .s_axis_tready ({m_replay0_ctrl_tready, m_radio1_ctrl_tready, m_ddc1_ctrl_tready, m_duc1_ctrl_tready, m_radio0_ctrl_tready, m_ddc0_ctrl_tready, m_duc0_ctrl_tready, m_ep0_ctrl_tready, m_core_ctrl_tready}),
.m_axis_tdata ({s_radio1_ctrl_tdata , s_ddc1_ctrl_tdata , s_duc1_ctrl_tdata , s_radio0_ctrl_tdata , s_ddc0_ctrl_tdata , s_duc0_ctrl_tdata , s_ep0_ctrl_tdata , s_core_ctrl_tdata }), .m_axis_tdata ({s_replay0_ctrl_tdata , s_radio1_ctrl_tdata , s_ddc1_ctrl_tdata , s_duc1_ctrl_tdata , s_radio0_ctrl_tdata , s_ddc0_ctrl_tdata , s_duc0_ctrl_tdata , s_ep0_ctrl_tdata , s_core_ctrl_tdata }),
.m_axis_tvalid ({s_radio1_ctrl_tvalid, s_ddc1_ctrl_tvalid, s_duc1_ctrl_tvalid, s_radio0_ctrl_tvalid, s_ddc0_ctrl_tvalid, s_duc0_ctrl_tvalid, s_ep0_ctrl_tvalid, s_core_ctrl_tvalid}), .m_axis_tvalid ({s_replay0_ctrl_tvalid, s_radio1_ctrl_tvalid, s_ddc1_ctrl_tvalid, s_duc1_ctrl_tvalid, s_radio0_ctrl_tvalid, s_ddc0_ctrl_tvalid, s_duc0_ctrl_tvalid, s_ep0_ctrl_tvalid, s_core_ctrl_tvalid}),
.m_axis_tlast ({s_radio1_ctrl_tlast , s_ddc1_ctrl_tlast , s_duc1_ctrl_tlast , s_radio0_ctrl_tlast , s_ddc0_ctrl_tlast , s_duc0_ctrl_tlast , s_ep0_ctrl_tlast , s_core_ctrl_tlast }), .m_axis_tlast ({s_replay0_ctrl_tlast , s_radio1_ctrl_tlast , s_ddc1_ctrl_tlast , s_duc1_ctrl_tlast , s_radio0_ctrl_tlast , s_ddc0_ctrl_tlast , s_duc0_ctrl_tlast , s_ep0_ctrl_tlast , s_core_ctrl_tlast }),
.m_axis_tready ({s_radio1_ctrl_tready, s_ddc1_ctrl_tready, s_duc1_ctrl_tready, s_radio0_ctrl_tready, s_ddc0_ctrl_tready, s_duc0_ctrl_tready, s_ep0_ctrl_tready, s_core_ctrl_tready}), .m_axis_tready ({s_replay0_ctrl_tready, s_radio1_ctrl_tready, s_ddc1_ctrl_tready, s_duc1_ctrl_tready, s_radio0_ctrl_tready, s_ddc0_ctrl_tready, s_duc0_ctrl_tready, s_ep0_ctrl_tready, s_core_ctrl_tready}),
.deadlock_detected() .deadlock_detected()
); );
@@ -549,18 +908,18 @@ module rfnoc_image_core #(
// RFNoC Core Kernel // RFNoC Core Kernel
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
wire [(512*6)-1:0] rfnoc_core_config, rfnoc_core_status; wire [(512*7)-1:0] rfnoc_core_config, rfnoc_core_status;
rfnoc_core_kernel #( rfnoc_core_kernel #(
.PROTOVER (PROTOVER), .PROTOVER (PROTOVER),
.DEVICE_TYPE (16'hA400), .DEVICE_TYPE (16'hA400),
.DEVICE_FAMILY ("ULTRASCALE"), .DEVICE_FAMILY ("ULTRASCALE"),
.SAFE_START_CLKS (0), .SAFE_START_CLKS (0),
.NUM_BLOCKS (6), .NUM_BLOCKS (7),
.NUM_STREAM_ENDPOINTS(4), .NUM_STREAM_ENDPOINTS(8),
.NUM_ENDPOINTS_CTRL (1), .NUM_ENDPOINTS_CTRL (1),
.NUM_TRANSPORTS (6), .NUM_TRANSPORTS (6),
.NUM_EDGES (16), .NUM_EDGES (24),
.CHDR_XBAR_PRESENT (1), .CHDR_XBAR_PRESENT (1),
.EDGE_TBL_FILE (EDGE_TBL_FILE) .EDGE_TBL_FILE (EDGE_TBL_FILE)
) core_kernel_i ( ) core_kernel_i (
@@ -937,6 +1296,143 @@ module rfnoc_image_core #(
.m_rfnoc_ctrl_tready (m_radio1_ctrl_tready) .m_rfnoc_ctrl_tready (m_radio1_ctrl_tready)
); );
//-----------------------------------
// replay0
//-----------------------------------
wire replay0_mem_clk;
wire [CHDR_W-1:0] s_replay0_in_3_tdata , s_replay0_in_2_tdata , s_replay0_in_1_tdata , s_replay0_in_0_tdata ;
wire s_replay0_in_3_tlast , s_replay0_in_2_tlast , s_replay0_in_1_tlast , s_replay0_in_0_tlast ;
wire s_replay0_in_3_tvalid, s_replay0_in_2_tvalid, s_replay0_in_1_tvalid, s_replay0_in_0_tvalid;
wire s_replay0_in_3_tready, s_replay0_in_2_tready, s_replay0_in_1_tready, s_replay0_in_0_tready;
wire [CHDR_W-1:0] m_replay0_out_3_tdata , m_replay0_out_2_tdata , m_replay0_out_1_tdata , m_replay0_out_0_tdata ;
wire m_replay0_out_3_tlast , m_replay0_out_2_tlast , m_replay0_out_1_tlast , m_replay0_out_0_tlast ;
wire m_replay0_out_3_tvalid, m_replay0_out_2_tvalid, m_replay0_out_1_tvalid, m_replay0_out_0_tvalid;
wire m_replay0_out_3_tready, m_replay0_out_2_tready, m_replay0_out_1_tready, m_replay0_out_0_tready;
// axi_ram
wire [ 0:0] replay0_axi_rst;
wire [ 3:0] replay0_m_axi_awid;
wire [ 191:0] replay0_m_axi_awaddr;
wire [ 31:0] replay0_m_axi_awlen;
wire [ 11:0] replay0_m_axi_awsize;
wire [ 7:0] replay0_m_axi_awburst;
wire [ 3:0] replay0_m_axi_awlock;
wire [ 15:0] replay0_m_axi_awcache;
wire [ 11:0] replay0_m_axi_awprot;
wire [ 15:0] replay0_m_axi_awqos;
wire [ 15:0] replay0_m_axi_awregion;
wire [ 3:0] replay0_m_axi_awuser;
wire [ 3:0] replay0_m_axi_awvalid;
wire [ 3:0] replay0_m_axi_awready;
wire [2047:0] replay0_m_axi_wdata;
wire [ 255:0] replay0_m_axi_wstrb;
wire [ 3:0] replay0_m_axi_wlast;
wire [ 3:0] replay0_m_axi_wuser;
wire [ 3:0] replay0_m_axi_wvalid;
wire [ 3:0] replay0_m_axi_wready;
wire [ 3:0] replay0_m_axi_bid;
wire [ 7:0] replay0_m_axi_bresp;
wire [ 3:0] replay0_m_axi_buser;
wire [ 3:0] replay0_m_axi_bvalid;
wire [ 3:0] replay0_m_axi_bready;
wire [ 3:0] replay0_m_axi_arid;
wire [ 191:0] replay0_m_axi_araddr;
wire [ 31:0] replay0_m_axi_arlen;
wire [ 11:0] replay0_m_axi_arsize;
wire [ 7:0] replay0_m_axi_arburst;
wire [ 3:0] replay0_m_axi_arlock;
wire [ 15:0] replay0_m_axi_arcache;
wire [ 11:0] replay0_m_axi_arprot;
wire [ 15:0] replay0_m_axi_arqos;
wire [ 15:0] replay0_m_axi_arregion;
wire [ 3:0] replay0_m_axi_aruser;
wire [ 3:0] replay0_m_axi_arvalid;
wire [ 3:0] replay0_m_axi_arready;
wire [ 3:0] replay0_m_axi_rid;
wire [2047:0] replay0_m_axi_rdata;
wire [ 7:0] replay0_m_axi_rresp;
wire [ 3:0] replay0_m_axi_rlast;
wire [ 3:0] replay0_m_axi_ruser;
wire [ 3:0] replay0_m_axi_rvalid;
wire [ 3:0] replay0_m_axi_rready;
rfnoc_block_replay #(
.THIS_PORTID (8),
.CHDR_W (CHDR_W),
.NUM_PORTS (4),
.MEM_DATA_W (64),
.MEM_ADDR_W (32),
.MTU (MTU)
) b_replay0_6 (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.mem_clk (replay0_mem_clk),
.rfnoc_core_config (rfnoc_core_config[512*7-1:512*6]),
.rfnoc_core_status (rfnoc_core_status[512*7-1:512*6]),
.axi_rst (replay0_axi_rst),
.m_axi_awid (replay0_m_axi_awid),
.m_axi_awaddr (replay0_m_axi_awaddr),
.m_axi_awlen (replay0_m_axi_awlen),
.m_axi_awsize (replay0_m_axi_awsize),
.m_axi_awburst (replay0_m_axi_awburst),
.m_axi_awlock (replay0_m_axi_awlock),
.m_axi_awcache (replay0_m_axi_awcache),
.m_axi_awprot (replay0_m_axi_awprot),
.m_axi_awqos (replay0_m_axi_awqos),
.m_axi_awregion (replay0_m_axi_awregion),
.m_axi_awuser (replay0_m_axi_awuser),
.m_axi_awvalid (replay0_m_axi_awvalid),
.m_axi_awready (replay0_m_axi_awready),
.m_axi_wdata (replay0_m_axi_wdata),
.m_axi_wstrb (replay0_m_axi_wstrb),
.m_axi_wlast (replay0_m_axi_wlast),
.m_axi_wuser (replay0_m_axi_wuser),
.m_axi_wvalid (replay0_m_axi_wvalid),
.m_axi_wready (replay0_m_axi_wready),
.m_axi_bid (replay0_m_axi_bid),
.m_axi_bresp (replay0_m_axi_bresp),
.m_axi_buser (replay0_m_axi_buser),
.m_axi_bvalid (replay0_m_axi_bvalid),
.m_axi_bready (replay0_m_axi_bready),
.m_axi_arid (replay0_m_axi_arid),
.m_axi_araddr (replay0_m_axi_araddr),
.m_axi_arlen (replay0_m_axi_arlen),
.m_axi_arsize (replay0_m_axi_arsize),
.m_axi_arburst (replay0_m_axi_arburst),
.m_axi_arlock (replay0_m_axi_arlock),
.m_axi_arcache (replay0_m_axi_arcache),
.m_axi_arprot (replay0_m_axi_arprot),
.m_axi_arqos (replay0_m_axi_arqos),
.m_axi_arregion (replay0_m_axi_arregion),
.m_axi_aruser (replay0_m_axi_aruser),
.m_axi_arvalid (replay0_m_axi_arvalid),
.m_axi_arready (replay0_m_axi_arready),
.m_axi_rid (replay0_m_axi_rid),
.m_axi_rdata (replay0_m_axi_rdata),
.m_axi_rresp (replay0_m_axi_rresp),
.m_axi_rlast (replay0_m_axi_rlast),
.m_axi_ruser (replay0_m_axi_ruser),
.m_axi_rvalid (replay0_m_axi_rvalid),
.m_axi_rready (replay0_m_axi_rready),
.s_rfnoc_chdr_tdata ({s_replay0_in_3_tdata , s_replay0_in_2_tdata , s_replay0_in_1_tdata , s_replay0_in_0_tdata }),
.s_rfnoc_chdr_tlast ({s_replay0_in_3_tlast , s_replay0_in_2_tlast , s_replay0_in_1_tlast , s_replay0_in_0_tlast }),
.s_rfnoc_chdr_tvalid ({s_replay0_in_3_tvalid, s_replay0_in_2_tvalid, s_replay0_in_1_tvalid, s_replay0_in_0_tvalid}),
.s_rfnoc_chdr_tready ({s_replay0_in_3_tready, s_replay0_in_2_tready, s_replay0_in_1_tready, s_replay0_in_0_tready}),
.m_rfnoc_chdr_tdata ({m_replay0_out_3_tdata , m_replay0_out_2_tdata , m_replay0_out_1_tdata , m_replay0_out_0_tdata }),
.m_rfnoc_chdr_tlast ({m_replay0_out_3_tlast , m_replay0_out_2_tlast , m_replay0_out_1_tlast , m_replay0_out_0_tlast }),
.m_rfnoc_chdr_tvalid ({m_replay0_out_3_tvalid, m_replay0_out_2_tvalid, m_replay0_out_1_tvalid, m_replay0_out_0_tvalid}),
.m_rfnoc_chdr_tready ({m_replay0_out_3_tready, m_replay0_out_2_tready, m_replay0_out_1_tready, m_replay0_out_0_tready}),
.s_rfnoc_ctrl_tdata (s_replay0_ctrl_tdata),
.s_rfnoc_ctrl_tlast (s_replay0_ctrl_tlast),
.s_rfnoc_ctrl_tvalid (s_replay0_ctrl_tvalid),
.s_rfnoc_ctrl_tready (s_replay0_ctrl_tready),
.m_rfnoc_ctrl_tdata (m_replay0_ctrl_tdata),
.m_rfnoc_ctrl_tlast (m_replay0_ctrl_tlast),
.m_rfnoc_ctrl_tvalid (m_replay0_ctrl_tvalid),
.m_rfnoc_ctrl_tready (m_replay0_ctrl_tready)
);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Static Router // Static Router
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -1021,6 +1517,46 @@ module rfnoc_image_core #(
assign s_ep3_in0_tvalid = m_ddc1_out_1_tvalid; assign s_ep3_in0_tvalid = m_ddc1_out_1_tvalid;
assign m_ddc1_out_1_tready = s_ep3_in0_tready; assign m_ddc1_out_1_tready = s_ep3_in0_tready;
assign s_replay0_in_0_tdata = m_ep4_out0_tdata;
assign s_replay0_in_0_tlast = m_ep4_out0_tlast;
assign s_replay0_in_0_tvalid = m_ep4_out0_tvalid;
assign m_ep4_out0_tready = s_replay0_in_0_tready;
assign s_ep4_in0_tdata = m_replay0_out_0_tdata;
assign s_ep4_in0_tlast = m_replay0_out_0_tlast;
assign s_ep4_in0_tvalid = m_replay0_out_0_tvalid;
assign m_replay0_out_0_tready = s_ep4_in0_tready;
assign s_replay0_in_1_tdata = m_ep5_out0_tdata;
assign s_replay0_in_1_tlast = m_ep5_out0_tlast;
assign s_replay0_in_1_tvalid = m_ep5_out0_tvalid;
assign m_ep5_out0_tready = s_replay0_in_1_tready;
assign s_ep5_in0_tdata = m_replay0_out_1_tdata;
assign s_ep5_in0_tlast = m_replay0_out_1_tlast;
assign s_ep5_in0_tvalid = m_replay0_out_1_tvalid;
assign m_replay0_out_1_tready = s_ep5_in0_tready;
assign s_replay0_in_2_tdata = m_ep6_out0_tdata;
assign s_replay0_in_2_tlast = m_ep6_out0_tlast;
assign s_replay0_in_2_tvalid = m_ep6_out0_tvalid;
assign m_ep6_out0_tready = s_replay0_in_2_tready;
assign s_ep6_in0_tdata = m_replay0_out_2_tdata;
assign s_ep6_in0_tlast = m_replay0_out_2_tlast;
assign s_ep6_in0_tvalid = m_replay0_out_2_tvalid;
assign m_replay0_out_2_tready = s_ep6_in0_tready;
assign s_replay0_in_3_tdata = m_ep7_out0_tdata;
assign s_replay0_in_3_tlast = m_ep7_out0_tlast;
assign s_replay0_in_3_tvalid = m_ep7_out0_tvalid;
assign m_ep7_out0_tready = s_replay0_in_3_tready;
assign s_ep7_in0_tdata = m_replay0_out_3_tdata;
assign s_ep7_in0_tlast = m_replay0_out_3_tlast;
assign s_ep7_in0_tvalid = m_replay0_out_3_tvalid;
assign m_replay0_out_3_tready = s_ep7_in0_tready;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Unused Ports // Unused Ports
@@ -1038,6 +1574,7 @@ module rfnoc_image_core #(
assign radio1_radio_clk = radio_clk; assign radio1_radio_clk = radio_clk;
assign duc1_ce_clk = radio_clk; assign duc1_ce_clk = radio_clk;
assign ddc1_ce_clk = radio_clk; assign ddc1_ce_clk = radio_clk;
assign replay0_mem_clk = dram_clk;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -1081,6 +1618,52 @@ module rfnoc_image_core #(
assign radio1_radio_tx_stb = radio_tx_stb_radio1; assign radio1_radio_tx_stb = radio_tx_stb_radio1;
assign radio_tx_running_radio1 = radio1_radio_tx_running; assign radio_tx_running_radio1 = radio1_radio_tx_running;
assign replay0_axi_rst = axi_rst;
assign m_axi_awid = replay0_m_axi_awid;
assign m_axi_awaddr = replay0_m_axi_awaddr;
assign m_axi_awlen = replay0_m_axi_awlen;
assign m_axi_awsize = replay0_m_axi_awsize;
assign m_axi_awburst = replay0_m_axi_awburst;
assign m_axi_awlock = replay0_m_axi_awlock;
assign m_axi_awcache = replay0_m_axi_awcache;
assign m_axi_awprot = replay0_m_axi_awprot;
assign m_axi_awqos = replay0_m_axi_awqos;
assign m_axi_awregion = replay0_m_axi_awregion;
assign m_axi_awuser = replay0_m_axi_awuser;
assign m_axi_awvalid = replay0_m_axi_awvalid;
assign replay0_m_axi_awready = m_axi_awready;
assign m_axi_wdata = replay0_m_axi_wdata;
assign m_axi_wstrb = replay0_m_axi_wstrb;
assign m_axi_wlast = replay0_m_axi_wlast;
assign m_axi_wuser = replay0_m_axi_wuser;
assign m_axi_wvalid = replay0_m_axi_wvalid;
assign replay0_m_axi_wready = m_axi_wready;
assign replay0_m_axi_bid = m_axi_bid;
assign replay0_m_axi_bresp = m_axi_bresp;
assign replay0_m_axi_buser = m_axi_buser;
assign replay0_m_axi_bvalid = m_axi_bvalid;
assign m_axi_bready = replay0_m_axi_bready;
assign m_axi_arid = replay0_m_axi_arid;
assign m_axi_araddr = replay0_m_axi_araddr;
assign m_axi_arlen = replay0_m_axi_arlen;
assign m_axi_arsize = replay0_m_axi_arsize;
assign m_axi_arburst = replay0_m_axi_arburst;
assign m_axi_arlock = replay0_m_axi_arlock;
assign m_axi_arcache = replay0_m_axi_arcache;
assign m_axi_arprot = replay0_m_axi_arprot;
assign m_axi_arqos = replay0_m_axi_arqos;
assign m_axi_arregion = replay0_m_axi_arregion;
assign m_axi_aruser = replay0_m_axi_aruser;
assign m_axi_arvalid = replay0_m_axi_arvalid;
assign replay0_m_axi_arready = m_axi_arready;
assign replay0_m_axi_rid = m_axi_rid;
assign replay0_m_axi_rdata = m_axi_rdata;
assign replay0_m_axi_rresp = m_axi_rresp;
assign replay0_m_axi_rlast = m_axi_rlast;
assign replay0_m_axi_ruser = m_axi_ruser;
assign replay0_m_axi_rvalid = m_axi_rvalid;
assign m_axi_rready = replay0_m_axi_rready;
// Broadcaster/Listener Connections: // Broadcaster/Listener Connections:
assign radio0_radio_time = radio_time; assign radio0_radio_time = radio_time;
+4 -4
View File
@@ -1,5 +1,5 @@
// //
// Copyright 2021 Ettus Research, A National Instruments Brand // Copyright 2022 Ettus Research, A National Instruments Brand
// //
// SPDX-License-Identifier: LGPL-3.0-or-later // SPDX-License-Identifier: LGPL-3.0-or-later
// //
@@ -12,9 +12,9 @@
// This file was automatically generated by the RFNoC image builder tool. // This file was automatically generated by the RFNoC image builder tool.
// Re-running that tool will overwrite this file! // Re-running that tool will overwrite this file!
// //
// File generated on: 2021-05-03T08:46:03.696404 // File generated on: 2022-02-02T14:39:07.293349
// Source: x410_100_rfnoc_image_core.yml // Source: ./x410_100_rfnoc_image_core.yml
// Source SHA256: cb326c48a67d58ce1151b83a8943f02c24509946f974f9b1b090bc1780915f8a // Source SHA256: 0171fb376a68431d88c4d9a1f5b69c5b20ebb0e5b4efacb34173f9349a25e3d9
// //
`define CHDR_WIDTH 64 `define CHDR_WIDTH 64
+25 -17
View File
@@ -1,17 +1,25 @@
00000010 00000018
00400140 00400240
014001c0 024002c0
01c00180 02c00280
01800040 02800040
00800141 00800241
014101c1 024102c1
01c10181 02c10281
01810080 02810080
00c00200 00c00300
02000280 03000380
02800240 03800340
024000c0 034000c0
01000201 01000301
02010281 03010381
02810241 03810341
02410100 03410100
014003c0
03c00140
018003c1
03c10180
01c003c2
03c201c0
020003c3
03c30200
+609 -26
View File
@@ -1,5 +1,5 @@
// //
// Copyright 2021 Ettus Research, A National Instruments Brand // Copyright 2022 Ettus Research, A National Instruments Brand
// //
// SPDX-License-Identifier: LGPL-3.0-or-later // SPDX-License-Identifier: LGPL-3.0-or-later
// //
@@ -13,9 +13,9 @@
// This file was automatically generated by the RFNoC image builder tool. // This file was automatically generated by the RFNoC image builder tool.
// Re-running that tool will overwrite this file! // Re-running that tool will overwrite this file!
// //
// File generated on: 2021-05-03T08:46:07.693716 // File generated on: 2022-02-02T14:39:11.377126
// Source: x410_200_rfnoc_image_core.yml // Source: ./x410_200_rfnoc_image_core.yml
// Source SHA256: e841d2a58556840a822f9398b8888cc871bf0473c364bcdcb0f46ffce88224c9 // Source SHA256: 57ca44ee7facd8ddcd6a88170463ea9665328e011511c8b5d87684fc78b43bd6
// //
`default_nettype none `default_nettype none
@@ -33,6 +33,7 @@ module rfnoc_image_core #(
input wire core_arst, input wire core_arst,
input wire radio_clk, input wire radio_clk,
input wire radio_2x_clk, input wire radio_2x_clk,
input wire dram_clk,
// Basic // Basic
input wire [ 15:0] device_id, input wire [ 15:0] device_id,
@@ -76,6 +77,52 @@ module rfnoc_image_core #(
output wire [ 255:0] radio_tx_data_radio1, output wire [ 255:0] radio_tx_data_radio1,
input wire [ 7:0] radio_tx_stb_radio1, input wire [ 7:0] radio_tx_stb_radio1,
output wire [ 7:0] radio_tx_running_radio1, output wire [ 7:0] radio_tx_running_radio1,
// dram
input wire [ 0:0] axi_rst,
output wire [ 3:0] m_axi_awid,
output wire [ 191:0] m_axi_awaddr,
output wire [ 31:0] m_axi_awlen,
output wire [ 11:0] m_axi_awsize,
output wire [ 7:0] m_axi_awburst,
output wire [ 3:0] m_axi_awlock,
output wire [ 15:0] m_axi_awcache,
output wire [ 11:0] m_axi_awprot,
output wire [ 15:0] m_axi_awqos,
output wire [ 15:0] m_axi_awregion,
output wire [ 3:0] m_axi_awuser,
output wire [ 3:0] m_axi_awvalid,
input wire [ 3:0] m_axi_awready,
output wire [2047:0] m_axi_wdata,
output wire [ 255:0] m_axi_wstrb,
output wire [ 3:0] m_axi_wlast,
output wire [ 3:0] m_axi_wuser,
output wire [ 3:0] m_axi_wvalid,
input wire [ 3:0] m_axi_wready,
input wire [ 3:0] m_axi_bid,
input wire [ 7:0] m_axi_bresp,
input wire [ 3:0] m_axi_buser,
input wire [ 3:0] m_axi_bvalid,
output wire [ 3:0] m_axi_bready,
output wire [ 3:0] m_axi_arid,
output wire [ 191:0] m_axi_araddr,
output wire [ 31:0] m_axi_arlen,
output wire [ 11:0] m_axi_arsize,
output wire [ 7:0] m_axi_arburst,
output wire [ 3:0] m_axi_arlock,
output wire [ 15:0] m_axi_arcache,
output wire [ 11:0] m_axi_arprot,
output wire [ 15:0] m_axi_arqos,
output wire [ 15:0] m_axi_arregion,
output wire [ 3:0] m_axi_aruser,
output wire [ 3:0] m_axi_arvalid,
input wire [ 3:0] m_axi_arready,
input wire [ 3:0] m_axi_rid,
input wire [2047:0] m_axi_rdata,
input wire [ 7:0] m_axi_rresp,
input wire [ 3:0] m_axi_rlast,
input wire [ 3:0] m_axi_ruser,
input wire [ 3:0] m_axi_rvalid,
output wire [ 3:0] m_axi_rready,
// Transport Adapters /////////////// // Transport Adapters ///////////////
@@ -177,10 +224,42 @@ module rfnoc_image_core #(
wire ep3_to_xb_tlast ; wire ep3_to_xb_tlast ;
wire ep3_to_xb_tvalid; wire ep3_to_xb_tvalid;
wire ep3_to_xb_tready; wire ep3_to_xb_tready;
wire [CHDR_W-1:0] xb_to_ep4_tdata ;
wire xb_to_ep4_tlast ;
wire xb_to_ep4_tvalid;
wire xb_to_ep4_tready;
wire [CHDR_W-1:0] ep4_to_xb_tdata ;
wire ep4_to_xb_tlast ;
wire ep4_to_xb_tvalid;
wire ep4_to_xb_tready;
wire [CHDR_W-1:0] xb_to_ep5_tdata ;
wire xb_to_ep5_tlast ;
wire xb_to_ep5_tvalid;
wire xb_to_ep5_tready;
wire [CHDR_W-1:0] ep5_to_xb_tdata ;
wire ep5_to_xb_tlast ;
wire ep5_to_xb_tvalid;
wire ep5_to_xb_tready;
wire [CHDR_W-1:0] xb_to_ep6_tdata ;
wire xb_to_ep6_tlast ;
wire xb_to_ep6_tvalid;
wire xb_to_ep6_tready;
wire [CHDR_W-1:0] ep6_to_xb_tdata ;
wire ep6_to_xb_tlast ;
wire ep6_to_xb_tvalid;
wire ep6_to_xb_tready;
wire [CHDR_W-1:0] xb_to_ep7_tdata ;
wire xb_to_ep7_tlast ;
wire xb_to_ep7_tvalid;
wire xb_to_ep7_tready;
wire [CHDR_W-1:0] ep7_to_xb_tdata ;
wire ep7_to_xb_tlast ;
wire ep7_to_xb_tvalid;
wire ep7_to_xb_tready;
chdr_crossbar_nxn #( chdr_crossbar_nxn #(
.CHDR_W (CHDR_W), .CHDR_W (CHDR_W),
.NPORTS (10), .NPORTS (14),
.DEFAULT_PORT (0), .DEFAULT_PORT (0),
.MTU (MTU), .MTU (MTU),
.ROUTE_TBL_SIZE (6), .ROUTE_TBL_SIZE (6),
@@ -193,14 +272,14 @@ module rfnoc_image_core #(
.clk (rfnoc_chdr_clk), .clk (rfnoc_chdr_clk),
.reset (rfnoc_chdr_rst), .reset (rfnoc_chdr_rst),
.device_id (device_id), .device_id (device_id),
.s_axis_tdata ({ep3_to_xb_tdata , ep2_to_xb_tdata , ep1_to_xb_tdata , ep0_to_xb_tdata , s_dma_tdata , s_eth4_tdata , s_eth3_tdata , s_eth2_tdata , s_eth1_tdata , s_eth0_tdata }), .s_axis_tdata ({ep7_to_xb_tdata , ep6_to_xb_tdata , ep5_to_xb_tdata , ep4_to_xb_tdata , ep3_to_xb_tdata , ep2_to_xb_tdata , ep1_to_xb_tdata , ep0_to_xb_tdata , s_dma_tdata , s_eth4_tdata , s_eth3_tdata , s_eth2_tdata , s_eth1_tdata , s_eth0_tdata }),
.s_axis_tlast ({ep3_to_xb_tlast , ep2_to_xb_tlast , ep1_to_xb_tlast , ep0_to_xb_tlast , s_dma_tlast , s_eth4_tlast , s_eth3_tlast , s_eth2_tlast , s_eth1_tlast , s_eth0_tlast }), .s_axis_tlast ({ep7_to_xb_tlast , ep6_to_xb_tlast , ep5_to_xb_tlast , ep4_to_xb_tlast , ep3_to_xb_tlast , ep2_to_xb_tlast , ep1_to_xb_tlast , ep0_to_xb_tlast , s_dma_tlast , s_eth4_tlast , s_eth3_tlast , s_eth2_tlast , s_eth1_tlast , s_eth0_tlast }),
.s_axis_tvalid ({ep3_to_xb_tvalid, ep2_to_xb_tvalid, ep1_to_xb_tvalid, ep0_to_xb_tvalid, s_dma_tvalid, s_eth4_tvalid, s_eth3_tvalid, s_eth2_tvalid, s_eth1_tvalid, s_eth0_tvalid}), .s_axis_tvalid ({ep7_to_xb_tvalid, ep6_to_xb_tvalid, ep5_to_xb_tvalid, ep4_to_xb_tvalid, ep3_to_xb_tvalid, ep2_to_xb_tvalid, ep1_to_xb_tvalid, ep0_to_xb_tvalid, s_dma_tvalid, s_eth4_tvalid, s_eth3_tvalid, s_eth2_tvalid, s_eth1_tvalid, s_eth0_tvalid}),
.s_axis_tready ({ep3_to_xb_tready, ep2_to_xb_tready, ep1_to_xb_tready, ep0_to_xb_tready, s_dma_tready, s_eth4_tready, s_eth3_tready, s_eth2_tready, s_eth1_tready, s_eth0_tready}), .s_axis_tready ({ep7_to_xb_tready, ep6_to_xb_tready, ep5_to_xb_tready, ep4_to_xb_tready, ep3_to_xb_tready, ep2_to_xb_tready, ep1_to_xb_tready, ep0_to_xb_tready, s_dma_tready, s_eth4_tready, s_eth3_tready, s_eth2_tready, s_eth1_tready, s_eth0_tready}),
.m_axis_tdata ({xb_to_ep3_tdata , xb_to_ep2_tdata , xb_to_ep1_tdata , xb_to_ep0_tdata , m_dma_tdata , m_eth4_tdata , m_eth3_tdata , m_eth2_tdata , m_eth1_tdata , m_eth0_tdata }), .m_axis_tdata ({xb_to_ep7_tdata , xb_to_ep6_tdata , xb_to_ep5_tdata , xb_to_ep4_tdata , xb_to_ep3_tdata , xb_to_ep2_tdata , xb_to_ep1_tdata , xb_to_ep0_tdata , m_dma_tdata , m_eth4_tdata , m_eth3_tdata , m_eth2_tdata , m_eth1_tdata , m_eth0_tdata }),
.m_axis_tlast ({xb_to_ep3_tlast , xb_to_ep2_tlast , xb_to_ep1_tlast , xb_to_ep0_tlast , m_dma_tlast , m_eth4_tlast , m_eth3_tlast , m_eth2_tlast , m_eth1_tlast , m_eth0_tlast }), .m_axis_tlast ({xb_to_ep7_tlast , xb_to_ep6_tlast , xb_to_ep5_tlast , xb_to_ep4_tlast , xb_to_ep3_tlast , xb_to_ep2_tlast , xb_to_ep1_tlast , xb_to_ep0_tlast , m_dma_tlast , m_eth4_tlast , m_eth3_tlast , m_eth2_tlast , m_eth1_tlast , m_eth0_tlast }),
.m_axis_tvalid ({xb_to_ep3_tvalid, xb_to_ep2_tvalid, xb_to_ep1_tvalid, xb_to_ep0_tvalid, m_dma_tvalid, m_eth4_tvalid, m_eth3_tvalid, m_eth2_tvalid, m_eth1_tvalid, m_eth0_tvalid}), .m_axis_tvalid ({xb_to_ep7_tvalid, xb_to_ep6_tvalid, xb_to_ep5_tvalid, xb_to_ep4_tvalid, xb_to_ep3_tvalid, xb_to_ep2_tvalid, xb_to_ep1_tvalid, xb_to_ep0_tvalid, m_dma_tvalid, m_eth4_tvalid, m_eth3_tvalid, m_eth2_tvalid, m_eth1_tvalid, m_eth0_tvalid}),
.m_axis_tready ({xb_to_ep3_tready, xb_to_ep2_tready, xb_to_ep1_tready, xb_to_ep0_tready, m_dma_tready, m_eth4_tready, m_eth3_tready, m_eth2_tready, m_eth1_tready, m_eth0_tready}), .m_axis_tready ({xb_to_ep7_tready, xb_to_ep6_tready, xb_to_ep5_tready, xb_to_ep4_tready, xb_to_ep3_tready, xb_to_ep2_tready, xb_to_ep1_tready, xb_to_ep0_tready, m_dma_tready, m_eth4_tready, m_eth3_tready, m_eth2_tready, m_eth1_tready, m_eth0_tready}),
.ext_rtcfg_stb (1'h0), .ext_rtcfg_stb (1'h0),
.ext_rtcfg_addr (16'h0), .ext_rtcfg_addr (16'h0),
.ext_rtcfg_data (32'h0), .ext_rtcfg_data (32'h0),
@@ -488,6 +567,282 @@ module rfnoc_image_core #(
.signal_data_err (1'b0) .signal_data_err (1'b0)
); );
// If requested buffer size is 0, use the minimum SRL-based FIFO size.
// Otherwise, make sure it's at least two MTU-sized packets.
localparam REQ_BUFF_SIZE_EP4 = (4096)/(CHDR_W/8);
localparam INGRESS_BUFF_SIZE_EP4 =
REQ_BUFF_SIZE_EP4 == 0 ? 5 :
REQ_BUFF_SIZE_EP4 < 2*(2**MTU) ? MTU+1 :
$clog2(REQ_BUFF_SIZE_EP4);
wire [CHDR_W-1:0] m_ep4_out0_tdata;
wire m_ep4_out0_tlast;
wire m_ep4_out0_tvalid;
wire m_ep4_out0_tready;
wire [CHDR_W-1:0] s_ep4_in0_tdata;
wire s_ep4_in0_tlast;
wire s_ep4_in0_tvalid;
wire s_ep4_in0_tready;
wire [ 31:0] m_ep4_ctrl_tdata, s_ep4_ctrl_tdata;
wire m_ep4_ctrl_tlast, s_ep4_ctrl_tlast;
wire m_ep4_ctrl_tvalid, s_ep4_ctrl_tvalid;
wire m_ep4_ctrl_tready, s_ep4_ctrl_tready;
chdr_stream_endpoint #(
.PROTOVER (PROTOVER),
.CHDR_W (CHDR_W),
.AXIS_CTRL_EN (0),
.AXIS_DATA_EN (1),
.NUM_DATA_I (1),
.NUM_DATA_O (1),
.INST_NUM (4),
.CTRL_XBAR_PORT (5),
.INGRESS_BUFF_SIZE (INGRESS_BUFF_SIZE_EP4),
.MTU (MTU),
.REPORT_STRM_ERRS (1)
) ep4_i (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_chdr_rst (rfnoc_chdr_rst),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
.device_id (device_id),
.s_axis_chdr_tdata (xb_to_ep4_tdata),
.s_axis_chdr_tlast (xb_to_ep4_tlast),
.s_axis_chdr_tvalid (xb_to_ep4_tvalid),
.s_axis_chdr_tready (xb_to_ep4_tready),
.m_axis_chdr_tdata (ep4_to_xb_tdata),
.m_axis_chdr_tlast (ep4_to_xb_tlast),
.m_axis_chdr_tvalid (ep4_to_xb_tvalid),
.m_axis_chdr_tready (ep4_to_xb_tready),
.s_axis_data_tdata ({s_ep4_in0_tdata}),
.s_axis_data_tlast ({s_ep4_in0_tlast}),
.s_axis_data_tvalid ({s_ep4_in0_tvalid}),
.s_axis_data_tready ({s_ep4_in0_tready}),
.m_axis_data_tdata ({m_ep4_out0_tdata}),
.m_axis_data_tlast ({m_ep4_out0_tlast}),
.m_axis_data_tvalid ({m_ep4_out0_tvalid}),
.m_axis_data_tready ({m_ep4_out0_tready}),
.s_axis_ctrl_tdata (s_ep4_ctrl_tdata),
.s_axis_ctrl_tlast (s_ep4_ctrl_tlast),
.s_axis_ctrl_tvalid (s_ep4_ctrl_tvalid),
.s_axis_ctrl_tready (s_ep4_ctrl_tready),
.m_axis_ctrl_tdata (m_ep4_ctrl_tdata),
.m_axis_ctrl_tlast (m_ep4_ctrl_tlast),
.m_axis_ctrl_tvalid (m_ep4_ctrl_tvalid),
.m_axis_ctrl_tready (m_ep4_ctrl_tready),
.strm_seq_err_stb (),
.strm_data_err_stb (),
.strm_route_err_stb (),
.signal_data_err (1'b0)
);
// If requested buffer size is 0, use the minimum SRL-based FIFO size.
// Otherwise, make sure it's at least two MTU-sized packets.
localparam REQ_BUFF_SIZE_EP5 = (4096)/(CHDR_W/8);
localparam INGRESS_BUFF_SIZE_EP5 =
REQ_BUFF_SIZE_EP5 == 0 ? 5 :
REQ_BUFF_SIZE_EP5 < 2*(2**MTU) ? MTU+1 :
$clog2(REQ_BUFF_SIZE_EP5);
wire [CHDR_W-1:0] m_ep5_out0_tdata;
wire m_ep5_out0_tlast;
wire m_ep5_out0_tvalid;
wire m_ep5_out0_tready;
wire [CHDR_W-1:0] s_ep5_in0_tdata;
wire s_ep5_in0_tlast;
wire s_ep5_in0_tvalid;
wire s_ep5_in0_tready;
wire [ 31:0] m_ep5_ctrl_tdata, s_ep5_ctrl_tdata;
wire m_ep5_ctrl_tlast, s_ep5_ctrl_tlast;
wire m_ep5_ctrl_tvalid, s_ep5_ctrl_tvalid;
wire m_ep5_ctrl_tready, s_ep5_ctrl_tready;
chdr_stream_endpoint #(
.PROTOVER (PROTOVER),
.CHDR_W (CHDR_W),
.AXIS_CTRL_EN (0),
.AXIS_DATA_EN (1),
.NUM_DATA_I (1),
.NUM_DATA_O (1),
.INST_NUM (5),
.CTRL_XBAR_PORT (6),
.INGRESS_BUFF_SIZE (INGRESS_BUFF_SIZE_EP5),
.MTU (MTU),
.REPORT_STRM_ERRS (1)
) ep5_i (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_chdr_rst (rfnoc_chdr_rst),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
.device_id (device_id),
.s_axis_chdr_tdata (xb_to_ep5_tdata),
.s_axis_chdr_tlast (xb_to_ep5_tlast),
.s_axis_chdr_tvalid (xb_to_ep5_tvalid),
.s_axis_chdr_tready (xb_to_ep5_tready),
.m_axis_chdr_tdata (ep5_to_xb_tdata),
.m_axis_chdr_tlast (ep5_to_xb_tlast),
.m_axis_chdr_tvalid (ep5_to_xb_tvalid),
.m_axis_chdr_tready (ep5_to_xb_tready),
.s_axis_data_tdata ({s_ep5_in0_tdata}),
.s_axis_data_tlast ({s_ep5_in0_tlast}),
.s_axis_data_tvalid ({s_ep5_in0_tvalid}),
.s_axis_data_tready ({s_ep5_in0_tready}),
.m_axis_data_tdata ({m_ep5_out0_tdata}),
.m_axis_data_tlast ({m_ep5_out0_tlast}),
.m_axis_data_tvalid ({m_ep5_out0_tvalid}),
.m_axis_data_tready ({m_ep5_out0_tready}),
.s_axis_ctrl_tdata (s_ep5_ctrl_tdata),
.s_axis_ctrl_tlast (s_ep5_ctrl_tlast),
.s_axis_ctrl_tvalid (s_ep5_ctrl_tvalid),
.s_axis_ctrl_tready (s_ep5_ctrl_tready),
.m_axis_ctrl_tdata (m_ep5_ctrl_tdata),
.m_axis_ctrl_tlast (m_ep5_ctrl_tlast),
.m_axis_ctrl_tvalid (m_ep5_ctrl_tvalid),
.m_axis_ctrl_tready (m_ep5_ctrl_tready),
.strm_seq_err_stb (),
.strm_data_err_stb (),
.strm_route_err_stb (),
.signal_data_err (1'b0)
);
// If requested buffer size is 0, use the minimum SRL-based FIFO size.
// Otherwise, make sure it's at least two MTU-sized packets.
localparam REQ_BUFF_SIZE_EP6 = (4096)/(CHDR_W/8);
localparam INGRESS_BUFF_SIZE_EP6 =
REQ_BUFF_SIZE_EP6 == 0 ? 5 :
REQ_BUFF_SIZE_EP6 < 2*(2**MTU) ? MTU+1 :
$clog2(REQ_BUFF_SIZE_EP6);
wire [CHDR_W-1:0] m_ep6_out0_tdata;
wire m_ep6_out0_tlast;
wire m_ep6_out0_tvalid;
wire m_ep6_out0_tready;
wire [CHDR_W-1:0] s_ep6_in0_tdata;
wire s_ep6_in0_tlast;
wire s_ep6_in0_tvalid;
wire s_ep6_in0_tready;
wire [ 31:0] m_ep6_ctrl_tdata, s_ep6_ctrl_tdata;
wire m_ep6_ctrl_tlast, s_ep6_ctrl_tlast;
wire m_ep6_ctrl_tvalid, s_ep6_ctrl_tvalid;
wire m_ep6_ctrl_tready, s_ep6_ctrl_tready;
chdr_stream_endpoint #(
.PROTOVER (PROTOVER),
.CHDR_W (CHDR_W),
.AXIS_CTRL_EN (0),
.AXIS_DATA_EN (1),
.NUM_DATA_I (1),
.NUM_DATA_O (1),
.INST_NUM (6),
.CTRL_XBAR_PORT (7),
.INGRESS_BUFF_SIZE (INGRESS_BUFF_SIZE_EP6),
.MTU (MTU),
.REPORT_STRM_ERRS (1)
) ep6_i (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_chdr_rst (rfnoc_chdr_rst),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
.device_id (device_id),
.s_axis_chdr_tdata (xb_to_ep6_tdata),
.s_axis_chdr_tlast (xb_to_ep6_tlast),
.s_axis_chdr_tvalid (xb_to_ep6_tvalid),
.s_axis_chdr_tready (xb_to_ep6_tready),
.m_axis_chdr_tdata (ep6_to_xb_tdata),
.m_axis_chdr_tlast (ep6_to_xb_tlast),
.m_axis_chdr_tvalid (ep6_to_xb_tvalid),
.m_axis_chdr_tready (ep6_to_xb_tready),
.s_axis_data_tdata ({s_ep6_in0_tdata}),
.s_axis_data_tlast ({s_ep6_in0_tlast}),
.s_axis_data_tvalid ({s_ep6_in0_tvalid}),
.s_axis_data_tready ({s_ep6_in0_tready}),
.m_axis_data_tdata ({m_ep6_out0_tdata}),
.m_axis_data_tlast ({m_ep6_out0_tlast}),
.m_axis_data_tvalid ({m_ep6_out0_tvalid}),
.m_axis_data_tready ({m_ep6_out0_tready}),
.s_axis_ctrl_tdata (s_ep6_ctrl_tdata),
.s_axis_ctrl_tlast (s_ep6_ctrl_tlast),
.s_axis_ctrl_tvalid (s_ep6_ctrl_tvalid),
.s_axis_ctrl_tready (s_ep6_ctrl_tready),
.m_axis_ctrl_tdata (m_ep6_ctrl_tdata),
.m_axis_ctrl_tlast (m_ep6_ctrl_tlast),
.m_axis_ctrl_tvalid (m_ep6_ctrl_tvalid),
.m_axis_ctrl_tready (m_ep6_ctrl_tready),
.strm_seq_err_stb (),
.strm_data_err_stb (),
.strm_route_err_stb (),
.signal_data_err (1'b0)
);
// If requested buffer size is 0, use the minimum SRL-based FIFO size.
// Otherwise, make sure it's at least two MTU-sized packets.
localparam REQ_BUFF_SIZE_EP7 = (4096)/(CHDR_W/8);
localparam INGRESS_BUFF_SIZE_EP7 =
REQ_BUFF_SIZE_EP7 == 0 ? 5 :
REQ_BUFF_SIZE_EP7 < 2*(2**MTU) ? MTU+1 :
$clog2(REQ_BUFF_SIZE_EP7);
wire [CHDR_W-1:0] m_ep7_out0_tdata;
wire m_ep7_out0_tlast;
wire m_ep7_out0_tvalid;
wire m_ep7_out0_tready;
wire [CHDR_W-1:0] s_ep7_in0_tdata;
wire s_ep7_in0_tlast;
wire s_ep7_in0_tvalid;
wire s_ep7_in0_tready;
wire [ 31:0] m_ep7_ctrl_tdata, s_ep7_ctrl_tdata;
wire m_ep7_ctrl_tlast, s_ep7_ctrl_tlast;
wire m_ep7_ctrl_tvalid, s_ep7_ctrl_tvalid;
wire m_ep7_ctrl_tready, s_ep7_ctrl_tready;
chdr_stream_endpoint #(
.PROTOVER (PROTOVER),
.CHDR_W (CHDR_W),
.AXIS_CTRL_EN (0),
.AXIS_DATA_EN (1),
.NUM_DATA_I (1),
.NUM_DATA_O (1),
.INST_NUM (7),
.CTRL_XBAR_PORT (8),
.INGRESS_BUFF_SIZE (INGRESS_BUFF_SIZE_EP7),
.MTU (MTU),
.REPORT_STRM_ERRS (1)
) ep7_i (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_chdr_rst (rfnoc_chdr_rst),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
.device_id (device_id),
.s_axis_chdr_tdata (xb_to_ep7_tdata),
.s_axis_chdr_tlast (xb_to_ep7_tlast),
.s_axis_chdr_tvalid (xb_to_ep7_tvalid),
.s_axis_chdr_tready (xb_to_ep7_tready),
.m_axis_chdr_tdata (ep7_to_xb_tdata),
.m_axis_chdr_tlast (ep7_to_xb_tlast),
.m_axis_chdr_tvalid (ep7_to_xb_tvalid),
.m_axis_chdr_tready (ep7_to_xb_tready),
.s_axis_data_tdata ({s_ep7_in0_tdata}),
.s_axis_data_tlast ({s_ep7_in0_tlast}),
.s_axis_data_tvalid ({s_ep7_in0_tvalid}),
.s_axis_data_tready ({s_ep7_in0_tready}),
.m_axis_data_tdata ({m_ep7_out0_tdata}),
.m_axis_data_tlast ({m_ep7_out0_tlast}),
.m_axis_data_tvalid ({m_ep7_out0_tvalid}),
.m_axis_data_tready ({m_ep7_out0_tready}),
.s_axis_ctrl_tdata (s_ep7_ctrl_tdata),
.s_axis_ctrl_tlast (s_ep7_ctrl_tlast),
.s_axis_ctrl_tvalid (s_ep7_ctrl_tvalid),
.s_axis_ctrl_tready (s_ep7_ctrl_tready),
.m_axis_ctrl_tdata (m_ep7_ctrl_tdata),
.m_axis_ctrl_tlast (m_ep7_ctrl_tlast),
.m_axis_ctrl_tvalid (m_ep7_ctrl_tvalid),
.m_axis_ctrl_tready (m_ep7_ctrl_tready),
.strm_seq_err_stb (),
.strm_data_err_stb (),
.strm_route_err_stb (),
.signal_data_err (1'b0)
);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Control Crossbar // Control Crossbar
@@ -521,10 +876,14 @@ module rfnoc_image_core #(
wire m_radio1_ctrl_tlast, s_radio1_ctrl_tlast; wire m_radio1_ctrl_tlast, s_radio1_ctrl_tlast;
wire m_radio1_ctrl_tvalid, s_radio1_ctrl_tvalid; wire m_radio1_ctrl_tvalid, s_radio1_ctrl_tvalid;
wire m_radio1_ctrl_tready, s_radio1_ctrl_tready; wire m_radio1_ctrl_tready, s_radio1_ctrl_tready;
wire [31:0] m_replay0_ctrl_tdata, s_replay0_ctrl_tdata;
wire m_replay0_ctrl_tlast, s_replay0_ctrl_tlast;
wire m_replay0_ctrl_tvalid, s_replay0_ctrl_tvalid;
wire m_replay0_ctrl_tready, s_replay0_ctrl_tready;
axis_ctrl_crossbar_nxn #( axis_ctrl_crossbar_nxn #(
.WIDTH (32), .WIDTH (32),
.NPORTS (8), .NPORTS (9),
.TOPOLOGY ("TORUS"), .TOPOLOGY ("TORUS"),
.INGRESS_BUFF_SIZE(5), .INGRESS_BUFF_SIZE(5),
.ROUTER_BUFF_SIZE (5), .ROUTER_BUFF_SIZE (5),
@@ -533,14 +892,14 @@ module rfnoc_image_core #(
) ctrl_xb_i ( ) ctrl_xb_i (
.clk (rfnoc_ctrl_clk), .clk (rfnoc_ctrl_clk),
.reset (rfnoc_ctrl_rst), .reset (rfnoc_ctrl_rst),
.s_axis_tdata ({m_radio1_ctrl_tdata , m_ddc1_ctrl_tdata , m_duc1_ctrl_tdata , m_radio0_ctrl_tdata , m_ddc0_ctrl_tdata , m_duc0_ctrl_tdata , m_ep0_ctrl_tdata , m_core_ctrl_tdata }), .s_axis_tdata ({m_replay0_ctrl_tdata , m_radio1_ctrl_tdata , m_ddc1_ctrl_tdata , m_duc1_ctrl_tdata , m_radio0_ctrl_tdata , m_ddc0_ctrl_tdata , m_duc0_ctrl_tdata , m_ep0_ctrl_tdata , m_core_ctrl_tdata }),
.s_axis_tvalid ({m_radio1_ctrl_tvalid, m_ddc1_ctrl_tvalid, m_duc1_ctrl_tvalid, m_radio0_ctrl_tvalid, m_ddc0_ctrl_tvalid, m_duc0_ctrl_tvalid, m_ep0_ctrl_tvalid, m_core_ctrl_tvalid}), .s_axis_tvalid ({m_replay0_ctrl_tvalid, m_radio1_ctrl_tvalid, m_ddc1_ctrl_tvalid, m_duc1_ctrl_tvalid, m_radio0_ctrl_tvalid, m_ddc0_ctrl_tvalid, m_duc0_ctrl_tvalid, m_ep0_ctrl_tvalid, m_core_ctrl_tvalid}),
.s_axis_tlast ({m_radio1_ctrl_tlast , m_ddc1_ctrl_tlast , m_duc1_ctrl_tlast , m_radio0_ctrl_tlast , m_ddc0_ctrl_tlast , m_duc0_ctrl_tlast , m_ep0_ctrl_tlast , m_core_ctrl_tlast }), .s_axis_tlast ({m_replay0_ctrl_tlast , m_radio1_ctrl_tlast , m_ddc1_ctrl_tlast , m_duc1_ctrl_tlast , m_radio0_ctrl_tlast , m_ddc0_ctrl_tlast , m_duc0_ctrl_tlast , m_ep0_ctrl_tlast , m_core_ctrl_tlast }),
.s_axis_tready ({m_radio1_ctrl_tready, m_ddc1_ctrl_tready, m_duc1_ctrl_tready, m_radio0_ctrl_tready, m_ddc0_ctrl_tready, m_duc0_ctrl_tready, m_ep0_ctrl_tready, m_core_ctrl_tready}), .s_axis_tready ({m_replay0_ctrl_tready, m_radio1_ctrl_tready, m_ddc1_ctrl_tready, m_duc1_ctrl_tready, m_radio0_ctrl_tready, m_ddc0_ctrl_tready, m_duc0_ctrl_tready, m_ep0_ctrl_tready, m_core_ctrl_tready}),
.m_axis_tdata ({s_radio1_ctrl_tdata , s_ddc1_ctrl_tdata , s_duc1_ctrl_tdata , s_radio0_ctrl_tdata , s_ddc0_ctrl_tdata , s_duc0_ctrl_tdata , s_ep0_ctrl_tdata , s_core_ctrl_tdata }), .m_axis_tdata ({s_replay0_ctrl_tdata , s_radio1_ctrl_tdata , s_ddc1_ctrl_tdata , s_duc1_ctrl_tdata , s_radio0_ctrl_tdata , s_ddc0_ctrl_tdata , s_duc0_ctrl_tdata , s_ep0_ctrl_tdata , s_core_ctrl_tdata }),
.m_axis_tvalid ({s_radio1_ctrl_tvalid, s_ddc1_ctrl_tvalid, s_duc1_ctrl_tvalid, s_radio0_ctrl_tvalid, s_ddc0_ctrl_tvalid, s_duc0_ctrl_tvalid, s_ep0_ctrl_tvalid, s_core_ctrl_tvalid}), .m_axis_tvalid ({s_replay0_ctrl_tvalid, s_radio1_ctrl_tvalid, s_ddc1_ctrl_tvalid, s_duc1_ctrl_tvalid, s_radio0_ctrl_tvalid, s_ddc0_ctrl_tvalid, s_duc0_ctrl_tvalid, s_ep0_ctrl_tvalid, s_core_ctrl_tvalid}),
.m_axis_tlast ({s_radio1_ctrl_tlast , s_ddc1_ctrl_tlast , s_duc1_ctrl_tlast , s_radio0_ctrl_tlast , s_ddc0_ctrl_tlast , s_duc0_ctrl_tlast , s_ep0_ctrl_tlast , s_core_ctrl_tlast }), .m_axis_tlast ({s_replay0_ctrl_tlast , s_radio1_ctrl_tlast , s_ddc1_ctrl_tlast , s_duc1_ctrl_tlast , s_radio0_ctrl_tlast , s_ddc0_ctrl_tlast , s_duc0_ctrl_tlast , s_ep0_ctrl_tlast , s_core_ctrl_tlast }),
.m_axis_tready ({s_radio1_ctrl_tready, s_ddc1_ctrl_tready, s_duc1_ctrl_tready, s_radio0_ctrl_tready, s_ddc0_ctrl_tready, s_duc0_ctrl_tready, s_ep0_ctrl_tready, s_core_ctrl_tready}), .m_axis_tready ({s_replay0_ctrl_tready, s_radio1_ctrl_tready, s_ddc1_ctrl_tready, s_duc1_ctrl_tready, s_radio0_ctrl_tready, s_ddc0_ctrl_tready, s_duc0_ctrl_tready, s_ep0_ctrl_tready, s_core_ctrl_tready}),
.deadlock_detected() .deadlock_detected()
); );
@@ -549,18 +908,18 @@ module rfnoc_image_core #(
// RFNoC Core Kernel // RFNoC Core Kernel
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
wire [(512*6)-1:0] rfnoc_core_config, rfnoc_core_status; wire [(512*7)-1:0] rfnoc_core_config, rfnoc_core_status;
rfnoc_core_kernel #( rfnoc_core_kernel #(
.PROTOVER (PROTOVER), .PROTOVER (PROTOVER),
.DEVICE_TYPE (16'hA400), .DEVICE_TYPE (16'hA400),
.DEVICE_FAMILY ("ULTRASCALE"), .DEVICE_FAMILY ("ULTRASCALE"),
.SAFE_START_CLKS (0), .SAFE_START_CLKS (0),
.NUM_BLOCKS (6), .NUM_BLOCKS (7),
.NUM_STREAM_ENDPOINTS(4), .NUM_STREAM_ENDPOINTS(8),
.NUM_ENDPOINTS_CTRL (1), .NUM_ENDPOINTS_CTRL (1),
.NUM_TRANSPORTS (6), .NUM_TRANSPORTS (6),
.NUM_EDGES (16), .NUM_EDGES (24),
.CHDR_XBAR_PRESENT (1), .CHDR_XBAR_PRESENT (1),
.EDGE_TBL_FILE (EDGE_TBL_FILE) .EDGE_TBL_FILE (EDGE_TBL_FILE)
) core_kernel_i ( ) core_kernel_i (
@@ -937,6 +1296,143 @@ module rfnoc_image_core #(
.m_rfnoc_ctrl_tready (m_radio1_ctrl_tready) .m_rfnoc_ctrl_tready (m_radio1_ctrl_tready)
); );
//-----------------------------------
// replay0
//-----------------------------------
wire replay0_mem_clk;
wire [CHDR_W-1:0] s_replay0_in_3_tdata , s_replay0_in_2_tdata , s_replay0_in_1_tdata , s_replay0_in_0_tdata ;
wire s_replay0_in_3_tlast , s_replay0_in_2_tlast , s_replay0_in_1_tlast , s_replay0_in_0_tlast ;
wire s_replay0_in_3_tvalid, s_replay0_in_2_tvalid, s_replay0_in_1_tvalid, s_replay0_in_0_tvalid;
wire s_replay0_in_3_tready, s_replay0_in_2_tready, s_replay0_in_1_tready, s_replay0_in_0_tready;
wire [CHDR_W-1:0] m_replay0_out_3_tdata , m_replay0_out_2_tdata , m_replay0_out_1_tdata , m_replay0_out_0_tdata ;
wire m_replay0_out_3_tlast , m_replay0_out_2_tlast , m_replay0_out_1_tlast , m_replay0_out_0_tlast ;
wire m_replay0_out_3_tvalid, m_replay0_out_2_tvalid, m_replay0_out_1_tvalid, m_replay0_out_0_tvalid;
wire m_replay0_out_3_tready, m_replay0_out_2_tready, m_replay0_out_1_tready, m_replay0_out_0_tready;
// axi_ram
wire [ 0:0] replay0_axi_rst;
wire [ 3:0] replay0_m_axi_awid;
wire [ 191:0] replay0_m_axi_awaddr;
wire [ 31:0] replay0_m_axi_awlen;
wire [ 11:0] replay0_m_axi_awsize;
wire [ 7:0] replay0_m_axi_awburst;
wire [ 3:0] replay0_m_axi_awlock;
wire [ 15:0] replay0_m_axi_awcache;
wire [ 11:0] replay0_m_axi_awprot;
wire [ 15:0] replay0_m_axi_awqos;
wire [ 15:0] replay0_m_axi_awregion;
wire [ 3:0] replay0_m_axi_awuser;
wire [ 3:0] replay0_m_axi_awvalid;
wire [ 3:0] replay0_m_axi_awready;
wire [2047:0] replay0_m_axi_wdata;
wire [ 255:0] replay0_m_axi_wstrb;
wire [ 3:0] replay0_m_axi_wlast;
wire [ 3:0] replay0_m_axi_wuser;
wire [ 3:0] replay0_m_axi_wvalid;
wire [ 3:0] replay0_m_axi_wready;
wire [ 3:0] replay0_m_axi_bid;
wire [ 7:0] replay0_m_axi_bresp;
wire [ 3:0] replay0_m_axi_buser;
wire [ 3:0] replay0_m_axi_bvalid;
wire [ 3:0] replay0_m_axi_bready;
wire [ 3:0] replay0_m_axi_arid;
wire [ 191:0] replay0_m_axi_araddr;
wire [ 31:0] replay0_m_axi_arlen;
wire [ 11:0] replay0_m_axi_arsize;
wire [ 7:0] replay0_m_axi_arburst;
wire [ 3:0] replay0_m_axi_arlock;
wire [ 15:0] replay0_m_axi_arcache;
wire [ 11:0] replay0_m_axi_arprot;
wire [ 15:0] replay0_m_axi_arqos;
wire [ 15:0] replay0_m_axi_arregion;
wire [ 3:0] replay0_m_axi_aruser;
wire [ 3:0] replay0_m_axi_arvalid;
wire [ 3:0] replay0_m_axi_arready;
wire [ 3:0] replay0_m_axi_rid;
wire [2047:0] replay0_m_axi_rdata;
wire [ 7:0] replay0_m_axi_rresp;
wire [ 3:0] replay0_m_axi_rlast;
wire [ 3:0] replay0_m_axi_ruser;
wire [ 3:0] replay0_m_axi_rvalid;
wire [ 3:0] replay0_m_axi_rready;
rfnoc_block_replay #(
.THIS_PORTID (8),
.CHDR_W (CHDR_W),
.NUM_PORTS (4),
.MEM_DATA_W (64),
.MEM_ADDR_W (32),
.MTU (MTU)
) b_replay0_6 (
.rfnoc_chdr_clk (rfnoc_chdr_clk),
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
.mem_clk (replay0_mem_clk),
.rfnoc_core_config (rfnoc_core_config[512*7-1:512*6]),
.rfnoc_core_status (rfnoc_core_status[512*7-1:512*6]),
.axi_rst (replay0_axi_rst),
.m_axi_awid (replay0_m_axi_awid),
.m_axi_awaddr (replay0_m_axi_awaddr),
.m_axi_awlen (replay0_m_axi_awlen),
.m_axi_awsize (replay0_m_axi_awsize),
.m_axi_awburst (replay0_m_axi_awburst),
.m_axi_awlock (replay0_m_axi_awlock),
.m_axi_awcache (replay0_m_axi_awcache),
.m_axi_awprot (replay0_m_axi_awprot),
.m_axi_awqos (replay0_m_axi_awqos),
.m_axi_awregion (replay0_m_axi_awregion),
.m_axi_awuser (replay0_m_axi_awuser),
.m_axi_awvalid (replay0_m_axi_awvalid),
.m_axi_awready (replay0_m_axi_awready),
.m_axi_wdata (replay0_m_axi_wdata),
.m_axi_wstrb (replay0_m_axi_wstrb),
.m_axi_wlast (replay0_m_axi_wlast),
.m_axi_wuser (replay0_m_axi_wuser),
.m_axi_wvalid (replay0_m_axi_wvalid),
.m_axi_wready (replay0_m_axi_wready),
.m_axi_bid (replay0_m_axi_bid),
.m_axi_bresp (replay0_m_axi_bresp),
.m_axi_buser (replay0_m_axi_buser),
.m_axi_bvalid (replay0_m_axi_bvalid),
.m_axi_bready (replay0_m_axi_bready),
.m_axi_arid (replay0_m_axi_arid),
.m_axi_araddr (replay0_m_axi_araddr),
.m_axi_arlen (replay0_m_axi_arlen),
.m_axi_arsize (replay0_m_axi_arsize),
.m_axi_arburst (replay0_m_axi_arburst),
.m_axi_arlock (replay0_m_axi_arlock),
.m_axi_arcache (replay0_m_axi_arcache),
.m_axi_arprot (replay0_m_axi_arprot),
.m_axi_arqos (replay0_m_axi_arqos),
.m_axi_arregion (replay0_m_axi_arregion),
.m_axi_aruser (replay0_m_axi_aruser),
.m_axi_arvalid (replay0_m_axi_arvalid),
.m_axi_arready (replay0_m_axi_arready),
.m_axi_rid (replay0_m_axi_rid),
.m_axi_rdata (replay0_m_axi_rdata),
.m_axi_rresp (replay0_m_axi_rresp),
.m_axi_rlast (replay0_m_axi_rlast),
.m_axi_ruser (replay0_m_axi_ruser),
.m_axi_rvalid (replay0_m_axi_rvalid),
.m_axi_rready (replay0_m_axi_rready),
.s_rfnoc_chdr_tdata ({s_replay0_in_3_tdata , s_replay0_in_2_tdata , s_replay0_in_1_tdata , s_replay0_in_0_tdata }),
.s_rfnoc_chdr_tlast ({s_replay0_in_3_tlast , s_replay0_in_2_tlast , s_replay0_in_1_tlast , s_replay0_in_0_tlast }),
.s_rfnoc_chdr_tvalid ({s_replay0_in_3_tvalid, s_replay0_in_2_tvalid, s_replay0_in_1_tvalid, s_replay0_in_0_tvalid}),
.s_rfnoc_chdr_tready ({s_replay0_in_3_tready, s_replay0_in_2_tready, s_replay0_in_1_tready, s_replay0_in_0_tready}),
.m_rfnoc_chdr_tdata ({m_replay0_out_3_tdata , m_replay0_out_2_tdata , m_replay0_out_1_tdata , m_replay0_out_0_tdata }),
.m_rfnoc_chdr_tlast ({m_replay0_out_3_tlast , m_replay0_out_2_tlast , m_replay0_out_1_tlast , m_replay0_out_0_tlast }),
.m_rfnoc_chdr_tvalid ({m_replay0_out_3_tvalid, m_replay0_out_2_tvalid, m_replay0_out_1_tvalid, m_replay0_out_0_tvalid}),
.m_rfnoc_chdr_tready ({m_replay0_out_3_tready, m_replay0_out_2_tready, m_replay0_out_1_tready, m_replay0_out_0_tready}),
.s_rfnoc_ctrl_tdata (s_replay0_ctrl_tdata),
.s_rfnoc_ctrl_tlast (s_replay0_ctrl_tlast),
.s_rfnoc_ctrl_tvalid (s_replay0_ctrl_tvalid),
.s_rfnoc_ctrl_tready (s_replay0_ctrl_tready),
.m_rfnoc_ctrl_tdata (m_replay0_ctrl_tdata),
.m_rfnoc_ctrl_tlast (m_replay0_ctrl_tlast),
.m_rfnoc_ctrl_tvalid (m_replay0_ctrl_tvalid),
.m_rfnoc_ctrl_tready (m_replay0_ctrl_tready)
);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Static Router // Static Router
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -1021,6 +1517,46 @@ module rfnoc_image_core #(
assign s_ep3_in0_tvalid = m_ddc1_out_1_tvalid; assign s_ep3_in0_tvalid = m_ddc1_out_1_tvalid;
assign m_ddc1_out_1_tready = s_ep3_in0_tready; assign m_ddc1_out_1_tready = s_ep3_in0_tready;
assign s_replay0_in_0_tdata = m_ep4_out0_tdata;
assign s_replay0_in_0_tlast = m_ep4_out0_tlast;
assign s_replay0_in_0_tvalid = m_ep4_out0_tvalid;
assign m_ep4_out0_tready = s_replay0_in_0_tready;
assign s_ep4_in0_tdata = m_replay0_out_0_tdata;
assign s_ep4_in0_tlast = m_replay0_out_0_tlast;
assign s_ep4_in0_tvalid = m_replay0_out_0_tvalid;
assign m_replay0_out_0_tready = s_ep4_in0_tready;
assign s_replay0_in_1_tdata = m_ep5_out0_tdata;
assign s_replay0_in_1_tlast = m_ep5_out0_tlast;
assign s_replay0_in_1_tvalid = m_ep5_out0_tvalid;
assign m_ep5_out0_tready = s_replay0_in_1_tready;
assign s_ep5_in0_tdata = m_replay0_out_1_tdata;
assign s_ep5_in0_tlast = m_replay0_out_1_tlast;
assign s_ep5_in0_tvalid = m_replay0_out_1_tvalid;
assign m_replay0_out_1_tready = s_ep5_in0_tready;
assign s_replay0_in_2_tdata = m_ep6_out0_tdata;
assign s_replay0_in_2_tlast = m_ep6_out0_tlast;
assign s_replay0_in_2_tvalid = m_ep6_out0_tvalid;
assign m_ep6_out0_tready = s_replay0_in_2_tready;
assign s_ep6_in0_tdata = m_replay0_out_2_tdata;
assign s_ep6_in0_tlast = m_replay0_out_2_tlast;
assign s_ep6_in0_tvalid = m_replay0_out_2_tvalid;
assign m_replay0_out_2_tready = s_ep6_in0_tready;
assign s_replay0_in_3_tdata = m_ep7_out0_tdata;
assign s_replay0_in_3_tlast = m_ep7_out0_tlast;
assign s_replay0_in_3_tvalid = m_ep7_out0_tvalid;
assign m_ep7_out0_tready = s_replay0_in_3_tready;
assign s_ep7_in0_tdata = m_replay0_out_3_tdata;
assign s_ep7_in0_tlast = m_replay0_out_3_tlast;
assign s_ep7_in0_tvalid = m_replay0_out_3_tvalid;
assign m_replay0_out_3_tready = s_ep7_in0_tready;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Unused Ports // Unused Ports
@@ -1038,6 +1574,7 @@ module rfnoc_image_core #(
assign radio1_radio_clk = radio_clk; assign radio1_radio_clk = radio_clk;
assign duc1_ce_clk = radio_2x_clk; assign duc1_ce_clk = radio_2x_clk;
assign ddc1_ce_clk = radio_2x_clk; assign ddc1_ce_clk = radio_2x_clk;
assign replay0_mem_clk = dram_clk;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -1081,6 +1618,52 @@ module rfnoc_image_core #(
assign radio1_radio_tx_stb = radio_tx_stb_radio1; assign radio1_radio_tx_stb = radio_tx_stb_radio1;
assign radio_tx_running_radio1 = radio1_radio_tx_running; assign radio_tx_running_radio1 = radio1_radio_tx_running;
assign replay0_axi_rst = axi_rst;
assign m_axi_awid = replay0_m_axi_awid;
assign m_axi_awaddr = replay0_m_axi_awaddr;
assign m_axi_awlen = replay0_m_axi_awlen;
assign m_axi_awsize = replay0_m_axi_awsize;
assign m_axi_awburst = replay0_m_axi_awburst;
assign m_axi_awlock = replay0_m_axi_awlock;
assign m_axi_awcache = replay0_m_axi_awcache;
assign m_axi_awprot = replay0_m_axi_awprot;
assign m_axi_awqos = replay0_m_axi_awqos;
assign m_axi_awregion = replay0_m_axi_awregion;
assign m_axi_awuser = replay0_m_axi_awuser;
assign m_axi_awvalid = replay0_m_axi_awvalid;
assign replay0_m_axi_awready = m_axi_awready;
assign m_axi_wdata = replay0_m_axi_wdata;
assign m_axi_wstrb = replay0_m_axi_wstrb;
assign m_axi_wlast = replay0_m_axi_wlast;
assign m_axi_wuser = replay0_m_axi_wuser;
assign m_axi_wvalid = replay0_m_axi_wvalid;
assign replay0_m_axi_wready = m_axi_wready;
assign replay0_m_axi_bid = m_axi_bid;
assign replay0_m_axi_bresp = m_axi_bresp;
assign replay0_m_axi_buser = m_axi_buser;
assign replay0_m_axi_bvalid = m_axi_bvalid;
assign m_axi_bready = replay0_m_axi_bready;
assign m_axi_arid = replay0_m_axi_arid;
assign m_axi_araddr = replay0_m_axi_araddr;
assign m_axi_arlen = replay0_m_axi_arlen;
assign m_axi_arsize = replay0_m_axi_arsize;
assign m_axi_arburst = replay0_m_axi_arburst;
assign m_axi_arlock = replay0_m_axi_arlock;
assign m_axi_arcache = replay0_m_axi_arcache;
assign m_axi_arprot = replay0_m_axi_arprot;
assign m_axi_arqos = replay0_m_axi_arqos;
assign m_axi_arregion = replay0_m_axi_arregion;
assign m_axi_aruser = replay0_m_axi_aruser;
assign m_axi_arvalid = replay0_m_axi_arvalid;
assign replay0_m_axi_arready = m_axi_arready;
assign replay0_m_axi_rid = m_axi_rid;
assign replay0_m_axi_rdata = m_axi_rdata;
assign replay0_m_axi_rresp = m_axi_rresp;
assign replay0_m_axi_rlast = m_axi_rlast;
assign replay0_m_axi_ruser = m_axi_ruser;
assign replay0_m_axi_rvalid = m_axi_rvalid;
assign m_axi_rready = replay0_m_axi_rready;
// Broadcaster/Listener Connections: // Broadcaster/Listener Connections:
assign radio0_radio_time = radio_time; assign radio0_radio_time = radio_time;
+4 -4
View File
@@ -1,5 +1,5 @@
// //
// Copyright 2021 Ettus Research, A National Instruments Brand // Copyright 2022 Ettus Research, A National Instruments Brand
// //
// SPDX-License-Identifier: LGPL-3.0-or-later // SPDX-License-Identifier: LGPL-3.0-or-later
// //
@@ -12,9 +12,9 @@
// This file was automatically generated by the RFNoC image builder tool. // This file was automatically generated by the RFNoC image builder tool.
// Re-running that tool will overwrite this file! // Re-running that tool will overwrite this file!
// //
// File generated on: 2021-05-03T08:46:07.744077 // File generated on: 2022-02-02T14:39:11.410399
// Source: x410_200_rfnoc_image_core.yml // Source: ./x410_200_rfnoc_image_core.yml
// Source SHA256: e841d2a58556840a822f9398b8888cc871bf0473c364bcdcb0f46ffce88224c9 // Source SHA256: 57ca44ee7facd8ddcd6a88170463ea9665328e011511c8b5d87684fc78b43bd6
// //
`define CHDR_WIDTH 64 `define CHDR_WIDTH 64
+25 -17
View File
@@ -1,17 +1,25 @@
00000010 00000018
00400140 00400240
014001c0 024002c0
01c00180 02c00280
01800040 02800040
00800141 00800241
014101c1 024102c1
01c10181 02c10281
01810080 02810080
00c00200 00c00300
02000280 03000380
02800240 03800340
024000c0 034000c0
01000201 01000301
02010281 03010381
02810241 03810341
02410100 03410100
014003c0
03c00140
018003c1
03c10180
01c003c2
03c201c0
020003c3
03c30200
+49 -2
View File
@@ -1,5 +1,5 @@
// //
// Copyright 2021 Ettus Research, A National Instruments Brand // Copyright 2022 Ettus Research, A National Instruments Brand
// //
// SPDX-License-Identifier: LGPL-3.0-or-later // SPDX-License-Identifier: LGPL-3.0-or-later
// //
@@ -13,7 +13,7 @@
// This file was automatically generated by the RFNoC image builder tool. // This file was automatically generated by the RFNoC image builder tool.
// Re-running that tool will overwrite this file! // Re-running that tool will overwrite this file!
// //
// File generated on: 2021-05-03T08:46:11.559326 // File generated on: 2022-01-24T08:37:29.737428
// Source: x410_400_rfnoc_image_core.yml // Source: x410_400_rfnoc_image_core.yml
// Source SHA256: aff421903b98211e4822bd2968fd02c679bf30a215ee65e906d4f9a1d79df71e // Source SHA256: aff421903b98211e4822bd2968fd02c679bf30a215ee65e906d4f9a1d79df71e
// //
@@ -33,6 +33,7 @@ module rfnoc_image_core #(
input wire core_arst, input wire core_arst,
input wire radio_clk, input wire radio_clk,
input wire radio_2x_clk, input wire radio_2x_clk,
input wire dram_clk,
// Basic // Basic
input wire [ 15:0] device_id, input wire [ 15:0] device_id,
@@ -76,6 +77,52 @@ module rfnoc_image_core #(
output wire [ 255:0] radio_tx_data_radio1, output wire [ 255:0] radio_tx_data_radio1,
input wire [ 7:0] radio_tx_stb_radio1, input wire [ 7:0] radio_tx_stb_radio1,
output wire [ 7:0] radio_tx_running_radio1, output wire [ 7:0] radio_tx_running_radio1,
// dram
input wire [ 0:0] axi_rst,
output wire [ 3:0] m_axi_awid,
output wire [ 191:0] m_axi_awaddr,
output wire [ 31:0] m_axi_awlen,
output wire [ 11:0] m_axi_awsize,
output wire [ 7:0] m_axi_awburst,
output wire [ 3:0] m_axi_awlock,
output wire [ 15:0] m_axi_awcache,
output wire [ 11:0] m_axi_awprot,
output wire [ 15:0] m_axi_awqos,
output wire [ 15:0] m_axi_awregion,
output wire [ 3:0] m_axi_awuser,
output wire [ 3:0] m_axi_awvalid,
input wire [ 3:0] m_axi_awready,
output wire [2047:0] m_axi_wdata,
output wire [ 255:0] m_axi_wstrb,
output wire [ 3:0] m_axi_wlast,
output wire [ 3:0] m_axi_wuser,
output wire [ 3:0] m_axi_wvalid,
input wire [ 3:0] m_axi_wready,
input wire [ 3:0] m_axi_bid,
input wire [ 7:0] m_axi_bresp,
input wire [ 3:0] m_axi_buser,
input wire [ 3:0] m_axi_bvalid,
output wire [ 3:0] m_axi_bready,
output wire [ 3:0] m_axi_arid,
output wire [ 191:0] m_axi_araddr,
output wire [ 31:0] m_axi_arlen,
output wire [ 11:0] m_axi_arsize,
output wire [ 7:0] m_axi_arburst,
output wire [ 3:0] m_axi_arlock,
output wire [ 15:0] m_axi_arcache,
output wire [ 11:0] m_axi_arprot,
output wire [ 15:0] m_axi_arqos,
output wire [ 15:0] m_axi_arregion,
output wire [ 3:0] m_axi_aruser,
output wire [ 3:0] m_axi_arvalid,
input wire [ 3:0] m_axi_arready,
input wire [ 3:0] m_axi_rid,
input wire [2047:0] m_axi_rdata,
input wire [ 7:0] m_axi_rresp,
input wire [ 3:0] m_axi_rlast,
input wire [ 3:0] m_axi_ruser,
input wire [ 3:0] m_axi_rvalid,
output wire [ 3:0] m_axi_rready,
// Transport Adapters /////////////// // Transport Adapters ///////////////
+2 -2
View File
@@ -1,5 +1,5 @@
// //
// Copyright 2021 Ettus Research, A National Instruments Brand // Copyright 2022 Ettus Research, A National Instruments Brand
// //
// SPDX-License-Identifier: LGPL-3.0-or-later // SPDX-License-Identifier: LGPL-3.0-or-later
// //
@@ -12,7 +12,7 @@
// This file was automatically generated by the RFNoC image builder tool. // This file was automatically generated by the RFNoC image builder tool.
// Re-running that tool will overwrite this file! // Re-running that tool will overwrite this file!
// //
// File generated on: 2021-05-03T08:46:11.605928 // File generated on: 2022-01-24T08:37:29.769622
// Source: x410_400_rfnoc_image_core.yml // Source: x410_400_rfnoc_image_core.yml
// Source SHA256: aff421903b98211e4822bd2968fd02c679bf30a215ee65e906d4f9a1d79df71e // Source SHA256: aff421903b98211e4822bd2968fd02c679bf30a215ee65e906d4f9a1d79df71e
// //