Can you randomize the AXI-stream VALID and READY

Hi,

Is it possible to randomize the VALID (in case of a master VVC) signal?
And the same for the READY (in case of a slave VVC) signal?

Rgds,
Eric

I found in the axistream bfm documenation on page 3 the values what seems for randomization

valid_low_at_word_num
valid_low_multiple_random_prob
valid_low_duration
valid_low_max_random_duration

and

ready_low_at_word_num
ready_low_multiple_random_prob
ready_low_duration
ready_low_max_random_duration
ready_default_value

But whatever I fill in for the
ready_low_multiple_random_prob or valid_low_multiple_random_prob

it always stays high.

Only the static value valid low_at_word_num or ready_low_at_word_num seems to work.
But then I can only specify one static number.

I was hoping I could randomize the valid and ready in a stream where 100 packets should be send back to back.
How can I do that?

Hi,

In order to use the random deassertion you need to set the valid_low_at_word_num/ready_low_at_word_num to C_MULTIPLE_RANDOM. This is explained in more detail in page 7.

Hi Erick,

I’m still trying to get the randomisation working.
What I have so far is that I configure my VVC as:

shared_axistream_vvc_config(C_ID_AXIS).bfm_config.ready_low_at_word_num := 4;
shared_axistream_vvc_config(C_ID_AXIS).bfm_config.ready_low_duration := 2;
shared_axistream_vvc_config(C_ID_AXIS).bfm_config.ready_low_multiple_random_prob := 0.5;
shared_axistream_vvc_config(C_ID_AXIS).bfm_config.ready_low_max_random_duration := 5;

This however gives a fixed low of a fixed duration.
So what am I doing wrong with setting up my VVC?

Hi,

As I mentioned before, to enable the random deassertion you need to set the configuration to random, you can try this:

shared_axistream_vvc_config(C_ID_AXIS).bfm_config.ready_low_at_word_num := C_MULTIPLE_RANDOM;
shared_axistream_vvc_config(C_ID_AXIS).bfm_config.ready_low_multiple_random_prob := 0.5;
shared_axistream_vvc_config(C_ID_AXIS).bfm_config.ready_low_duration := C_RANDOM;
shared_axistream_vvc_config(C_ID_AXIS).bfm_config.ready_low_max_random_duration := 5;

Yes this works. Now it is really random. And now it my testbench identifies another issue in my design…

2 Likes