Проверки четырёх состояний
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 26 из 38.
Тестовое окружение должно намеренно обрабатывать неизвестные значения. Обычное равенство может вернуть X, что способно скрыть сбой в условии if. Поразрядные равенство и неравенство, === и !==, буквально сравнивают все четыре значения и возвращают известное логическое значение. Операция сокращения XOR с последующим сравнением case с X может обнаружить неизвестные биты. Используйте их как проверки при моделировании, а не как модель аппаратуры, обнаруживающей физические значения X.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
if(actual !== expected) errors = errors + 1;Различие, включающее X или Z, засчитывается, а не исчезает в неизвестном условии.
Используйте явные сравнения для четырёх состояний в проверяющих модулях симуляции и определяйте, как следует обрабатывать неизвестные значения.
Задание
СреднеЭто проверяющее устройство предназначено только для симуляции, а не для синтезируемой логики тракта данных. Установите mismatch, когда actual и expected различаются при сравнении в четырехзначной логике. Если в одинаковых позициях у обоих находятся одинаковые X или Z, они считаются равными. Результат всегда должен быть известным значением 0 или 1. Столбцы вывода: mismatch. Все значения стимулов являются известными двоичными значениями.
Завершите design.v и сохраните имена его модуля и портов. Заблокированный testbench.v подает изменения входных сигналов и выводит результаты после их установления. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в проект вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделенных одним пробелом и заканчивающаяся символом новой строки.
Попробуйте сами
module dut (input [3:0] actual, input [3:0] expected, output mismatch);
// Замените этот заполнитель на ваш дизайн.
assign mismatch = 0;
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разность3Переиспользуемый RTL
Комбинационные функцииПараметры с безопасной разрядностьюЦиклы generateУсловный generateПовторение — переиспользуемая битовая маска6Самопроверяющиеся тестовые стенды
Проверки четырёх состоянийПовторно используемые задачи-проверяющиеЭталонные модели и оценкаПокрытие границ и управленияПовторение — проверка сумматораПотренируйтесь самостоятельно: Онлайн-компилятор Verilog