Hi Luis, In my experience this is a very common FPGA error! It gets me very often. It's not specific to the GUI workflow...
You must make sure the following factors agree in the rfnoc_ce_auto_inst.v: 1. The number of CEs localparam (NUM_CE) must equal to the actual number of CEs instantiated. (Your NUM_CE = 6, while there's only 4 CEs instantiated, included those in the generate loop) 2. The ce_i_tdata and ce_o_tdata indices need to start at 0 and progress to NUM_CE - 1. (You skip indices 0 and 1) Basically, you'll get that run time error if the software tries to interact with a CE that is not actually on the AXI crossbar. I've attached a modified version of your file that should work (though untested). Hope this helps, EJ On Wed, Sep 27, 2017 at 4:24 AM, Torres Figueroa, Luis Angel via USRP-users <usrp-users@lists.ettus.com> wrote: > Hi folks, > > > > I want to modify and build FPGA images using the Vivado GUI, however I’m > still having problems with this. Here the procedure I have followed. > > > > I have first set up the environment using the command “make X310_RFNOC_HG > GUI=1” and then run the synthesis/implementation; this worked fine and I > could build a correct image and load it onto the USRP. Then I modified just > the rfnoc_ce_auto_inst_x310.v file (modification attached) in Vivado > project mode and tried to build a new image with fewer CEs, as referred in > http://lists.ettus.com/pipermail/usrp-users_lists. > ettus.com/2016-September/021709.html. However even though the building > process did not show any error, after loading it onto the USRP I got the > following error message: > > > > [INFO] [UHDlinux; GNU C++ version 4.8.4; Boost_105400; > UHD_4.0.0.rfnoc-devel-369-g1908672f] > > [INFO] [X300] X300 initialization sequence... > > [INFO] [X300] Determining maximum frame size... > > [INFO] [X300] Maximum frame size: 1472 bytes. > > [INFO] [X300] Setup basic communication... > > [INFO] [X300] Loading values from EEPROM... > > [INFO] [X300] Setup RF frontend clocking... > > [INFO] [X300] Radio 1x clock:200 > > [INFO] [X300] Detecting internal GPSDO.... > > [INFO] [GPS] Found an internal GPSDO: LC_XO, Firmware Rev 0.929a > > [ERROR] [UHD] Exception caught in safe-call. > > in virtual ctrl_iface_impl::~ctrl_iface_impl() > > at /home/ltorresf/source/uhd/host/lib/rfnoc/ctrl_iface.cpp:76 > > this->peek32(0); -> EnvironmentError: IOError: Block ctrl (CE_00_Port_30) > no response packet - AssertionError: bool(buff) > > in uint64_t ctrl_iface_impl::wait_for_ack(bool) > > at /home/ltorresf/source/uhd/host/lib/rfnoc/ctrl_iface.cpp:197 > > > > Error: EnvironmentError: IOError: Block ctrl (CE_00_Port_30) no response > packet - AssertionError: bool(buff) > > in uint64_t ctrl_iface_impl::wait_for_ack(bool) > > at /home/ltorresf/source/uhd/host/lib/rfnoc/ctrl_iface.cpp:197 > > > > Has anyone had a similar problem and know how to solve it? > > > > Best, > > Luis > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > >
///////////////////////////////////////////////////////// // 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 = 4; 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_fft inst_fft ( .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]) ); // Fill remaining crossbar ports with loopback FIFOs genvar n; generate for (n = 1; n < NUM_CE; n = n + 1) begin 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[n]), .i_tlast(ce_o_tlast[n]), .i_tvalid(ce_o_tvalid[n]), .i_tready(ce_o_tready[n]), .o_tdata(ce_i_tdata[n]), .o_tlast(ce_i_tlast[n]), .o_tvalid(ce_i_tvalid[n]), .o_tready(ce_i_tready[n]), .debug(ce_debug[n]) ); end endgenerate
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com