Hi Cédric, I'll attempt to answer your questions. I'm more familiar with the hardware/HDL side of things.
1. The default clock for rfnoc blocks is rfnoc_chdr_clk and this clock is always present. You can use this clock for everything, unless you need a different clock (e.g., a faster clock to increase DSP throughput). I suggest not using different clocks unless you need to. I don't know why keep_one_in_n uses ce_clk, but any block can use it if the writer of that block wants to. 2. When using AXI-Stream Data the length is automatically calculated, assuming SIDEBAND_AT_END is set to true (which is the default). If you drop all samples, then you don't put anything into the NoC Shell, so no packet would be generated. 3. I'm not familiar with how keep_one_in_n works, but the timestamp is just a count of the samples. So if you wanted to generate a new timestamp, you would just keep a count of the samples. The timestamp for a packet should be the timestamp for the first sample of the packet. 4. The info_fifo_depth effectively controls how many packets can be buffered in the NoC shell at a time. Normally there are only a couple of packets buffered at a time, so it doesn't need to be very big. This FIFO is often implemented using SRLs, so I often use 32, which is the maximum SRL size. 5. Yes. In other words, NIPC sets the width of the tdata port. It's always NIPC items wide. 6. I believe that sw_iface isn't implemented yet and I don't think this key is currently required. I think C++ refers to the RFNoC C++ API and nocsript refers to NoC-Script (a concept from UHD 3.x but not yet implemented in UDH 4). 7. This also isn't implemented yet, but I believe it's a way of identifying the type of metadata. 8. Correct, the "registers" and "properties" sections aren't implemented yet. These sections will allow the tools to generate hardware registers and software properties automatically in the future, making new blocks easier to create. 9. Parts of it are implemented. You can find rfnocmodtool in gr-ettus (see the recent RFNoC 4 Workshop <https://youtu.be/M9ntwQie9vs?t=2315> video for a demo). The rfnoc_create_verilog tool (in UHD) does the hardware generation part (generating the HDL and testbench templates; see the Getting Started document you referred to for an example of using that tool directly). I hope this helps! Thanks, Wade On Wed, Dec 23, 2020 at 12:37 AM Cédric Hannotier via USRP-users < usrp-users@lists.ettus.com> wrote: > Dear all, > > I am reading the RFNoC Specification PDF (version 0.7), > and I have several questions. Any help is appreciated. > > 1. In AXI-Stream Data (2.3.3.3), axis_data_clk is provided. > However, some blocks use ce_clk instead. Why? > In [1] it is stated: > "Many other blocks require the ce (Compute Engine) clock, > which is used for the block's internal DSP". > However, I cannot see any "internal DSP" in rfnoc_keep_one_in_n.v. > In which case should I prefer ce_clk? > > 2. In AXI-Stream Data (2.3.3.3), I have no control over CHDR header. > What happens when the block drop samples (e.g. keep_one_in_n.v)? > Is the NoC Shell updating header field automatically (eg. length field)? > 2bis. What happends if I drop all samples of a packet? > > 3.In rfnoc_keep_one_in_n.v, it seems that it drops the timestamp if > the sample to keep is not the first sample in the packet. > Is the timestamp recomputed afterwards? > If not, how could I compute the timestamp instead of dropping it? > > 4. In NoC Shell Generation Options (2.3.3.4), > there are some fifo parameters (e.g. info_fifo_depth). > What are their purposes? > How should I choose a depth value? > > 5. In AXI-Stream Payload Context (2.3.3.2), it is stated: > "NIPC: The number of items delivered per cycle. > NIPC must 1 or a larger power of 2, such that ITEM_W * NIPC = CHDR_W." > Does it also apply for AXI-Stream Data (2.3.3.3)? > If not, what is the rule for that Data-Plane ? > > In Input Format (4.2), the following keys are not documented: > - sw_iface (nocscript, c++) > - mdata_sig (~, MD5 sum) > > 6. Is the nocscript meaning we have to rely on the UHD C++ RFNoC API to > interact with blocks and the c++ meaning we implement a custom C++ API? > > 7. What is mdata_sig? > > 8. Keys "registers" and "properties" seem unused, should I use them? > > 9. In Figure 16 (4.2), I was unable to find how to use RFNoC ModTool > with a YAML file. Is it not implemented yet? > > [1] > https://kb.ettus.com/Getting_Started_with_RFNoC_in_UHD_4.0#Understanding_the_RFNoC_Image_YAML_File > > Kind regards > > Cédric Hannotier > > _______________________________________________ > 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