OS-VVM (Диплом)/Описание тестовой программы
Материал из Wiki
< OS-VVM (Диплом)
Версия от 18:35, 11 марта 2013; ANA (обсуждение | вклад)
Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Проект Диплом
- Спецификация ИМС
- Тестовый план
- Описание тестовой программы
Литература
- Coverage Metrics and process (en)
- Coverage Examples (Practice) (en)
- Requirements Writing Guidelines (en)
* OS-VVM *
Содержание |
Архитектура тестбенча
|
---|
Рисунок 1 — Архитектура тестбенча (edit) |
Описание процедур/функций
Driver
Драйвер преобразует последовательность бит, передаваемых ему командой в огибающую.
Интерфейс:
- Входы
- data_size : in natural - размер передаваемых данных;
- data : in bit_vector - входной сигнал;
- Сигналы
- signal output : out std_logic - выходной сигнал (огибающая);
Responder
Респондер преобразует выходной сигнал DUT в последовательность бит. Запускается при получении стартового бита ответа.
Интерфейс:
- Входы
- —
- Выходы
- out_data : out std_logic_vector(1 to 164) - выходная информация респондера;
- bit_num : out integer - количество бит, полученных респондером;
- Сигналы
- signal tdata_mod : in std_logic - сигнал из DUT;
Pause
Pause ждет ответ DUT и считает периоды. Что делает если ответа нет???
Интерфейс:
- Входы
- —
- Выходы
- clk_num : out integer - количество периодов;
- Сигналы
- signal tdata_mod : in std_logic - сигнал из DUT;
Reset
Reset останавливает clock генератор на указанное время.
Интерфейс:
- Входы
- wait_time : in time - время сброса(при 0 - бесконечно);
- Выходы
- —
- Сигналы
- signal stop : out bit - сигнал остановки clock генератора;
Команды
WUPA
WUPA — запрос всех карт;
- Подаёт соответствующую команду на драйвер (0х52)
- Контролирует паузу между запросом и ответом
- Принимает ответ и сравнивает его с ожидаемым ответом (используя UID)
- Выдаёт ошибку (Error=true), если
- Пауза не соответствует спецификации
- Ошибка в данных ответа
Интерфейс:
- Входы
- —
- Выходы
- Error : out boolean (true = ошибка, false= всё Ок).
- Сигналы
- signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
- signal CoilModulation : out std_logic - огибающая;
REQA
REQA — запрос карты
- Подаёт соответствующую команду на драйвер (0х26)
- Контролирует паузу между запросом и ответом
- Принимает ответ и сравнивает его с ожидаемым ответом (используя UID)
- Выдаёт ошибку (Error=true), если
- Пауза не соответствует спецификации
- Ошибка в данных ответа
Интерфейс:
- Входы
- —
- Выходы
- Error : out boolean (true = ошибка, false= всё Ок).
- Сигналы
- signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
- signal CoilModulation : out std_logic - огибающая;
Anticollision
Anticollision — Антиколлизия и select 1/2 каскадного уровня
- Подаёт соответствующую команду на драйвер (вычисляет код команды, добавляет 0x88 для 1 уровня, добавляет BCC и CRC)
- Контролирует паузу между запросом и ответом
- Принимает ответ и сравнивает его с ожидаемым ответом (используя UID)
- Выдаёт ошибку (Error=true), если
- Пауза не соответствует спецификации
- Ошибка в данных ответа
Интерфейс:
- Входы
- Level : in bit — каскадный уровень 1/2 (0=0х93, 1=0х95)
- Arg : in natural - аргумент (0х20-0х67)
- UID : in integer_vector(6 downto 0) — UID (7 байт, 6-MSB, 0-LSB)
- Выходы
- Error : out boolean (true = ошибка, false= всё Ок).
- Сигналы
- signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
- signal CoilModulation : out std_logic - огибающая;
READ
READ - чтение
- Подаёт соответствующую команду на драйвер (подаёт код команды 0x30, адрес и вычисляет CRC)
- Контролирует паузу между запросом и ответом
- Принимает ответ и сравнивает его с ожидаемым ответом (используя эталонную модель карточки)
- Выдаёт ошибку (Error=0..3), если
- 0 - нет ошибки
- 1 - Пауза не соответствует спецификации
- 2 - Ошибка в данных ответа
- 3 - выдала NAK
Интерфейс:
- Входы
- Arg : in natural - адрес (0-15)
- Выходы
- Error : out natural (0..3).
- Сигналы
- signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
- signal CoilModulation : out std_logic - огибающая;
HALT
HALT — перевод в состояние ожидания
- Подаёт соответствующую команду на драйвер ('50' '00' + CRC)
- Контролирует паузу между запросом и ответом. Если ответа нет, то команда выполнилась успешно.
- Принимает ответ и сравнивает его с ожидаемым ответом (NACK либо ACK(нет ответа))
- Выдаёт ошибку (Error=0..3), если
- 0 — всё Ок (ответа не было)
- 1 — получен NACK
- 2 — Пауза не соответствует спецификации
- 3 — Ошибка в данных ответа (в NACK)
Интерфейс:
- Входы
- —
- Выходы
- Error : out natural (0..3).
- Сигналы
- signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
- signal CoilModulation : out std_logic - огибающая;
WRITE
WRITE — запись
- Подаёт соответствующую команду на драйвер (подаёт команду (0xA2), данные, вычисляет четность, добавляет CRC)
- Контролирует паузу между запросом и ответом
- Принимает ответ и сравнивает его с ожидаемым ответом (используя Data)
- Выдаёт ошибку (Error=0..3), если
- 0 — всё ок
- 1 — выдала NAK
- 2 — Пауза не соответствует спецификации
- 3 — Ошибка в данных ответа
Интерфейс:
- Входы
- Arg : in natural - адрес (0-15)
- Data : in integer_vector(3 downto 0) — 4 байта
- Выходы
- Error : out natural (0..3).
- Сигналы
- signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
- signal CoilModulation : out std_logic - огибающая;
COMPATIBILITY WRITE
COMPATIBILITY WRITE — совместимая запись
- Подаёт первую часть команды на драйвер (вычисляет код команды, добавляет CRC)
- Контролирует паузу между запросом и ответом
- Подаёт вторую часть команды на драйвер (вычисляет код команды, добавляет CRC)
- Контролирует паузу между запросом и ответом
- Принимает ответ и сравнивает его с ожидаемым ответом (используя UID)
- Выдаёт ошибку (Error=true), если
- Пауза не соответствует спецификации
- Ошибка в данных ответа
Интерфейс:
- Входы
- Arg : in natural - адрес (0-15)
- Data : in integer_vector(4 downto 1) — 4 байта
- Выходы
- Error : out boolean (true = ошибка, false= всё Ок).
- Сигналы
- signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
- signal CoilModulation : out std_logic - огибающая;