Слайд: Подача сигнала сброса
signal rst : std_logic;
. . .
rst <= '1', '0' after 15 ns; -- Вариант 1
p1: process 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 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 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 ; -- переменная RV защищенного (protected) типа RandomPType
begin -- process p1
RV.initseed(RV'instance_name); -- начальная установка псевдослучайного генератора
l1: loop
x <= RV.RandSlv(inputs); -- генерация псевдослучайного вектора разрядностью inputs
wait for 2 ns;
end loop;
end process p1;