I see now. Simulation is a bit different than building images. To prevent building every IP for every simulation, the exact IP you want to use needs to be added to the test bench Makefile. It is pretty easy. Add the following to the test bench Makefile in rfnoc/testbenches/<your block>/Makefile:
LIB_IP_DIR = $(BASE_DIR)/../lib/ip include $(LIB_IP_DIR)/axi_fft/Makefile.inc DESIGN_SRCS += $(abspath \ $(LIB_IP_AXI_FFT_SRCS) \ ) If you are curious where this comes from, take a look at usrp3/lib/rfnoc/noc_block_fft_tb/Makefile in the FPGA repo. I can see how it is confusing and it needs to be documented somewhere. As for using your own version of the axi_fft IP, you will need to copy it locally to the IP directory. It is usually easiest to import or create the IP in Vivado, configure as needed, generate the IP output products, and copy over the .xci file. Jonathon On Sat, Sep 15, 2018 at 3:32 AM Rich Maes <r...@idearockets.com> wrote: > I did follow that Getting Started guide and produce the text book > rfnoc_tutorial OOT module and simulated it without issue. > > Then next thing I did was to create a second OOT module and name it > nd_fft. So the same generic OOT module with a different name. That too > simulated without issue. > > So now what I wanted to do was to take the stock FFT and place it into my > new module. So I took the RTL and the test. I then tried to simulate and > the error that came back was that module axi_fft was unresolved. So the > top level model did build, but the underlying IP was not in the search > path. > > Based on what you are saying, I kind of expected that the axi_fft should > have been in the default search path already. Would you say that was > unexpected behavior for the standard OOT module? > > I will look at your bullets below and provide feedback tonight. I see > what you are saying about modifying the .xci. Am I supposed to copy the > axi_fft IP to this ejk43/rfnoc-ootexample path to make it local? I am > guessing that bullet 2, could be a path back to the original IP so I don’t > have to copy it. > > > > On Sep 14, 2018, at 8:20 AM, Jon Pendlum <jon.pend...@gmail.com> wrote: > > Hi Rich, > > The standard Ettus in-tree Vivado IP, which includes the axi_fft, is > automatically included. You do not need to do anything. Have you went > through the RFNoC getting started guide ( > https://kb.ettus.com/Getting_Started_with_RFNoC_Development)? I think > that will help you understand the FPGA build process. The key concept to > understand is that building the FPGA is separate from building your OOT > module. The FPGA build Makefile exists in the Ettus FPGA repo and pulls in > files from that repo. That is why you do not need to include any Ettus > in-tree files, the Makefile will include them automatically. > > When you get to the point of adding your custom IP, you need to do these > things: > 1) Use this IP as a template on how to add your IP: > https://github.com/ejk43/rfnoc-ootexample/blob/master/rfnoc/ip/complex_to_magphase_oot/. > It is usually as simple as adding your .xci file and some renaming. > 2) Add your IP to this file: > https://github.com/ejk43/rfnoc-ootexample/blob/master/rfnoc/ip/Makefile.inc > 3) Make sure you have this line: > https://github.com/ejk43/rfnoc-ootexample/blob/master/rfnoc/Makefile.inc#L6 > 4) Use uhd_image_build_gui to import your OOT module and build your > bitstream. See the RFNoC getting started guide. > > > Jonathon > > On Fri, Sep 14, 2018 at 10:40 PM Rich Maes via USRP-users < > usrp-users@lists.ettus.com> wrote: > >> So I have looked at the ejk43/rfnoc-ootexample and I have been trying to >> apply what I think I am seeing. Truth in advertising, I an FPGA engineer, >> and I don’t usually get into Makefiles or CMakeLists.txt very much. >> >> I think the correct thing to do is to modify the CMakeLists.txt so that >> when cmake is run, the the new Makefiles are generated with the correct >> content. >> >> All I want to do, I believe right now is pull in the axi_fft IP. My next >> will be to follow the advice of one of the respondents and build the IP >> local to the OOT module, but I am still not certain how I am suppose to >> reference it correctly. Just trying to get a list of what needs to be >> touched to get the standard OOT to look an IP directory. >> >> What I have done is this: >> >> modify this line to include FFT >> >> set(GR_REQUIRED_COMPONENTS RUNTIME FFT) >> >> >> and then later, I included this chunk in my >> ~/rfnoc/src/rfnoc-nd_fft/CMakeLists.txt file >> >> ######################################################################## >> # Setup CPack components >> ######################################################################## >> include(GrPackage) >> CPACK_SET(CPACK_COMPONENT_GROUP_FFT_DESCRIPTION "GNU Radio FFT Blocks") >> >> CPACK_COMPONENT("fft_runtime" >> GROUP "FFT" >> DISPLAY_NAME "Runtime" >> DESCRIPTION "Runtime" >> DEPENDS "runtime_runtime" >> ) >> >> CPACK_COMPONENT("fft_devel" >> GROUP "FFT" >> DISPLAY_NAME "Development" >> DESCRIPTION "C++ headers, package config, import libraries" >> DEPENDS "runtime_devel" >> ) >> >> CPACK_COMPONENT("fft_python" >> GROUP "FFT" >> DISPLAY_NAME "Python" >> DESCRIPTION "Python modules for runtime; GRC xml files" >> DEPENDS "runtime_python;fft_runtime" >> ) >> >> CPACK_COMPONENT("fft_swig" >> GROUP "FFT" >> DISPLAY_NAME "SWIG" >> DESCRIPTION "SWIG development .i files" >> DEPENDS "runtime_swig;fft_python;fft_devel" >> ) >> >> ######################################################################## >> # Add subdirectories >> ######################################################################## >> add_subdirectory(include/gnuradio/fft) >> add_subdirectory(lib) >> if(ENABLE_PYTHON) >> add_subdirectory(swig) >> add_subdirectory(python/fft) >> add_subdirectory(grc) >> endif(ENABLE_PYTHON) >> add_subdirectory(docs) >> >> ######################################################################## >> # Create Pkg Config File >> ######################################################################## >> configure_file( >> ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio-fft.pc.in >> ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-fft.pc >> @ONLY) >> >> install( >> FILES ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-fft.pc >> DESTINATION ${GR_LIBRARY_DIR}/pkgconfig >> COMPONENT "fft_devel" >> ) >> >> >> >> >> I also added this because cmake complained that it could not find >> GnuradioConfig.cmake >> >> install(FILES ../../../../src/gnuradio/GnuradioConfig.cmake >> DESTINATION ${CMAKE_MODULES_DIR}/gnu_radio >> ) >> >> >> >> >> _______________________________________________ >> 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