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

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

Материал из Wiki
Перейти к: навигация, поиск
Проект Диплом

Литература

Coverage Cookbook (en)

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

* OS-VVM *

Содержание

Архитектура тестбенча

Рисунок — Архитектура тестбенча (edit)


Описание процедур/функций

Driver

Драйвер преобразует последовательность бит, передаваемых ему командой в огибающую.
Интерфейс:

  • data_size  : in natural - размер передаваемых данных;
  • data  : in bit_vector - входной сигнал;
  • signal output  : out std_logic - выходной сигнал (огибающая);

Responder

Респондер преобразует выходной сигнал DUT в последовательность бит. Запускается при получении стартового бита ответа.
Интерфейс:

  • signal tdata_mod : in std_logic - сигнал из DUT;
  • signal out_data  : out std_logic_vector(1 to 164) - выходной сигнал респондера;
  • signal bit_num  : out integer - количество бит, полученных респондером;

Pause

Pause ждет ответ DUT и считает периоды.
Интерфейс:

  • signal tdata_mod : in std_logic - сигнал из DUT;
  • signal clk_num : out integer - количество периодов;

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 - чтение

  • Подаёт соответствующую команду на драйвер (вычисляет код команды, добавляет CRC)
  • Контролирует паузу между запросом и ответом
  • Принимает ответ и сравнивает его с ожидаемым ответом (используя UID)
  • Выдаёт ошибку (Error=true), если
    • Пауза не соответствует спецификации
    • Ошибка в данных ответа

Интерфейс:

  • Входы
    • Arg  : in natural - адрес (0-15)
  • Выходы
    • Error : out boolean (true = ошибка, false= всё Ок).
  • Сигналы
    • signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
    • signal CoilModulation : out std_logic - огибающая;

HALT

HALT — перевод в состояние ожидания

  • Подаёт соответствующую команду на драйвер ('50' '00' + CRC)
  • Контролирует паузу между запросом и ответом
  • Принимает ответ и сравнивает его с ожидаемым ответом (используя UID)
  • Выдаёт ошибку (Error=true), если
    • Пауза не соответствует спецификации
    • Ошибка в данных ответа

Интерфейс:

  • Входы
  • Выходы
    • Error : out boolean (true = ошибка, false= всё Ок).
  • Сигналы
    • signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
    • signal CoilModulation : out std_logic - огибающая;

3Anticollision3

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

4Anticollision4

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