Open Source VHDL Verification Methodology/Описание пакета RandomPkg/Примеры распределений
Материал из Wiki
Проект OS-VVM
- Руководство пользователя (eng)
- Описание пакета CoveragePkg (eng)
- Описание пакета RandomPkg (eng)
- Примеры распределений
Исходные коды
Презентации
Coverage
Содержание |
Пример
Листинг файла test.vhd
Файл: test.vhd |
library ieee,work; use ieee.std_logic_1164.all; use work.RandomPkg.all; use work.CoveragePkg.all; use IEEE.math_real.all; entity test_tb is end entity test_tb; architecture tb of test_tb is shared variable RndX : RandomPType; shared variable X : integer; shared variable CovRndX : CovPType ; shared variable RndVal : real ; shared variable seed1 : positive := 7 ; -- initialize seeds shared variable seed2 : positive := 1 ; shared variable CovRndVal : CovPType ; begin -- architecture tb -- RndX.InitSeed(RndX'instance_name); p1: process is begin -- process p1 RndX.InitSeed(IV => (7,1)); --RndX.InitSeed(RndX'instance_name); CovRndX.AddBins(GenBin(1,10)); CovRndVal.AddBins(GenBin(1,10)); for i in 1 to 100000 loop uniform(seed1, seed2, RndVal) ; -- randomize 0.0 to 1.0 CovRndVal.ICover(integer(trunc(RndVal*10.0+1.0))) ; -- scale to 1 to 10 --X := RndX.Uniform( min => 1, max => 10 ); --X := RndX.Uniform( min => 1, max => 10, Exclude => (2,5) ); --X := RndX.Favor_small( min => 1, max => 10 ); --X := RndX.Favor_small( min => 1, max => 10, Exclude => (2,5) ); --X := RndX.Favor_big( min => 1, max => 10); --X := RndX.Normal(Mean => 5.0, StdDeviation => 3.0, min => 1, max => 10, Exclude => NULL_INTV); --X := RndX.Normal(Mean => 5.0, StdDeviation => 3.0, min => 1, max => 10, Exclude => (5,5)); X := RndX.Poisson(Mean => 10.0, min => 1, max => 10, Exclude => NULL_INTV); CovRndX.ICover(X); -- RndX.SetRandomParm(NORMAL, 4.0, 1.0); wait for 10 ns; end loop; -- i CovRndX.WriteBin; CovRndVal.WriteBin; wait; end process p1; end architecture tb; |
Распределение uniform для RandomPkg и math_real
- RandomPkg (RndX.Uniform( min => 1, max => 10 );)
# %% Bin:(1) Count = 9971 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 10056 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 9992 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 9933 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 9974 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 9981 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 9980 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 10012 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 9946 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 10155 AtLeast = 1 Weight = 1
- math_real
uniform(seed1, seed2, RndVal) ; -- randomize 0.0 to 1.0 CovRndVal.ICover(integer(trunc(RndVal*10.0+1.0))) ; -- scale to 1 to 10
# %%WriteBin: # %% Bin:(1) Count = 9971 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 10056 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 9992 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 9933 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 9974 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 9981 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 9980 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 10012 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 9946 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 10155 AtLeast = 1 Weight = 1
Распределение uniform для RandomPkg с исключением [2,5]
X := RndX.Uniform( min => 1, max => 10, Exclude => (2,5) );
# %%WriteBin: # %% Bin:(1) Count = 12482 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 0 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 12530 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 12389 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 0 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 12525 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 12456 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 12488 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 12554 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 12576 AtLeast = 1 Weight = 1
Распределение Favor_small
Распределение Favor_small для RandomPkg
X := RndX.Favor_small( min => 1, max => 10 );
# %% Bin:(1) Count = 19007 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 17030 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 15011 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 12923 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 11017 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 8996 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 7053 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 4993 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 2955 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 1015 AtLeast = 1 Weight = 1
Распределение Favor_small для RandomPkg с исключением [2,5]
X := RndX.Favor_small( min => 1, max => 10, Exclude => (2,5) );
# %% Bin:(1) Count = 23565 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 0 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 20292 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 17121 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 0 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 14010 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 10979 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 7854 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 4570 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 1609 AtLeast = 1 Weight = 1
Распределение Favor_big
Распределение Favor_big для RandomPkg
X := RndX.Favor_big( min => 1, max => 10);
# %% Bin:(1) Count = 1015 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 2955 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 4993 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 7053 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 8996 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 11017 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 12923 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 15011 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 17030 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 19007 AtLeast = 1 Weight = 1
Распределение Normal
- Нормальное распределение (wikipedia.org)
Распределение Normal для RandomPkg
X := RndX.Normal(Mean => 4.5, StdDeviation => 1.0, min => 1, max => 10, Exclude => NULL_INTV);
# %% Bin:(1) Count = 125 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 2183 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 13563 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 34101 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 34209 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 13435 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 2246 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 134 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 4 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 0 AtLeast = 1 Weight = 1
X := RndX.Normal(Mean => 4.5, StdDeviation => 2.0, min => 1, max => 10, Exclude => NULL_INTV);
# %% Bin:(1) Count = 4413 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 9483 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 15408 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 19549 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 19807 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 15259 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 9294 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 4477 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 1796 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 514 AtLeast = 1 Weight = 1
X := RndX.Normal(Mean => 5.0, StdDeviation => 2.0, min => 1, max => 10, Exclude => NULL_INTV);
# %% Bin:(1) Count = 2851 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 6476 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 12550 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 17599 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 20102 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 17802 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 12208 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 6561 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 2884 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 967 AtLeast = 1 Weight = 1
|
X := RndX.Normal(Mean => 5.0, StdDeviation => 3.0, min => 1, max => 10, Exclude => NULL_INTV);
# %% Bin:(1) Count = 6063 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 9160 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 11768 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 13801 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 14916 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 13985 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 11732 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 8837 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 6046 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 3692 AtLeast = 1 Weight = 1
X := RndX.Normal(Mean => 5.0, StdDeviation => 3.0, min => 1, max => 10, Exclude => (5,5));
# %% Bin:(1) Count = 7183 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 10693 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 13886 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 16156 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 0 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 16412 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 13799 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 10388 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 7110 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 4373 AtLeast = 1 Weight = 1
Распределение Poisson
- Распределение Пуассона (wikipedia.org)
Распределение Poisson для RandomPkg
X := RndX.Poisson(Mean => 1.0, min => 1, max => 10, Exclude => NULL_INTV);
# %% Bin:(1) Count = 36678 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 36825 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 18509 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 6075 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 1536 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 322 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 50 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 4 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 1 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 0 AtLeast = 1 Weight = 1
X := RndX.Poisson(Mean => 5.0, min => 1, max => 10, Exclude => NULL_INTV);
# %% Bin:(1) Count = 717 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 3347 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 8691 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 14395 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 18130 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 18244 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 15183 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 10894 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 6680 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 3719 AtLeast = 1 Weight = 1
X := RndX.Poisson(Mean => 10.0, min => 1, max => 10, Exclude => NULL_INTV);
# %% Bin:(1) Count = 6 AtLeast = 1 Weight = 1 # %% Bin:(2) Count = 85 AtLeast = 1 Weight = 1 # %% Bin:(3) Count = 505 AtLeast = 1 Weight = 1 # %% Bin:(4) Count = 1665 AtLeast = 1 Weight = 1 # %% Bin:(5) Count = 4123 AtLeast = 1 Weight = 1 # %% Bin:(6) Count = 8354 AtLeast = 1 Weight = 1 # %% Bin:(7) Count = 13681 AtLeast = 1 Weight = 1 # %% Bin:(8) Count = 19790 AtLeast = 1 Weight = 1 # %% Bin:(9) Count = 24362 AtLeast = 1 Weight = 1 # %% Bin:(10) Count = 27429 AtLeast = 1 Weight = 1
X := RndX.Poisson(Mean => 1.0, min => 1, max => 10, Exclude => NULL_INTV);
|