Спец курс (Верификация цифровых схем)/Практические задания (Лекция 6)
|
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 интерфейс