VHDL/Генерация входных воздействий — различия между версиями
Материал из Wiki
ANA (обсуждение | вклад) м (→Слайд: Подача заданной последовательности тестовых векторов) |
ANA (обсуждение | вклад) м (→Слайд: Подача псевдослучайной последовательности тестовых векторов) |
||
| Строка 97: | Строка 97: | ||
== Слайд: Подача псевдослучайной последовательности тестовых векторов == | == Слайд: Подача псевдослучайной последовательности тестовых векторов == | ||
| + | |||
| + | * Требуется дополнительная компиляция пакета RandomPkg из [http://www.synthworks.com/downloads/OSVVM.zip OSVVM.zip] | ||
| + | |||
| + | use work.RandomPkg.all; | ||
| + | . . . | ||
| + | constant inputs : natural := 10; | ||
| + | signal x : std_logic_vector(inputs - 1 downto 0); | ||
| + | . . . | ||
| + | p1: process is | ||
| + | variable RV : RandomPType ; | ||
| + | begin -- process p1 | ||
| + | RV.initseed(RV'instance_name); | ||
| + | l1: loop | ||
| + | x <= RV.RandSlv(inputs); | ||
| + | wait for 2 ns; | ||
| + | end loop; | ||
| + | end process p1; | ||
[[Категория:VHDL]] | [[Категория:VHDL]] | ||
Версия 17:25, 2 апреля 2014
Слайд: Подача сигнала сброса
signal rst : std_logic; . . . rst <= '1', '0' after 15 ns; -- Вариант 1
p1: process (rst) is -- Вариант 2 begin -- process p1 rst <= '1'; wait for 15 ns; rst <= '0'; wait; end process p1;
Слайд: Подача синхросигнала
signal clk : std_logic := '0'; . . . clk <= not clk after 5 ns; -- Вариант 1
p1: process (clk) is -- Вариант 2 begin -- process p1 clk <= '1'; wait for 5 ns; clk <= '0'; wait for 5 ns; end process p1;
Слайд: Подача последовательности тестовых векторов
Слайд: Подача последовательности тестовых векторов (Вариант 1)
signal x : std_logic_vector(2 downto 0) := (others => '0'); . . . x(0) <= not x(0) after 50 ns; x(1) <= not x(1) after 100 ns; x(2) <= not x(2) after 200 ns;
Слайд: Подача последовательности тестовых векторов (Вариант 2)
signal x : std_logic_vector(2 downto 0) := (others => '0'); . . . l1: for i in 0 to 2 generate x(i) <= not x(i) after (2**i) * 10 ns; end generate l1;
Слайд: Подача последовательности тестовых векторов (Вариант 3)
use ieee.numeric_std.all; ... signal x : std_logic_vector(2 downto 0) := (others => '0'); signal xu : unsigned(2 downto 0) := (others => '0'); . . . xu <= xu + 1 after 10 ns; x <= std_logic_vector(xu);
x <= std_logic_vector(unsigned(x) + 1) after 10 ns;
Слайд: Подача заданной последовательности тестовых векторов
p1: process (rst) is begin -- process p1 rst <= '1'; x <= "001"; en <= '0' wait for 15 ns; rst <= '0'; wait for 5 ns; en <= '1' wait for 20 ns; en <= '0' wait for 5 ns; x <= "101"; wait for 25 ns; x <= "100"; wait for 25 ns; en <= '1' x <= "110"; wait; end process p1;
Слайд: Использование процедур для генерации тестовых векторов
- событийный метод
Слайд: Подача псевдослучайной последовательности тестовых векторов
- Требуется дополнительная компиляция пакета RandomPkg из OSVVM.zip
use work.RandomPkg.all;
. . .
constant inputs : natural := 10;
signal x : std_logic_vector(inputs - 1 downto 0);
. . .
p1: process is
variable RV : RandomPType ;
begin -- process p1
RV.initseed(RV'instance_name);
l1: loop
x <= RV.RandSlv(inputs);
wait for 2 ns;
end loop;
end process p1;