# RandCovPoint Behavior

Why OSVVM™? Forums OSVVM RandCovPoint Behavior

Viewing 2 posts - 1 through 2 (of 2 total)
• Author
Posts
• #723
RIAND
Member

Hi,

I’ve started to play with OS-VVM and i have two questions :

The first is about RandCovPoint. Lets look at the coverage model

GenBin(4,1,500 , 1000,6) &  GenBin(4,2,1001, 6000,6) & GenBin(4,1,6001,10000,6),
GenBin(0,1),
GenBin(20)& GenBin(50)& GenBin(80)
);

My question is when using RandCovPoint and IsCovered to cover the all model.
Is there a guarantee that the coverage model will try (When possible) to return as much different value as possible from the first Bin  “GenBin(4,1,500 , 1000,6) & GenBin(4,2,1001, 6000,6) & GenBin(4,1,6001,10000,6)”

The second question is simpler but i can not find the information.
how can i use to_string with a seed to print it out ? I’ve tried TO_STRING(FreqCov.GetSeed) without success.

Best regards
Jc

#724
Jim Lewis
Member

Hi Jc,

Short answer is, each item within a given bin is selected with a uniform distribution.  Let’s just look at your first bin and modify it slightly (so it divides nicely) and only consider it as an item bin:

``` GenBin(4,1,500 , 1000,5) ```

This creates the bins:

``` Goal    Range   4     500-599   4     600-699   4     700-799   4     800-899   4     900-1000 ```

As a result, each of these bins will get selected 4 times (due to coverage goal). Internally within a range, RandCovPoint uses RandomPkg.RandInt(Min, Max) to generate a value. So the values will have a uniform distribution. Keep in mind, uniform is uniform over a large set of numbers, so values may repeat.

If you want no repeating, then rather than using a coverage goal, divide your coverage bins into smaller pieces.  IE: change the coverage goal to 1 and the bin divisor to 20 (my previous divisor: 5 * previous coverage goal: 4)

``` GenBin(1,1,500 , 1000,20) ```

This creates the bins:

``` Goal    Range   1     500-524   1     525-549   1     550-574   1     575-599   1     600-624   1     625-649   1     650-674   1     675-699   1     700-724   1     725-749   1     750-774   1     775-799   1     800-824   1     825-849   1     850-874   1     875-899   1     900-924   1     925-949   1     950-974   1     975-1000 ```

Moving on to your second question.  Everything to do with the seed is in the package RandomBasePkg.  So simply reference it and you will be fine:

``` use osvvm.RandomBasePkg.all ; ```

Great questions.

Best Regards,

Jim

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