Эталонные модели и оценка
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 28 из 38.
Тестбенч с самопроверкой независимо от выходных данных проекта вычисляет ожидаемое поведение. Эталонная модель может использовать простую арифметику, даже если в реализации применяется другая структура. Scoreboard подсчитывает наблюдения и несовпадения. Инициализируйте его счётчики один раз для каждого сценария и выполняйте сравнение только после установления выходных данных проекта.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
expected = {1'b0,a} + {1'b0,b};
checked = checked + 1;
if(actual !== expected) errors = errors + 1;Ожидаемое значение определяется заданным поведением входных данных, а не копированием actual.
Вычисляйте ожидаемые значения независимо, выполняйте выборку в заданный момент времени и отслеживайте каждый проверенный результат.
Задание
СреднеРеализуйте проверку результата для беззнакового четырёхбитного сумматора. Вычислите полную пятибитную математическую сумму a+b, затем возвращайте ok=1 только в том случае, если actual точно совпадает с этим результатом при сравнении в четырёхзначной логике. Этот модуль содержит предназначенную только для симуляции task, вызываемую заблокированным тестбенчем. Столбцы вывода: ok.
Завершите design.v и сохраните имена его модулей и портов. Заблокированный testbench.v подаёт изменения входных данных и выводит результаты после их установления. Он выбирает сценарий с помощью аргумента симулятора, такого как +CASE=1; стандартный ввод не требуется. Оставьте вывод и управление сценариями в заблокированном тестбенче; реализуйте только тело task. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.
Попробуйте сами
module dut;
task check_sum;
input [3:0] a,b;
input [4:0] actual;
output ok;
reg [4:0] expected;
begin
// Завершите задачу проверки.
ok=0;
end
endtask
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разность3Переиспользуемый RTL
Комбинационные функцииПараметры с безопасной разрядностьюЦиклы generateУсловный generateПовторение — переиспользуемая битовая маска6Самопроверяющиеся тестовые стенды
Проверки четырёх состоянийПовторно используемые задачи-проверяющиеЭталонные модели и оценкаПокрытие границ и управленияПовторение — проверка сумматораПотренируйтесь самостоятельно: Онлайн-компилятор Verilog