Setting tKeep per transaction using Send

Why OSVVM™? Forums OSVVM Setting tKeep per transaction using Send

Tagged: 

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #2804
    Senthil
    Member

    Hello,

    I am trying to figure out how tKeep and tStrb values are set in OSVVM. ‘Send’ transaction uses Params to set TID, TDEST and TUSER plus TLAST. I cannot figure out how tKeep/tStrb is set when ‘Send’ is used per transaction for AXI Streams. Any ideas how this can be done?.

    Thanks

    #2805
    Jim Lewis
    Member

    Hi Senthil
    See OsvvmLibraries/Documentation/AxiStream_user_guide.pdf:

    7.3 Setting and Checking TKeep and TStrb
    On the AxiStream interface, a TStrb value that corresponds to a data value of ‘1’ indicates the value
    contains valid data. A value of ‘0’ indicates it is a filler value. A TKeep value of ‘1’ indicates the value is
    either valid data or a filler value that may not be dropped. A value of ‘0’ indicates the value may be
    dropped by the interface.

    Rather than supplying this sort of information as a value in the transaction call, the OSVVM
    AxiStreamTransmitter VC uses a data value of X”UU” to indicate the data byte is to have TStrb = ‘0’ and
    TKeep = ‘0’ and a data value of X”WW” to indicate the data byte is to have TStrb = ‘0’ and TKeep = ‘1’.
    This applies to values supplied either via the Send transaction or via the BurstFifo for a SendBurst
    transaction.

    Similarly, in the AxiStreamReceiver VC, when TKeep = ‘0’, then the corresponding data byte will be X”UU”
    and if TKeep = ‘1’ and TStrb = ‘0’, then the corresponding data byte will be X”WW”. If the transaction is
    a GetBurst, and the BurstFIFO is configured to receive bytes, and the DropUndriven VC parameter is
    TRUE, and the received byte is X”UU”, then it will be dropped (ie not put into the BurstFIFO).

    Best Regards,
    Jim

    #2806
    Senthil
    Member

    Hi Jim,

    Thanks for the response. I did look at this section 7.3 before I sent out my request. My question is how exactly do you specify these values in the Send transaction?. Do you append the TKeep/TStrb value(WW | UU) to the Data field in Send transaction?. Looked at Param field. Param deals with TID, TDEST and TUSER and TLAST. Is there an example on how this is set in OSVVM documentation?.

    Regards,
    -Senthil

    #2807
    Jim Lewis
    Member

    Hi Senthil,
    The next thing to know is that every feature in OSVVM VC is tested. That is why our test suite has so many test cases. Test cases for AxiStream are in the directory, OsvvmLibraries/AXI4/AxiStream/TestCases. A search for UU finds that test cases that test this capability:

    TbStream_ByteHandling1.vhd – tests using X”UU” and X”WW” in different positions of a send for single word transfers.
    TbStream_ByteHandlingBurst1.vhd – tests using X”UU” and X”WW” in different positions of a SendBurst for burst transfers.

    In short, it is nothing more than putting the X”UU” or X”WW” into the appropriate position:

    Send(TRec, X”WW12UU34″) ; — A 32 bit word with TStrb = “0101” and TKeep = “1101”

    Best Regards,
    Jim

    #2808
    Senthil
    Member

    Hi Jim,

    Appreciate it!. I did not look at this particular test. Searched for TKeep/TStrb. I will have a look at the test that you mentioned.

    Regards,
    -Senthil

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.