Adam, In the rfnoc_ce_auto_inst.v you posted, it looks like the NUM_CE (6) does not match your actual number of CEs (2):
``` localparam NUM_CE = 6; // Must be no more than 14 (2 ports taken by radio core & PS-PL DMA). 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_axi_fifo_loopback inst_noc_block_axi_fifo_loopback ( .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])); noc_block_delay_fifo inst_noc_block_delay_fifo ( .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])); ``` I might recommend trying to use the uhd_image_builder.py or uhd_image_builder_gui.py applications as described in the tutorial here: https://kb.ettus.com/Getting_Started_with_RFNoC_Development EJ On Wed, Jan 24, 2018 at 12:09 PM, Adam Kurisko <adamk...@outlook.com> wrote: > Hi again EJ and Martin, > > > With the fresh install, I am still receiving the same error with a few > extra error lines now. The error is shown below. > > > root@ettus-e3xx-sg1:~/localinstall/usr/share/uhd/images# uhd_usrp_probe > --args="fpga=usrp_e310_fpga_RFNOC.bit"[INFO] [UHDlinux; GNU C++ version > 4.9.2; Boost_105700; UHD_4.0.0.rfnoc-devel-409-gec9138eb] > [INFO] [E300] Loading FPGA image: usrp_e310_fpga_RFNOC.bit... > [INFO] [E300] FPGA image loaded > [INFO] [E300] Initializing core control (global registers)... > > [INFO] [E300] Performing register loopback test... > [INFO] [E300] Register loopback test passed > [INFO] [RFNOC RADIO] Register loopback test passed > [INFO] [RFNOC RADIO] Register loopback test passed > [ERROR] [UHD] Exception caught in safe-call. > in virtual ctrl_iface_impl::~ctrl_iface_impl() > at /home/kurisko/e310/src/uhd/host/lib/rfnoc/ctrl_iface.cpp:76 > this->peek32(0); -> EnvironmentError: IOError: Block ctrl (CE_03_Port_40) > no response packet - AssertionError: bool(buff) > in uint64_t ctrl_iface_impl::wait_for_ack(bool) > at /home/kurisko/e310/src/uhd/host/lib/rfnoc/ctrl_iface.cpp:197 > > terminate called after throwing an instance of 'uhd::lookup_error' > what(): LookupError: Path not found in tree: /mboards/0/tx_dsps/0 > Aborted > root@ettus-e3xx-sg1:~/localinstall/usr/share/uhd/images# > > > For reference, the rfnoc_ce_aut_inst.v file used to create the bitstream > is shown below > > > > localparam NUM_CE = 6; // Must be no more than 14 (2 ports taken by > radio core & PS-PL DMA). > > 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_axi_fifo_loopback inst_noc_block_axi_fifo_loopback ( > .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])); > > noc_block_delay_fifo inst_noc_block_delay_fifo ( > .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])); > > Also this on a fresh install of the most recent UHD rfnoc-devel branch. > No xml was included on this build of it so I have ruled out the xml as > causing the issue. > > Does this mean it may be my user code for the block itself? > I thought, since it is synthesizeable and generates a bitstream, that it > would not be my user code, but I will include the code for my custom block > below. > Does it look like everything is wired up correctly? > > <------------------------------------------------ noc_block_delay_fifo.v > -------------------------------------> > > module noc_block_delay_fifo #( > parameter NOC_ID = 64'hDE7A_0000_0000_0000, > parameter STR_SINK_FIFOSIZE = 11, > parameter MAX_LEN_LOG2 = 16, > parameter WIDTH = 32, > parameter DELAY_VAL = 0) > ( > input bus_clk, input bus_rst, > input ce_clk, input ce_rst, > input [63:0] i_tdata, input i_tlast, input i_tvalid, output i_tready, > output [63:0] o_tdata, output o_tlast, output o_tvalid, input o_tready, > output [63:0] debug > ); > > //////////////////////////////////////////////////////////// > // > // RFNoC Shell > // > //////////////////////////////////////////////////////////// > wire [31:0] set_data; > wire [7:0] set_addr; > wire set_stb; > reg [63:0] rb_data; > wire [7:0] rb_addr; > > 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 [15:0] src_sid; > wire [15:0] next_dst_sid, resp_out_dst_sid; > wire [15:0] resp_in_dst_sid; > > wire clear_tx_seqnum; > > 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), > .rb_stb(1'b1), .rb_data(rb_data), .rb_addr(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(src_sid), // SID of this block > .next_dst_sid(next_dst_sid), // Next destination SID > .resp_in_dst_sid(resp_in_dst_sid), // Response destination SID for > input stream responses / errors > .resp_out_dst_sid(resp_out_dst_sid), // Response destination SID for > output stream responses / errors > // Misc > .vita_time('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; > > axi_wrapper #( > .SIMPLE_MODE(1)) > 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), > .m_axis_data_tuser(), > .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), > .s_axis_data_tuser(), > .m_axis_config_tdata(), > .m_axis_config_tlast(), > .m_axis_config_tvalid(), > .m_axis_config_tready(), > .m_axis_pkt_len_tdata(), > .m_axis_pkt_len_tvalid(), > .m_axis_pkt_len_tready()); > > //////////////////////////////////////////////////////////// > // > // User code > // > //////////////////////////////////////////////////////////// > // NoC Shell registers 0 - 127, > // User register address space starts at 128 > localparam SR_USER_REG_BASE = 128; > > // Control Source Unused > assign cmdout_tdata = 64'd0; > assign cmdout_tlast = 1'b0; > assign cmdout_tvalid = 1'b0; > assign ackin_tready = 1'b1; > > // Settings registers > // > // - The settings register bus is a simple strobed interface. > // - Transactions include both a write and a readback. > // - The write occurs when set_stb is asserted. > // The settings register with the address matching set_addr will > // be loaded with the data on set_data. > // - Readback occurs when rb_stb is asserted. The read back strobe > // must assert at least one clock cycle after set_stb asserts / > // rb_stb is ignored if asserted on the same clock cycle of set_stb. > // Example valid and invalid timing: > // __ __ __ __ > // clk __| |__| |__| |__| |__ > // _____ > // set_stb ___| |________________ > // _____ > // rb_stb _________| |__________ (Valid) > // _____ > // rb_stb _______________| |____ (Valid) > // __________________________ > // rb_stb (Valid if readback data is a > constant) > // _____ > // rb_stb ___| |________________ (Invalid / ignored, same > cycle as set_stb) > // > localparam [7:0] SR_DELAY = SR_USER_REG_BASE; > localparam [7:0] RB_DELAY = 0; > > wire [15:0] delay; > setting_reg #( > .my_addr(SR_DELAY), .awidth(8), .width(16)) > sr_delay ( > .clk(ce_clk), .rst(ce_rst), > .strobe(set_stb), .addr(set_addr), .in(set_data), .out(delay), > .changed()); > > // Readback registers > // rb_stb set to 1'b1 on NoC Shell > always @(posedge ce_clk) begin > case(rb_addr) > RB_DELAY : rb_data <= {32'd0, 16'd0, delay}; > default : rb_data <= 64'h0BADC0DE0BADC0DE; > endcase > end > > //---------------------------------------------------------- > ----------------------------------------- > > //----------------------------------// > // // > // DELAY USER CODE // > // // > //----------------------------------// > > delay_block #(.WIDTH(WIDTH), .MAX_LEN_LOG2(MAX_LEN_LOG2), > .DELAY_VAL(DELAY_VAL)) delay_block1 > ( .clk(ce_clk), .reset(ce_rst), > .delay(delay), > .i_tdata(m_axis_data_tdata), .i_tlast(m_axis_data_tlast), > .i_tvalid(m_axis_data_tvalid), .i_tready(m_axis_data_tready), > .o_tdata(s_axis_data_tdata), .o_tlast(s_axis_data_tlast), > .o_tvalid(s_axis_data_tvalid), .o_tready(s_axis_data_tready)); > > endmodule > > <----------------------------------------------------------- > ------------------------------------------> > > > <----------------------------------------------- delay_block.v > ---------------------------------------------------------> > > > module delay_block > #( parameter WIDTH = 16, > parameter MAX_LEN_LOG2 = 10, > parameter DELAY_VAL = 0) > > ( input clk, input reset, > input [MAX_LEN_LOG2-1:0] delay, > 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 > ); > > reg [15:0] full_count = 3; > wire full = (full_count >= delay) & > new_tvalid; > wire [WIDTH-1:0] new_tdata; > wire new_tlast, > new_tvalid, > new_tready; > > axi_fifo #(.WIDTH(WIDTH+1), .SIZE(MAX_LEN_LOG2)) fifo_delay > ( .clk(clk), .reset(reset), .clear(clear), > .i_tdata({i_tlast, i_tdata}), .i_tvalid(i_tvalid), > .i_tready(i_tready), > .o_tdata({new_tlast, new_tdata}), .o_tvalid(new_tvalid), > .o_tready(new_tready)); > > > > > always @(posedge clk) > begin > if(reset) begin > full_count <= 3; > end > else begin > if(~full & new_tvalid & o_tready) begin > full_count <= full_count + 1; > end > end > end > > assign o_tdata = full ? new_tdata : DELAY_VAL; > assign o_tlast = full ? new_tlast : 1'b0; > assign o_tvalid = full ? new_tvalid : 1'b0; > assign new_tready = full ? o_tready : 1'b0; > > endmodule > > > <----------------------------------------------------------- > -----------------------------------------------> > > > Please let me know what you think. Thanks again. > > > Sincerely, > > Adam Kurisko > > > ------------------------------ > *From:* Adam Kurisko > *Sent:* Wednesday, January 24, 2018 11:26:00 AM > *To:* EJ Kreinar; Martin Braun > *Cc:* USRP-users@lists.ettus.com > > *Subject:* Re: [USRP-users] [RFNoC] uhd_usrp_probe fails and throws > uhd::lookup_error > > > Hi EJ and Martin, > > > Thank you for your responses. > > > Martin: I will try to generate a bitstream without the .xml to see if my > block is at least being recognized as Block_0 and create an xml from that > point. I had made an xml which was used when I generated my error. I used > the fir_filter xml as reference for my blocks xml, but I was suspicious > that it might be the file causing the problem initially. > > > EJ: This is the rfnoc_ce_auto_inst_e310.v that I used when I generated my > error. > > > localparam NUM_CE = 1; > 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), > .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]) > ); > > > Since my initial problem, I have fresh installed UHD and kept the > rfnoc_ce_auto_inst_e310.v and I only modified the last inst of the file > which by default I believe was the fir_filter. This is my current > rfnoc_ce_aut_inst_e310.v file: > > > localparam NUM_CE = 6; // Must be no more than 14 (2 ports taken by > radio core & PS-PL DMA). > > 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_axi_fifo_loopback inst_noc_block_axi_fifo_loopback ( > .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])); > > noc_block_window inst_noc_block_window ( > .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_fft inst_noc_block_fft ( > .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_fosphor #(.MTU(12) /* Increase output FIFO size to smooth out > bursts */) > inst_noc_block_fosphor ( > .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_loopback2 ( > .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_delay_fifo inst_noc_block_delay_fifo ( > .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])); > > > Thank you again for all your help. I am very close to have my first custom > block up and running and I appreciate you taking the time to help me. > > > Sincerely, > > Adam Kurisko > ------------------------------ > *From:* EJ Kreinar <ejkrei...@gmail.com> > *Sent:* Wednesday, January 24, 2018 6:09:05 AM > *To:* Martin Braun > *Cc:* Adam Kurisko; USRP-users@lists.ettus.com > *Subject:* Re: [USRP-users] [RFNoC] uhd_usrp_probe fails and throws > uhd::lookup_error > > Hi Adam, > > Please copy/paste your rfnoc_ce_auto_inst.v > > In my experience, these errors are usually due to something wrong in this > file. Probably causes are that NUM_CE != the actual number of CEs. Or that > when you added a new CE, you didn't increment the index of the wires, so > two blocks are on the same index. Or, if you've tried to instantiate a DDC > with NUM_CHAN=1, but did not change the NOC_BLOCK_ID to reflect only one > channel > > Of course, could be something else-- those are just the problems I've > personally found (multiple times) that throw similar errors. > > EJ > > > > On Jan 23, 2018 6:18 PM, "Martin Braun via USRP-users" < > usrp-users@lists.ettus.com> wrote: > > On 01/23/2018 03:01 PM, Adam Kurisko wrote: > > I am unsure if I had edited the property subtrees, however I decided to > > fresh install UHD to see if that might fix the problem. I will let you > > know if I experience similar errors. > > > > > > In the mean time while it is installing, could you explain the process > > for implementing the block using UHD without GNU Radio. > > > > > > I have my block made and it simulates/synths/impls in Vivado. > > > > I changed the Makefile.srcs in ..lib/rfnoc to include my custom block. > > > > I changed rfnoc_ce_auto_inst.v in ..top/e300 to instantiate my block. > > > > I run 'make E310_RFNOC' to generate a bitstream. > > > > I then secure copy the generated bitstream into the correct images > > directory on my board > > ...this all looks good... > > > > and finally run 'uhd_usrp_probe' with my custom .bit file. > > ...and this should now list your block. Does it? > > > Does all that seem correct or am I missing a vital step in there > somewhere? > > > > I read in one of your slide shows that I may also need to create a .xml > > file, but is this solely for GNU Radio or do I need to do this for UHD > > as well? > > If you change nothing on the software side, your block will be listed as > "Block_0". You need one XML for UHD and GNU Radio each (so 2 total if > you want to use GNU Radio, but at least 1). > > You can start by literally hacking up an XML file and copying it into > the XML directory, on the E310 it's under > /usr/share/uhd/rfnoc/blocks/*.xml. Also check out our knowledge base > articles on RFNoC block writing. > > Cheers, > Martin > > > > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > >
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com