«Случай — это псевдоним Бога, когда Он не хочет подписываться своим собственным именем.» А. Франс

Проектирование цифровых систем на языках описания аппаратуры/Лекция 11

Материал из Wiki
Перейти к: навигация, поиск
Лекции ПЦСЯОА

Лекции

Практические

Доп. материалы

Заголовок
Верификация VHDL описаний цифровых систем. Генерация псевдослучайных тестов и функциональное покрытие
Автор
Ланкевич Ю.Ю.
Нижний колонтитул
Проектирование цифровых систем на языках описания аппаратуры/Лекция 11
Дополнительный нижний колонтитул
Ланкевич Ю.Ю., 12:55, 20 октября 2020


Слайд:Структура тестирующей программы

Тестирующие программы, реализующие процесс тестирования VHDL модели, не имеют входных и выходных портов. Архитектурное тело тестирующей программы обычно состоит из трех либо четырех частей.
[svg]

  1. Декларативная часть. В декларативной части архитектурного тела указывается тестируемый компонент (интерфейс VHDL модели проектируемого устройства либо системы), а также задаются сигналы, являющиеся входными и выходными портами устройства.
  2. Вызов модели. В исполняемом разделе архитектурного тела, т. е. после ключевого слова Begin, записывается оператор port map для вызова модели устройства.
  3. Задание входных воздействий. В третьей части в исполняемом разделе архитектурного тела записываются входные наборы, подаваемые на вход тестируемого компонента, либо программным образом обеспечивается генерация входных наборов по тем или иным правилам.
  4. Сравнение полученных реакций модели с ожидаемыми реакциями. Если тестирующая программа записала полученные реакции модели в виде файла, то данный файл может быть сравнен с файлом ожидаемых реакций, который обычно считается эталонным.

Заметим, что проектировщик может внести ошибку и в файл ожидаемых реакций, поэтому в результате несовпадений файлов, возможно, придется исправлять как модель, так и файл ожидаемых реакций. Далее будут представлены различные варианты организации тестирующих программ для одной и той же модели двухразрядного умножителя 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;

Слайд:Задание тестирующих наборов в тестирующей программе