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

OS-VVM (Диплом)/Описание тестовой программы

Материал из Wiki
< OS-VVM (Диплом)
Версия от 18:35, 11 марта 2013; ANA (обсуждение | вклад)

Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Перейти к: навигация, поиск
Проект Диплом

Литература

Coverage Cookbook (en)

OVM методология

* 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 - огибающая;

Bombilla amarilla - yellow Edison lamp.png Подумать как задавать ошибки в командах

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 - огибающая;