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

Reply via email to