Популярные Посты
Недавние Посты
Рекомендуемые Посты
Введение. Что такое утверждение?
Введение Утверждения описывают поведение системы. В основном они используются для проверки правильности поведения проекта. Также с помощью утверждений можно оценить полноту функционального покрытия. Метод верификации на основе утверждений подразумевает расстановку ...
Структура файлов и каталогов тестового окружения
Структура файлов и каталогов для двух вариантов тестовых окружений представлена в таблице: var1 var2 \rtl new_scheme.cpp new_scheme.h new_scheme.v new_scheme.vhd old_scheme.cpp old_scheme.h old_scheme.v old_scheme.vhd \sim Makefile run.do synopsys_sim.setup \testbench Coverage.sv Driver.sv Environment.sv Globals.sv Interface.sv Receiver.sv Scoreboard.sv tb_top.sv testcase.sv Transaction.sv \testbench Checker.sv Coverage.sv Driver.sv Environment.sv Globals.sv Interface.sv tb_top.sv testcase.sv Transaction.sv Конфигурирование и симуляция тестового окружения Конфигурирование тестового окружения рекомендуется делать по следующим шагам: 1. В Interface.sv объявить все входные порты тестируемой схемы в input_interface, а все выходные -...
Модуль Checker
Модуль Checker, описанный в файле Checker.sv, используется только во втором варианте тестового окружения. Этот модуль выполняет функции класса Scoreboard – сравнивает транзакции, полученные от тестируемых схем, используя для этого параметризированное SystemVerilog утверждение: property p_equal(old_sig, new_sig); @(posedge clock) disable iff (!active) old_sig == new_sig;endproperty Это свойство...
Класс Scoreboard
Класс Scoreboard описан в файле Scoreboard.sv. Основной метод класса Scoreboard::start() последовательно берет посланные приемниками транзакции из почтовых ящиков: rcvr2sb[0].get(old_trans);rcvr2sb[1].get(new_trans); и сравнивает их: if (old_trans.compare(new_trans)) begin $display(" %0d : Scoreboard : Equal outputs ",$time);end else begin $display(" %0d : Scoreboard : **ERROR: Unequal outputs ",$time); ...
Класс Receiver
Объявленный в файле Receiver.sv класс Receiver также, как и драйвер, содержит метод start(): task start();Transaction trans = new(); while (!trans.stop) begin receive(trans); rcvr2sb.put(trans); end endtask : start Пока не пришел сигнал...
Класс Driver
Класс Driver описан в файле Driver.sv. Основным методом этого класса является метод start(), который вызывается в методе Environment::start(). Этот метод запускает генерацию случайных тестовых воздействий. С помощью вызова встроенной в каждой класс виртуальной функции randomize() переменные класса Transaction, объявленные как rand или randc, заполняются случайными значениями: task start();Transaction trans =...