«Работать добросовестно — значит: работать, повышая свою квалификацию, проявляя инициативу в совершенствовании продукции, технологий, организации работ, оказывая не предусмотренную должностными инструкциями помощь другим сотрудникам (включая и руководителей) в общей им всем работе.

Спец курс (Верификация цифровых схем)/Практические задания 2

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

Лекции

Практические задания
Тесты

Табель успеваемости

Экзамен

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

1. Записать ограничения на рандомизацию параметров транзакции в соответствии с требованиями спецификации.

Вариант 1. Спецификация 1
  • Транзакция содержит поля data, addr, strob, mode
  • Ширина данных 32 бита (data)
  • Ширина адреса 32 бита (addr)
  • Для поля Addr используется побайтовая адресация
  • Ширина строба 4 бита (strob), каждый строб отвечает за один байт в data
  • Поле mode имеет четыре значения Чтение, Запись, Ожидание, Ошибка (кодирование выбрать самостоятельно)
  • Поле strob имеет только непрерывное заполнение единицами, т.е. значения 0000, 1010, 1101 и др. недопустимы
  • Поле data принимает значения 0101….01 и 1010….10 с вероятностью 10% каждое, выпадение остальных значений равновероятно
  • Поле addr меньше переменной max_addr и больше min_addr
  • В режиме чтения адрес должен быть выровнен на 2
  • Если значение поля mode равно Запись, то addr выравнен на 4
Вариант 2. Спецификация 2
  • Транзакция содержит поля data, addr, strob, mode, status
  • Ширина данных 128 бита (data)
  • Ширина адреса 32 бита (addr)
  • Ширина строба (strob) равна числу байт в шине данных
  • Поле mode имеет четыре значения Чтение, Запись, Ожидание, Ошибка
  • Поле strob имеет только непрерывное заполнение единицами, т.е. значения 0000, 1010, 1101 и др. недопустимы
  • Поле data принимает значения 0101….01 и 1010….10 с вероятностью 10%
  • Поле data принимает максимальное и минимальное значения с вероятностью 1%
  • Поле addr меньше переменной max_user_addr и меньше максимально возможного MAX_BUS_ADDR

addr должен иметь значения адресующие только по 8 байт, если значение поля mode равно Чтение

  • Заполнение 1 поля strob должно начинаться с бита, номер которого равен значению младших 3-разрядов адреса.
  • Поле статус всегда равно OK, если mode равен Запись, иначе UNDEF
Вариант 3. Спецификация 3
  • Транзакция содержит поля data, addr, strob, mode, status, delay_en, write_delay, read_delay
  • Ширина данных 64 бита (data)
  • Ширина адреса 32 бита(addr)
  • Ширина строба (strob) равна числу байт в шине данных
  • Поле mode имеет четыре значения Чтение, Запись, Ожидание, Ошибка
  • Поле strob имеет только непрерывное заполнение единицами
  • Поле data принимает значения 0101….01 и 1010….10 с вероятностью 5%
  • Поле data принимает максимальное и минимальное значения с вероятностью 1%
  • Поля с именем *delay принимают целые значения большие или равные 0
  • Если значение поля delay_en равно 0, то переменные write_delay, read_dealy равны 0.
  • Значение поля write_delay меньше 10, если dealy_en равен 1
  • Значение поля read_delay меньше 200, если dealy_en равен 1
Вариант 4. Спецификация 4
  • Транзакция содержит поля data, addr, strob, mode
  • Ширина данных 64 бита, поле data - очередь из N данных
  • Ширина адреса 32 бита, поле addr - очередь из N адресов
  • Ширина строба равна числу байт в шине данных, strob - очередь из N стробов
  • Число элементов в очередях адреса, данных и стробов должно совпадать и должно быть не более 16.
  • Поле mode имеет два значения Чтение, Запись
  • Поле strob имеет только непрерывное заполнение единицами, с учетом очереди слов (т.е. Множество единиц в словах составленных друг за другом не должны перемешиваться 0, другими словами все стробы со 2-го и до предпоследнего всегда равны всем 1, если 1-й и последний стробы больше 0)
  • Поле data принимает значения 0101….01 и 1010….10 с вероятностью 25%
  • Поле data принимает максимальное и минимальное значения с вероятностью 6%

2. Задать группу покрытия для сбора функционального покрытия в соответствии с требованиями плана верификации (В конце моделирования вывести процент покрытия ковер-группы).

Вариант 1. Группа покрытия должна покрывать множество тестов представленных массивом строк.
Вариант 2. Группа покрытия должна содержать точку покрытия, в которой покрываются последовательности событий: Проверить что было чтение по адресу 0,1,2,3,4,F после записи по этим же адресам, по-очереди по каждому адресу. Проверить, что во время команды чтения был произведен сброс, затем команда чтения, затем снова сброс.
Вариант 3. Сделать ковер-группу, которая проверяет, что все размеры очереди в режиме чтения и записи транзакции из Спецификации 4 были проверены в тесте.