Проектирование цифровых систем на языках описания аппаратуры/Лекция 11
Материал из Wiki
< Проектирование цифровых систем на языках описания аппаратуры
Версия от 03:08, 19 октября 2020; Yura (обсуждение | вклад)
- Заголовок
- Верификация VHDL описаний цифровых систем. Генерация псевдослучайных тестов и функциональное покрытие
- Автор
- Ланкевич Ю.Ю.
- Нижний колонтитул
- Проектирование цифровых систем на языках описания аппаратуры/Лекция 11
- Дополнительный нижний колонтитул
- Ланкевич Ю.Ю., 12:55, 20 октября 2020
Слайд:Структура тестирующей программы
Тестирующие программы, реализующие процесс тестирования VHDL модели, не имеют входных и выходных портов.
Архитектурное тело тестирующей программы обычно состоит из трех либо четырех частей.
- Декларативная часть. В декларативной части архитектурного тела указывается тестируемый компонент (интерфейс VHDL модели проектируемого устройства либо системы), а также задаются сигналы, являющиеся входными и выходными портами устройства.
- Вызов модели. В исполняемом разделе архитектурного тела, т. е. после ключевого слова Begin, записывается оператор port map для вызова модели устройства.
- Задание входных воздействий. В третьей части в исполняемом разделе архитектурного тела записываются входные наборы, подаваемые на вход тестируемого компонента, либо программным образом обеспечивается генерация входных наборов по тем или иным правилам.
- Сравнение полученных реакций модели с ожидаемыми реакциями. Если тестирующая программа записала полученные реакции модели в виде файла, то данный файл может быть сравнен с файлом ожидаемых реакций, который обычно считается эталонным.
Заметим, что проектировщик может внести ошибку и в файл ожидаемых реакций, поэтому в результате несовпадений файлов, возможно, придется исправлять как модель, так и файл ожидаемых реакций. Далее будут представлены различные варианты организации тестирующих программ для одной и той же модели двухразрядного умножителя mult_2.
1 library ieee; 2 use ieee.std_logic_1164.all; 3 4 entity mult_2 is 5 port ( 6 s1, s0, r1, r0 : in std_logic; 7 t3, t2, t1, t0 : out std_logic); 8 end mult_2; 9 architecture struct of mult_2 is 10 component add1 11 port ( b1, b2 : in std_logic; 12 c1, s1 : out std_logic); 13 end component; 14 signal p1, p2, p3, p4 : std_logic; 15 begin 16 t0 <= r0 and s0; 17 p1 <= r1 and s0; 18 p2 <= r0 and s1; 19 p4 <= r1 and s1; 20 circ1 : add1 21 port map (b1=>p1, b2=>p2, c1=>p3, s1=>t1); 22 circ2 : add1 23 port map (b1=>p3, b2=>p4, c1=>t3, s1=> 2); 24 end struct;
VHDL модель полусумматора add1.
1 library ieee; 2 use ieee.std_logic_1164.all; 3 entity add1 is 4 port( b1, b2 : in std_logic; 5 c1, s1 : out std_logic); 6 end add1; 7 architecture beh of add1 is 8 begin 9 s1 <= (b1 and (not b2)) or ((not b1) and b2); 10 c1 <= b1 and b2; 11 end beh;