rfnoc: Update blocks to use autogenerated noc_shell
Original-commit: b746819769e6a960f8227981ea10c7ed9c3d826a
This commit is contained in:
@@ -8,5 +8,6 @@
|
||||
# RFNoC Utility Sources
|
||||
##################################################
|
||||
RFNOC_OOT_SRCS += $(abspath $(addprefix $(BASE_DIR)/../lib/rfnoc/blocks/rfnoc_block_null_src_sink/, \
|
||||
noc_shell_null_src_sink.v \
|
||||
rfnoc_block_null_src_sink.v \
|
||||
))
|
||||
|
||||
@@ -0,0 +1,377 @@
|
||||
//
|
||||
// Copyright 2019 Ettus Research, A National Instruments Brand
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
//
|
||||
// Module: noc_shell_null_src_sink
|
||||
//
|
||||
// Description:
|
||||
//
|
||||
// This is a tool-generated NoC-shell for the null_src_sink block.
|
||||
// See the RFNoC specification for more information about NoC shells.
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// THIS_PORTID : Control crossbar port to which this block is connected
|
||||
// CHDR_W : AXIS-CHDR data bus width
|
||||
// MTU : Maximum transmission unit (i.e., maximum packet size in
|
||||
//
|
||||
|
||||
`default_nettype none
|
||||
|
||||
|
||||
module noc_shell_null_src_sink #(
|
||||
parameter [9:0] THIS_PORTID = 10'd0,
|
||||
parameter CHDR_W = 64,
|
||||
parameter [5:0] MTU = 10
|
||||
) (
|
||||
//---------------------
|
||||
// Framework Interface
|
||||
//---------------------
|
||||
|
||||
// RFNoC Framework Clocks
|
||||
input wire rfnoc_chdr_clk,
|
||||
input wire rfnoc_ctrl_clk,
|
||||
|
||||
// NoC Shell Generated Resets
|
||||
output wire rfnoc_chdr_rst,
|
||||
output wire rfnoc_ctrl_rst,
|
||||
|
||||
// RFNoC Backend Interface
|
||||
input wire [511:0] rfnoc_core_config,
|
||||
output wire [511:0] rfnoc_core_status,
|
||||
|
||||
// AXIS-CHDR Input Ports (from framework)
|
||||
input wire [(2)*CHDR_W-1:0] s_rfnoc_chdr_tdata,
|
||||
input wire [(2)-1:0] s_rfnoc_chdr_tlast,
|
||||
input wire [(2)-1:0] s_rfnoc_chdr_tvalid,
|
||||
output wire [(2)-1:0] s_rfnoc_chdr_tready,
|
||||
// AXIS-CHDR Output Ports (to framework)
|
||||
output wire [(2)*CHDR_W-1:0] m_rfnoc_chdr_tdata,
|
||||
output wire [(2)-1:0] m_rfnoc_chdr_tlast,
|
||||
output wire [(2)-1:0] m_rfnoc_chdr_tvalid,
|
||||
input wire [(2)-1:0] m_rfnoc_chdr_tready,
|
||||
|
||||
// AXIS-Ctrl Control Input Port (from framework)
|
||||
input wire [31:0] s_rfnoc_ctrl_tdata,
|
||||
input wire s_rfnoc_ctrl_tlast,
|
||||
input wire s_rfnoc_ctrl_tvalid,
|
||||
output wire s_rfnoc_ctrl_tready,
|
||||
// AXIS-Ctrl Control Output Port (to framework)
|
||||
output wire [31:0] m_rfnoc_ctrl_tdata,
|
||||
output wire m_rfnoc_ctrl_tlast,
|
||||
output wire m_rfnoc_ctrl_tvalid,
|
||||
input wire m_rfnoc_ctrl_tready,
|
||||
|
||||
//---------------------
|
||||
// Client Interface
|
||||
//---------------------
|
||||
|
||||
// CtrlPort Clock and Reset
|
||||
output wire ctrlport_clk,
|
||||
output wire ctrlport_rst,
|
||||
// CtrlPort Master
|
||||
output wire m_ctrlport_req_wr,
|
||||
output wire m_ctrlport_req_rd,
|
||||
output wire [19:0] m_ctrlport_req_addr,
|
||||
output wire [31:0] m_ctrlport_req_data,
|
||||
input wire m_ctrlport_resp_ack,
|
||||
input wire [31:0] m_ctrlport_resp_data,
|
||||
|
||||
// AXI-Stream Payload Context Clock and Reset
|
||||
output wire axis_data_clk,
|
||||
output wire axis_data_rst,
|
||||
// Payload Stream to User Logic: sink
|
||||
output wire [32*2-1:0] m_sink_payload_tdata,
|
||||
output wire [2-1:0] m_sink_payload_tkeep,
|
||||
output wire m_sink_payload_tlast,
|
||||
output wire m_sink_payload_tvalid,
|
||||
input wire m_sink_payload_tready,
|
||||
// Context Stream to User Logic: sink
|
||||
output wire [CHDR_W-1:0] m_sink_context_tdata,
|
||||
output wire [3:0] m_sink_context_tuser,
|
||||
output wire m_sink_context_tlast,
|
||||
output wire m_sink_context_tvalid,
|
||||
input wire m_sink_context_tready,
|
||||
// Payload Stream to User Logic: loop
|
||||
output wire [32*2-1:0] m_loop_payload_tdata,
|
||||
output wire [2-1:0] m_loop_payload_tkeep,
|
||||
output wire m_loop_payload_tlast,
|
||||
output wire m_loop_payload_tvalid,
|
||||
input wire m_loop_payload_tready,
|
||||
// Context Stream to User Logic: loop
|
||||
output wire [CHDR_W-1:0] m_loop_context_tdata,
|
||||
output wire [3:0] m_loop_context_tuser,
|
||||
output wire m_loop_context_tlast,
|
||||
output wire m_loop_context_tvalid,
|
||||
input wire m_loop_context_tready,
|
||||
// Payload Stream from User Logic: source
|
||||
input wire [32*2-1:0] s_source_payload_tdata,
|
||||
input wire [1:0] s_source_payload_tkeep,
|
||||
input wire s_source_payload_tlast,
|
||||
input wire s_source_payload_tvalid,
|
||||
output wire s_source_payload_tready,
|
||||
// Context Stream from User Logic: source
|
||||
input wire [CHDR_W-1:0] s_source_context_tdata,
|
||||
input wire [3:0] s_source_context_tuser,
|
||||
input wire s_source_context_tlast,
|
||||
input wire s_source_context_tvalid,
|
||||
output wire s_source_context_tready,
|
||||
// Payload Stream from User Logic: loop
|
||||
input wire [32*2-1:0] s_loop_payload_tdata,
|
||||
input wire [1:0] s_loop_payload_tkeep,
|
||||
input wire s_loop_payload_tlast,
|
||||
input wire s_loop_payload_tvalid,
|
||||
output wire s_loop_payload_tready,
|
||||
// Context Stream from User Logic: loop
|
||||
input wire [CHDR_W-1:0] s_loop_context_tdata,
|
||||
input wire [3:0] s_loop_context_tuser,
|
||||
input wire s_loop_context_tlast,
|
||||
input wire s_loop_context_tvalid,
|
||||
output wire s_loop_context_tready
|
||||
);
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Backend Interface
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
wire data_i_flush_en;
|
||||
wire [31:0] data_i_flush_timeout;
|
||||
wire [63:0] data_i_flush_active;
|
||||
wire [63:0] data_i_flush_done;
|
||||
wire data_o_flush_en;
|
||||
wire [31:0] data_o_flush_timeout;
|
||||
wire [63:0] data_o_flush_active;
|
||||
wire [63:0] data_o_flush_done;
|
||||
|
||||
backend_iface #(
|
||||
.NOC_ID (32'h00000001),
|
||||
.NUM_DATA_I (2),
|
||||
.NUM_DATA_O (2),
|
||||
.CTRL_FIFOSIZE ($clog2(32)),
|
||||
.MTU (MTU)
|
||||
) backend_iface_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),
|
||||
.rfnoc_core_config (rfnoc_core_config),
|
||||
.rfnoc_core_status (rfnoc_core_status),
|
||||
.data_i_flush_en (data_i_flush_en),
|
||||
.data_i_flush_timeout (data_i_flush_timeout),
|
||||
.data_i_flush_active (data_i_flush_active),
|
||||
.data_i_flush_done (data_i_flush_done),
|
||||
.data_o_flush_en (data_o_flush_en),
|
||||
.data_o_flush_timeout (data_o_flush_timeout),
|
||||
.data_o_flush_active (data_o_flush_active),
|
||||
.data_o_flush_done (data_o_flush_done)
|
||||
);
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Control Path
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
assign ctrlport_clk = rfnoc_chdr_clk;
|
||||
assign ctrlport_rst = rfnoc_chdr_rst;
|
||||
|
||||
ctrlport_endpoint #(
|
||||
.THIS_PORTID (THIS_PORTID),
|
||||
.SYNC_CLKS (0),
|
||||
.AXIS_CTRL_MST_EN (0),
|
||||
.AXIS_CTRL_SLV_EN (1),
|
||||
.SLAVE_FIFO_SIZE ($clog2(32))
|
||||
) ctrlport_endpoint_i (
|
||||
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
|
||||
.rfnoc_ctrl_rst (rfnoc_ctrl_rst),
|
||||
.ctrlport_clk (ctrlport_clk),
|
||||
.ctrlport_rst (ctrlport_rst),
|
||||
.s_rfnoc_ctrl_tdata (s_rfnoc_ctrl_tdata),
|
||||
.s_rfnoc_ctrl_tlast (s_rfnoc_ctrl_tlast),
|
||||
.s_rfnoc_ctrl_tvalid (s_rfnoc_ctrl_tvalid),
|
||||
.s_rfnoc_ctrl_tready (s_rfnoc_ctrl_tready),
|
||||
.m_rfnoc_ctrl_tdata (m_rfnoc_ctrl_tdata),
|
||||
.m_rfnoc_ctrl_tlast (m_rfnoc_ctrl_tlast),
|
||||
.m_rfnoc_ctrl_tvalid (m_rfnoc_ctrl_tvalid),
|
||||
.m_rfnoc_ctrl_tready (m_rfnoc_ctrl_tready),
|
||||
.m_ctrlport_req_wr (m_ctrlport_req_wr),
|
||||
.m_ctrlport_req_rd (m_ctrlport_req_rd),
|
||||
.m_ctrlport_req_addr (m_ctrlport_req_addr),
|
||||
.m_ctrlport_req_data (m_ctrlport_req_data),
|
||||
.m_ctrlport_req_byte_en (),
|
||||
.m_ctrlport_req_has_time (),
|
||||
.m_ctrlport_req_time (),
|
||||
.m_ctrlport_resp_ack (m_ctrlport_resp_ack),
|
||||
.m_ctrlport_resp_status (2'b0),
|
||||
.m_ctrlport_resp_data (m_ctrlport_resp_data),
|
||||
.s_ctrlport_req_wr (1'b0),
|
||||
.s_ctrlport_req_rd (1'b0),
|
||||
.s_ctrlport_req_addr (20'b0),
|
||||
.s_ctrlport_req_portid (10'b0),
|
||||
.s_ctrlport_req_rem_epid (16'b0),
|
||||
.s_ctrlport_req_rem_portid (10'b0),
|
||||
.s_ctrlport_req_data (32'b0),
|
||||
.s_ctrlport_req_byte_en (4'hF),
|
||||
.s_ctrlport_req_has_time (1'b0),
|
||||
.s_ctrlport_req_time (64'b0),
|
||||
.s_ctrlport_resp_ack (),
|
||||
.s_ctrlport_resp_status (),
|
||||
.s_ctrlport_resp_data ()
|
||||
);
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Data Path
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
genvar i;
|
||||
|
||||
assign axis_data_clk = rfnoc_chdr_clk;
|
||||
assign axis_data_rst = rfnoc_chdr_rst;
|
||||
|
||||
//---------------------
|
||||
// Input Data Paths
|
||||
//---------------------
|
||||
|
||||
chdr_to_axis_pyld_ctxt #(
|
||||
.CHDR_W (CHDR_W),
|
||||
.ITEM_W (32),
|
||||
.NIPC (2),
|
||||
.SYNC_CLKS (1),
|
||||
.CONTEXT_FIFO_SIZE ($clog2(2)),
|
||||
.PAYLOAD_FIFO_SIZE ($clog2(2)),
|
||||
.CONTEXT_PREFETCH_EN (1)
|
||||
) chdr_to_axis_pyld_ctxt_in_sink (
|
||||
.axis_chdr_clk (rfnoc_chdr_clk),
|
||||
.axis_chdr_rst (rfnoc_chdr_rst),
|
||||
.axis_data_clk (axis_data_clk),
|
||||
.axis_data_rst (axis_data_rst),
|
||||
.s_axis_chdr_tdata (s_rfnoc_chdr_tdata[(0)*CHDR_W+:CHDR_W]),
|
||||
.s_axis_chdr_tlast (s_rfnoc_chdr_tlast[0]),
|
||||
.s_axis_chdr_tvalid (s_rfnoc_chdr_tvalid[0]),
|
||||
.s_axis_chdr_tready (s_rfnoc_chdr_tready[0]),
|
||||
.m_axis_payload_tdata (m_sink_payload_tdata),
|
||||
.m_axis_payload_tkeep (m_sink_payload_tkeep),
|
||||
.m_axis_payload_tlast (m_sink_payload_tlast),
|
||||
.m_axis_payload_tvalid (m_sink_payload_tvalid),
|
||||
.m_axis_payload_tready (m_sink_payload_tready),
|
||||
.m_axis_context_tdata (m_sink_context_tdata),
|
||||
.m_axis_context_tuser (m_sink_context_tuser),
|
||||
.m_axis_context_tlast (m_sink_context_tlast),
|
||||
.m_axis_context_tvalid (m_sink_context_tvalid),
|
||||
.m_axis_context_tready (m_sink_context_tready),
|
||||
.flush_en (data_i_flush_en),
|
||||
.flush_timeout (data_i_flush_timeout),
|
||||
.flush_active (data_i_flush_active[0]),
|
||||
.flush_done (data_i_flush_done[0])
|
||||
);
|
||||
|
||||
chdr_to_axis_pyld_ctxt #(
|
||||
.CHDR_W (CHDR_W),
|
||||
.ITEM_W (32),
|
||||
.NIPC (2),
|
||||
.SYNC_CLKS (1),
|
||||
.CONTEXT_FIFO_SIZE ($clog2(2)),
|
||||
.PAYLOAD_FIFO_SIZE ($clog2(2)),
|
||||
.CONTEXT_PREFETCH_EN (1)
|
||||
) chdr_to_axis_pyld_ctxt_in_loop (
|
||||
.axis_chdr_clk (rfnoc_chdr_clk),
|
||||
.axis_chdr_rst (rfnoc_chdr_rst),
|
||||
.axis_data_clk (axis_data_clk),
|
||||
.axis_data_rst (axis_data_rst),
|
||||
.s_axis_chdr_tdata (s_rfnoc_chdr_tdata[(1)*CHDR_W+:CHDR_W]),
|
||||
.s_axis_chdr_tlast (s_rfnoc_chdr_tlast[1]),
|
||||
.s_axis_chdr_tvalid (s_rfnoc_chdr_tvalid[1]),
|
||||
.s_axis_chdr_tready (s_rfnoc_chdr_tready[1]),
|
||||
.m_axis_payload_tdata (m_loop_payload_tdata),
|
||||
.m_axis_payload_tkeep (m_loop_payload_tkeep),
|
||||
.m_axis_payload_tlast (m_loop_payload_tlast),
|
||||
.m_axis_payload_tvalid (m_loop_payload_tvalid),
|
||||
.m_axis_payload_tready (m_loop_payload_tready),
|
||||
.m_axis_context_tdata (m_loop_context_tdata),
|
||||
.m_axis_context_tuser (m_loop_context_tuser),
|
||||
.m_axis_context_tlast (m_loop_context_tlast),
|
||||
.m_axis_context_tvalid (m_loop_context_tvalid),
|
||||
.m_axis_context_tready (m_loop_context_tready),
|
||||
.flush_en (data_i_flush_en),
|
||||
.flush_timeout (data_i_flush_timeout),
|
||||
.flush_active (data_i_flush_active[1]),
|
||||
.flush_done (data_i_flush_done[1])
|
||||
);
|
||||
|
||||
//---------------------
|
||||
// Output Data Paths
|
||||
//---------------------
|
||||
|
||||
axis_pyld_ctxt_to_chdr #(
|
||||
.CHDR_W (CHDR_W),
|
||||
.ITEM_W (32),
|
||||
.NIPC (2),
|
||||
.SYNC_CLKS (1),
|
||||
.CONTEXT_FIFO_SIZE ($clog2(2)),
|
||||
.PAYLOAD_FIFO_SIZE ($clog2(2)),
|
||||
.MTU (MTU),
|
||||
.CONTEXT_PREFETCH_EN (1)
|
||||
) axis_pyld_ctxt_to_chdr_out_source (
|
||||
.axis_chdr_clk (rfnoc_chdr_clk),
|
||||
.axis_chdr_rst (rfnoc_chdr_rst),
|
||||
.axis_data_clk (axis_data_clk),
|
||||
.axis_data_rst (axis_data_rst),
|
||||
.m_axis_chdr_tdata (m_rfnoc_chdr_tdata[(0)*CHDR_W+:CHDR_W]),
|
||||
.m_axis_chdr_tlast (m_rfnoc_chdr_tlast[0]),
|
||||
.m_axis_chdr_tvalid (m_rfnoc_chdr_tvalid[0]),
|
||||
.m_axis_chdr_tready (m_rfnoc_chdr_tready[0]),
|
||||
.s_axis_payload_tdata (s_source_payload_tdata),
|
||||
.s_axis_payload_tkeep (s_source_payload_tkeep),
|
||||
.s_axis_payload_tlast (s_source_payload_tlast),
|
||||
.s_axis_payload_tvalid (s_source_payload_tvalid),
|
||||
.s_axis_payload_tready (s_source_payload_tready),
|
||||
.s_axis_context_tdata (s_source_context_tdata),
|
||||
.s_axis_context_tuser (s_source_context_tuser),
|
||||
.s_axis_context_tlast (s_source_context_tlast),
|
||||
.s_axis_context_tvalid (s_source_context_tvalid),
|
||||
.s_axis_context_tready (s_source_context_tready),
|
||||
.framer_errors (),
|
||||
.flush_en (data_o_flush_en),
|
||||
.flush_timeout (data_o_flush_timeout),
|
||||
.flush_active (data_o_flush_active[0]),
|
||||
.flush_done (data_o_flush_done[0])
|
||||
);
|
||||
|
||||
axis_pyld_ctxt_to_chdr #(
|
||||
.CHDR_W (CHDR_W),
|
||||
.ITEM_W (32),
|
||||
.NIPC (2),
|
||||
.SYNC_CLKS (1),
|
||||
.CONTEXT_FIFO_SIZE ($clog2(2)),
|
||||
.PAYLOAD_FIFO_SIZE ($clog2(2)),
|
||||
.MTU (MTU),
|
||||
.CONTEXT_PREFETCH_EN (1)
|
||||
) axis_pyld_ctxt_to_chdr_out_loop (
|
||||
.axis_chdr_clk (rfnoc_chdr_clk),
|
||||
.axis_chdr_rst (rfnoc_chdr_rst),
|
||||
.axis_data_clk (axis_data_clk),
|
||||
.axis_data_rst (axis_data_rst),
|
||||
.m_axis_chdr_tdata (m_rfnoc_chdr_tdata[(1)*CHDR_W+:CHDR_W]),
|
||||
.m_axis_chdr_tlast (m_rfnoc_chdr_tlast[1]),
|
||||
.m_axis_chdr_tvalid (m_rfnoc_chdr_tvalid[1]),
|
||||
.m_axis_chdr_tready (m_rfnoc_chdr_tready[1]),
|
||||
.s_axis_payload_tdata (s_loop_payload_tdata),
|
||||
.s_axis_payload_tkeep (s_loop_payload_tkeep),
|
||||
.s_axis_payload_tlast (s_loop_payload_tlast),
|
||||
.s_axis_payload_tvalid (s_loop_payload_tvalid),
|
||||
.s_axis_payload_tready (s_loop_payload_tready),
|
||||
.s_axis_context_tdata (s_loop_context_tdata),
|
||||
.s_axis_context_tuser (s_loop_context_tuser),
|
||||
.s_axis_context_tlast (s_loop_context_tlast),
|
||||
.s_axis_context_tvalid (s_loop_context_tvalid),
|
||||
.s_axis_context_tready (s_loop_context_tready),
|
||||
.framer_errors (),
|
||||
.flush_en (data_o_flush_en),
|
||||
.flush_timeout (data_o_flush_timeout),
|
||||
.flush_active (data_o_flush_active[1]),
|
||||
.flush_done (data_o_flush_done[1])
|
||||
);
|
||||
|
||||
endmodule // noc_shell_null_src_sink
|
||||
|
||||
|
||||
`default_nettype wire
|
||||
@@ -64,7 +64,6 @@ module rfnoc_block_null_src_sink #(
|
||||
localparam [19:0] REG_LOOP_PKT_CNT_HI = 20'h3C;
|
||||
|
||||
wire rfnoc_chdr_rst;
|
||||
wire rfnoc_ctrl_rst;
|
||||
|
||||
wire ctrlport_req_wr;
|
||||
wire ctrlport_req_rd;
|
||||
@@ -73,99 +72,97 @@ module rfnoc_block_null_src_sink #(
|
||||
reg ctrlport_resp_ack;
|
||||
reg [31:0] ctrlport_resp_data;
|
||||
|
||||
wire [(32*NIPC)-1:0] src_pyld_tdata , snk_pyld_tdata , loop_pyld_tdata ;
|
||||
wire [NIPC-1:0] src_pyld_tkeep , snk_pyld_tkeep , loop_pyld_tkeep ;
|
||||
wire [(32*NIPC)-1:0] src_pyld_tdata , loop_pyld_tdata ;
|
||||
wire [NIPC-1:0] src_pyld_tkeep , loop_pyld_tkeep ;
|
||||
wire src_pyld_tlast , snk_pyld_tlast , loop_pyld_tlast ;
|
||||
wire src_pyld_tvalid, snk_pyld_tvalid, loop_pyld_tvalid;
|
||||
wire src_pyld_tready, snk_pyld_tready, loop_pyld_tready;
|
||||
|
||||
wire [CHDR_W-1:0] src_ctxt_tdata , snk_ctxt_tdata , loop_ctxt_tdata ;
|
||||
wire [3:0] src_ctxt_tuser , snk_ctxt_tuser , loop_ctxt_tuser ;
|
||||
wire src_ctxt_tlast , snk_ctxt_tlast , loop_ctxt_tlast ;
|
||||
wire src_ctxt_tvalid, snk_ctxt_tvalid, loop_ctxt_tvalid;
|
||||
wire [CHDR_W-1:0] src_ctxt_tdata , loop_ctxt_tdata ;
|
||||
wire [3:0] src_ctxt_tuser , loop_ctxt_tuser ;
|
||||
wire src_ctxt_tlast , loop_ctxt_tlast ;
|
||||
wire src_ctxt_tvalid, loop_ctxt_tvalid;
|
||||
wire src_ctxt_tready, snk_ctxt_tready, loop_ctxt_tready;
|
||||
|
||||
// NoC Shell
|
||||
// ---------------------------
|
||||
noc_shell_generic_ctrlport_pyld_chdr #(
|
||||
.NOC_ID (32'h0000_0001),
|
||||
.THIS_PORTID (THIS_PORTID),
|
||||
.CHDR_W (CHDR_W),
|
||||
.CTRL_FIFOSIZE (5),
|
||||
.CTRLPORT_SLV_EN (0),
|
||||
.NUM_DATA_I (2),
|
||||
.NUM_DATA_O (2),
|
||||
.ITEM_W (32),
|
||||
.NIPC (NIPC),
|
||||
.MTU (MTU),
|
||||
.CTXT_FIFOSIZE (1),
|
||||
.PYLD_FIFOSIZE (1)
|
||||
) noc_shell_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 ),
|
||||
.rfnoc_core_config (rfnoc_core_config ),
|
||||
.rfnoc_core_status (rfnoc_core_status ),
|
||||
.s_rfnoc_chdr_tdata (s_rfnoc_chdr_tdata ),
|
||||
.s_rfnoc_chdr_tlast (s_rfnoc_chdr_tlast ),
|
||||
.s_rfnoc_chdr_tvalid (s_rfnoc_chdr_tvalid ),
|
||||
.s_rfnoc_chdr_tready (s_rfnoc_chdr_tready ),
|
||||
.m_rfnoc_chdr_tdata (m_rfnoc_chdr_tdata ),
|
||||
.m_rfnoc_chdr_tlast (m_rfnoc_chdr_tlast ),
|
||||
.m_rfnoc_chdr_tvalid (m_rfnoc_chdr_tvalid ),
|
||||
.m_rfnoc_chdr_tready (m_rfnoc_chdr_tready ),
|
||||
.s_rfnoc_ctrl_tdata (s_rfnoc_ctrl_tdata ),
|
||||
.s_rfnoc_ctrl_tlast (s_rfnoc_ctrl_tlast ),
|
||||
.s_rfnoc_ctrl_tvalid (s_rfnoc_ctrl_tvalid ),
|
||||
.s_rfnoc_ctrl_tready (s_rfnoc_ctrl_tready ),
|
||||
.m_rfnoc_ctrl_tdata (m_rfnoc_ctrl_tdata ),
|
||||
.m_rfnoc_ctrl_tlast (m_rfnoc_ctrl_tlast ),
|
||||
.m_rfnoc_ctrl_tvalid (m_rfnoc_ctrl_tvalid ),
|
||||
.m_rfnoc_ctrl_tready (m_rfnoc_ctrl_tready ),
|
||||
.m_ctrlport_req_wr (ctrlport_req_wr ),
|
||||
.m_ctrlport_req_rd (ctrlport_req_rd ),
|
||||
.m_ctrlport_req_addr (ctrlport_req_addr ),
|
||||
.m_ctrlport_req_data (ctrlport_req_data ),
|
||||
.m_ctrlport_req_byte_en ( ),
|
||||
.m_ctrlport_req_has_time ( ),
|
||||
.m_ctrlport_req_time ( ),
|
||||
.m_ctrlport_resp_ack (ctrlport_resp_ack ),
|
||||
.m_ctrlport_resp_status (2'd0 ),
|
||||
.m_ctrlport_resp_data (ctrlport_resp_data ),
|
||||
.s_ctrlport_req_wr ('h0 ),
|
||||
.s_ctrlport_req_rd ('h0 ),
|
||||
.s_ctrlport_req_addr ('h0 ),
|
||||
.s_ctrlport_req_portid ('h0 ),
|
||||
.s_ctrlport_req_rem_epid ('h0 ),
|
||||
.s_ctrlport_req_rem_portid('h0 ),
|
||||
.s_ctrlport_req_data ('h0 ),
|
||||
.s_ctrlport_req_byte_en ('h0 ),
|
||||
.s_ctrlport_req_has_time ('h0 ),
|
||||
.s_ctrlport_req_time ('h0 ),
|
||||
.s_ctrlport_resp_ack ( ),
|
||||
.s_ctrlport_resp_status ( ),
|
||||
.s_ctrlport_resp_data ( ),
|
||||
.m_axis_payload_tdata ({loop_pyld_tdata , snk_pyld_tdata }),
|
||||
.m_axis_payload_tkeep ({loop_pyld_tkeep , snk_pyld_tkeep }),
|
||||
.m_axis_payload_tlast ({loop_pyld_tlast , snk_pyld_tlast }),
|
||||
.m_axis_payload_tvalid ({loop_pyld_tvalid, snk_pyld_tvalid}),
|
||||
.m_axis_payload_tready ({loop_pyld_tready, snk_pyld_tready}),
|
||||
.m_axis_context_tdata ({loop_ctxt_tdata , snk_ctxt_tdata }),
|
||||
.m_axis_context_tuser ({loop_ctxt_tuser , snk_ctxt_tuser }),
|
||||
.m_axis_context_tlast ({loop_ctxt_tlast , snk_ctxt_tlast }),
|
||||
.m_axis_context_tvalid ({loop_ctxt_tvalid, snk_ctxt_tvalid}),
|
||||
.m_axis_context_tready ({loop_ctxt_tready, snk_ctxt_tready}),
|
||||
.s_axis_payload_tdata ({loop_pyld_tdata , src_pyld_tdata }),
|
||||
.s_axis_payload_tkeep ({loop_pyld_tkeep , src_pyld_tkeep }),
|
||||
.s_axis_payload_tlast ({loop_pyld_tlast , src_pyld_tlast }),
|
||||
.s_axis_payload_tvalid ({loop_pyld_tvalid, src_pyld_tvalid}),
|
||||
.s_axis_payload_tready ({loop_pyld_tready, src_pyld_tready}),
|
||||
.s_axis_context_tdata ({loop_ctxt_tdata , src_ctxt_tdata }),
|
||||
.s_axis_context_tuser ({loop_ctxt_tuser , src_ctxt_tuser }),
|
||||
.s_axis_context_tlast ({loop_ctxt_tlast , src_ctxt_tlast }),
|
||||
.s_axis_context_tvalid ({loop_ctxt_tvalid, src_ctxt_tvalid}),
|
||||
.s_axis_context_tready ({loop_ctxt_tready, src_ctxt_tready})
|
||||
noc_shell_null_src_sink #(
|
||||
.THIS_PORTID (THIS_PORTID),
|
||||
.CHDR_W (CHDR_W),
|
||||
.MTU (MTU)
|
||||
) noc_shell_null_src_sink_i (
|
||||
.rfnoc_chdr_clk (rfnoc_chdr_clk),
|
||||
.rfnoc_ctrl_clk (rfnoc_ctrl_clk),
|
||||
.rfnoc_chdr_rst (rfnoc_chdr_rst),
|
||||
.rfnoc_ctrl_rst (),
|
||||
.rfnoc_core_config (rfnoc_core_config),
|
||||
.rfnoc_core_status (rfnoc_core_status),
|
||||
.s_rfnoc_chdr_tdata (s_rfnoc_chdr_tdata),
|
||||
.s_rfnoc_chdr_tlast (s_rfnoc_chdr_tlast),
|
||||
.s_rfnoc_chdr_tvalid (s_rfnoc_chdr_tvalid),
|
||||
.s_rfnoc_chdr_tready (s_rfnoc_chdr_tready),
|
||||
.m_rfnoc_chdr_tdata (m_rfnoc_chdr_tdata),
|
||||
.m_rfnoc_chdr_tlast (m_rfnoc_chdr_tlast),
|
||||
.m_rfnoc_chdr_tvalid (m_rfnoc_chdr_tvalid),
|
||||
.m_rfnoc_chdr_tready (m_rfnoc_chdr_tready),
|
||||
.s_rfnoc_ctrl_tdata (s_rfnoc_ctrl_tdata),
|
||||
.s_rfnoc_ctrl_tlast (s_rfnoc_ctrl_tlast),
|
||||
.s_rfnoc_ctrl_tvalid (s_rfnoc_ctrl_tvalid),
|
||||
.s_rfnoc_ctrl_tready (s_rfnoc_ctrl_tready),
|
||||
.m_rfnoc_ctrl_tdata (m_rfnoc_ctrl_tdata),
|
||||
.m_rfnoc_ctrl_tlast (m_rfnoc_ctrl_tlast),
|
||||
.m_rfnoc_ctrl_tvalid (m_rfnoc_ctrl_tvalid),
|
||||
.m_rfnoc_ctrl_tready (m_rfnoc_ctrl_tready),
|
||||
.ctrlport_clk (),
|
||||
.ctrlport_rst (),
|
||||
.m_ctrlport_req_wr (ctrlport_req_wr),
|
||||
.m_ctrlport_req_rd (ctrlport_req_rd),
|
||||
.m_ctrlport_req_addr (ctrlport_req_addr),
|
||||
.m_ctrlport_req_data (ctrlport_req_data),
|
||||
.m_ctrlport_resp_ack (ctrlport_resp_ack),
|
||||
.m_ctrlport_resp_data (ctrlport_resp_data),
|
||||
.axis_data_clk (),
|
||||
.axis_data_rst (),
|
||||
.m_sink_payload_tdata (), // Sink data is dropped and not used
|
||||
.m_sink_payload_tkeep (),
|
||||
.m_sink_payload_tlast (snk_pyld_tlast),
|
||||
.m_sink_payload_tvalid (snk_pyld_tvalid),
|
||||
.m_sink_payload_tready (snk_pyld_tready),
|
||||
.m_sink_context_tdata (), // Sink context is dropped and not used
|
||||
.m_sink_context_tuser (),
|
||||
.m_sink_context_tlast (),
|
||||
.m_sink_context_tvalid (),
|
||||
.m_sink_context_tready (snk_ctxt_tready),
|
||||
.m_loop_payload_tdata (loop_pyld_tdata),
|
||||
.m_loop_payload_tkeep (loop_pyld_tkeep),
|
||||
.m_loop_payload_tlast (loop_pyld_tlast),
|
||||
.m_loop_payload_tvalid (loop_pyld_tvalid),
|
||||
.m_loop_payload_tready (loop_pyld_tready),
|
||||
.m_loop_context_tdata (loop_ctxt_tdata),
|
||||
.m_loop_context_tuser (loop_ctxt_tuser),
|
||||
.m_loop_context_tlast (loop_ctxt_tlast),
|
||||
.m_loop_context_tvalid (loop_ctxt_tvalid),
|
||||
.m_loop_context_tready (loop_ctxt_tready),
|
||||
.s_source_payload_tdata (src_pyld_tdata),
|
||||
.s_source_payload_tkeep (src_pyld_tkeep),
|
||||
.s_source_payload_tlast (src_pyld_tlast),
|
||||
.s_source_payload_tvalid (src_pyld_tvalid),
|
||||
.s_source_payload_tready (src_pyld_tready),
|
||||
.s_source_context_tdata (src_ctxt_tdata),
|
||||
.s_source_context_tuser (src_ctxt_tuser),
|
||||
.s_source_context_tlast (src_ctxt_tlast),
|
||||
.s_source_context_tvalid (src_ctxt_tvalid),
|
||||
.s_source_context_tready (src_ctxt_tready),
|
||||
.s_loop_payload_tdata (loop_pyld_tdata),
|
||||
.s_loop_payload_tkeep (loop_pyld_tkeep),
|
||||
.s_loop_payload_tlast (loop_pyld_tlast),
|
||||
.s_loop_payload_tvalid (loop_pyld_tvalid),
|
||||
.s_loop_payload_tready (loop_pyld_tready),
|
||||
.s_loop_context_tdata (loop_ctxt_tdata),
|
||||
.s_loop_context_tuser (loop_ctxt_tuser),
|
||||
.s_loop_context_tlast (loop_ctxt_tlast),
|
||||
.s_loop_context_tvalid (loop_ctxt_tvalid),
|
||||
.s_loop_context_tready (loop_ctxt_tready)
|
||||
);
|
||||
|
||||
// Packet Counters
|
||||
|
||||
@@ -20,6 +20,7 @@ module rfnoc_block_null_src_sink_tb;
|
||||
import PkgRfnocItemUtils::*;
|
||||
|
||||
// Parameters
|
||||
localparam NOC_ID = 32'h0000_0001;
|
||||
localparam [9:0] THIS_PORTID = 10'h17;
|
||||
localparam [15:0] THIS_EPID = 16'hDEAD;
|
||||
localparam int CHDR_W = 64;
|
||||
@@ -87,7 +88,7 @@ module rfnoc_block_null_src_sink_tb;
|
||||
// Shared Variables
|
||||
// ----------------------------------------
|
||||
timeout_t timeout;
|
||||
ctrl_word_t rvalue = 0;
|
||||
ctrl_word_t rvalue;
|
||||
|
||||
// Initialize
|
||||
// ----------------------------------------
|
||||
@@ -118,7 +119,7 @@ module rfnoc_block_null_src_sink_tb;
|
||||
begin
|
||||
test.start_timeout(timeout, 1us, "Waiting for block info response");
|
||||
// Get static block info and validate it
|
||||
`ASSERT_ERROR(blk_ctrl.get_noc_id() == 1, "Incorrect noc_id Value");
|
||||
`ASSERT_ERROR(blk_ctrl.get_noc_id() == NOC_ID, "Incorrect noc_id Value");
|
||||
`ASSERT_ERROR(blk_ctrl.get_num_data_i() == 2, "Incorrect num_data_i Value");
|
||||
`ASSERT_ERROR(blk_ctrl.get_num_data_o() == 2, "Incorrect num_data_o Value");
|
||||
`ASSERT_ERROR(blk_ctrl.get_ctrl_fifosize() == 5, "Incorrect ctrl_fifosize Value");
|
||||
|
||||
Reference in New Issue
Block a user