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 
> <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/
>  
> <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 
> <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 
> <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 <mailto: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 
> <http://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 <mailto:USRP-users@lists.ettus.com>
> http://lists.ettus.com/mailman/listinfo/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

Reply via email to