Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти І науки України
національний університет “Львівська політехніка”
Кафедра ЕОМ
EMBED Word.Picture.8
Теорія і проектування комп’ютерних систем.
Звіт
по лабораторній роботі №3.
“Розробка системи тестування простого пристрою.”
Виконав:
студент групи КСМ - 5
ЛЬВІВ – 2004
Мета роботи: ознайомитись з технологією виготовлення та принципами функціонування тестуючих програм, створити середовище тестування (тестбенч) пристрою, перевірити його роботоздатність та коректність його роботи.
Результати роботи.
У даній лабораторній роботі розроблено середовище тестування суматора, який був створений у минулій лабораторній роботі.
VHDL-код блоку тестування.
library ieee;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_1164.all;
use std.textio.all;
use ieee.std_logic_textio.all;
in_data_file : string := "in_data_file.txt";
pattern_file : string := "pattern_file.txt"
);
end add_tb;
architecture TB_ARCHITECTURE of add_tb is
-- Component declaration of the tested unit
component add
port(
CLK : in std_logic;
RST : in std_logic;
A : in std_logic_vector(11 downto 0);
B : in std_logic_vector(11 downto 0);
S : out std_logic_vector(11 downto 0) );
end component;
-- Stimulus signals - signals mapped to the input and inout ports of tested entity
signal CLK : std_logic;
signal RST : std_logic;
signal A : std_logic_vector(11 downto 0);
signal B : std_logic_vector(11 downto 0);
-- Observed signals - signals mapped to the output ports of tested entity
signal S : std_logic_vector(11 downto 0);
-- Add your code here ...
begin
-- Unit Under Test port map
UUT : add
port map (
CLK => CLK,
RST => RST,
A => A,
B => B,
S => S
);
add_proc: process
begin
clk<='1';
wait for 0.5*period;
clk<='0';
wait for 0.5*period;
end process add_proc;
STIMULUS: process
begin
RST <= '1' after 0 ns,
'0' after 1.5*period;
wait;
end process STIMULUS;
data_rd_proc: process
file dat : text is in_data_file;
variable data_line : line;
variable in_tmp1 : STD_LOGIC_VECTOR (11 downto 0);
begin
A <= (others => '0');
B <= (others => '0');
wait for 2.01*period;
data_rd: while not (endfile(dat)) loop
readline (dat, data_line);
hread (data_line, in_tmp1);
A <= in_tmp1(11 downto 0);
hread (data_line, in_tmp1);
B <= in_tmp1(11 downto 0);
assert false report "DATA READING..." severity note;
wait for period;
end loop data_rd;
end process data_rd_proc;
data_comp_proc: process
file pat : text is pattern_file;
variable pat_line : line;
variable pat_tmp : STD_LOGIC_VECTOR (11 downto 0);
begin
wait for 5*period;
pat_rd: while not (endfile(pat)) loop
readline (pat, pat_line);
hread (pat_line, pat_tmp);
if pat_tmp (11 downto 0) /= S (11 downto 0) then
assert false report "ERROR IN DATA COMPARING!!!#" severity warning;
else
assert false report "DATA COMPARED SUCCESSFULLY!#" severity note; end if;
wait for period;
end loop;
end process data_comp_proc;
-- Add your stimulus here ...
end TB_ARCHITECTURE;
configuration TESTBENCH_FOR_add of add_tb is
for TB_ARCHITECTURE
for UUT : add
use entity work.add(add_arch);
end for;
end for;
end TESTBENCH_FOR_add;
Діагрма симуляції.
Висновок : В даній лабораторній роботі я створив тестбенч для тестування суматора та промоделював його роботу.