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

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

Материал из Wiki
< Спец курс (Верификация цифровых схем)
Версия от 20:39, 3 мая 2021; Vidokq (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Лекции ВЦС

Лекции

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

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

Экзамен

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

1. Описать регистровую модель по заданной спецификации тестируемого модуля

Спецификация 1.

Регистр

Размер

Смещение адреса

Имя поля

Размер поля

Тип доступа

Описание

CTRL 32 бита 0x0

st1

2 бита

RW

st1 = CTRL[1:0], чтение, запись

st2

6 бит

RO

st2 = CTRL[2:7], только чтение

sum1 8 бит

RO

sum1 = CTRL[15:8], только чтение

RO

остальные биты CTRL[31:16] регистра только для чтения

DATA_IN

32 бита

0x1F

data

32 бита

RW

data = DATA_IN[31:0], запись, чтение

DATA_OUT

32 бита

0x4F

data

32 бита

RO

data = DATA_OUT[31:0], только чтение

Спецификация 2.

Регистр

Размер

Смещение

Поля

Размер поля

Тип доступа

Описание

INTR0

32 бита

0x0

rdy0

1 бит

RO

rdy0 = INTR0[0], только чтение

INTR1

32 бита

0x2F

rdy1

1 бит

RO

rdy1 = INTR1[0], только чтение

INTR2

32 бита

0x4F

rdy2

1 бит

RO

rdy2 = INTR2[0], только чтение

INTR3

32 бита

0x6F

rdy3

1 бит

RO

rdy3 = INTR3[0], только чтение

MMIN

32 бита

0x8F

min

16 бита

RW

min= MIN[31:16], запись, чтение

MMAX

32 бита

0xAF

max

16 бита

RW

max = MAX[15:0], запись, чтение

EN_W

32 бита

0xBF

en

1 бит

WRC

en = EN_W[31], запись, после чтения сбрасывается в 0

2. Разработать DUT или Slave Agent который будет работать с регистрами по следующему правилу.

2.1 Спецификация 1.

  • После записи CTRL.ST1 в единицу CTRL.ST2 принимает значение 6'b100000 ровно через 100 us.
  • После каждой записи поля CTRL.ST1 значение поля sum регистра CTRL инкрементируется
  • Значение регистра DATA_OUT меняется по правилу связанному со значениями регистра DATA_IN. Каждый раз когда мы записываем в регистр DATA_IN значение, оно сохраняется во внутренней очереди (DUT или SlaveAgent) длинной 4. После записи 4-го значения в DATA_IN, первое записанное значение в DATA_IN появляется в регистре DATA_OUT. До этого момента регистр DATA_OUT хранит нулевое значение, и так далее по приниципу FIFO.

2.2 Спецификация 2.

3. Разработать тест по заданному сценарию с использованием регистровой модели.

Сценарий 1

Согласно Спецификации 1, произвести запись в регистр DATA_IN, случайное значение, после записать в поле st1 регистра CTRL значение 01. Дождаться пока поле st2 регистра CTRL примет значение 100000. После вычитать значение поля DATA_OUT. Повторить предыдущие действия 4 раза. После вычитать значение поля sum регистра CTRL. Если значение поля sum < 10, весь сценари повторить.

Сценарий 2

Согласно Спецификации 2, Записать случайные значения в регистры MMIN, MMAX. Значение MMIN < MMAX. Записать в поле en регистрa EN_W единицу. После ожидать пока в поле rdy0 регистра INTR0 появится единица. Записать в поле en регистрa EN_W единицу. После ожидать пока в поле rdy1 регистра INTR1 появится единица. Записать в поле en регистрa EN_W единицу. После ожидать пока в поле rdy2 регистра INTR2 появится единица. Записать в поле en регистрa EN_W единицу. После ожидать пока в поле rdy3 регистра INTR3 появится единица. Прочитать регистр EN_W. Повторить предыдущие дейсвтия для 40 наборов значений регистра MMAX, MMIN.

4. Создать и подключить пользовательский предиктор регистровой модели. Добавить опцию очистки одного регистра при изменении бита в другом используя встроенные функции.

5. Разработать адаптер регистровой модели агента реализующего SPI интерфейс

6. Разработать адаптер регистровой модели агента реализующего AHB интерфейс