I looked at the generated DDC/DUC code again and that looks like a typo in the YAML. It should really be `2**MTU`, which is 1024, instead of just `MTU` (which is 10). So if you want a larger buffer on your block, try 2**MTU or some other power of 2.
Wade On Sat, Feb 26, 2022 at 5:01 PM Wade Fife <wade.f...@ettus.com> wrote: > Regarding the overflows, that's the kind of thing I would simulate to > understand what's happening. My guess is the zero insertion is blocking the > flow of data, and the radio overflows because of that. Like you said, a > bigger buffer should help. > > Hmm, I was just glancing at the code generated by the RFNoC image builder > and the way it's setting the buffers doesn't look right, so perhaps you're > not getting the buffering you expect. Let me look into that and get back to > you. > > As for fitting, I would start by removing everything you don't need from > the YAML description. Do you need all 4 radio channels? Do you need RX and > TX? Do you need 4 channels of replay? Do you need the DDC and DUC (if you > only want to run at the master clock rate then you don't). Strip out all > the blocks you don't need and all their stream endpoints. If it still > doesn't fit, then I would look at reducing the endpoint buffer sizes. The > default images usually make them as large as we could fit, but you might be > able to get away with smaller buffers, which really only affects TX > streaming performance. > > Wade > > > > On Fri, Feb 25, 2022 at 4:19 PM Rob Kossler <rkoss...@nd.edu> wrote: > >> I was able to build successfully with the 'dram' clock as the 'ce' clock >> for my rfnoc block. But, I didn't get the performance I was expecting. With >> my rfnoc graph of "Radio->DDC->custom-zero-padded-fft-block", the Radio had >> overflows when running at 125e6 but worked well when running 62.5e6. >> >> My current thought is that maybe I don't have enough input buffering in >> my custom rfnoc block. I initially had my payload input and output buffer >> sizes (defined in the block def yaml) set to 'MTU' which is how the DDC >> block does it. But, when my build failed (attempting to add 4 of my custom >> blocks), I changed this from 'MTU' to '32'. Turns out that this didn't help >> my build succeed, but I did get a successful build after removing all >> Replay blocks / SEPs. So I am now trying to re-build with the 'MTU' setting >> with the hope that the increased buffering will allow me to run at 125e6 >> sample rate. >> >> But, apart from more buffering, is there perhaps a different explanation >> why my custom FFT block clocked at 300 MHz (with 50% insertion of zeros) is >> not keeping up? >> >> On a semi-related topic, I'm wondering if anyone has suggestions >> regarding my build failures. The build error indicates that I needed more >> slices than are available (out of 69350 total, 47879 are available, but I >> needed 49414). If I look at the build report for the default Ettus N310 XG >> image (see snippet below), it looks like there is not much availability for >> extra rfnoc blocks (96.44% util%). And, in my experience, this is where my >> builds usually fail. I am wondering what I can do in the design of my >> custom blocks (or in the build parameters of the N310) to achieve >> successful builds - specifically related to this slice utilization. Any >> suggestions welcome. >> Thanks. >> Rob >> >> // From build report of default Ettus N310 XG image >> 2. Slice Logic Distribution >> --------------------------- >> >> >> +--------------------------------------------+--------+-----------+-------+ >> | Site Type | Used | Available | Util% >> | >> >> +--------------------------------------------+--------+-----------+-------+ >> | Slice | 66878 | 69350 | 96.44 >> | >> | SLICEL | 40816 | | >> | >> | SLICEM | 26062 | | >> | >> >> On Thu, Feb 24, 2022 at 9:25 PM Rob Kossler <rkoss...@nd.edu> wrote: >> >>> Thanks for the suggestions Wade. I will first try the low-hanging fruit >>> of using the 300MHz DRAM clock. Fingers crossed! >>> Rob >>> >>> On Thu, Feb 24, 2022 at 6:43 PM Wade Fife <wade.f...@ettus.com> wrote: >>> >>>> Hi Rob, >>>> >>>> RFNoC doesn't support generating user clocks for you yet (the range >>>> value is not currently used). You could use the `dram` clock on N310 and >>>> connect that to the `ce` inputs of your blocks. That should be about 300 >>>> MHz. The `rfnoc_chdr` clock is 200 MHz on N310. >>>> >>>> If it won't close timing with the dram clock, and you want something >>>> slower, then you can modify the HDL to add the clock you want. Take a look >>>> at n3xx_clocking.v. You could probably modify the misc_clock_gen IP block >>>> to add a clock closer to 260 MHz. You'd then have to route that clock into >>>> n3xx_core then rfnoc_image_core, and add the new clock to n310_bsp.yml for >>>> the rfnoc_image_builder to generate code to use it. Adding custom clocks is >>>> a pretty manual process at the moment. >>>> >>>> Wade >>>> >>>> On Wed, Feb 23, 2022 at 10:15 PM Rob Kossler <rkoss...@nd.edu> wrote: >>>> >>>>> Hi, >>>>> I have a signal processing block that includes a zero-padded FFT (50% >>>>> zeros) that I built for the N310. Because of the throttling that occurs >>>>> during insertion of zeros, I expect that my FFT will need to be clocked at >>>>> a bit more than twice the max sample rate. So, since I want to operate the >>>>> N310 at the highest sample rate of 125 MS/s, it seems that my FFT will >>>>> need >>>>> to be clocked >= 260 MHz. I'm wondering how to do it. >>>>> >>>>> I've looked at the RFNoC specification and my block is already set up >>>>> to use the "CE" clock for both control & data. In the rfnoc spec, it >>>>> mentions that I can enter a "range" for my clock in the block definition >>>>> yaml. But, I also see that in the end, the top N310 yaml will require me >>>>> to >>>>> map a _device clock to my block's CE clock port. >>>>> >>>>> It's not clear to me how this works. Does it help to provide a range >>>>> in the block definition yaml? Or, perhaps it is even necessary? How do I >>>>> specify in the top N310 yaml which device clock will map to my blocks CE >>>>> clock port? It seems to me that I am missing a step (defining a clock >>>>> somewhere?). >>>>> >>>>> I am pretty much a novice, so I expect that this is the cause of my >>>>> confusion. I am even struggling to figure out what the current clock rates >>>>> are (rfnoc_ctrl, rfnoc_chdr, ce, etc) and where they are defined. Any help >>>>> would be appreciated. >>>>> Rob >>>>> _______________________________________________ >>>>> USRP-users mailing list -- usrp-users@lists.ettus.com >>>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com >>>>> >>>>
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com