Повторение — полный тестбенч
Часть раздела Основы путешествия по Verilog на Coddy. Урок 78 из 90.
Задание
В этом задании проверяются все изученные тобой элементы тестовых стендов: stimulus, display, monitor, dumpfile, dumpvars и системные задачи. Тебе дан модуль XOR-вентиля для тестирования.
Что нужно сделать:
Создай полный testbench, который:
- Объявляет сигналы (
regдля входов,wireдля выхода) - Создаёт экземпляр XOR-вентиля с именем
dut - Создаёт файл осциллограмм с именем
xor_waveform.vcd - Сохраняет все сигналы в testbench
- Выводит заголовок: "Testing XOR Gate"
- Использует
$monitorдля отслеживания времени, x, y и z - Проверяет все четыре комбинации входов (00, 01, 10, 11) с задержкой
#10между каждой - В конце выводит "Test complete"
- Завершает симуляцию с помощью
$finish
Попробуйте сами
module xor_gate (
input x,
input y,
output z
);
assign z = x ^ y;
endmodule
module testbench;
// TODO: Объявите reg для x и y
// TODO: Объявите wire для z
// TODO: Создайте экземпляр xor_gate с именем dut
// Подключите .x(x), .y(y), .z(z)
initial begin
// TODO: Добавьте $dumpfile "xor_waveform.vcd"
// TODO: Добавьте $dumpvars (0, testbench)
// TODO: Добавьте $display "Testing XOR Gate"
// TODO: Добавьте $monitor для time, x, y, z
// Формат: "Time %0t: x=%b, y=%b, z=%b"
// TODO: Добавьте стимулы для всех четырёх комбинаций
// 00, 01, 10, 11 с задержкой #10
// TODO: Добавьте $display "Test complete"
// TODO: Добавить $finish
end
endmoduleВсе уроки раздела Основы
1Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов14Основы тестбенча
Что такое тестбенчСоздание стимуловОтображение и мониторингDumpfile и DumpvarsИспользование системных задачПовторение — полный тестбенч3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog