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

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

Материал из Wiki

Перейти к: навигация, поиск

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 интерфейс