Reply To: Configuring the AXI-Lite WSTRB

Why OSVVM™? Forums OSVVM Configuring the AXI-Lite WSTRB Reply To: Configuring the AXI-Lite WSTRB

Brad Adam


So this is an atypical use case for sure.

Usually I use the Axi4Lite VC as ‘normal’ and if, for instance, I was sending 32-bit data to some addresses I would do:

write(trans_rec, x”0000″, x”DEADBEEF”);
write(trans_rec, x”0004″, x”DEADBEEF”);
write(trans_rec, x”0008″, x”DEADBEEF”);

Where the base address is increasing by x”4″. to account for the 4 bytes of data being written to memory.

In this case the final destination for these writes increments by x”1″. So the writes look like:

write(trans_rec, x”0000″, x”DEADBEEF”); –WSTRB = 1111
write(trans_rec, x”0001″, x”DEADBEEF”); –WSTRB = 1110
write(trans_rec, x”0002″, x”DEADBEEF”); –WSTRB = 1100
write(trans_rec, x”0003″, x”DEADBEEF”); –WSTRB = 1000
write(trans_rec, x”0004″, x”DEADBEEF”); –WSTRB = 1111

But in doing this the WSTRB parameter is taking on the values listed as a comment above. The result being that only the upper bits corresponding to the WSTRB 1’s for sends to x”0001″, x”0002″, and x”0003″ are considered part of the write.

Could I ask where exactly you would need to or the WSTRB bits to so that as long as 1 bit is 1 the full send is valid? Would that need to occur within the OSVVM test bench or the VC itself?