«…Труд избавляет человека от трех великих зол: скуки, порока, нужды…»

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 - запрос всех карт;
Интерфейс:

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

REQA

REQA — запрос карты

  • Подаёт соответствующую команду на драйвер
  • Контролирует паузу между запросом и ответом
  • Принимает ответ и сравнивает его с ожидаемым ответом (используя 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 (байта, 6-MSB, 0-LSB)
  • Выходы
    • 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 (байта, 6-MSB, 0-LSB)
  • Выходы
    • Error : out boolean — true - ошибка, false= всё Ок.
  • Сигналы
    • signal tdata_mod : in std_logic - сигнал, идущий с выхода DUT;
    • signal CoilModulation : out std_logic - огибающая;