Hi Tim, My mistake on my original reply, you should use push_pkt()/pull_pkt(). You provide the header to that function (along with the payload), which is how you will be able to set EOB and a packet size with an odd number of 16-bit samples. If you really dig into sim_rfnoc_lib.svh, sim_cvita_lib.svh, and noc_block_export_io.v, you'll see that push_pkt() interfaces with noc_shell not axi_wrapper. Even though cvita_payload_t is a 64-bit wide queue, the packet size in the header is what matters. You'll also need to remove or modify line 236 in push_pkt() in sim_cvita_lib.svh, as that assertion checks if the header's packet size is a multiple of 4 bytes.
Jonathon On Wed, Aug 28, 2019 at 1:07 AM Timothy Kurp <[email protected]> wrote: > Hi Jon, > > This doesn't answer my question, perhaps I didn't convey the problem > clearly. I am trying to test the case where TLAST occurs on an odd sample, > at the same time as EOB. Push word provides access to tlast, but not EOB. > To throw eob I need to use send() which takes in pkt.payload and > pkt.header. I can manipulate eob in the metadata there. pkt.payload is of > type cvita_payload_t, which is 64 bits wide. Send() will throw tlast at the > end of the packet, which will always contain a multiple of 2 complex > samples since the payload is defined at 64 bits. That is my problem. There > is no way to throw eob and tlast on a packet that contains an odd number of > i/q samples. > > Tim > > On Tue, Aug 27, 2019 at 12:21 AM Timothy Kurp <[email protected]> > wrote: > >> Thanks! I will look at that example. >> >> Tim >> >> On Tue, Aug 27, 2019 at 12:15 AM Jonathon Pendlum < >> [email protected]> wrote: >> >>> Hi Tim, >>> >>> Look at noc_block_fft_tb.v for an example on how to operate on a 32-bit >>> sample by sample basis. Unfortunately, if you want to do sizes smaller than >>> 32-bit, you'll need to write your own version of send()/recv() or >>> push_word()/pull_word() from sim_rfnoc_lib.svh. >>> >>> Jonathon >>> >>> On Tue, Aug 27, 2019 at 1:05 PM Timothy Kurp via USRP-users < >>> [email protected]> wrote: >>> >>>> Hey Users! >>>> >>>> I think this may be a possible deficiency in the test bench >>>> architecture, or perhaps I just don't know how to instrument it properly. I >>>> have a custom block that performs a 2:1 rate change roughly, performing >>>> compression of the 16 bit I/Q from the radio down to a 16 bit word that is >>>> compressed, I won't describe how. There is a corner case if EOB occurs when >>>> there is an odd number of samples received from the radio. I have handled >>>> this by using simple mode = 0, manipulating cvita header manually and >>>> throwing tlast to make packets, with success. The noc block works, but I am >>>> struggling with how to exercise the corner case in the testbench. >>>> >>>> From what I have seen, the testbench only allows for EOB to be >>>> manipulated on sample counts that are a multiple of 2 (send() operates on >>>> 64 bits, or 2 samples of 16 bit I/Q). We have looked at the source and >>>> there doesn't seem to be an easy way to throw EOB/TLAST on odd samples.We >>>> also think it is not guaranteed that this will never happen from the radio. >>>> Thoughts? >>>> >>>> Tim >>>> _______________________________________________ >>>> USRP-users mailing list >>>> [email protected] >>>> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com >>>> >>>
_______________________________________________ USRP-users mailing list [email protected] http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
