NF
Nick Foster
Tue, Jan 2, 2018 11:02 PM
ce_clk is there for you to use as your compute engine clock. If you don't
have a very good reason to generate and use another clock, you should use
that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko adamkuri@outlook.com wrote:
I actually found that too and reverted it back to the the original
bus_clk/rst and ce_bus/clk such as below:
noc_block_delay_fifo inst_delay_fifo (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
.i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
.o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
I am unsure of why I changed that in the first place, but I think it may
have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk),
.reset(ce_rst).
For my user code in the source file, should I just use ce_clk rather than
generating a new clk?
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 5:09:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Why have you commented out bus_clk/rst and ce_clk/rst in favor of using
clk/reset? And where are clk/reset/clear being generated? What is being
used as bus_clk/rst in your block's noc_shell?
Nick
On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko adamkuri@outlook.com wrote:
Nick,
Haven't heard back from you yet and was just wondering if you were able to
give it a look.
I have a feeling that i may have not instantiated the block correctly in
rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might
be wrong. Any help or insight into this scenario would be much appreciated.
Thank you,
Adam
From: Adam Kurisko
Sent: Tuesday, January 2, 2018 2:39:16 PM
To: Nick Foster
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code
for noc_block_delay_fifo.v.
------------------------- rfnoc_ce_auto_inst.v
/////////////////////////////////////////////////////////
// Auto-generated by gen_rfnoc_inst.py! Any changes
// in this file will be overwritten the next time
// this script is run.
/////////////////////////////////////////////////////////
localparam NUM_CE = 6;
wire [NUM_CE64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast,
ce_i_tvalid, ce_i_tready;
wire [63:0] ce_debug[0:NUM_CE-1];
// Flattern CE tdata arrays
genvar k;
generate
for (k = 0; k < NUM_CE; k = k + 1) begin
assign ce_o_tdata[k] = ce_flat_o_tdata[k64+63:k64];
assign ce_flat_i_tdata[k64+63:k*64] = ce_i_tdata[k];
end
endgenerate
wire ce_clk = radio_clk;
wire ce_rst = radio_rst;
noc_block_delay_fifo inst_delay_fifo (
//.bus_clk(bus_clk), .bus_rst(bus_rst),
//.ce_clk(ce_clk), .ce_rst(ce_rst),
.clk(clk), .reset(reset), .clear(clear),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
.i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
.o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]),
.i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
.o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]),
.o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
.debug(ce_debug[1])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]),
.i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
.o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]),
.o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
.debug(ce_debug[2])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]),
.i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
.o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]),
.o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
.debug(ce_debug[3])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]),
.i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
.o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]),
.o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
.debug(ce_debug[4])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]),
.i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
.o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]),
.o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
.debug(ce_debug[5])
);
------------------------- noc_block_delay_fifo.v
module noc_block_delay_fifo #(
parameter NOC_ID = 64'hDE7A_0000_0000_0000,
parameter MAX_LEN_LOG2=10,
parameter STR_SINK_FIFOSIZE = 11,
parameter WIDTH=64)
(
// input bus_clk, input bus_rst,
// input ce_clk, input ce_rst,
input clk, input reset, input clear,
input [MAX_LEN_LOG2-1:0] len,
input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output
i_tready,
output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input
o_tready,
output [WIDTH-1:0] debug
);
////////////////////////////////////////////////////////////
//
// RFNoC Shell
//
////////////////////////////////////////////////////////////
wire [31:0] set_data;
wire [7:0] set_addr;
wire set_stb;
wire [63:0] cmdout_tdata, ackin_tdata;
wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast,
ackin_tvalid, ackin_tready;
wire [63:0] str_sink_tdata, str_src_tdata;
wire str_sink_tlast, str_sink_tvalid, str_sink_tready,
str_src_tlast, str_src_tvalid, str_src_tready;
wire clear_tx_seqnum;
wire [15:0] next_dst_sid;
noc_shell #(
.NOC_ID(NOC_ID),
.STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
noc_shell (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid),
.i_tready(i_tready),
.o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid),
.o_tready(o_tready),
// Computer Engine Clock Domain
.clk(ce_clk), .reset(ce_rst),
// Control Sink
.set_data(set_data), .set_addr(set_addr), .set_stb(set_stb),
.set_time(),
.rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
// Control Source
.cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast),
.cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
.ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast),
.ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
// Stream Sink
.str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast),
.str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
// Stream Source
.str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast),
.str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
// Stream IDs set by host
.src_sid(), // SID of this block
.next_dst_sid(next_dst_sid), // Next destination SID
.resp_in_dst_sid(), // Response destination SID for input
stream responses / errors
.resp_out_dst_sid(), // Response destination SID for output
stream responses / errors
// Misc
.vita_time(64'd0),
.clear_tx_seqnum(clear_tx_seqnum),
.debug(debug));
////////////////////////////////////////////////////////////
//
// AXI Wrapper
// Convert RFNoC Shell interface into AXI stream interface
//
////////////////////////////////////////////////////////////
wire [31:0] m_axis_data_tdata;
wire m_axis_data_tlast;
wire m_axis_data_tvalid;
wire m_axis_data_tready;
wire [31:0] s_axis_data_tdata;
wire s_axis_data_tlast;
wire s_axis_data_tvalid;
wire s_axis_data_tready;
localparam AXI_WRAPPER_BASE = 128;
axi_wrapper #(
.SIMPLE_MODE(1))
inst_axi_wrapper (
.clk(ce_clk), .reset(ce_rst),
.clear_tx_seqnum(clear_tx_seqnum),
.next_dst(next_dst_sid),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast),
.i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
.o_tdata(str_src_tdata), .o_tlast(str_src_tlast),
.o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
.m_axis_data_tdata(m_axis_data_tdata),
.m_axis_data_tlast(m_axis_data_tlast),
.m_axis_data_tvalid(m_axis_data_tvalid),
.m_axis_data_tready(m_axis_data_tready),
.s_axis_data_tdata(s_axis_data_tdata),
.s_axis_data_tlast(s_axis_data_tlast),
.s_axis_data_tvalid(s_axis_data_tvalid),
.s_axis_data_tready(s_axis_data_tready),
.m_axis_config_tdata(),
.m_axis_config_tlast(),
.m_axis_config_tvalid(),
.m_axis_config_tready());
////////////////////////////////////////////////////////////
//
// User code
//
////////////////////////////////////////////////////////////
reg [MAX_LEN_LOG2-1:0] full_count;
wire full = full_count == len;
wire do_op = i_tvalid & o_tready;
assign i_tready = o_tready;
assign o_tvalid = i_tvalid;
wire [WIDTH-1:0] fifo_out;
axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
(.clk(clk), .reset(reset), .clear(clear),
.i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
.o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
always @(posedge clk)
if(reset | clear)
full_count <= 0;
else
if(do_op & ~full)
full_count <= full_count + 1;
assign o_tdata = full ? fifo_out : 0;
assign o_tlast = i_tlast;
endmodule // noc_block_delay_fifo
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 2:28:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Yeah, ok. It's that multiple driver that's the problem. Can you post the
rfnoc_ce_auto_inst.v you're using?
Nick
On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko adamkuri@outlook.com wrote:
Nick,
I just attempted to generate a bitstream and it failed with the following
errors.
Most messages are the same as before, but take not of the errors present
under "Opt Design"
Vivado Commands
General Messages
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver
pin
'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]'
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver
pin 'i_3847/O'
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64]
has multiple drivers:
e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O,
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
design_1
General Messages
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 12:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
That all looks ok to me. Does it successfully generate a bitstream?
There will virtually always be warnings, even some "critical" ones, in any
sufficiently complex FPGA project.
Nick
On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko adamkuri@outlook.com wrote:
Hi Nick,
Thank you for your fast response.
I am receiving the following errors:
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Place Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Please let me know what you think.
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 12:08:20 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
The use of Gnuradio will not affect the FPGA design at all. If you supply
the errors you're seeing we might be able to help further.
Nick
On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <
usrp-users@lists.ettus.com> wrote:
Hello all,
I am trying to design an RFNoC block using Vivado 2015.4, but I keep
running into synthesis and implementation critical warnings.
Can you explain to me step by step how to instantiate a working rfnoc
block WITHOUT using gnuradio? It seems that most information I am finding
online include the use of gnuradio.
I believe I have my environment setup correctly and I am calling the
noc_shell and axi_wrapper modules within my blocks. However, the errors I
am receiving are not stemming from the user code I have written, instead
the errors are coming from various design sources within the e310 fpga
source code.
Please help. Thank you
-Adam
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
ce_clk is there for you to use as your compute engine clock. If you don't
have a very good reason to generate and use another clock, you should use
that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko <adamkuri@outlook.com> wrote:
> I actually found that too and reverted it back to the the original
> bus_clk/rst and ce_bus/clk such as below:
>
>
> noc_block_delay_fifo inst_delay_fifo (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
>
> .i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
> .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
> .o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
> .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
> .debug(ce_debug[0])
> );
>
>
> I am unsure of why I changed that in the first place, but I think it may
> have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk),
> .reset(ce_rst).
>
>
> For my user code in the source file, should I just use ce_clk rather than
> generating a new clk?
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 5:09:55 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
> Why have you commented out bus_clk/rst and ce_clk/rst in favor of using
> clk/reset? And where are clk/reset/clear being generated? What is being
> used as bus_clk/rst in your block's noc_shell?
>
> Nick
>
> On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Nick,
>
>
> Haven't heard back from you yet and was just wondering if you were able to
> give it a look.
>
>
> I have a feeling that i may have not instantiated the block correctly in
> rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might
> be wrong. Any help or insight into this scenario would be much appreciated.
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Adam Kurisko
> *Sent:* Tuesday, January 2, 2018 2:39:16 PM
> *To:* Nick Foster
>
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code
> for noc_block_delay_fifo.v.
>
>
> ------------------------- rfnoc_ce_auto_inst.v
> ------------------------------
>
>
> /////////////////////////////////////////////////////////
> // Auto-generated by gen_rfnoc_inst.py! Any changes
> // in this file will be overwritten the next time
> // this script is run.
> /////////////////////////////////////////////////////////
> localparam NUM_CE = 6;
> wire [NUM_CE*64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
> wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
> wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast,
> ce_i_tvalid, ce_i_tready;
> wire [63:0] ce_debug[0:NUM_CE-1];
> // Flattern CE tdata arrays
> genvar k;
> generate
> for (k = 0; k < NUM_CE; k = k + 1) begin
> assign ce_o_tdata[k] = ce_flat_o_tdata[k*64+63:k*64];
> assign ce_flat_i_tdata[k*64+63:k*64] = ce_i_tdata[k];
> end
> endgenerate
> wire ce_clk = radio_clk;
> wire ce_rst = radio_rst;
>
> noc_block_delay_fifo inst_delay_fifo (
> //.bus_clk(bus_clk), .bus_rst(bus_rst),
> //.ce_clk(ce_clk), .ce_rst(ce_rst),
> .clk(clk), .reset(reset), .clear(clear),
> .i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
> .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
> .o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
> .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
> .debug(ce_debug[0])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]),
> .i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
> .o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]),
> .o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
> .debug(ce_debug[1])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]),
> .i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
> .o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]),
> .o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
> .debug(ce_debug[2])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]),
> .i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
> .o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]),
> .o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
> .debug(ce_debug[3])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]),
> .i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
> .o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]),
> .o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
> .debug(ce_debug[4])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]),
> .i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
> .o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]),
> .o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
> .debug(ce_debug[5])
> );
>
>
>
> ---------------------------------------------------------------------------------------------
>
>
> ------------------------- noc_block_delay_fifo.v
> -----------------------------------
>
>
> module noc_block_delay_fifo #(
> parameter NOC_ID = 64'hDE7A_0000_0000_0000,
> parameter MAX_LEN_LOG2=10,
> parameter STR_SINK_FIFOSIZE = 11,
> parameter WIDTH=64)
> (
> // input bus_clk, input bus_rst,
> // input ce_clk, input ce_rst,
> input clk, input reset, input clear,
> input [MAX_LEN_LOG2-1:0] len,
> input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output
> i_tready,
> output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input
> o_tready,
> output [WIDTH-1:0] debug
> );
>
> ////////////////////////////////////////////////////////////
> //
> // RFNoC Shell
> //
> ////////////////////////////////////////////////////////////
> wire [31:0] set_data;
> wire [7:0] set_addr;
> wire set_stb;
>
> wire [63:0] cmdout_tdata, ackin_tdata;
> wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast,
> ackin_tvalid, ackin_tready;
>
> wire [63:0] str_sink_tdata, str_src_tdata;
> wire str_sink_tlast, str_sink_tvalid, str_sink_tready,
> str_src_tlast, str_src_tvalid, str_src_tready;
>
> wire clear_tx_seqnum;
> wire [15:0] next_dst_sid;
>
> noc_shell #(
> .NOC_ID(NOC_ID),
> .STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
> noc_shell (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid),
> .i_tready(i_tready),
> .o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid),
> .o_tready(o_tready),
> // Computer Engine Clock Domain
> .clk(ce_clk), .reset(ce_rst),
> // Control Sink
> .set_data(set_data), .set_addr(set_addr), .set_stb(set_stb),
> .set_time(),
> .rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
> // Control Source
> .cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast),
> .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
> .ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast),
> .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
> // Stream Sink
> .str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast),
> .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
> // Stream Source
> .str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast),
> .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
> // Stream IDs set by host
> .src_sid(), // SID of this block
> .next_dst_sid(next_dst_sid), // Next destination SID
> .resp_in_dst_sid(), // Response destination SID for input
> stream responses / errors
> .resp_out_dst_sid(), // Response destination SID for output
> stream responses / errors
> // Misc
> .vita_time(64'd0),
> .clear_tx_seqnum(clear_tx_seqnum),
> .debug(debug));
>
> ////////////////////////////////////////////////////////////
> //
> // AXI Wrapper
> // Convert RFNoC Shell interface into AXI stream interface
> //
> ////////////////////////////////////////////////////////////
> wire [31:0] m_axis_data_tdata;
> wire m_axis_data_tlast;
> wire m_axis_data_tvalid;
> wire m_axis_data_tready;
>
> wire [31:0] s_axis_data_tdata;
> wire s_axis_data_tlast;
> wire s_axis_data_tvalid;
> wire s_axis_data_tready;
>
> localparam AXI_WRAPPER_BASE = 128;
>
> axi_wrapper #(
> .SIMPLE_MODE(1))
> inst_axi_wrapper (
> .clk(ce_clk), .reset(ce_rst),
> .clear_tx_seqnum(clear_tx_seqnum),
> .next_dst(next_dst_sid),
> .set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
> .i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast),
> .i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
> .o_tdata(str_src_tdata), .o_tlast(str_src_tlast),
> .o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
> .m_axis_data_tdata(m_axis_data_tdata),
> .m_axis_data_tlast(m_axis_data_tlast),
> .m_axis_data_tvalid(m_axis_data_tvalid),
> .m_axis_data_tready(m_axis_data_tready),
> .s_axis_data_tdata(s_axis_data_tdata),
> .s_axis_data_tlast(s_axis_data_tlast),
> .s_axis_data_tvalid(s_axis_data_tvalid),
> .s_axis_data_tready(s_axis_data_tready),
> .m_axis_config_tdata(),
> .m_axis_config_tlast(),
> .m_axis_config_tvalid(),
> .m_axis_config_tready());
>
> ////////////////////////////////////////////////////////////
> //
> // User code
> //
> ////////////////////////////////////////////////////////////
>
> reg [MAX_LEN_LOG2-1:0] full_count;
> wire full = full_count == len;
>
> wire do_op = i_tvalid & o_tready;
>
> assign i_tready = o_tready;
> assign o_tvalid = i_tvalid;
>
> wire [WIDTH-1:0] fifo_out;
>
> axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
> (.clk(clk), .reset(reset), .clear(clear),
> .i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
> .o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
>
> always @(posedge clk)
> if(reset | clear)
> full_count <= 0;
> else
> if(do_op & ~full)
> full_count <= full_count + 1;
>
> assign o_tdata = full ? fifo_out : 0;
> assign o_tlast = i_tlast;
>
> endmodule // noc_block_delay_fifo
>
>
>
>
> -------------------------------------------------------------------------------------
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 2:28:55 PM
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
>
> Yeah, ok. It's that multiple driver that's the problem. Can you post the
> rfnoc_ce_auto_inst.v you're using?
>
> Nick
>
> On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Nick,
>
>
> I just attempted to generate a bitstream and it failed with the following
> errors.
>
>
> Most messages are the same as before, but take not of the errors present
> under "Opt Design"
>
>
> Vivado Commands
> General Messages
>
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
>
> Synthesis
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
> [Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver
> pin
> 'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]'
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
> [Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver
> pin 'i_3847/O'
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
>
>
> Implementation
> Design Initialization
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
> Opt Design
> [DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64]
> has multiple drivers:
> e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O,
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
> [Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
>
> design_1
> General Messages
>
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 12:35:54 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> That all looks ok to me. Does it successfully generate a bitstream?
>
> There will virtually always be warnings, even some "critical" ones, in any
> sufficiently complex FPGA project.
>
> Nick
>
> On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Hi Nick,
>
>
> Thank you for your fast response.
>
>
> I am receiving the following errors:
>
>
> Synthesis
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
>
> Implementation
> Design Initialization
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
> Opt Design
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>
> Place Design
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>
>
> Please let me know what you think.
>
>
> Thank you,
>
> Adam
>
>
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 12:08:20 PM
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> The use of Gnuradio will not affect the FPGA design at all. If you supply
> the errors you're seeing we might be able to help further.
>
> Nick
>
> On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <
> usrp-users@lists.ettus.com> wrote:
>
> Hello all,
>
>
> I am trying to design an RFNoC block using Vivado 2015.4, but I keep
> running into synthesis and implementation critical warnings.
>
>
> Can you explain to me step by step how to instantiate a working rfnoc
> block WITHOUT using gnuradio? It seems that most information I am finding
> online include the use of gnuradio.
>
>
> I believe I have my environment setup correctly and I am calling the
> noc_shell and axi_wrapper modules within my blocks. However, the errors I
> am receiving are not stemming from the user code I have written, instead
> the errors are coming from various design sources within the e310 fpga
> source code.
>
>
> Please help. Thank you
>
>
> -Adam
> _______________________________________________
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
>
AK
Adam Kurisko
Tue, Jan 2, 2018 11:22 PM
Okay, I am now using ce_clk in place of clk for my user code, however now my implementation is failing with the following error:
Implementation
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0] has multiple drivers: e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O, e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q. (63 more like this)
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
What might be causing this now?
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 6:02:44 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
ce_clk is there for you to use as your compute engine clock. If you don't have a very good reason to generate and use another clock, you should use that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
I actually found that too and reverted it back to the the original bus_clk/rst and ce_bus/clk such as below:
noc_block_delay_fifo inst_delay_fifo (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]), .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]), .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
I am unsure of why I changed that in the first place, but I think it may have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk), .reset(ce_rst).
For my user code in the source file, should I just use ce_clk rather than generating a new clk?
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 5:09:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Why have you commented out bus_clk/rst and ce_clk/rst in favor of using clk/reset? And where are clk/reset/clear being generated? What is being used as bus_clk/rst in your block's noc_shell?
Nick
On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
Nick,
Haven't heard back from you yet and was just wondering if you were able to give it a look.
I have a feeling that i may have not instantiated the block correctly in rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might be wrong. Any help or insight into this scenario would be much appreciated.
Thank you,
Adam
From: Adam Kurisko
Sent: Tuesday, January 2, 2018 2:39:16 PM
To: Nick Foster
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code for noc_block_delay_fifo.v.
------------------------- rfnoc_ce_auto_inst.v ------------------------------
/////////////////////////////////////////////////////////
// Auto-generated by gen_rfnoc_inst.py! Any changes
// in this file will be overwritten the next time
// this script is run.
/////////////////////////////////////////////////////////
localparam NUM_CE = 6;
wire [NUM_CE64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast, ce_i_tvalid, ce_i_tready;
wire [63:0] ce_debug[0:NUM_CE-1];
// Flattern CE tdata arrays
genvar k;
generate
for (k = 0; k < NUM_CE; k = k + 1) begin
assign ce_o_tdata[k] = ce_flat_o_tdata[k64+63:k64];
assign ce_flat_i_tdata[k64+63:k*64] = ce_i_tdata[k];
end
endgenerate
wire ce_clk = radio_clk;
wire ce_rst = radio_rst;
noc_block_delay_fifo inst_delay_fifo (
//.bus_clk(bus_clk), .bus_rst(bus_rst),
//.ce_clk(ce_clk), .ce_rst(ce_rst),
.clk(clk), .reset(reset), .clear(clear),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]), .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]), .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]), .i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
.o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]), .o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
.debug(ce_debug[1])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]), .i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
.o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]), .o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
.debug(ce_debug[2])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]), .i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
.o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]), .o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
.debug(ce_debug[3])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]), .i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
.o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]), .o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
.debug(ce_debug[4])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]), .i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
.o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]), .o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
.debug(ce_debug[5])
);
------------------------- noc_block_delay_fifo.v -----------------------------------
module noc_block_delay_fifo #(
parameter NOC_ID = 64'hDE7A_0000_0000_0000,
parameter MAX_LEN_LOG2=10,
parameter STR_SINK_FIFOSIZE = 11,
parameter WIDTH=64)
(
// input bus_clk, input bus_rst,
// input ce_clk, input ce_rst,
input clk, input reset, input clear,
input [MAX_LEN_LOG2-1:0] len,
input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output i_tready,
output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input o_tready,
output [WIDTH-1:0] debug
);
////////////////////////////////////////////////////////////
//
// RFNoC Shell
//
////////////////////////////////////////////////////////////
wire [31:0] set_data;
wire [7:0] set_addr;
wire set_stb;
wire [63:0] cmdout_tdata, ackin_tdata;
wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast, ackin_tvalid, ackin_tready;
wire [63:0] str_sink_tdata, str_src_tdata;
wire str_sink_tlast, str_sink_tvalid, str_sink_tready, str_src_tlast, str_src_tvalid, str_src_tready;
wire clear_tx_seqnum;
wire [15:0] next_dst_sid;
noc_shell #(
.NOC_ID(NOC_ID),
.STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
noc_shell (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid), .i_tready(i_tready),
.o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid), .o_tready(o_tready),
// Computer Engine Clock Domain
.clk(ce_clk), .reset(ce_rst),
// Control Sink
.set_data(set_data), .set_addr(set_addr), .set_stb(set_stb), .set_time(),
.rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
// Control Source
.cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast), .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
.ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast), .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
// Stream Sink
.str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast), .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
// Stream Source
.str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast), .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
// Stream IDs set by host
.src_sid(), // SID of this block
.next_dst_sid(next_dst_sid), // Next destination SID
.resp_in_dst_sid(), // Response destination SID for input stream responses / errors
.resp_out_dst_sid(), // Response destination SID for output stream responses / errors
// Misc
.vita_time(64'd0),
.clear_tx_seqnum(clear_tx_seqnum),
.debug(debug));
////////////////////////////////////////////////////////////
//
// AXI Wrapper
// Convert RFNoC Shell interface into AXI stream interface
//
////////////////////////////////////////////////////////////
wire [31:0] m_axis_data_tdata;
wire m_axis_data_tlast;
wire m_axis_data_tvalid;
wire m_axis_data_tready;
wire [31:0] s_axis_data_tdata;
wire s_axis_data_tlast;
wire s_axis_data_tvalid;
wire s_axis_data_tready;
localparam AXI_WRAPPER_BASE = 128;
axi_wrapper #(
.SIMPLE_MODE(1))
inst_axi_wrapper (
.clk(ce_clk), .reset(ce_rst),
.clear_tx_seqnum(clear_tx_seqnum),
.next_dst(next_dst_sid),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast), .i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
.o_tdata(str_src_tdata), .o_tlast(str_src_tlast), .o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
.m_axis_data_tdata(m_axis_data_tdata),
.m_axis_data_tlast(m_axis_data_tlast),
.m_axis_data_tvalid(m_axis_data_tvalid),
.m_axis_data_tready(m_axis_data_tready),
.s_axis_data_tdata(s_axis_data_tdata),
.s_axis_data_tlast(s_axis_data_tlast),
.s_axis_data_tvalid(s_axis_data_tvalid),
.s_axis_data_tready(s_axis_data_tready),
.m_axis_config_tdata(),
.m_axis_config_tlast(),
.m_axis_config_tvalid(),
.m_axis_config_tready());
////////////////////////////////////////////////////////////
//
// User code
//
////////////////////////////////////////////////////////////
reg [MAX_LEN_LOG2-1:0] full_count;
wire full = full_count == len;
wire do_op = i_tvalid & o_tready;
assign i_tready = o_tready;
assign o_tvalid = i_tvalid;
wire [WIDTH-1:0] fifo_out;
axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
(.clk(clk), .reset(reset), .clear(clear),
.i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
.o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
always @(posedge clk)
if(reset | clear)
full_count <= 0;
else
if(do_op & ~full)
full_count <= full_count + 1;
assign o_tdata = full ? fifo_out : 0;
assign o_tlast = i_tlast;
endmodule // noc_block_delay_fifo
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 2:28:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Yeah, ok. It's that multiple driver that's the problem. Can you post the rfnoc_ce_auto_inst.v you're using?
Nick
On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
Nick,
I just attempted to generate a bitstream and it failed with the following errors.
Most messages are the same as before, but take not of the errors present under "Opt Design"
Vivado Commands
General Messages
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver pin 'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]' ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver pin 'i_3847/O' ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64] has multiple drivers: e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O, e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
design_1
General Messages
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 12:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
That all looks ok to me. Does it successfully generate a bitstream?
There will virtually always be warnings, even some "critical" ones, in any sufficiently complex FPGA project.
Nick
On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
Hi Nick,
Thank you for your fast response.
I am receiving the following errors:
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Place Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Please let me know what you think.
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 12:08:20 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
The use of Gnuradio will not affect the FPGA design at all. If you supply the errors you're seeing we might be able to help further.
Nick
On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com> wrote:
Hello all,
I am trying to design an RFNoC block using Vivado 2015.4, but I keep running into synthesis and implementation critical warnings.
Can you explain to me step by step how to instantiate a working rfnoc block WITHOUT using gnuradio? It seems that most information I am finding online include the use of gnuradio.
I believe I have my environment setup correctly and I am calling the noc_shell and axi_wrapper modules within my blocks. However, the errors I am receiving are not stemming from the user code I have written, instead the errors are coming from various design sources within the e310 fpga source code.
Please help. Thank you
-Adam
USRP-users mailing list
USRP-users@lists.ettus.commailto:USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
Okay, I am now using ce_clk in place of clk for my user code, however now my implementation is failing with the following error:
Implementation
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0] has multiple drivers: e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O, e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q. (63 more like this)
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
What might be causing this now?
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 6:02:44 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
ce_clk is there for you to use as your compute engine clock. If you don't have a very good reason to generate and use another clock, you should use that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
I actually found that too and reverted it back to the the original bus_clk/rst and ce_bus/clk such as below:
noc_block_delay_fifo inst_delay_fifo (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]), .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]), .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
I am unsure of why I changed that in the first place, but I think it may have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk), .reset(ce_rst).
For my user code in the source file, should I just use ce_clk rather than generating a new clk?
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 5:09:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Why have you commented out bus_clk/rst and ce_clk/rst in favor of using clk/reset? And where are clk/reset/clear being generated? What is being used as bus_clk/rst in your block's noc_shell?
Nick
On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
Nick,
Haven't heard back from you yet and was just wondering if you were able to give it a look.
I have a feeling that i may have not instantiated the block correctly in rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might be wrong. Any help or insight into this scenario would be much appreciated.
Thank you,
Adam
________________________________
From: Adam Kurisko
Sent: Tuesday, January 2, 2018 2:39:16 PM
To: Nick Foster
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code for noc_block_delay_fifo.v.
------------------------- rfnoc_ce_auto_inst.v ------------------------------
/////////////////////////////////////////////////////////
// Auto-generated by gen_rfnoc_inst.py! Any changes
// in this file will be overwritten the next time
// this script is run.
/////////////////////////////////////////////////////////
localparam NUM_CE = 6;
wire [NUM_CE*64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast, ce_i_tvalid, ce_i_tready;
wire [63:0] ce_debug[0:NUM_CE-1];
// Flattern CE tdata arrays
genvar k;
generate
for (k = 0; k < NUM_CE; k = k + 1) begin
assign ce_o_tdata[k] = ce_flat_o_tdata[k*64+63:k*64];
assign ce_flat_i_tdata[k*64+63:k*64] = ce_i_tdata[k];
end
endgenerate
wire ce_clk = radio_clk;
wire ce_rst = radio_rst;
noc_block_delay_fifo inst_delay_fifo (
//.bus_clk(bus_clk), .bus_rst(bus_rst),
//.ce_clk(ce_clk), .ce_rst(ce_rst),
.clk(clk), .reset(reset), .clear(clear),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]), .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]), .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]), .i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
.o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]), .o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
.debug(ce_debug[1])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]), .i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
.o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]), .o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
.debug(ce_debug[2])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]), .i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
.o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]), .o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
.debug(ce_debug[3])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]), .i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
.o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]), .o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
.debug(ce_debug[4])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]), .i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
.o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]), .o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
.debug(ce_debug[5])
);
---------------------------------------------------------------------------------------------
------------------------- noc_block_delay_fifo.v -----------------------------------
module noc_block_delay_fifo #(
parameter NOC_ID = 64'hDE7A_0000_0000_0000,
parameter MAX_LEN_LOG2=10,
parameter STR_SINK_FIFOSIZE = 11,
parameter WIDTH=64)
(
// input bus_clk, input bus_rst,
// input ce_clk, input ce_rst,
input clk, input reset, input clear,
input [MAX_LEN_LOG2-1:0] len,
input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output i_tready,
output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input o_tready,
output [WIDTH-1:0] debug
);
////////////////////////////////////////////////////////////
//
// RFNoC Shell
//
////////////////////////////////////////////////////////////
wire [31:0] set_data;
wire [7:0] set_addr;
wire set_stb;
wire [63:0] cmdout_tdata, ackin_tdata;
wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast, ackin_tvalid, ackin_tready;
wire [63:0] str_sink_tdata, str_src_tdata;
wire str_sink_tlast, str_sink_tvalid, str_sink_tready, str_src_tlast, str_src_tvalid, str_src_tready;
wire clear_tx_seqnum;
wire [15:0] next_dst_sid;
noc_shell #(
.NOC_ID(NOC_ID),
.STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
noc_shell (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid), .i_tready(i_tready),
.o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid), .o_tready(o_tready),
// Computer Engine Clock Domain
.clk(ce_clk), .reset(ce_rst),
// Control Sink
.set_data(set_data), .set_addr(set_addr), .set_stb(set_stb), .set_time(),
.rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
// Control Source
.cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast), .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
.ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast), .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
// Stream Sink
.str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast), .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
// Stream Source
.str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast), .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
// Stream IDs set by host
.src_sid(), // SID of this block
.next_dst_sid(next_dst_sid), // Next destination SID
.resp_in_dst_sid(), // Response destination SID for input stream responses / errors
.resp_out_dst_sid(), // Response destination SID for output stream responses / errors
// Misc
.vita_time(64'd0),
.clear_tx_seqnum(clear_tx_seqnum),
.debug(debug));
////////////////////////////////////////////////////////////
//
// AXI Wrapper
// Convert RFNoC Shell interface into AXI stream interface
//
////////////////////////////////////////////////////////////
wire [31:0] m_axis_data_tdata;
wire m_axis_data_tlast;
wire m_axis_data_tvalid;
wire m_axis_data_tready;
wire [31:0] s_axis_data_tdata;
wire s_axis_data_tlast;
wire s_axis_data_tvalid;
wire s_axis_data_tready;
localparam AXI_WRAPPER_BASE = 128;
axi_wrapper #(
.SIMPLE_MODE(1))
inst_axi_wrapper (
.clk(ce_clk), .reset(ce_rst),
.clear_tx_seqnum(clear_tx_seqnum),
.next_dst(next_dst_sid),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast), .i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
.o_tdata(str_src_tdata), .o_tlast(str_src_tlast), .o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
.m_axis_data_tdata(m_axis_data_tdata),
.m_axis_data_tlast(m_axis_data_tlast),
.m_axis_data_tvalid(m_axis_data_tvalid),
.m_axis_data_tready(m_axis_data_tready),
.s_axis_data_tdata(s_axis_data_tdata),
.s_axis_data_tlast(s_axis_data_tlast),
.s_axis_data_tvalid(s_axis_data_tvalid),
.s_axis_data_tready(s_axis_data_tready),
.m_axis_config_tdata(),
.m_axis_config_tlast(),
.m_axis_config_tvalid(),
.m_axis_config_tready());
////////////////////////////////////////////////////////////
//
// User code
//
////////////////////////////////////////////////////////////
reg [MAX_LEN_LOG2-1:0] full_count;
wire full = full_count == len;
wire do_op = i_tvalid & o_tready;
assign i_tready = o_tready;
assign o_tvalid = i_tvalid;
wire [WIDTH-1:0] fifo_out;
axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
(.clk(clk), .reset(reset), .clear(clear),
.i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
.o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
always @(posedge clk)
if(reset | clear)
full_count <= 0;
else
if(do_op & ~full)
full_count <= full_count + 1;
assign o_tdata = full ? fifo_out : 0;
assign o_tlast = i_tlast;
endmodule // noc_block_delay_fifo
-------------------------------------------------------------------------------------
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 2:28:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Yeah, ok. It's that multiple driver that's the problem. Can you post the rfnoc_ce_auto_inst.v you're using?
Nick
On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
Nick,
I just attempted to generate a bitstream and it failed with the following errors.
Most messages are the same as before, but take not of the errors present under "Opt Design"
Vivado Commands
General Messages
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver pin 'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]' ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver pin 'i_3847/O' ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64] has multiple drivers: e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O, e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
design_1
General Messages
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 12:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
That all looks ok to me. Does it successfully generate a bitstream?
There will virtually always be warnings, even some "critical" ones, in any sufficiently complex FPGA project.
Nick
On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
Hi Nick,
Thank you for your fast response.
I am receiving the following errors:
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Place Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Please let me know what you think.
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 12:08:20 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
The use of Gnuradio will not affect the FPGA design at all. If you supply the errors you're seeing we might be able to help further.
Nick
On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>> wrote:
Hello all,
I am trying to design an RFNoC block using Vivado 2015.4, but I keep running into synthesis and implementation critical warnings.
Can you explain to me step by step how to instantiate a working rfnoc block WITHOUT using gnuradio? It seems that most information I am finding online include the use of gnuradio.
I believe I have my environment setup correctly and I am calling the noc_shell and axi_wrapper modules within my blocks. However, the errors I am receiving are not stemming from the user code I have written, instead the errors are coming from various design sources within the e310 fpga source code.
Please help. Thank you
-Adam
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com<mailto:USRP-users@lists.ettus.com>
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
NF
Nick Foster
Tue, Jan 2, 2018 11:30 PM
You're assigning to o_tready and o_tdata instead of s_axis_data_tready and
s_axis_data_tdata.
Incidentally, you're also not setting the "len" input to anything in the
top-level instantiation.
Nick
On Tue, Jan 2, 2018 at 3:22 PM Adam Kurisko adamkuri@outlook.com wrote:
Okay, I am now using ce_clk in place of clk for my user code, however now
my implementation is failing with the following error:
Implementation
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0]
has multiple drivers:
e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O,
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q.
(63 more like this)
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
What might be causing this now?
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 6:02:44 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
ce_clk is there for you to use as your compute engine clock. If you don't
have a very good reason to generate and use another clock, you should use
that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko adamkuri@outlook.com wrote:
I actually found that too and reverted it back to the the original
bus_clk/rst and ce_bus/clk such as below:
noc_block_delay_fifo inst_delay_fifo (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
.i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
.o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
I am unsure of why I changed that in the first place, but I think it may
have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk),
.reset(ce_rst).
For my user code in the source file, should I just use ce_clk rather than
generating a new clk?
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 5:09:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Why have you commented out bus_clk/rst and ce_clk/rst in favor of using
clk/reset? And where are clk/reset/clear being generated? What is being
used as bus_clk/rst in your block's noc_shell?
Nick
On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko adamkuri@outlook.com wrote:
Nick,
Haven't heard back from you yet and was just wondering if you were able to
give it a look.
I have a feeling that i may have not instantiated the block correctly in
rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might
be wrong. Any help or insight into this scenario would be much appreciated.
Thank you,
Adam
From: Adam Kurisko
Sent: Tuesday, January 2, 2018 2:39:16 PM
To: Nick Foster
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code
for noc_block_delay_fifo.v.
------------------------- rfnoc_ce_auto_inst.v
/////////////////////////////////////////////////////////
// Auto-generated by gen_rfnoc_inst.py! Any changes
// in this file will be overwritten the next time
// this script is run.
/////////////////////////////////////////////////////////
localparam NUM_CE = 6;
wire [NUM_CE64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast,
ce_i_tvalid, ce_i_tready;
wire [63:0] ce_debug[0:NUM_CE-1];
// Flattern CE tdata arrays
genvar k;
generate
for (k = 0; k < NUM_CE; k = k + 1) begin
assign ce_o_tdata[k] = ce_flat_o_tdata[k64+63:k64];
assign ce_flat_i_tdata[k64+63:k*64] = ce_i_tdata[k];
end
endgenerate
wire ce_clk = radio_clk;
wire ce_rst = radio_rst;
noc_block_delay_fifo inst_delay_fifo (
//.bus_clk(bus_clk), .bus_rst(bus_rst),
//.ce_clk(ce_clk), .ce_rst(ce_rst),
.clk(clk), .reset(reset), .clear(clear),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
.i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
.o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]),
.i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
.o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]),
.o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
.debug(ce_debug[1])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]),
.i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
.o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]),
.o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
.debug(ce_debug[2])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]),
.i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
.o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]),
.o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
.debug(ce_debug[3])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]),
.i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
.o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]),
.o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
.debug(ce_debug[4])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]),
.i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
.o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]),
.o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
.debug(ce_debug[5])
);
------------------------- noc_block_delay_fifo.v
module noc_block_delay_fifo #(
parameter NOC_ID = 64'hDE7A_0000_0000_0000,
parameter MAX_LEN_LOG2=10,
parameter STR_SINK_FIFOSIZE = 11,
parameter WIDTH=64)
(
// input bus_clk, input bus_rst,
// input ce_clk, input ce_rst,
input clk, input reset, input clear,
input [MAX_LEN_LOG2-1:0] len,
input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output
i_tready,
output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input
o_tready,
output [WIDTH-1:0] debug
);
////////////////////////////////////////////////////////////
//
// RFNoC Shell
//
////////////////////////////////////////////////////////////
wire [31:0] set_data;
wire [7:0] set_addr;
wire set_stb;
wire [63:0] cmdout_tdata, ackin_tdata;
wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast,
ackin_tvalid, ackin_tready;
wire [63:0] str_sink_tdata, str_src_tdata;
wire str_sink_tlast, str_sink_tvalid, str_sink_tready,
str_src_tlast, str_src_tvalid, str_src_tready;
wire clear_tx_seqnum;
wire [15:0] next_dst_sid;
noc_shell #(
.NOC_ID(NOC_ID),
.STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
noc_shell (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid),
.i_tready(i_tready),
.o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid),
.o_tready(o_tready),
// Computer Engine Clock Domain
.clk(ce_clk), .reset(ce_rst),
// Control Sink
.set_data(set_data), .set_addr(set_addr), .set_stb(set_stb),
.set_time(),
.rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
// Control Source
.cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast),
.cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
.ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast),
.ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
// Stream Sink
.str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast),
.str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
// Stream Source
.str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast),
.str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
// Stream IDs set by host
.src_sid(), // SID of this block
.next_dst_sid(next_dst_sid), // Next destination SID
.resp_in_dst_sid(), // Response destination SID for input
stream responses / errors
.resp_out_dst_sid(), // Response destination SID for output
stream responses / errors
// Misc
.vita_time(64'd0),
.clear_tx_seqnum(clear_tx_seqnum),
.debug(debug));
////////////////////////////////////////////////////////////
//
// AXI Wrapper
// Convert RFNoC Shell interface into AXI stream interface
//
////////////////////////////////////////////////////////////
wire [31:0] m_axis_data_tdata;
wire m_axis_data_tlast;
wire m_axis_data_tvalid;
wire m_axis_data_tready;
wire [31:0] s_axis_data_tdata;
wire s_axis_data_tlast;
wire s_axis_data_tvalid;
wire s_axis_data_tready;
localparam AXI_WRAPPER_BASE = 128;
axi_wrapper #(
.SIMPLE_MODE(1))
inst_axi_wrapper (
.clk(ce_clk), .reset(ce_rst),
.clear_tx_seqnum(clear_tx_seqnum),
.next_dst(next_dst_sid),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast),
.i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
.o_tdata(str_src_tdata), .o_tlast(str_src_tlast),
.o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
.m_axis_data_tdata(m_axis_data_tdata),
.m_axis_data_tlast(m_axis_data_tlast),
.m_axis_data_tvalid(m_axis_data_tvalid),
.m_axis_data_tready(m_axis_data_tready),
.s_axis_data_tdata(s_axis_data_tdata),
.s_axis_data_tlast(s_axis_data_tlast),
.s_axis_data_tvalid(s_axis_data_tvalid),
.s_axis_data_tready(s_axis_data_tready),
.m_axis_config_tdata(),
.m_axis_config_tlast(),
.m_axis_config_tvalid(),
.m_axis_config_tready());
////////////////////////////////////////////////////////////
//
// User code
//
////////////////////////////////////////////////////////////
reg [MAX_LEN_LOG2-1:0] full_count;
wire full = full_count == len;
wire do_op = i_tvalid & o_tready;
assign i_tready = o_tready;
assign o_tvalid = i_tvalid;
wire [WIDTH-1:0] fifo_out;
axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
(.clk(clk), .reset(reset), .clear(clear),
.i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
.o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
always @(posedge clk)
if(reset | clear)
full_count <= 0;
else
if(do_op & ~full)
full_count <= full_count + 1;
assign o_tdata = full ? fifo_out : 0;
assign o_tlast = i_tlast;
endmodule // noc_block_delay_fifo
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 2:28:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Yeah, ok. It's that multiple driver that's the problem. Can you post the
rfnoc_ce_auto_inst.v you're using?
Nick
On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko adamkuri@outlook.com wrote:
Nick,
I just attempted to generate a bitstream and it failed with the following
errors.
Most messages are the same as before, but take not of the errors present
under "Opt Design"
Vivado Commands
General Messages
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver
pin
'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]'
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver
pin 'i_3847/O'
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64]
has multiple drivers:
e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O,
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
design_1
General Messages
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 12:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
That all looks ok to me. Does it successfully generate a bitstream?
There will virtually always be warnings, even some "critical" ones, in any
sufficiently complex FPGA project.
Nick
On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko adamkuri@outlook.com wrote:
Hi Nick,
Thank you for your fast response.
I am receiving the following errors:
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Place Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Please let me know what you think.
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 12:08:20 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
The use of Gnuradio will not affect the FPGA design at all. If you supply
the errors you're seeing we might be able to help further.
Nick
On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <
usrp-users@lists.ettus.com> wrote:
Hello all,
I am trying to design an RFNoC block using Vivado 2015.4, but I keep
running into synthesis and implementation critical warnings.
Can you explain to me step by step how to instantiate a working rfnoc
block WITHOUT using gnuradio? It seems that most information I am finding
online include the use of gnuradio.
I believe I have my environment setup correctly and I am calling the
noc_shell and axi_wrapper modules within my blocks. However, the errors I
am receiving are not stemming from the user code I have written, instead
the errors are coming from various design sources within the e310 fpga
source code.
Please help. Thank you
-Adam
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
You're assigning to o_tready and o_tdata instead of s_axis_data_tready and
s_axis_data_tdata.
Incidentally, you're also not setting the "len" input to anything in the
top-level instantiation.
Nick
On Tue, Jan 2, 2018 at 3:22 PM Adam Kurisko <adamkuri@outlook.com> wrote:
> Okay, I am now using ce_clk in place of clk for my user code, however now
> my implementation is failing with the following error:
>
>
> Implementation
> Opt Design
> [DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0]
> has multiple drivers:
> e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O,
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q.
> (63 more like this)
>
> [Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
>
>
> What might be causing this now?
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 6:02:44 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
> ce_clk is there for you to use as your compute engine clock. If you don't
> have a very good reason to generate and use another clock, you should use
> that one.
>
> Nick
>
> On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> I actually found that too and reverted it back to the the original
> bus_clk/rst and ce_bus/clk such as below:
>
>
> noc_block_delay_fifo inst_delay_fifo (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
>
> .i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
> .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
> .o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
> .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
> .debug(ce_debug[0])
> );
>
>
> I am unsure of why I changed that in the first place, but I think it may
> have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk),
> .reset(ce_rst).
>
>
> For my user code in the source file, should I just use ce_clk rather than
> generating a new clk?
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 5:09:55 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
> Why have you commented out bus_clk/rst and ce_clk/rst in favor of using
> clk/reset? And where are clk/reset/clear being generated? What is being
> used as bus_clk/rst in your block's noc_shell?
>
> Nick
>
> On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Nick,
>
>
> Haven't heard back from you yet and was just wondering if you were able to
> give it a look.
>
>
> I have a feeling that i may have not instantiated the block correctly in
> rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might
> be wrong. Any help or insight into this scenario would be much appreciated.
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Adam Kurisko
> *Sent:* Tuesday, January 2, 2018 2:39:16 PM
> *To:* Nick Foster
>
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code
> for noc_block_delay_fifo.v.
>
>
> ------------------------- rfnoc_ce_auto_inst.v
> ------------------------------
>
>
> /////////////////////////////////////////////////////////
> // Auto-generated by gen_rfnoc_inst.py! Any changes
> // in this file will be overwritten the next time
> // this script is run.
> /////////////////////////////////////////////////////////
> localparam NUM_CE = 6;
> wire [NUM_CE*64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
> wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
> wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast,
> ce_i_tvalid, ce_i_tready;
> wire [63:0] ce_debug[0:NUM_CE-1];
> // Flattern CE tdata arrays
> genvar k;
> generate
> for (k = 0; k < NUM_CE; k = k + 1) begin
> assign ce_o_tdata[k] = ce_flat_o_tdata[k*64+63:k*64];
> assign ce_flat_i_tdata[k*64+63:k*64] = ce_i_tdata[k];
> end
> endgenerate
> wire ce_clk = radio_clk;
> wire ce_rst = radio_rst;
>
> noc_block_delay_fifo inst_delay_fifo (
> //.bus_clk(bus_clk), .bus_rst(bus_rst),
> //.ce_clk(ce_clk), .ce_rst(ce_rst),
> .clk(clk), .reset(reset), .clear(clear),
> .i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
> .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
> .o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
> .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
> .debug(ce_debug[0])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]),
> .i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
> .o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]),
> .o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
> .debug(ce_debug[1])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]),
> .i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
> .o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]),
> .o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
> .debug(ce_debug[2])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]),
> .i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
> .o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]),
> .o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
> .debug(ce_debug[3])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]),
> .i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
> .o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]),
> .o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
> .debug(ce_debug[4])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]),
> .i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
> .o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]),
> .o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
> .debug(ce_debug[5])
> );
>
>
>
> ---------------------------------------------------------------------------------------------
>
>
> ------------------------- noc_block_delay_fifo.v
> -----------------------------------
>
>
> module noc_block_delay_fifo #(
> parameter NOC_ID = 64'hDE7A_0000_0000_0000,
> parameter MAX_LEN_LOG2=10,
> parameter STR_SINK_FIFOSIZE = 11,
> parameter WIDTH=64)
> (
> // input bus_clk, input bus_rst,
> // input ce_clk, input ce_rst,
> input clk, input reset, input clear,
> input [MAX_LEN_LOG2-1:0] len,
> input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output
> i_tready,
> output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input
> o_tready,
> output [WIDTH-1:0] debug
> );
>
> ////////////////////////////////////////////////////////////
> //
> // RFNoC Shell
> //
> ////////////////////////////////////////////////////////////
> wire [31:0] set_data;
> wire [7:0] set_addr;
> wire set_stb;
>
> wire [63:0] cmdout_tdata, ackin_tdata;
> wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast,
> ackin_tvalid, ackin_tready;
>
> wire [63:0] str_sink_tdata, str_src_tdata;
> wire str_sink_tlast, str_sink_tvalid, str_sink_tready,
> str_src_tlast, str_src_tvalid, str_src_tready;
>
> wire clear_tx_seqnum;
> wire [15:0] next_dst_sid;
>
> noc_shell #(
> .NOC_ID(NOC_ID),
> .STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
> noc_shell (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid),
> .i_tready(i_tready),
> .o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid),
> .o_tready(o_tready),
> // Computer Engine Clock Domain
> .clk(ce_clk), .reset(ce_rst),
> // Control Sink
> .set_data(set_data), .set_addr(set_addr), .set_stb(set_stb),
> .set_time(),
> .rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
> // Control Source
> .cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast),
> .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
> .ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast),
> .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
> // Stream Sink
> .str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast),
> .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
> // Stream Source
> .str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast),
> .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
> // Stream IDs set by host
> .src_sid(), // SID of this block
> .next_dst_sid(next_dst_sid), // Next destination SID
> .resp_in_dst_sid(), // Response destination SID for input
> stream responses / errors
> .resp_out_dst_sid(), // Response destination SID for output
> stream responses / errors
> // Misc
> .vita_time(64'd0),
> .clear_tx_seqnum(clear_tx_seqnum),
> .debug(debug));
>
> ////////////////////////////////////////////////////////////
> //
> // AXI Wrapper
> // Convert RFNoC Shell interface into AXI stream interface
> //
> ////////////////////////////////////////////////////////////
> wire [31:0] m_axis_data_tdata;
> wire m_axis_data_tlast;
> wire m_axis_data_tvalid;
> wire m_axis_data_tready;
>
> wire [31:0] s_axis_data_tdata;
> wire s_axis_data_tlast;
> wire s_axis_data_tvalid;
> wire s_axis_data_tready;
>
> localparam AXI_WRAPPER_BASE = 128;
>
> axi_wrapper #(
> .SIMPLE_MODE(1))
> inst_axi_wrapper (
> .clk(ce_clk), .reset(ce_rst),
> .clear_tx_seqnum(clear_tx_seqnum),
> .next_dst(next_dst_sid),
> .set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
> .i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast),
> .i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
> .o_tdata(str_src_tdata), .o_tlast(str_src_tlast),
> .o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
> .m_axis_data_tdata(m_axis_data_tdata),
> .m_axis_data_tlast(m_axis_data_tlast),
> .m_axis_data_tvalid(m_axis_data_tvalid),
> .m_axis_data_tready(m_axis_data_tready),
> .s_axis_data_tdata(s_axis_data_tdata),
> .s_axis_data_tlast(s_axis_data_tlast),
> .s_axis_data_tvalid(s_axis_data_tvalid),
> .s_axis_data_tready(s_axis_data_tready),
> .m_axis_config_tdata(),
> .m_axis_config_tlast(),
> .m_axis_config_tvalid(),
> .m_axis_config_tready());
>
> ////////////////////////////////////////////////////////////
> //
> // User code
> //
> ////////////////////////////////////////////////////////////
>
> reg [MAX_LEN_LOG2-1:0] full_count;
> wire full = full_count == len;
>
> wire do_op = i_tvalid & o_tready;
>
> assign i_tready = o_tready;
> assign o_tvalid = i_tvalid;
>
> wire [WIDTH-1:0] fifo_out;
>
> axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
> (.clk(clk), .reset(reset), .clear(clear),
> .i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
> .o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
>
> always @(posedge clk)
> if(reset | clear)
> full_count <= 0;
> else
> if(do_op & ~full)
> full_count <= full_count + 1;
>
> assign o_tdata = full ? fifo_out : 0;
> assign o_tlast = i_tlast;
>
> endmodule // noc_block_delay_fifo
>
>
>
>
> -------------------------------------------------------------------------------------
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 2:28:55 PM
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
>
> Yeah, ok. It's that multiple driver that's the problem. Can you post the
> rfnoc_ce_auto_inst.v you're using?
>
> Nick
>
> On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Nick,
>
>
> I just attempted to generate a bitstream and it failed with the following
> errors.
>
>
> Most messages are the same as before, but take not of the errors present
> under "Opt Design"
>
>
> Vivado Commands
> General Messages
>
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
>
> Synthesis
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
> [Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver
> pin
> 'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]'
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
> [Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver
> pin 'i_3847/O'
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
>
>
> Implementation
> Design Initialization
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
> Opt Design
> [DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64]
> has multiple drivers:
> e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O,
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
> [Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
>
> design_1
> General Messages
>
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 12:35:54 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> That all looks ok to me. Does it successfully generate a bitstream?
>
> There will virtually always be warnings, even some "critical" ones, in any
> sufficiently complex FPGA project.
>
> Nick
>
> On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Hi Nick,
>
>
> Thank you for your fast response.
>
>
> I am receiving the following errors:
>
>
> Synthesis
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
>
> Implementation
> Design Initialization
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
> Opt Design
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>
> Place Design
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>
>
> Please let me know what you think.
>
>
> Thank you,
>
> Adam
>
>
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 12:08:20 PM
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> The use of Gnuradio will not affect the FPGA design at all. If you supply
> the errors you're seeing we might be able to help further.
>
> Nick
>
> On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <
> usrp-users@lists.ettus.com> wrote:
>
> Hello all,
>
>
> I am trying to design an RFNoC block using Vivado 2015.4, but I keep
> running into synthesis and implementation critical warnings.
>
>
> Can you explain to me step by step how to instantiate a working rfnoc
> block WITHOUT using gnuradio? It seems that most information I am finding
> online include the use of gnuradio.
>
>
> I believe I have my environment setup correctly and I am calling the
> noc_shell and axi_wrapper modules within my blocks. However, the errors I
> am receiving are not stemming from the user code I have written, instead
> the errors are coming from various design sources within the e310 fpga
> source code.
>
>
> Please help. Thank you
>
>
> -Adam
> _______________________________________________
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
>
NF
Nick Foster
Tue, Jan 2, 2018 11:35 PM
On a side note, this is a good time to mention that learning to simulate
RFNoC blocks with the excellent and comprehensive testbench framework
Jonathon put together is the single most effective way to write better
RFNoC blocks, faster. This kind of error would be caught almost instantly
in simulation, instead of waiting N minutes for Vivado to synthesize and
implement it.
It is absolutely worth your time to start working with the testbench now,
instead of deferring because your block almost works.
Nick
On Tue, Jan 2, 2018 at 3:30 PM Nick Foster bistromath@gmail.com wrote:
You're assigning to o_tready and o_tdata instead of s_axis_data_tready and
s_axis_data_tdata.
Incidentally, you're also not setting the "len" input to anything in the
top-level instantiation.
Nick
On Tue, Jan 2, 2018 at 3:22 PM Adam Kurisko adamkuri@outlook.com wrote:
Okay, I am now using ce_clk in place of clk for my user code, however now
my implementation is failing with the following error:
Implementation
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0]
has multiple drivers:
e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O,
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q.
(63 more like this)
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
What might be causing this now?
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 6:02:44 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
ce_clk is there for you to use as your compute engine clock. If you don't
have a very good reason to generate and use another clock, you should use
that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko adamkuri@outlook.com wrote:
I actually found that too and reverted it back to the the original
bus_clk/rst and ce_bus/clk such as below:
noc_block_delay_fifo inst_delay_fifo (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
.i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
.o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
I am unsure of why I changed that in the first place, but I think it may
have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk),
.reset(ce_rst).
For my user code in the source file, should I just use ce_clk rather than
generating a new clk?
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 5:09:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Why have you commented out bus_clk/rst and ce_clk/rst in favor of using
clk/reset? And where are clk/reset/clear being generated? What is being
used as bus_clk/rst in your block's noc_shell?
Nick
On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko adamkuri@outlook.com
wrote:
Nick,
Haven't heard back from you yet and was just wondering if you were able
to give it a look.
I have a feeling that i may have not instantiated the block correctly in
rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might
be wrong. Any help or insight into this scenario would be much appreciated.
Thank you,
Adam
From: Adam Kurisko
Sent: Tuesday, January 2, 2018 2:39:16 PM
To: Nick Foster
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code
for noc_block_delay_fifo.v.
------------------------- rfnoc_ce_auto_inst.v
/////////////////////////////////////////////////////////
// Auto-generated by gen_rfnoc_inst.py! Any changes
// in this file will be overwritten the next time
// this script is run.
/////////////////////////////////////////////////////////
localparam NUM_CE = 6;
wire [NUM_CE64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast,
ce_i_tvalid, ce_i_tready;
wire [63:0] ce_debug[0:NUM_CE-1];
// Flattern CE tdata arrays
genvar k;
generate
for (k = 0; k < NUM_CE; k = k + 1) begin
assign ce_o_tdata[k] = ce_flat_o_tdata[k64+63:k64];
assign ce_flat_i_tdata[k64+63:k*64] = ce_i_tdata[k];
end
endgenerate
wire ce_clk = radio_clk;
wire ce_rst = radio_rst;
noc_block_delay_fifo inst_delay_fifo (
//.bus_clk(bus_clk), .bus_rst(bus_rst),
//.ce_clk(ce_clk), .ce_rst(ce_rst),
.clk(clk), .reset(reset), .clear(clear),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
.i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
.o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]),
.i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
.o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]),
.o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
.debug(ce_debug[1])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]),
.i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
.o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]),
.o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
.debug(ce_debug[2])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]),
.i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
.o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]),
.o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
.debug(ce_debug[3])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]),
.i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
.o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]),
.o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
.debug(ce_debug[4])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]),
.i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
.o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]),
.o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
.debug(ce_debug[5])
);
------------------------- noc_block_delay_fifo.v
module noc_block_delay_fifo #(
parameter NOC_ID = 64'hDE7A_0000_0000_0000,
parameter MAX_LEN_LOG2=10,
parameter STR_SINK_FIFOSIZE = 11,
parameter WIDTH=64)
(
// input bus_clk, input bus_rst,
// input ce_clk, input ce_rst,
input clk, input reset, input clear,
input [MAX_LEN_LOG2-1:0] len,
input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output
i_tready,
output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input
o_tready,
output [WIDTH-1:0] debug
);
////////////////////////////////////////////////////////////
//
// RFNoC Shell
//
////////////////////////////////////////////////////////////
wire [31:0] set_data;
wire [7:0] set_addr;
wire set_stb;
wire [63:0] cmdout_tdata, ackin_tdata;
wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast,
ackin_tvalid, ackin_tready;
wire [63:0] str_sink_tdata, str_src_tdata;
wire str_sink_tlast, str_sink_tvalid, str_sink_tready,
str_src_tlast, str_src_tvalid, str_src_tready;
wire clear_tx_seqnum;
wire [15:0] next_dst_sid;
noc_shell #(
.NOC_ID(NOC_ID),
.STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
noc_shell (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid),
.i_tready(i_tready),
.o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid),
.o_tready(o_tready),
// Computer Engine Clock Domain
.clk(ce_clk), .reset(ce_rst),
// Control Sink
.set_data(set_data), .set_addr(set_addr), .set_stb(set_stb),
.set_time(),
.rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
// Control Source
.cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast),
.cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
.ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast),
.ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
// Stream Sink
.str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast),
.str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
// Stream Source
.str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast),
.str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
// Stream IDs set by host
.src_sid(), // SID of this block
.next_dst_sid(next_dst_sid), // Next destination SID
.resp_in_dst_sid(), // Response destination SID for input
stream responses / errors
.resp_out_dst_sid(), // Response destination SID for
output stream responses / errors
// Misc
.vita_time(64'd0),
.clear_tx_seqnum(clear_tx_seqnum),
.debug(debug));
////////////////////////////////////////////////////////////
//
// AXI Wrapper
// Convert RFNoC Shell interface into AXI stream interface
//
////////////////////////////////////////////////////////////
wire [31:0] m_axis_data_tdata;
wire m_axis_data_tlast;
wire m_axis_data_tvalid;
wire m_axis_data_tready;
wire [31:0] s_axis_data_tdata;
wire s_axis_data_tlast;
wire s_axis_data_tvalid;
wire s_axis_data_tready;
localparam AXI_WRAPPER_BASE = 128;
axi_wrapper #(
.SIMPLE_MODE(1))
inst_axi_wrapper (
.clk(ce_clk), .reset(ce_rst),
.clear_tx_seqnum(clear_tx_seqnum),
.next_dst(next_dst_sid),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast),
.i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
.o_tdata(str_src_tdata), .o_tlast(str_src_tlast),
.o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
.m_axis_data_tdata(m_axis_data_tdata),
.m_axis_data_tlast(m_axis_data_tlast),
.m_axis_data_tvalid(m_axis_data_tvalid),
.m_axis_data_tready(m_axis_data_tready),
.s_axis_data_tdata(s_axis_data_tdata),
.s_axis_data_tlast(s_axis_data_tlast),
.s_axis_data_tvalid(s_axis_data_tvalid),
.s_axis_data_tready(s_axis_data_tready),
.m_axis_config_tdata(),
.m_axis_config_tlast(),
.m_axis_config_tvalid(),
.m_axis_config_tready());
////////////////////////////////////////////////////////////
//
// User code
//
////////////////////////////////////////////////////////////
reg [MAX_LEN_LOG2-1:0] full_count;
wire full = full_count == len;
wire do_op = i_tvalid & o_tready;
assign i_tready = o_tready;
assign o_tvalid = i_tvalid;
wire [WIDTH-1:0] fifo_out;
axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
(.clk(clk), .reset(reset), .clear(clear),
.i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
.o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
always @(posedge clk)
if(reset | clear)
full_count <= 0;
else
if(do_op & ~full)
full_count <= full_count + 1;
assign o_tdata = full ? fifo_out : 0;
assign o_tlast = i_tlast;
endmodule // noc_block_delay_fifo
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 2:28:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Yeah, ok. It's that multiple driver that's the problem. Can you post the
rfnoc_ce_auto_inst.v you're using?
Nick
On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko adamkuri@outlook.com wrote:
Nick,
I just attempted to generate a bitstream and it failed with the following
errors.
Most messages are the same as before, but take not of the errors present
under "Opt Design"
Vivado Commands
General Messages
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver
pin
'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]'
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver
pin 'i_3847/O'
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64]
has multiple drivers:
e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O,
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
design_1
General Messages
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 12:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
That all looks ok to me. Does it successfully generate a bitstream?
There will virtually always be warnings, even some "critical" ones, in
any sufficiently complex FPGA project.
Nick
On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko adamkuri@outlook.com wrote:
Hi Nick,
Thank you for your fast response.
I am receiving the following errors:
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Place Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Please let me know what you think.
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 12:08:20 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
The use of Gnuradio will not affect the FPGA design at all. If you supply
the errors you're seeing we might be able to help further.
Nick
On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <
usrp-users@lists.ettus.com> wrote:
Hello all,
I am trying to design an RFNoC block using Vivado 2015.4, but I keep
running into synthesis and implementation critical warnings.
Can you explain to me step by step how to instantiate a working rfnoc
block WITHOUT using gnuradio? It seems that most information I am finding
online include the use of gnuradio.
I believe I have my environment setup correctly and I am calling the
noc_shell and axi_wrapper modules within my blocks. However, the errors I
am receiving are not stemming from the user code I have written, instead
the errors are coming from various design sources within the e310 fpga
source code.
Please help. Thank you
-Adam
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
On a side note, this is a good time to mention that learning to simulate
RFNoC blocks with the excellent and comprehensive testbench framework
Jonathon put together is the single most effective way to write better
RFNoC blocks, faster. This kind of error would be caught almost instantly
in simulation, instead of waiting N minutes for Vivado to synthesize and
implement it.
It is absolutely worth your time to start working with the testbench now,
instead of deferring because your block almost works.
Nick
On Tue, Jan 2, 2018 at 3:30 PM Nick Foster <bistromath@gmail.com> wrote:
> You're assigning to o_tready and o_tdata instead of s_axis_data_tready and
> s_axis_data_tdata.
>
> Incidentally, you're also not setting the "len" input to anything in the
> top-level instantiation.
>
> Nick
>
> On Tue, Jan 2, 2018 at 3:22 PM Adam Kurisko <adamkuri@outlook.com> wrote:
>
>> Okay, I am now using ce_clk in place of clk for my user code, however now
>> my implementation is failing with the following error:
>>
>>
>> Implementation
>> Opt Design
>> [DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
>> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0]
>> has multiple drivers:
>> e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O,
>> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q.
>> (63 more like this)
>>
>> [Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
>>
>>
>> What might be causing this now?
>>
>>
>> Thank you,
>>
>> Adam
>> ------------------------------
>> *From:* Nick Foster <bistromath@gmail.com>
>> *Sent:* Tuesday, January 2, 2018 6:02:44 PM
>>
>> *To:* Adam Kurisko
>> *Cc:* usrp-users@lists.ettus.com
>> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>> ce_clk is there for you to use as your compute engine clock. If you don't
>> have a very good reason to generate and use another clock, you should use
>> that one.
>>
>> Nick
>>
>> On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko <adamkuri@outlook.com> wrote:
>>
>> I actually found that too and reverted it back to the the original
>> bus_clk/rst and ce_bus/clk such as below:
>>
>>
>> noc_block_delay_fifo inst_delay_fifo (
>> .bus_clk(bus_clk), .bus_rst(bus_rst),
>> .ce_clk(ce_clk), .ce_rst(ce_rst),
>>
>> .i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
>> .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
>> .o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
>> .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
>> .debug(ce_debug[0])
>> );
>>
>>
>> I am unsure of why I changed that in the first place, but I think it may
>> have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk),
>> .reset(ce_rst).
>>
>>
>> For my user code in the source file, should I just use ce_clk rather than
>> generating a new clk?
>>
>>
>> Thank you,
>>
>> Adam
>> ------------------------------
>> *From:* Nick Foster <bistromath@gmail.com>
>> *Sent:* Tuesday, January 2, 2018 5:09:55 PM
>>
>> *To:* Adam Kurisko
>> *Cc:* usrp-users@lists.ettus.com
>> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>> Why have you commented out bus_clk/rst and ce_clk/rst in favor of using
>> clk/reset? And where are clk/reset/clear being generated? What is being
>> used as bus_clk/rst in your block's noc_shell?
>>
>> Nick
>>
>> On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko <adamkuri@outlook.com>
>> wrote:
>>
>> Nick,
>>
>>
>> Haven't heard back from you yet and was just wondering if you were able
>> to give it a look.
>>
>>
>> I have a feeling that i may have not instantiated the block correctly in
>> rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might
>> be wrong. Any help or insight into this scenario would be much appreciated.
>>
>>
>> Thank you,
>>
>> Adam
>> ------------------------------
>> *From:* Adam Kurisko
>> *Sent:* Tuesday, January 2, 2018 2:39:16 PM
>> *To:* Nick Foster
>>
>> *Cc:* usrp-users@lists.ettus.com
>> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>>
>> Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code
>> for noc_block_delay_fifo.v.
>>
>>
>> ------------------------- rfnoc_ce_auto_inst.v
>> ------------------------------
>>
>>
>> /////////////////////////////////////////////////////////
>> // Auto-generated by gen_rfnoc_inst.py! Any changes
>> // in this file will be overwritten the next time
>> // this script is run.
>> /////////////////////////////////////////////////////////
>> localparam NUM_CE = 6;
>> wire [NUM_CE*64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
>> wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
>> wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast,
>> ce_i_tvalid, ce_i_tready;
>> wire [63:0] ce_debug[0:NUM_CE-1];
>> // Flattern CE tdata arrays
>> genvar k;
>> generate
>> for (k = 0; k < NUM_CE; k = k + 1) begin
>> assign ce_o_tdata[k] = ce_flat_o_tdata[k*64+63:k*64];
>> assign ce_flat_i_tdata[k*64+63:k*64] = ce_i_tdata[k];
>> end
>> endgenerate
>> wire ce_clk = radio_clk;
>> wire ce_rst = radio_rst;
>>
>> noc_block_delay_fifo inst_delay_fifo (
>> //.bus_clk(bus_clk), .bus_rst(bus_rst),
>> //.ce_clk(ce_clk), .ce_rst(ce_rst),
>> .clk(clk), .reset(reset), .clear(clear),
>> .i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
>> .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
>> .o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
>> .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
>> .debug(ce_debug[0])
>> );
>>
>> noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
>> .bus_clk(bus_clk), .bus_rst(bus_rst),
>> .ce_clk(ce_clk), .ce_rst(ce_rst),
>> .i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]),
>> .i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
>> .o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]),
>> .o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
>> .debug(ce_debug[1])
>> );
>>
>> noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
>> .bus_clk(bus_clk), .bus_rst(bus_rst),
>> .ce_clk(ce_clk), .ce_rst(ce_rst),
>> .i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]),
>> .i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
>> .o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]),
>> .o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
>> .debug(ce_debug[2])
>> );
>>
>> noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
>> .bus_clk(bus_clk), .bus_rst(bus_rst),
>> .ce_clk(ce_clk), .ce_rst(ce_rst),
>> .i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]),
>> .i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
>> .o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]),
>> .o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
>> .debug(ce_debug[3])
>> );
>>
>> noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
>> .bus_clk(bus_clk), .bus_rst(bus_rst),
>> .ce_clk(ce_clk), .ce_rst(ce_rst),
>> .i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]),
>> .i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
>> .o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]),
>> .o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
>> .debug(ce_debug[4])
>> );
>>
>> noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
>> .bus_clk(bus_clk), .bus_rst(bus_rst),
>> .ce_clk(ce_clk), .ce_rst(ce_rst),
>> .i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]),
>> .i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
>> .o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]),
>> .o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
>> .debug(ce_debug[5])
>> );
>>
>>
>>
>> ---------------------------------------------------------------------------------------------
>>
>>
>> ------------------------- noc_block_delay_fifo.v
>> -----------------------------------
>>
>>
>> module noc_block_delay_fifo #(
>> parameter NOC_ID = 64'hDE7A_0000_0000_0000,
>> parameter MAX_LEN_LOG2=10,
>> parameter STR_SINK_FIFOSIZE = 11,
>> parameter WIDTH=64)
>> (
>> // input bus_clk, input bus_rst,
>> // input ce_clk, input ce_rst,
>> input clk, input reset, input clear,
>> input [MAX_LEN_LOG2-1:0] len,
>> input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output
>> i_tready,
>> output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input
>> o_tready,
>> output [WIDTH-1:0] debug
>> );
>>
>> ////////////////////////////////////////////////////////////
>> //
>> // RFNoC Shell
>> //
>> ////////////////////////////////////////////////////////////
>> wire [31:0] set_data;
>> wire [7:0] set_addr;
>> wire set_stb;
>>
>> wire [63:0] cmdout_tdata, ackin_tdata;
>> wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast,
>> ackin_tvalid, ackin_tready;
>>
>> wire [63:0] str_sink_tdata, str_src_tdata;
>> wire str_sink_tlast, str_sink_tvalid, str_sink_tready,
>> str_src_tlast, str_src_tvalid, str_src_tready;
>>
>> wire clear_tx_seqnum;
>> wire [15:0] next_dst_sid;
>>
>> noc_shell #(
>> .NOC_ID(NOC_ID),
>> .STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
>> noc_shell (
>> .bus_clk(bus_clk), .bus_rst(bus_rst),
>> .i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid),
>> .i_tready(i_tready),
>> .o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid),
>> .o_tready(o_tready),
>> // Computer Engine Clock Domain
>> .clk(ce_clk), .reset(ce_rst),
>> // Control Sink
>> .set_data(set_data), .set_addr(set_addr), .set_stb(set_stb),
>> .set_time(),
>> .rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
>> // Control Source
>> .cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast),
>> .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
>> .ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast),
>> .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
>> // Stream Sink
>> .str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast),
>> .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
>> // Stream Source
>> .str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast),
>> .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
>> // Stream IDs set by host
>> .src_sid(), // SID of this block
>> .next_dst_sid(next_dst_sid), // Next destination SID
>> .resp_in_dst_sid(), // Response destination SID for input
>> stream responses / errors
>> .resp_out_dst_sid(), // Response destination SID for
>> output stream responses / errors
>> // Misc
>> .vita_time(64'd0),
>> .clear_tx_seqnum(clear_tx_seqnum),
>> .debug(debug));
>>
>> ////////////////////////////////////////////////////////////
>> //
>> // AXI Wrapper
>> // Convert RFNoC Shell interface into AXI stream interface
>> //
>> ////////////////////////////////////////////////////////////
>> wire [31:0] m_axis_data_tdata;
>> wire m_axis_data_tlast;
>> wire m_axis_data_tvalid;
>> wire m_axis_data_tready;
>>
>> wire [31:0] s_axis_data_tdata;
>> wire s_axis_data_tlast;
>> wire s_axis_data_tvalid;
>> wire s_axis_data_tready;
>>
>> localparam AXI_WRAPPER_BASE = 128;
>>
>> axi_wrapper #(
>> .SIMPLE_MODE(1))
>> inst_axi_wrapper (
>> .clk(ce_clk), .reset(ce_rst),
>> .clear_tx_seqnum(clear_tx_seqnum),
>> .next_dst(next_dst_sid),
>> .set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
>> .i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast),
>> .i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
>> .o_tdata(str_src_tdata), .o_tlast(str_src_tlast),
>> .o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
>> .m_axis_data_tdata(m_axis_data_tdata),
>> .m_axis_data_tlast(m_axis_data_tlast),
>> .m_axis_data_tvalid(m_axis_data_tvalid),
>> .m_axis_data_tready(m_axis_data_tready),
>> .s_axis_data_tdata(s_axis_data_tdata),
>> .s_axis_data_tlast(s_axis_data_tlast),
>> .s_axis_data_tvalid(s_axis_data_tvalid),
>> .s_axis_data_tready(s_axis_data_tready),
>> .m_axis_config_tdata(),
>> .m_axis_config_tlast(),
>> .m_axis_config_tvalid(),
>> .m_axis_config_tready());
>>
>> ////////////////////////////////////////////////////////////
>> //
>> // User code
>> //
>> ////////////////////////////////////////////////////////////
>>
>> reg [MAX_LEN_LOG2-1:0] full_count;
>> wire full = full_count == len;
>>
>> wire do_op = i_tvalid & o_tready;
>>
>> assign i_tready = o_tready;
>> assign o_tvalid = i_tvalid;
>>
>> wire [WIDTH-1:0] fifo_out;
>>
>> axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
>> (.clk(clk), .reset(reset), .clear(clear),
>> .i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
>> .o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
>>
>> always @(posedge clk)
>> if(reset | clear)
>> full_count <= 0;
>> else
>> if(do_op & ~full)
>> full_count <= full_count + 1;
>>
>> assign o_tdata = full ? fifo_out : 0;
>> assign o_tlast = i_tlast;
>>
>> endmodule // noc_block_delay_fifo
>>
>>
>>
>>
>> -------------------------------------------------------------------------------------
>>
>>
>> Thank you,
>>
>> Adam
>> ------------------------------
>> *From:* Nick Foster <bistromath@gmail.com>
>> *Sent:* Tuesday, January 2, 2018 2:28:55 PM
>> *To:* Adam Kurisko
>> *Cc:* usrp-users@lists.ettus.com
>> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>>
>>
>> Yeah, ok. It's that multiple driver that's the problem. Can you post the
>> rfnoc_ce_auto_inst.v you're using?
>>
>> Nick
>>
>> On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko <adamkuri@outlook.com> wrote:
>>
>> Nick,
>>
>>
>> I just attempted to generate a bitstream and it failed with the following
>> errors.
>>
>>
>> Most messages are the same as before, but take not of the errors present
>> under "Opt Design"
>>
>>
>> Vivado Commands
>> General Messages
>>
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[2]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[1]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[0]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[2]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[1]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[0]
>>
>> Synthesis
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[2]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[1]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[0]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[2]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[1]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[0]
>> [Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver
>> pin
>> 'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]'
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
>> [Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver
>> pin 'i_3847/O'
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
>>
>>
>> Implementation
>> Design Initialization
>> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
>> will not be read for this module.
>> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
>> will not be read for any cell of this module.
>> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
>> with option '-group [get_clocks -include_generated_clocks clk0]'.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
>> [Common 17-161] Invalid option value '#' specified for 'objects'.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>>
>> Opt Design
>> [DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
>> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64]
>> has multiple drivers:
>> e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O,
>> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
>> [Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
>>
>> design_1
>> General Messages
>>
>> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
>> will not be read for this module.
>> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
>> will not be read for any cell of this module.
>> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
>> with option '-group [get_clocks -include_generated_clocks clk0]'.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
>> [Common 17-161] Invalid option value '#' specified for 'objects'.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>>
>>
>> Thank you,
>>
>> Adam
>> ------------------------------
>> *From:* Nick Foster <bistromath@gmail.com>
>> *Sent:* Tuesday, January 2, 2018 12:35:54 PM
>>
>> *To:* Adam Kurisko
>> *Cc:* usrp-users@lists.ettus.com
>> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>>
>> That all looks ok to me. Does it successfully generate a bitstream?
>>
>> There will virtually always be warnings, even some "critical" ones, in
>> any sufficiently complex FPGA project.
>>
>> Nick
>>
>> On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko <adamkuri@outlook.com> wrote:
>>
>> Hi Nick,
>>
>>
>> Thank you for your fast response.
>>
>>
>> I am receiving the following errors:
>>
>>
>> Synthesis
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[2]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[1]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_awprot[0]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[2]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[1]
>> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
>> s_axi_arprot[0]
>>
>> Implementation
>> Design Initialization
>> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
>> will not be read for this module.
>> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
>> will not be read for any cell of this module.
>> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
>> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
>> will not be read for any cell of this module.
>> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
>> with option '-group [get_clocks -include_generated_clocks clk0]'.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
>> [Common 17-161] Invalid option value '#' specified for 'objects'.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
>> [Common 17-55] 'get_property' expects at least one object.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>>
>> Opt Design
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>>
>> Place Design
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>> [Constraints 18-514] set_max_delay: Path segmentation by forcing
>> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
>> to this pin unless set_min_delay is used to constrain the paths.
>> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>>
>>
>> Please let me know what you think.
>>
>>
>> Thank you,
>>
>> Adam
>>
>>
>> ------------------------------
>> *From:* Nick Foster <bistromath@gmail.com>
>> *Sent:* Tuesday, January 2, 2018 12:08:20 PM
>> *To:* Adam Kurisko
>> *Cc:* usrp-users@lists.ettus.com
>> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>>
>> The use of Gnuradio will not affect the FPGA design at all. If you supply
>> the errors you're seeing we might be able to help further.
>>
>> Nick
>>
>> On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <
>> usrp-users@lists.ettus.com> wrote:
>>
>> Hello all,
>>
>>
>> I am trying to design an RFNoC block using Vivado 2015.4, but I keep
>> running into synthesis and implementation critical warnings.
>>
>>
>> Can you explain to me step by step how to instantiate a working rfnoc
>> block WITHOUT using gnuradio? It seems that most information I am finding
>> online include the use of gnuradio.
>>
>>
>> I believe I have my environment setup correctly and I am calling the
>> noc_shell and axi_wrapper modules within my blocks. However, the errors I
>> am receiving are not stemming from the user code I have written, instead
>> the errors are coming from various design sources within the e310 fpga
>> source code.
>>
>>
>> Please help. Thank you
>>
>>
>> -Adam
>> _______________________________________________
>> USRP-users mailing list
>> USRP-users@lists.ettus.com
>> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>>
>>
AK
Adam Kurisko
Tue, Jan 2, 2018 11:49 PM
How do I use Jonathon's tb framework? Could you please provide the link to the manual/instructions if possible?
Also, thank you so much for helping me with this. I am still relatively new to RFNoC.
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 6:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
On a side note, this is a good time to mention that learning to simulate RFNoC blocks with the excellent and comprehensive testbench framework Jonathon put together is the single most effective way to write better RFNoC blocks, faster. This kind of error would be caught almost instantly in simulation, instead of waiting N minutes for Vivado to synthesize and implement it.
It is absolutely worth your time to start working with the testbench now, instead of deferring because your block almost works.
Nick
On Tue, Jan 2, 2018 at 3:30 PM Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com> wrote:
You're assigning to o_tready and o_tdata instead of s_axis_data_tready and s_axis_data_tdata.
Incidentally, you're also not setting the "len" input to anything in the top-level instantiation.
Nick
On Tue, Jan 2, 2018 at 3:22 PM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
Okay, I am now using ce_clk in place of clk for my user code, however now my implementation is failing with the following error:
Implementation
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0] has multiple drivers: e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O, e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q. (63 more like this)
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
What might be causing this now?
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 6:02:44 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
ce_clk is there for you to use as your compute engine clock. If you don't have a very good reason to generate and use another clock, you should use that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
I actually found that too and reverted it back to the the original bus_clk/rst and ce_bus/clk such as below:
noc_block_delay_fifo inst_delay_fifo (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]), .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]), .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
I am unsure of why I changed that in the first place, but I think it may have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk), .reset(ce_rst).
For my user code in the source file, should I just use ce_clk rather than generating a new clk?
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 5:09:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Why have you commented out bus_clk/rst and ce_clk/rst in favor of using clk/reset? And where are clk/reset/clear being generated? What is being used as bus_clk/rst in your block's noc_shell?
Nick
On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
Nick,
Haven't heard back from you yet and was just wondering if you were able to give it a look.
I have a feeling that i may have not instantiated the block correctly in rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might be wrong. Any help or insight into this scenario would be much appreciated.
Thank you,
Adam
From: Adam Kurisko
Sent: Tuesday, January 2, 2018 2:39:16 PM
To: Nick Foster
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code for noc_block_delay_fifo.v.
------------------------- rfnoc_ce_auto_inst.v ------------------------------
/////////////////////////////////////////////////////////
// Auto-generated by gen_rfnoc_inst.py! Any changes
// in this file will be overwritten the next time
// this script is run.
/////////////////////////////////////////////////////////
localparam NUM_CE = 6;
wire [NUM_CE64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast, ce_i_tvalid, ce_i_tready;
wire [63:0] ce_debug[0:NUM_CE-1];
// Flattern CE tdata arrays
genvar k;
generate
for (k = 0; k < NUM_CE; k = k + 1) begin
assign ce_o_tdata[k] = ce_flat_o_tdata[k64+63:k64];
assign ce_flat_i_tdata[k64+63:k*64] = ce_i_tdata[k];
end
endgenerate
wire ce_clk = radio_clk;
wire ce_rst = radio_rst;
noc_block_delay_fifo inst_delay_fifo (
//.bus_clk(bus_clk), .bus_rst(bus_rst),
//.ce_clk(ce_clk), .ce_rst(ce_rst),
.clk(clk), .reset(reset), .clear(clear),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]), .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]), .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]), .i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
.o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]), .o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
.debug(ce_debug[1])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]), .i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
.o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]), .o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
.debug(ce_debug[2])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]), .i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
.o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]), .o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
.debug(ce_debug[3])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]), .i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
.o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]), .o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
.debug(ce_debug[4])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]), .i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
.o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]), .o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
.debug(ce_debug[5])
);
------------------------- noc_block_delay_fifo.v -----------------------------------
module noc_block_delay_fifo #(
parameter NOC_ID = 64'hDE7A_0000_0000_0000,
parameter MAX_LEN_LOG2=10,
parameter STR_SINK_FIFOSIZE = 11,
parameter WIDTH=64)
(
// input bus_clk, input bus_rst,
// input ce_clk, input ce_rst,
input clk, input reset, input clear,
input [MAX_LEN_LOG2-1:0] len,
input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output i_tready,
output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input o_tready,
output [WIDTH-1:0] debug
);
////////////////////////////////////////////////////////////
//
// RFNoC Shell
//
////////////////////////////////////////////////////////////
wire [31:0] set_data;
wire [7:0] set_addr;
wire set_stb;
wire [63:0] cmdout_tdata, ackin_tdata;
wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast, ackin_tvalid, ackin_tready;
wire [63:0] str_sink_tdata, str_src_tdata;
wire str_sink_tlast, str_sink_tvalid, str_sink_tready, str_src_tlast, str_src_tvalid, str_src_tready;
wire clear_tx_seqnum;
wire [15:0] next_dst_sid;
noc_shell #(
.NOC_ID(NOC_ID),
.STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
noc_shell (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid), .i_tready(i_tready),
.o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid), .o_tready(o_tready),
// Computer Engine Clock Domain
.clk(ce_clk), .reset(ce_rst),
// Control Sink
.set_data(set_data), .set_addr(set_addr), .set_stb(set_stb), .set_time(),
.rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
// Control Source
.cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast), .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
.ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast), .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
// Stream Sink
.str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast), .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
// Stream Source
.str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast), .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
// Stream IDs set by host
.src_sid(), // SID of this block
.next_dst_sid(next_dst_sid), // Next destination SID
.resp_in_dst_sid(), // Response destination SID for input stream responses / errors
.resp_out_dst_sid(), // Response destination SID for output stream responses / errors
// Misc
.vita_time(64'd0),
.clear_tx_seqnum(clear_tx_seqnum),
.debug(debug));
////////////////////////////////////////////////////////////
//
// AXI Wrapper
// Convert RFNoC Shell interface into AXI stream interface
//
////////////////////////////////////////////////////////////
wire [31:0] m_axis_data_tdata;
wire m_axis_data_tlast;
wire m_axis_data_tvalid;
wire m_axis_data_tready;
wire [31:0] s_axis_data_tdata;
wire s_axis_data_tlast;
wire s_axis_data_tvalid;
wire s_axis_data_tready;
localparam AXI_WRAPPER_BASE = 128;
axi_wrapper #(
.SIMPLE_MODE(1))
inst_axi_wrapper (
.clk(ce_clk), .reset(ce_rst),
.clear_tx_seqnum(clear_tx_seqnum),
.next_dst(next_dst_sid),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast), .i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
.o_tdata(str_src_tdata), .o_tlast(str_src_tlast), .o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
.m_axis_data_tdata(m_axis_data_tdata),
.m_axis_data_tlast(m_axis_data_tlast),
.m_axis_data_tvalid(m_axis_data_tvalid),
.m_axis_data_tready(m_axis_data_tready),
.s_axis_data_tdata(s_axis_data_tdata),
.s_axis_data_tlast(s_axis_data_tlast),
.s_axis_data_tvalid(s_axis_data_tvalid),
.s_axis_data_tready(s_axis_data_tready),
.m_axis_config_tdata(),
.m_axis_config_tlast(),
.m_axis_config_tvalid(),
.m_axis_config_tready());
////////////////////////////////////////////////////////////
//
// User code
//
////////////////////////////////////////////////////////////
reg [MAX_LEN_LOG2-1:0] full_count;
wire full = full_count == len;
wire do_op = i_tvalid & o_tready;
assign i_tready = o_tready;
assign o_tvalid = i_tvalid;
wire [WIDTH-1:0] fifo_out;
axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
(.clk(clk), .reset(reset), .clear(clear),
.i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
.o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
always @(posedge clk)
if(reset | clear)
full_count <= 0;
else
if(do_op & ~full)
full_count <= full_count + 1;
assign o_tdata = full ? fifo_out : 0;
assign o_tlast = i_tlast;
endmodule // noc_block_delay_fifo
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 2:28:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Yeah, ok. It's that multiple driver that's the problem. Can you post the rfnoc_ce_auto_inst.v you're using?
Nick
On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
Nick,
I just attempted to generate a bitstream and it failed with the following errors.
Most messages are the same as before, but take not of the errors present under "Opt Design"
Vivado Commands
General Messages
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver pin 'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]' ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver pin 'i_3847/O' ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64] has multiple drivers: e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O, e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
design_1
General Messages
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 12:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
That all looks ok to me. Does it successfully generate a bitstream?
There will virtually always be warnings, even some "critical" ones, in any sufficiently complex FPGA project.
Nick
On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko <adamkuri@outlook.commailto:adamkuri@outlook.com> wrote:
Hi Nick,
Thank you for your fast response.
I am receiving the following errors:
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Place Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Please let me know what you think.
Thank you,
Adam
From: Nick Foster <bistromath@gmail.commailto:bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 12:08:20 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
The use of Gnuradio will not affect the FPGA design at all. If you supply the errors you're seeing we might be able to help further.
Nick
On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com> wrote:
Hello all,
I am trying to design an RFNoC block using Vivado 2015.4, but I keep running into synthesis and implementation critical warnings.
Can you explain to me step by step how to instantiate a working rfnoc block WITHOUT using gnuradio? It seems that most information I am finding online include the use of gnuradio.
I believe I have my environment setup correctly and I am calling the noc_shell and axi_wrapper modules within my blocks. However, the errors I am receiving are not stemming from the user code I have written, instead the errors are coming from various design sources within the e310 fpga source code.
Please help. Thank you
-Adam
USRP-users mailing list
USRP-users@lists.ettus.commailto:USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
How do I use Jonathon's tb framework? Could you please provide the link to the manual/instructions if possible?
Also, thank you so much for helping me with this. I am still relatively new to RFNoC.
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com>
Sent: Tuesday, January 2, 2018 6:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
On a side note, this is a good time to mention that learning to simulate RFNoC blocks with the excellent and comprehensive testbench framework Jonathon put together is the single most effective way to write better RFNoC blocks, faster. This kind of error would be caught almost instantly in simulation, instead of waiting N minutes for Vivado to synthesize and implement it.
It is absolutely worth your time to start working with the testbench now, instead of deferring because your block almost works.
Nick
On Tue, Jan 2, 2018 at 3:30 PM Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>> wrote:
You're assigning to o_tready and o_tdata instead of s_axis_data_tready and s_axis_data_tdata.
Incidentally, you're also not setting the "len" input to anything in the top-level instantiation.
Nick
On Tue, Jan 2, 2018 at 3:22 PM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
Okay, I am now using ce_clk in place of clk for my user code, however now my implementation is failing with the following error:
Implementation
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0] has multiple drivers: e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O, e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q. (63 more like this)
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
What might be causing this now?
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 6:02:44 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
ce_clk is there for you to use as your compute engine clock. If you don't have a very good reason to generate and use another clock, you should use that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
I actually found that too and reverted it back to the the original bus_clk/rst and ce_bus/clk such as below:
noc_block_delay_fifo inst_delay_fifo (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]), .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]), .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
I am unsure of why I changed that in the first place, but I think it may have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk), .reset(ce_rst).
For my user code in the source file, should I just use ce_clk rather than generating a new clk?
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 5:09:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Why have you commented out bus_clk/rst and ce_clk/rst in favor of using clk/reset? And where are clk/reset/clear being generated? What is being used as bus_clk/rst in your block's noc_shell?
Nick
On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
Nick,
Haven't heard back from you yet and was just wondering if you were able to give it a look.
I have a feeling that i may have not instantiated the block correctly in rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might be wrong. Any help or insight into this scenario would be much appreciated.
Thank you,
Adam
________________________________
From: Adam Kurisko
Sent: Tuesday, January 2, 2018 2:39:16 PM
To: Nick Foster
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code for noc_block_delay_fifo.v.
------------------------- rfnoc_ce_auto_inst.v ------------------------------
/////////////////////////////////////////////////////////
// Auto-generated by gen_rfnoc_inst.py! Any changes
// in this file will be overwritten the next time
// this script is run.
/////////////////////////////////////////////////////////
localparam NUM_CE = 6;
wire [NUM_CE*64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast, ce_i_tvalid, ce_i_tready;
wire [63:0] ce_debug[0:NUM_CE-1];
// Flattern CE tdata arrays
genvar k;
generate
for (k = 0; k < NUM_CE; k = k + 1) begin
assign ce_o_tdata[k] = ce_flat_o_tdata[k*64+63:k*64];
assign ce_flat_i_tdata[k*64+63:k*64] = ce_i_tdata[k];
end
endgenerate
wire ce_clk = radio_clk;
wire ce_rst = radio_rst;
noc_block_delay_fifo inst_delay_fifo (
//.bus_clk(bus_clk), .bus_rst(bus_rst),
//.ce_clk(ce_clk), .ce_rst(ce_rst),
.clk(clk), .reset(reset), .clear(clear),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]), .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]), .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]), .i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
.o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]), .o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
.debug(ce_debug[1])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]), .i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
.o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]), .o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
.debug(ce_debug[2])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]), .i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
.o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]), .o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
.debug(ce_debug[3])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]), .i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
.o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]), .o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
.debug(ce_debug[4])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]), .i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
.o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]), .o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
.debug(ce_debug[5])
);
---------------------------------------------------------------------------------------------
------------------------- noc_block_delay_fifo.v -----------------------------------
module noc_block_delay_fifo #(
parameter NOC_ID = 64'hDE7A_0000_0000_0000,
parameter MAX_LEN_LOG2=10,
parameter STR_SINK_FIFOSIZE = 11,
parameter WIDTH=64)
(
// input bus_clk, input bus_rst,
// input ce_clk, input ce_rst,
input clk, input reset, input clear,
input [MAX_LEN_LOG2-1:0] len,
input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output i_tready,
output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input o_tready,
output [WIDTH-1:0] debug
);
////////////////////////////////////////////////////////////
//
// RFNoC Shell
//
////////////////////////////////////////////////////////////
wire [31:0] set_data;
wire [7:0] set_addr;
wire set_stb;
wire [63:0] cmdout_tdata, ackin_tdata;
wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast, ackin_tvalid, ackin_tready;
wire [63:0] str_sink_tdata, str_src_tdata;
wire str_sink_tlast, str_sink_tvalid, str_sink_tready, str_src_tlast, str_src_tvalid, str_src_tready;
wire clear_tx_seqnum;
wire [15:0] next_dst_sid;
noc_shell #(
.NOC_ID(NOC_ID),
.STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
noc_shell (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid), .i_tready(i_tready),
.o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid), .o_tready(o_tready),
// Computer Engine Clock Domain
.clk(ce_clk), .reset(ce_rst),
// Control Sink
.set_data(set_data), .set_addr(set_addr), .set_stb(set_stb), .set_time(),
.rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
// Control Source
.cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast), .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
.ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast), .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
// Stream Sink
.str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast), .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
// Stream Source
.str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast), .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
// Stream IDs set by host
.src_sid(), // SID of this block
.next_dst_sid(next_dst_sid), // Next destination SID
.resp_in_dst_sid(), // Response destination SID for input stream responses / errors
.resp_out_dst_sid(), // Response destination SID for output stream responses / errors
// Misc
.vita_time(64'd0),
.clear_tx_seqnum(clear_tx_seqnum),
.debug(debug));
////////////////////////////////////////////////////////////
//
// AXI Wrapper
// Convert RFNoC Shell interface into AXI stream interface
//
////////////////////////////////////////////////////////////
wire [31:0] m_axis_data_tdata;
wire m_axis_data_tlast;
wire m_axis_data_tvalid;
wire m_axis_data_tready;
wire [31:0] s_axis_data_tdata;
wire s_axis_data_tlast;
wire s_axis_data_tvalid;
wire s_axis_data_tready;
localparam AXI_WRAPPER_BASE = 128;
axi_wrapper #(
.SIMPLE_MODE(1))
inst_axi_wrapper (
.clk(ce_clk), .reset(ce_rst),
.clear_tx_seqnum(clear_tx_seqnum),
.next_dst(next_dst_sid),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast), .i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
.o_tdata(str_src_tdata), .o_tlast(str_src_tlast), .o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
.m_axis_data_tdata(m_axis_data_tdata),
.m_axis_data_tlast(m_axis_data_tlast),
.m_axis_data_tvalid(m_axis_data_tvalid),
.m_axis_data_tready(m_axis_data_tready),
.s_axis_data_tdata(s_axis_data_tdata),
.s_axis_data_tlast(s_axis_data_tlast),
.s_axis_data_tvalid(s_axis_data_tvalid),
.s_axis_data_tready(s_axis_data_tready),
.m_axis_config_tdata(),
.m_axis_config_tlast(),
.m_axis_config_tvalid(),
.m_axis_config_tready());
////////////////////////////////////////////////////////////
//
// User code
//
////////////////////////////////////////////////////////////
reg [MAX_LEN_LOG2-1:0] full_count;
wire full = full_count == len;
wire do_op = i_tvalid & o_tready;
assign i_tready = o_tready;
assign o_tvalid = i_tvalid;
wire [WIDTH-1:0] fifo_out;
axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
(.clk(clk), .reset(reset), .clear(clear),
.i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
.o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
always @(posedge clk)
if(reset | clear)
full_count <= 0;
else
if(do_op & ~full)
full_count <= full_count + 1;
assign o_tdata = full ? fifo_out : 0;
assign o_tlast = i_tlast;
endmodule // noc_block_delay_fifo
-------------------------------------------------------------------------------------
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 2:28:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Yeah, ok. It's that multiple driver that's the problem. Can you post the rfnoc_ce_auto_inst.v you're using?
Nick
On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
Nick,
I just attempted to generate a bitstream and it failed with the following errors.
Most messages are the same as before, but take not of the errors present under "Opt Design"
Vivado Commands
General Messages
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver pin 'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]' ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver pin 'i_3847/O' ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64] has multiple drivers: e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O, e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
design_1
General Messages
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 12:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
That all looks ok to me. Does it successfully generate a bitstream?
There will virtually always be warnings, even some "critical" ones, in any sufficiently complex FPGA project.
Nick
On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko <adamkuri@outlook.com<mailto:adamkuri@outlook.com>> wrote:
Hi Nick,
Thank you for your fast response.
I am receiving the following errors:
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin s_axi_arprot[0]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint with option '-group [get_clocks -include_generated_clocks clk0]'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Place Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths to this pin unless set_min_delay is used to constrain the paths. ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Please let me know what you think.
Thank you,
Adam
________________________________
From: Nick Foster <bistromath@gmail.com<mailto:bistromath@gmail.com>>
Sent: Tuesday, January 2, 2018 12:08:20 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
The use of Gnuradio will not affect the FPGA design at all. If you supply the errors you're seeing we might be able to help further.
Nick
On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>> wrote:
Hello all,
I am trying to design an RFNoC block using Vivado 2015.4, but I keep running into synthesis and implementation critical warnings.
Can you explain to me step by step how to instantiate a working rfnoc block WITHOUT using gnuradio? It seems that most information I am finding online include the use of gnuradio.
I believe I have my environment setup correctly and I am calling the noc_shell and axi_wrapper modules within my blocks. However, the errors I am receiving are not stemming from the user code I have written, instead the errors are coming from various design sources within the e310 fpga source code.
Please help. Thank you
-Adam
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com<mailto:USRP-users@lists.ettus.com>
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
NF
Nick Foster
Wed, Jan 3, 2018 12:57 AM
The best way to get started is to look at the existing RFNoC block
testbenches. There are enough that cover enough different configurations
that you should be able to piece a testbench together fairly quickly.
They're in the _tb subfolders of the RFNoC block library.
Nick
On Tue, Jan 2, 2018 at 3:49 PM Adam Kurisko adamkuri@outlook.com wrote:
How do I use Jonathon's tb framework? Could you please provide the link to
the manual/instructions if possible?
Also, thank you so much for helping me with this. I am still relatively
new to RFNoC.
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 6:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
On a side note, this is a good time to mention that learning to simulate
RFNoC blocks with the excellent and comprehensive testbench framework
Jonathon put together is the single most effective way to write better
RFNoC blocks, faster. This kind of error would be caught almost instantly
in simulation, instead of waiting N minutes for Vivado to synthesize and
implement it.
It is absolutely worth your time to start working with the testbench now,
instead of deferring because your block almost works.
Nick
On Tue, Jan 2, 2018 at 3:30 PM Nick Foster bistromath@gmail.com wrote:
You're assigning to o_tready and o_tdata instead of s_axis_data_tready and
s_axis_data_tdata.
Incidentally, you're also not setting the "len" input to anything in the
top-level instantiation.
Nick
On Tue, Jan 2, 2018 at 3:22 PM Adam Kurisko adamkuri@outlook.com wrote:
Okay, I am now using ce_clk in place of clk for my user code, however now
my implementation is failing with the following error:
Implementation
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0]
has multiple drivers:
e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O,
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q.
(63 more like this)
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
What might be causing this now?
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 6:02:44 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
ce_clk is there for you to use as your compute engine clock. If you don't
have a very good reason to generate and use another clock, you should use
that one.
Nick
On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko adamkuri@outlook.com wrote:
I actually found that too and reverted it back to the the original
bus_clk/rst and ce_bus/clk such as below:
noc_block_delay_fifo inst_delay_fifo (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
.i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
.o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
I am unsure of why I changed that in the first place, but I think it may
have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk),
.reset(ce_rst).
For my user code in the source file, should I just use ce_clk rather than
generating a new clk?
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 5:09:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Why have you commented out bus_clk/rst and ce_clk/rst in favor of using
clk/reset? And where are clk/reset/clear being generated? What is being
used as bus_clk/rst in your block's noc_shell?
Nick
On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko adamkuri@outlook.com wrote:
Nick,
Haven't heard back from you yet and was just wondering if you were able to
give it a look.
I have a feeling that i may have not instantiated the block correctly in
rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might
be wrong. Any help or insight into this scenario would be much appreciated.
Thank you,
Adam
From: Adam Kurisko
Sent: Tuesday, January 2, 2018 2:39:16 PM
To: Nick Foster
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code
for noc_block_delay_fifo.v.
------------------------- rfnoc_ce_auto_inst.v
/////////////////////////////////////////////////////////
// Auto-generated by gen_rfnoc_inst.py! Any changes
// in this file will be overwritten the next time
// this script is run.
/////////////////////////////////////////////////////////
localparam NUM_CE = 6;
wire [NUM_CE64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast,
ce_i_tvalid, ce_i_tready;
wire [63:0] ce_debug[0:NUM_CE-1];
// Flattern CE tdata arrays
genvar k;
generate
for (k = 0; k < NUM_CE; k = k + 1) begin
assign ce_o_tdata[k] = ce_flat_o_tdata[k64+63:k64];
assign ce_flat_i_tdata[k64+63:k*64] = ce_i_tdata[k];
end
endgenerate
wire ce_clk = radio_clk;
wire ce_rst = radio_rst;
noc_block_delay_fifo inst_delay_fifo (
//.bus_clk(bus_clk), .bus_rst(bus_rst),
//.ce_clk(ce_clk), .ce_rst(ce_rst),
.clk(clk), .reset(reset), .clear(clear),
.i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
.i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
.o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
.o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
.debug(ce_debug[0])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]),
.i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
.o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]),
.o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
.debug(ce_debug[1])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]),
.i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
.o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]),
.o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
.debug(ce_debug[2])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]),
.i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
.o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]),
.o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
.debug(ce_debug[3])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]),
.i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
.o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]),
.o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
.debug(ce_debug[4])
);
noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.ce_clk(ce_clk), .ce_rst(ce_rst),
.i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]),
.i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
.o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]),
.o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
.debug(ce_debug[5])
);
------------------------- noc_block_delay_fifo.v
module noc_block_delay_fifo #(
parameter NOC_ID = 64'hDE7A_0000_0000_0000,
parameter MAX_LEN_LOG2=10,
parameter STR_SINK_FIFOSIZE = 11,
parameter WIDTH=64)
(
// input bus_clk, input bus_rst,
// input ce_clk, input ce_rst,
input clk, input reset, input clear,
input [MAX_LEN_LOG2-1:0] len,
input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output
i_tready,
output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input
o_tready,
output [WIDTH-1:0] debug
);
////////////////////////////////////////////////////////////
//
// RFNoC Shell
//
////////////////////////////////////////////////////////////
wire [31:0] set_data;
wire [7:0] set_addr;
wire set_stb;
wire [63:0] cmdout_tdata, ackin_tdata;
wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast,
ackin_tvalid, ackin_tready;
wire [63:0] str_sink_tdata, str_src_tdata;
wire str_sink_tlast, str_sink_tvalid, str_sink_tready,
str_src_tlast, str_src_tvalid, str_src_tready;
wire clear_tx_seqnum;
wire [15:0] next_dst_sid;
noc_shell #(
.NOC_ID(NOC_ID),
.STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
noc_shell (
.bus_clk(bus_clk), .bus_rst(bus_rst),
.i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid),
.i_tready(i_tready),
.o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid),
.o_tready(o_tready),
// Computer Engine Clock Domain
.clk(ce_clk), .reset(ce_rst),
// Control Sink
.set_data(set_data), .set_addr(set_addr), .set_stb(set_stb),
.set_time(),
.rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
// Control Source
.cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast),
.cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
.ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast),
.ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
// Stream Sink
.str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast),
.str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
// Stream Source
.str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast),
.str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
// Stream IDs set by host
.src_sid(), // SID of this block
.next_dst_sid(next_dst_sid), // Next destination SID
.resp_in_dst_sid(), // Response destination SID for input
stream responses / errors
.resp_out_dst_sid(), // Response destination SID for output
stream responses / errors
// Misc
.vita_time(64'd0),
.clear_tx_seqnum(clear_tx_seqnum),
.debug(debug));
////////////////////////////////////////////////////////////
//
// AXI Wrapper
// Convert RFNoC Shell interface into AXI stream interface
//
////////////////////////////////////////////////////////////
wire [31:0] m_axis_data_tdata;
wire m_axis_data_tlast;
wire m_axis_data_tvalid;
wire m_axis_data_tready;
wire [31:0] s_axis_data_tdata;
wire s_axis_data_tlast;
wire s_axis_data_tvalid;
wire s_axis_data_tready;
localparam AXI_WRAPPER_BASE = 128;
axi_wrapper #(
.SIMPLE_MODE(1))
inst_axi_wrapper (
.clk(ce_clk), .reset(ce_rst),
.clear_tx_seqnum(clear_tx_seqnum),
.next_dst(next_dst_sid),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast),
.i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
.o_tdata(str_src_tdata), .o_tlast(str_src_tlast),
.o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
.m_axis_data_tdata(m_axis_data_tdata),
.m_axis_data_tlast(m_axis_data_tlast),
.m_axis_data_tvalid(m_axis_data_tvalid),
.m_axis_data_tready(m_axis_data_tready),
.s_axis_data_tdata(s_axis_data_tdata),
.s_axis_data_tlast(s_axis_data_tlast),
.s_axis_data_tvalid(s_axis_data_tvalid),
.s_axis_data_tready(s_axis_data_tready),
.m_axis_config_tdata(),
.m_axis_config_tlast(),
.m_axis_config_tvalid(),
.m_axis_config_tready());
////////////////////////////////////////////////////////////
//
// User code
//
////////////////////////////////////////////////////////////
reg [MAX_LEN_LOG2-1:0] full_count;
wire full = full_count == len;
wire do_op = i_tvalid & o_tready;
assign i_tready = o_tready;
assign o_tvalid = i_tvalid;
wire [WIDTH-1:0] fifo_out;
axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
(.clk(clk), .reset(reset), .clear(clear),
.i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
.o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
always @(posedge clk)
if(reset | clear)
full_count <= 0;
else
if(do_op & ~full)
full_count <= full_count + 1;
assign o_tdata = full ? fifo_out : 0;
assign o_tlast = i_tlast;
endmodule // noc_block_delay_fifo
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 2:28:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
Yeah, ok. It's that multiple driver that's the problem. Can you post the
rfnoc_ce_auto_inst.v you're using?
Nick
On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko adamkuri@outlook.com wrote:
Nick,
I just attempted to generate a bitstream and it failed with the following
errors.
Most messages are the same as before, but take not of the errors present
under "Opt Design"
Vivado Commands
General Messages
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver
pin
'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]'
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
[Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver
pin 'i_3847/O'
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64]
has multiple drivers:
e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O,
e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
[Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
design_1
General Messages
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 12:35:54 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
That all looks ok to me. Does it successfully generate a bitstream?
There will virtually always be warnings, even some "critical" ones, in any
sufficiently complex FPGA project.
Nick
On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko adamkuri@outlook.com wrote:
Hi Nick,
Thank you for your fast response.
I am receiving the following errors:
Synthesis
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_awprot[0]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[2]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[1]
[Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
s_axi_arprot[0]
Implementation
Design Initialization
[Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
will not be read for this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
will not be read for any cell of this module.
[Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
will not be read for any cell of this module.
[Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
with option '-group [get_clocks -include_generated_clocks clk0]'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
[Common 17-161] Invalid option value '#' specified for 'objects'.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
[Common 17-55] 'get_property' expects at least one object.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
Opt Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Place Design
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
[Constraints 18-514] set_max_delay: Path segmentation by forcing
'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
to this pin unless set_min_delay is used to constrain the paths.
["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
Please let me know what you think.
Thank you,
Adam
From: Nick Foster bistromath@gmail.com
Sent: Tuesday, January 2, 2018 12:08:20 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] RFNOC Block design without GNU Radio
The use of Gnuradio will not affect the FPGA design at all. If you supply
the errors you're seeing we might be able to help further.
Nick
On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <
usrp-users@lists.ettus.com> wrote:
Hello all,
I am trying to design an RFNoC block using Vivado 2015.4, but I keep
running into synthesis and implementation critical warnings.
Can you explain to me step by step how to instantiate a working rfnoc
block WITHOUT using gnuradio? It seems that most information I am finding
online include the use of gnuradio.
I believe I have my environment setup correctly and I am calling the
noc_shell and axi_wrapper modules within my blocks. However, the errors I
am receiving are not stemming from the user code I have written, instead
the errors are coming from various design sources within the e310 fpga
source code.
Please help. Thank you
-Adam
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
The best way to get started is to look at the existing RFNoC block
testbenches. There are enough that cover enough different configurations
that you should be able to piece a testbench together fairly quickly.
They're in the _tb subfolders of the RFNoC block library.
Nick
On Tue, Jan 2, 2018 at 3:49 PM Adam Kurisko <adamkuri@outlook.com> wrote:
> How do I use Jonathon's tb framework? Could you please provide the link to
> the manual/instructions if possible?
>
>
> Also, thank you so much for helping me with this. I am still relatively
> new to RFNoC.
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 6:35:54 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
> On a side note, this is a good time to mention that learning to simulate
> RFNoC blocks with the excellent and comprehensive testbench framework
> Jonathon put together is the single most effective way to write better
> RFNoC blocks, faster. This kind of error would be caught almost instantly
> in simulation, instead of waiting N minutes for Vivado to synthesize and
> implement it.
>
> It is absolutely worth your time to start working with the testbench now,
> instead of deferring because your block almost works.
>
> Nick
>
> On Tue, Jan 2, 2018 at 3:30 PM Nick Foster <bistromath@gmail.com> wrote:
>
> You're assigning to o_tready and o_tdata instead of s_axis_data_tready and
> s_axis_data_tdata.
>
> Incidentally, you're also not setting the "len" input to anything in the
> top-level instantiation.
>
> Nick
>
> On Tue, Jan 2, 2018 at 3:22 PM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Okay, I am now using ce_clk in place of clk for my user code, however now
> my implementation is failing with the following error:
>
>
> Implementation
> Opt Design
> [DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[0]
> has multiple drivers:
> e310_core0/inst_delay_fifo/sample_fifo/fifo_bram/ram/dst[0]_i_1/O,
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[0]/Q.
> (63 more like this)
>
> [Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
>
>
> What might be causing this now?
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 6:02:44 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
> ce_clk is there for you to use as your compute engine clock. If you don't
> have a very good reason to generate and use another clock, you should use
> that one.
>
> Nick
>
> On Tue, Jan 2, 2018 at 2:57 PM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> I actually found that too and reverted it back to the the original
> bus_clk/rst and ce_bus/clk such as below:
>
>
> noc_block_delay_fifo inst_delay_fifo (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
>
> .i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
> .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
> .o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
> .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
> .debug(ce_debug[0])
> );
>
>
> I am unsure of why I changed that in the first place, but I think it may
> have been originally to route the ce_clk/rst to clk/rst as in .clk(ce_clk),
> .reset(ce_rst).
>
>
> For my user code in the source file, should I just use ce_clk rather than
> generating a new clk?
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 5:09:55 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
> Why have you commented out bus_clk/rst and ce_clk/rst in favor of using
> clk/reset? And where are clk/reset/clear being generated? What is being
> used as bus_clk/rst in your block's noc_shell?
>
> Nick
>
> On Tue, Jan 2, 2018 at 12:54 PM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Nick,
>
>
> Haven't heard back from you yet and was just wondering if you were able to
> give it a look.
>
>
> I have a feeling that i may have not instantiated the block correctly in
> rfnoc_ce_auto_inst.v, so I am currently attempting to figure out what might
> be wrong. Any help or insight into this scenario would be much appreciated.
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Adam Kurisko
> *Sent:* Tuesday, January 2, 2018 2:39:16 PM
> *To:* Nick Foster
>
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> Okay, below I posted my rfnoc_ce_auto_inst.v, as well as, my source code
> for noc_block_delay_fifo.v.
>
>
> ------------------------- rfnoc_ce_auto_inst.v
> ------------------------------
>
>
> /////////////////////////////////////////////////////////
> // Auto-generated by gen_rfnoc_inst.py! Any changes
> // in this file will be overwritten the next time
> // this script is run.
> /////////////////////////////////////////////////////////
> localparam NUM_CE = 6;
> wire [NUM_CE*64-1:0] ce_flat_o_tdata, ce_flat_i_tdata;
> wire [63:0] ce_o_tdata[0:NUM_CE-1], ce_i_tdata[0:NUM_CE-1];
> wire [NUM_CE-1:0] ce_o_tlast, ce_o_tvalid, ce_o_tready, ce_i_tlast,
> ce_i_tvalid, ce_i_tready;
> wire [63:0] ce_debug[0:NUM_CE-1];
> // Flattern CE tdata arrays
> genvar k;
> generate
> for (k = 0; k < NUM_CE; k = k + 1) begin
> assign ce_o_tdata[k] = ce_flat_o_tdata[k*64+63:k*64];
> assign ce_flat_i_tdata[k*64+63:k*64] = ce_i_tdata[k];
> end
> endgenerate
> wire ce_clk = radio_clk;
> wire ce_rst = radio_rst;
>
> noc_block_delay_fifo inst_delay_fifo (
> //.bus_clk(bus_clk), .bus_rst(bus_rst),
> //.ce_clk(ce_clk), .ce_rst(ce_rst),
> .clk(clk), .reset(reset), .clear(clear),
> .i_tdata(ce_o_tdata[0]), .i_tlast(ce_o_tlast[0]),
> .i_tvalid(ce_o_tvalid[0]), .i_tready(ce_o_tready[0]),
> .o_tdata(ce_i_tdata[0]), .o_tlast(ce_i_tlast[0]),
> .o_tvalid(ce_i_tvalid[0]), .o_tready(ce_i_tready[0]),
> .debug(ce_debug[0])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[1]), .i_tlast(ce_o_tlast[1]),
> .i_tvalid(ce_o_tvalid[1]), .i_tready(ce_o_tready[1]),
> .o_tdata(ce_i_tdata[1]), .o_tlast(ce_i_tlast[1]),
> .o_tvalid(ce_i_tvalid[1]), .o_tready(ce_i_tready[1]),
> .debug(ce_debug[1])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback2 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[2]), .i_tlast(ce_o_tlast[2]),
> .i_tvalid(ce_o_tvalid[2]), .i_tready(ce_o_tready[2]),
> .o_tdata(ce_i_tdata[2]), .o_tlast(ce_i_tlast[2]),
> .o_tvalid(ce_i_tvalid[2]), .o_tready(ce_i_tready[2]),
> .debug(ce_debug[2])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback3 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[3]), .i_tlast(ce_o_tlast[3]),
> .i_tvalid(ce_o_tvalid[3]), .i_tready(ce_o_tready[3]),
> .o_tdata(ce_i_tdata[3]), .o_tlast(ce_i_tlast[3]),
> .o_tvalid(ce_i_tvalid[3]), .o_tready(ce_i_tready[3]),
> .debug(ce_debug[3])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback4 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[4]), .i_tlast(ce_o_tlast[4]),
> .i_tvalid(ce_o_tvalid[4]), .i_tready(ce_o_tready[4]),
> .o_tdata(ce_i_tdata[4]), .o_tlast(ce_i_tlast[4]),
> .o_tvalid(ce_i_tvalid[4]), .o_tready(ce_i_tready[4]),
> .debug(ce_debug[4])
> );
>
> noc_block_axi_fifo_loopback inst_axi_fifo_loopback5 (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .ce_clk(ce_clk), .ce_rst(ce_rst),
> .i_tdata(ce_o_tdata[5]), .i_tlast(ce_o_tlast[5]),
> .i_tvalid(ce_o_tvalid[5]), .i_tready(ce_o_tready[5]),
> .o_tdata(ce_i_tdata[5]), .o_tlast(ce_i_tlast[5]),
> .o_tvalid(ce_i_tvalid[5]), .o_tready(ce_i_tready[5]),
> .debug(ce_debug[5])
> );
>
>
>
> ---------------------------------------------------------------------------------------------
>
>
> ------------------------- noc_block_delay_fifo.v
> -----------------------------------
>
>
> module noc_block_delay_fifo #(
> parameter NOC_ID = 64'hDE7A_0000_0000_0000,
> parameter MAX_LEN_LOG2=10,
> parameter STR_SINK_FIFOSIZE = 11,
> parameter WIDTH=64)
> (
> // input bus_clk, input bus_rst,
> // input ce_clk, input ce_rst,
> input clk, input reset, input clear,
> input [MAX_LEN_LOG2-1:0] len,
> input [WIDTH-1:0] i_tdata, input i_tlast, input i_tvalid, output
> i_tready,
> output [WIDTH-1:0] o_tdata, output o_tlast, output o_tvalid, input
> o_tready,
> output [WIDTH-1:0] debug
> );
>
> ////////////////////////////////////////////////////////////
> //
> // RFNoC Shell
> //
> ////////////////////////////////////////////////////////////
> wire [31:0] set_data;
> wire [7:0] set_addr;
> wire set_stb;
>
> wire [63:0] cmdout_tdata, ackin_tdata;
> wire cmdout_tlast, cmdout_tvalid, cmdout_tready, ackin_tlast,
> ackin_tvalid, ackin_tready;
>
> wire [63:0] str_sink_tdata, str_src_tdata;
> wire str_sink_tlast, str_sink_tvalid, str_sink_tready,
> str_src_tlast, str_src_tvalid, str_src_tready;
>
> wire clear_tx_seqnum;
> wire [15:0] next_dst_sid;
>
> noc_shell #(
> .NOC_ID(NOC_ID),
> .STR_SINK_FIFOSIZE(STR_SINK_FIFOSIZE))
> noc_shell (
> .bus_clk(bus_clk), .bus_rst(bus_rst),
> .i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid),
> .i_tready(i_tready),
> .o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid),
> .o_tready(o_tready),
> // Computer Engine Clock Domain
> .clk(ce_clk), .reset(ce_rst),
> // Control Sink
> .set_data(set_data), .set_addr(set_addr), .set_stb(set_stb),
> .set_time(),
> .rb_stb(1'b1), .rb_data(64'd0), .rb_addr(),
> // Control Source
> .cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast),
> .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready),
> .ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast),
> .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready),
> // Stream Sink
> .str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast),
> .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready),
> // Stream Source
> .str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast),
> .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready),
> // Stream IDs set by host
> .src_sid(), // SID of this block
> .next_dst_sid(next_dst_sid), // Next destination SID
> .resp_in_dst_sid(), // Response destination SID for input
> stream responses / errors
> .resp_out_dst_sid(), // Response destination SID for output
> stream responses / errors
> // Misc
> .vita_time(64'd0),
> .clear_tx_seqnum(clear_tx_seqnum),
> .debug(debug));
>
> ////////////////////////////////////////////////////////////
> //
> // AXI Wrapper
> // Convert RFNoC Shell interface into AXI stream interface
> //
> ////////////////////////////////////////////////////////////
> wire [31:0] m_axis_data_tdata;
> wire m_axis_data_tlast;
> wire m_axis_data_tvalid;
> wire m_axis_data_tready;
>
> wire [31:0] s_axis_data_tdata;
> wire s_axis_data_tlast;
> wire s_axis_data_tvalid;
> wire s_axis_data_tready;
>
> localparam AXI_WRAPPER_BASE = 128;
>
> axi_wrapper #(
> .SIMPLE_MODE(1))
> inst_axi_wrapper (
> .clk(ce_clk), .reset(ce_rst),
> .clear_tx_seqnum(clear_tx_seqnum),
> .next_dst(next_dst_sid),
> .set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
> .i_tdata(str_sink_tdata), .i_tlast(str_sink_tlast),
> .i_tvalid(str_sink_tvalid), .i_tready(str_sink_tready),
> .o_tdata(str_src_tdata), .o_tlast(str_src_tlast),
> .o_tvalid(str_src_tvalid), .o_tready(str_src_tready),
> .m_axis_data_tdata(m_axis_data_tdata),
> .m_axis_data_tlast(m_axis_data_tlast),
> .m_axis_data_tvalid(m_axis_data_tvalid),
> .m_axis_data_tready(m_axis_data_tready),
> .s_axis_data_tdata(s_axis_data_tdata),
> .s_axis_data_tlast(s_axis_data_tlast),
> .s_axis_data_tvalid(s_axis_data_tvalid),
> .s_axis_data_tready(s_axis_data_tready),
> .m_axis_config_tdata(),
> .m_axis_config_tlast(),
> .m_axis_config_tvalid(),
> .m_axis_config_tready());
>
> ////////////////////////////////////////////////////////////
> //
> // User code
> //
> ////////////////////////////////////////////////////////////
>
> reg [MAX_LEN_LOG2-1:0] full_count;
> wire full = full_count == len;
>
> wire do_op = i_tvalid & o_tready;
>
> assign i_tready = o_tready;
> assign o_tvalid = i_tvalid;
>
> wire [WIDTH-1:0] fifo_out;
>
> axi_fifo #(.WIDTH(WIDTH), .SIZE(MAX_LEN_LOG2)) sample_fifo
> (.clk(clk), .reset(reset), .clear(clear),
> .i_tdata(i_tdata), .i_tvalid(do_op), .i_tready(),
> .o_tdata(fifo_out), .o_tvalid(), .o_tready(do_op&full));
>
> always @(posedge clk)
> if(reset | clear)
> full_count <= 0;
> else
> if(do_op & ~full)
> full_count <= full_count + 1;
>
> assign o_tdata = full ? fifo_out : 0;
> assign o_tlast = i_tlast;
>
> endmodule // noc_block_delay_fifo
>
>
>
>
> -------------------------------------------------------------------------------------
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 2:28:55 PM
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
>
> Yeah, ok. It's that multiple driver that's the problem. Can you post the
> rfnoc_ce_auto_inst.v you're using?
>
> Nick
>
> On Tue, Jan 2, 2018, 10:58 AM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Nick,
>
>
> I just attempted to generate a bitstream and it failed with the following
> errors.
>
>
> Most messages are the same as before, but take not of the errors present
> under "Opt Design"
>
>
> Vivado Commands
> General Messages
>
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
>
> Synthesis
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
> [Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 1st driver
> pin
> 'e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/dout[64]'
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/fifo/axi_fifo_2clk.v":42]
> [Synth 8-3352] multi-driven net e310_core0/ce_o_tlast[0] with 2nd driver
> pin 'i_3847/O'
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/lib/control/axi_crossbar.v":19]
>
>
> Implementation
> Design Initialization
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
> Opt Design
> [DRC 23-20] Rule violation (MDRV-1) Multiple Driver Nets - Net
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/dout[64]
> has multiple drivers:
> e310_core0/axi_crossbar/instantiate_slave_mux[2].axi_slave_mux_i/fifo_short_2clk_i_1__5/O,
> e310_core0/inst_delay_fifo/noc_shell/out_fifo/fifo_short_2clk/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.mem/goreg_dm.dout_i_reg[64]/Q.
> [Vivado_Tcl 4-78] Error(s) found during DRC. Opt_design not run.
>
> design_1
> General Messages
>
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
>
> Thank you,
>
> Adam
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 12:35:54 PM
>
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> That all looks ok to me. Does it successfully generate a bitstream?
>
> There will virtually always be warnings, even some "critical" ones, in any
> sufficiently complex FPGA project.
>
> Nick
>
> On Tue, Jan 2, 2018, 9:26 AM Adam Kurisko <adamkuri@outlook.com> wrote:
>
> Hi Nick,
>
>
> Thank you for your fast response.
>
>
> I am receiving the following errors:
>
>
> Synthesis
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_awprot[0]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[2]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[1]
> [Synth 8-4442] BlackBox module inst_axi_interconnect has unconnected pin
> s_axi_arprot[0]
>
> Implementation
> Design Initialization
> [Designutils 20-1281] Could not find module 'mig_7series_0'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/mig_7series_0/mig_7series_0/user_design/constraints/mig_7series_0.xdc
> will not be read for this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb31'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb31/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'axi_hb47'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/axi_hb47/fir_compiler_v7_2_5/constraints/fir_compiler_v7_2.xdc
> will not be read for any cell of this module.
> [Designutils 20-1280] Could not find module 'fifo_4k_2clk'. The XDC file
> /home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_4k_2clk/fifo_4k_2clk/fifo_4k_2clk_clocks.xdc
> will not be read for any cell of this module.
> [Vivado 12-1387] No valid object(s) found for set_clock_groups constraint
> with option '-group [get_clocks -include_generated_clocks clk0]'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":28]
> [Common 17-161] Invalid option value '#' specified for 'objects'.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":53]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":61]
> [Common 17-55] 'get_property' expects at least one object.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/build-ip/xc7z020clg484-1/fifo_short_2clk/fifo_short_2clk/fifo_short_2clk_clocks.xdc":63]
>
> Opt Design
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>
> Place Design
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I1' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/S' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
> [Constraints 18-514] set_max_delay: Path segmentation by forcing
> 'CAT_SCLK_MUX/I0' to be timing endpoint. There will be no hold timing paths
> to this pin unless set_min_delay is used to constrain the paths.
> ["/home/kurisko/e300/src/uhd/fpga-src/usrp3/top/e300/e310_timing.xdc":58]
>
>
> Please let me know what you think.
>
>
> Thank you,
>
> Adam
>
>
> ------------------------------
> *From:* Nick Foster <bistromath@gmail.com>
> *Sent:* Tuesday, January 2, 2018 12:08:20 PM
> *To:* Adam Kurisko
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] RFNOC Block design without GNU Radio
>
> The use of Gnuradio will not affect the FPGA design at all. If you supply
> the errors you're seeing we might be able to help further.
>
> Nick
>
> On Tue, Jan 2, 2018 at 8:57 AM Adam Kurisko via USRP-users <
> usrp-users@lists.ettus.com> wrote:
>
> Hello all,
>
>
> I am trying to design an RFNoC block using Vivado 2015.4, but I keep
> running into synthesis and implementation critical warnings.
>
>
> Can you explain to me step by step how to instantiate a working rfnoc
> block WITHOUT using gnuradio? It seems that most information I am finding
> online include the use of gnuradio.
>
>
> I believe I have my environment setup correctly and I am calling the
> noc_shell and axi_wrapper modules within my blocks. However, the errors I
> am receiving are not stemming from the user code I have written, instead
> the errors are coming from various design sources within the e310 fpga
> source code.
>
>
> Please help. Thank you
>
>
> -Adam
> _______________________________________________
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
>