Setting tKeep per transaction using Send
Why OSVVM™? › Forums › OSVVM › Setting tKeep per transaction using Send
Tagged: osvvm
- This topic has 4 replies, 2 voices, and was last updated 15 hours, 39 minutes ago by
Senthil.
-
AuthorPosts
-
November 17, 2025 at 20:46 #2804
Senthil
MemberHello,
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
November 17, 2025 at 22:03 #2805
Jim LewisMemberHi 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,
JimNovember 17, 2025 at 23:40 #2806Senthil
MemberHi 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,
-SenthilNovember 18, 2025 at 00:09 #2807
Jim LewisMemberHi 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,
JimNovember 18, 2025 at 00:43 #2808Senthil
MemberHi 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 -
AuthorPosts
- You must be logged in to reply to this topic.