📄 53_counter_testbench.vhd
字号:
library IEEE;
use IEEE.std_logic_1164.all;
entity testcnt is
end testcnt;
use work.mycntpkg.all;
architecture mytest of testcnt is
signal clk,rst:std_logic;
signal cnt:std_logic_vector(2 downto 0);
for all :count use entity work.count(archcount);
begin
--instantiate unit under test
uut:count port map(clk =>clk,rst =>rst,cnt =>cnt);
--apply test vectors and check results
verify:process
variable errors:boolean := false;
begin
--#1#@@@@@@@@@@@@@@@0 reset the counter
--schedule vector i
clk <= '0';
rst <= '1';
--wait for circuit to settle
wait for 20 ns;
-- check output vectors
if cnt /= "000" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--2 @@@@@@@@@@@@@@@@@@@@@@@@@@@
--schedule vector i
clk <= '1';
rst <= '1';
--wait for circuit to settle
wait for 20 ns;
-- check output vectors
if cnt /= "000" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--3 @@@@@@@@@@@@@@@@@@@@@@@@@@@@
--schedule vector i
clk <= '0';
rst <= '0';
--wait for circuit to settle
wait for 20 ns;
-- check output vectors
if cnt /= "000" then
assert false
report "cnt is wrong value";
errors := true;
end if;
-- 4# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
--wait for circuit to settle
wait for 20 ns;
-- check output vectors
if cnt /= "001" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--5# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '0';
rst <= '0';
wait for 20 ns;
if cnt /= "001" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--6# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
wait for 20 ns;
if cnt /= "010" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--7# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '0';
rst <= '0';
wait for 20 ns;
if cnt /= "010" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--8# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
wait for 20 ns;
if cnt /= "011" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--9# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '0';
rst <= '0';
wait for 20 ns;
if cnt /= "011" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--10# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
wait for 20 ns;
if cnt /= "100" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--11# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '0';
rst <= '0';
wait for 20 ns;
if cnt /= "100" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--12# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
wait for 20 ns;
if cnt /= "101" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--13# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '0';
rst <= '0';
wait for 20 ns;
if cnt /= "101" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--14# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
wait for 20 ns;
if cnt /= "110" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--15# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '0';
rst <= '0';
wait for 20 ns;
if cnt /= "110" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--16# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
wait for 20 ns;
if cnt /= "111" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--17# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '0';
rst <= '0';
wait for 20 ns;
if cnt /= "111" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--18# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
wait for 20 ns;
if cnt /= "000" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--19# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '0';
rst <= '0';
wait for 20 ns;
if cnt /= "000" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--20# @@@@@@@@@@@@@@@@@@@@@@@@
clk <= '1';
rst <= '0';
wait for 20 ns;
if cnt /= "001" then
assert false
report "cnt is wrong value";
errors := true;
end if;
--assert reports on false
assert not errors
report "Test vectors failed."
severity note;
assert errors
report "test vectors passed."
severity note;
wait;
end process;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -