SystemVerilog Пример

Структура файлов и каталогов тестового окружения

Структура файлов и каталогов для двух вариантов тестовых окружений представлена в таблице: 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, а все выходные -...

Read more...

Модуль Checker

Модуль Checker, описанный в файле Checker.sv, используется только во втором варианте тестового окружения. Этот модуль выполняет функции класса Scoreboard – сравнивает транзакции, полученные от тестируемых схем, используя для этого параметризированное SystemVerilog утверждение: property p_equal(old_sig, new_sig); @(posedge clock) disable iff (!active) old_sig == new_sig;endproperty Это свойство...

Read more...

Класс 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); ...

Read more...

Класс Driver

Класс Driver описан в файле Driver.sv. Основным методом этого класса является метод start(), который вызывается в методе Environment::start(). Этот метод запускает генерацию случайных тестовых воздействий. С помощью вызова встроенной в каждой класс виртуальной функции randomize() переменные класса Transaction, объявленные как rand или randc, заполняются случайными значениями: task start();Transaction trans =...

Read more...

Класс Transaction

В классе Transaction, описанном в файле Transaction.sv, объявляются данные, которые посылаются на тестируемые схемы и принимаются от них. Для реализации механизма генерации случайных тестовых воздействий все посылаемые на тестируемые схемы сигналы объявляются типами rand bit или randc bit. Принимаемые сигналы объявляются, как bit. Также в классе описаны методы для...

Read more...

Класс Environment

Класс  Environment  описан в файле  Environment .sv. В нем описываются методы, определяющие архитектуру тестового окружения и управляющие процессом симуляции: new() - конструктор, в котором виртуальные интерфейсы, переданные из программного блока, присваиваются виртуальным интерфейсам, объявленным в классе  Environment . Сам по себе виртуальный интерфейс является неким абстрактным дескриптором физического интерфейса (указатель на физический...

Read more...

Описание интерфейсов, программного блока testcase и модуля tb_top

Описание интерфейсов В файле Interface.sv объявлены входной и выходной интерфейсы: Оба интерфейса имеют тактовый сигнал в качестве входного. Все сигналы интерфейсов объявлены, как logic. Допускается объявление сигналов входного интерфейса типа bit, т.к. в большинстве случаев не требуется посылать на тестируемую схему тестовые сигналы в неопределенном состоянии. Оба интерфейса содержат тактирующий блок (clocking...

Read more...

Архитектура тестового окружения

Тестовое окружение на языке SystemVerilog состоит из следующих блоков (см. рис. 6): Рис. 6. Общая архитектура тестового окружения Генератор (Generator) случайных тестовых воздействий генерирует транзакции с учетом наложенных ограничений (Constraint-Random Verification - CRV) и передает их с помощью почтового ящика (MailBox) драйверу. Драйвер (Driver) по входному интерфейсу (Interface) посылает транзакцию на вход...

Read more...