Итоги: полный Testbench
Часть раздела Основы путешествия по Verilog на Coddy — урок 78 из 90.
Задание
Этот челлендж проверяет всё, что вы узнали о тестбенчах: стимулы, display, monitor, dumpfile, dumpvars и системные задачи. Вам дан модуль XOR-гейта для тестирования.
Что нужно сделать:
Создайте полный тестбенч, который:
- Объявляет сигналы (
regдля входов,wireдля выхода) - Создает экземпляр XOR-гейта с именем
dut - Создает файл временных диаграмм с именем
"xor_waveform.vcd" - Выгружает (dumps) все сигналы в тестбенче
- Выводит заголовок: "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Введение
Что такое VerilogHardware против SoftwareУровни абстракции проектированияВаш первый модульКомментарии4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияОператоры сравненияПовторение: простая математикаПобитовые операторы7Оператор Assign и логические вентили
Непрерывное присваиваниеAssign с операторамиВстроенные примитивы вентилейВентили AND, OR, NOTВентили XOR, XNORИтоги: Схемы на логических вентилях10Принятие решений
Оператор ifКонструкция if - elseПовторение: простой компараторОператор caseОператоры casex и casezПовторение: проектирование ALU5Операторы. Часть 2
Логические операторыОператоры редукцииОператоры сдвигаОператор конкатенацииУсловный операторПовторение — Испытание по операторам14Основы Testbench
Что такое TestbenchСоздание стимуловDisplay и MonitorDumpfile и DumpvarsИспользование системных задачИтоги: полный Testbench3Системы счисления
Двоичное представлениеЧисла с заданным размеромЧисла без заданного размераОтрицательные числаСпециальные значения X и ZИтоги — форматы чисел6Модули
Структура модуляВходные и выходные портыПорты InoutИнстанцирование модуляПодключение портов по имениПодключение портов по порядкуИтоги: создание модуля9Процедурные блоки
Блок alwaysБлок initialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеИтоги: always против initial