Покрытие границ и управления
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 29 из 38.
Прохождение нескольких тестов отличается от проверки важных сценариев. Отслеживайте, были ли протестированы минимальные, максимальные и обычные значения, а также происходили ли конкурирующие элементы управления одновременно. Флаг покрытия фиксирует, что наблюдался case; он не доказывает, что система правильно отреагировала. Сочетайте покрытие с проверками результатов.
Релевантный фрагмент; окружающие объявления и соединения предоставлены в задании.
if(value==0) seen[0]=1;
else if(value==15) seen[1]=1;
else seen[2]=1;Битовая маска запоминает, какие категории встретились, не заменяя предыдущие совпадения.
Сочетайте покрытие границ и комбинаций управляющих воздействий с независимыми проверками корректности.
Задание
СреднеОтслеживайте три бина покрытия входных данных в seen, не очищая предыдущие попадания: бит 0 фиксирует value=0, бит 1 фиксирует value=15, а бит 2 фиксирует значения от 1 до 14. Входы содержат известные биты. Перед сценарием вызывающая сторона инициализирует seen=0. Этот модуль содержит предназначенную только для моделирования task, вызываемую заблокированным тестбенчем. Столбцы вывода: seen в десятичном формате.
Завершите design.v и сохраните имена его модулей и портов. Заблокированный testbench.v задаёт изменения входных данных и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Оставьте вывод и управление сценариями в заблокированном тестбенче; реализуйте только тело task. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.
Попробуйте сами
module dut;
task observe;
input [3:0] value;
inout [2:0] seen;
begin
// Завершите задачу checker.
seen=seen;
end
endtask
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разность3Переиспользуемый RTL
Комбинационные функцииПараметры с безопасной разрядностьюЦиклы generateУсловный generateПовторение — переиспользуемая битовая маска6Самопроверяющиеся тестовые стенды
Проверки четырёх состоянийПовторно используемые задачи-проверяющиеЭталонные модели и оценкаПокрытие границ и управленияПовторение — проверка сумматораПотренируйтесь самостоятельно: Онлайн-компилятор Verilog