Генерация компонента SystemVerilog DPI и рабочие процессы генерации испытательного стенда Универсальной методологии верификации (UVM) позволяют вам снова использовать модели верификации Simulink® в получившемся SystemVerilog. Блоки верификации модели Simulink, такие как Assertion (Simulink) или Check Dynamic Lower Bound (Simulink) и вызовы verify
Операторы (Simulink Test) создают проверки на ошибки и функциональные точки покрытия в сгенерированном SystemVerilog.
Когда утверждение Simulink или verify
вызовите сбои, это генерирует ошибку SystemVerilog по умолчанию. Когда любой успешно выполняется, это генерирует SystemVerilog, отвечают на вопрос, который регистрирует результат ПЕРЕДАЧИ. Утверждения и verify
поведения оператора могут быть настроены с помощью параметров командной строки SystemVerilog и блока HDL Verifier Assertion. Для получения дополнительной информации об индивидуальной настройке, смотрите, Настраивают Утверждение.
В Simulink создайте модель для устройства под тестом (DUT), и затем создайте испытательный стенд для модели. Можно использовать комбинацию блоков утверждения из библиотеки Simulink / Model Verification и блоков, которые содержат verify
операторы от библиотеки Simulink Test, такие как:
A verify
Оператор (Simulink Test)
Блок из библиотеки Model Verification (Simulink)
Блок HDL Verifier™ Assertion
В вашей тестовой модели включайте verify
оператор путем добавления одного или нескольких из этих блоков:
Test Assessment (Simulink Test)
Test Sequence (Simulink Test)
Chart (Stateflow)
Чтобы создать и отредактировать тестовые шаги, используйте Тестовый Редактор Последовательности (Simulink Test). В тестовой последовательности используйте verify
операторы, чтобы оценить симуляцию, как описано в Тестовом Синтаксисе Последовательности и Оценки (Simulink Test).
verify
оператор и блок Test Sequence представляют временную регистрацию Simulink. Когда вы генерируете компонент SystemVerilog DPI, временная логика расположена в сгенерированном коде C. Обертка SystemVerilog содержит мгновенное утверждение, которое инициировало, когда проверять условие нарушено.
Можно также включать эти блоки утверждения из библиотеки Simulink / Model Verification (Simulink).
Assertion (Simulink)
Check Dynamic Gap (Simulink)
Check Dynamic Range (Simulink)
Check Static Gap (Simulink)
Check Static Range (Simulink)
Check Dynamic Lower Bound (Simulink)
Check Dynamic Upper Bound (Simulink)
Check Input Resolution (Simulink)
Check Static Lower Bound (Simulink)
Check Static Upper Bound (Simulink)
Check Discrete Gradient (Simulink)
Кроме того, можно включать блок HDL Verifier Assertion, чтобы создать настраиваемые утверждения. Для примера, который использует блок HDL Verifier Assertion, смотрите, Генерируют Собственный компонент Утверждения SystemVerilog от Simulink.
В SystemVerilog, каждом блоке верификации модели и verify
оператор сопоставлен с утверждением и точкой покрытия. Можно настроить цели покрытия, отфильтровать определенные утверждения и видеть многословную информацию для каждого из проверять операторов.
Можно использовать несколько verify
операторы и утверждение блокируются в вашей модели.
При симуляции проекта в Simulink симуляция предупреждает если утверждение или verify
сбои оценки.
Можно просмотреть и смотреть результаты симуляции при помощи Simulation Data Inspector (Simulink). Откройте Simulation Data Inspector путем ввода этого кода в командной строке MATLAB®.
Simulink.sdi.view
Чтобы просматривать сигналы в зависимости от времени, выберите их на левой панели Simulation Data Inspector.
Можно настроить SystemVerilog мгновенное утверждение двумя способами:
Включайте блок HDL Verifier Assertion и настройте сгенерированный SystemVerilog мгновенное утверждение. Можно установить пользовательское сообщение, когда утверждение перестало работать и может выбрать между предупреждением, ошибкой или пользовательской командой, когда утверждение перестало работать. Для примера, который использует блок HDL Verifier Assertion, смотрите, Генерируют Собственный компонент Утверждения SystemVerilog от Simulink. Результат похож на этот рисунок.
Чтобы настроить утверждение от библиотеки Model Verification, соедините блок выход с настраиваемым блоком HDL Verifier Assertion путем выполнения этих шагов.
Добавьте блок от библиотеки Simulink / Model Verification до вашей модели.
Откройте маску блока, и затем установите эти параметры (как показано в этом рисунке):
Очистите параметр Enable assertion, чтобы предотвратить избыточное утверждение выходные параметры.
Выберите параметр Output assertion signal, чтобы создать булев выходной сигнал, который получает утверждение.
Добавьте блок Assertion из библиотеки HDL Verifier / For Use with DPI-C SystemVerilog и соедините выходной сигнал блока Model Verification к входному порту блока Assertion.
Настройте блок Assertion путем выполнения шагов в Сгенерировать примере Рабочего процесса Утверждений.
Результат похож на этот рисунок.
В диалоговом окне Configuration Parameters выберите Code Generation на левой панели. Под Target Selection, набор System Target File к systemverilog_dpi_grt.tlc
или к systemverilog_dpi_ert.tlc
при использовании Embedded Coder®.
Выберите SystemVerilog DPI на левой панели. Под SystemVerilog Ports, набор тип данных и настройки подключения. Нажмите OK.
Примечание
Чтобы сгенерировать UVM или Компонент DPI, утверждение или тестовый блок должны быть в Подсистеме Simulink.
В Simulink щелкните правой кнопкой по блоку подсистемы, который содержит тестовую последовательность, и выберите C/C++ Code> Build This Subsystem. Нажмите Build в диалоговом окне, которое открывается.
В качестве альтернативы можно использовать командную строку MATLAB, чтобы сгенерировать компонент DPI. Используйте slbuild
(Simulink) функция, чтобы создать систему. Например, чтобы создать подсистему по имени "My_verify_tst", введите этот код в командной строке MATLAB.
slbuild('My_verify_tst');
Можно также использовать uvmbuild
функция, чтобы сгенерировать испытательный стенд UVM. Если ваша тестовая модель содержит verify
операторы, они сопоставлены с утверждениями в вашей среде UVM, и данные о покрытии собраны.
Измените свою текущую папку в dpi_tb
папка, которая находится под папкой генерации кода в вашей установке симулятора HDL. Запустите свой симулятор HDL и запустите сгенерированный скрипт, чтобы запустить симуляцию. Симуляция выход сопоставима с Simulink выход.
После того, как симуляция завершается, информация о покрытии отображена для каждого утверждения. По умолчанию утверждение рассматривается покрытым, если оно было оценено, по крайней мере, однажды.
Для получения дополнительной информации о выполнении симуляции HDL смотрите, Проверяют Сгенерированный Компонент По Данным Simulink.
Каждая сгенерированная ошибка или предупреждение отображений уникальное имя, идентифицирующее его источник. Тот номер является идентификатором Simulink (SID) того блока. Например, этот журнал показывает ошибку, которая была сгенерирована блоком с SID Req_scenario_4:32:60
.
# ** Error: Req_scenario_4:32:60: At step 'Check2' verify id 'Simulink:verify_sc4_off' Failed
У вас может быть несколько шагов в тестовой последовательности, которые используют verify
оценка или несколько компонентов DPI, регистрирующих предупреждения от симуляции. В вашей тестовой модели можно отфильтровать сгенерированный выход для определенного verify
проверяет определение связанного SID как плюс аргумент на командной строке и приравнивании SID к -1
. Например, чтобы выключить весь выход и функциональное покрытие для SID Req_scenario_4:32:60
, введите этот код в командной строке HDL.
vsim -c -sv_lib ../Req_4 work.Req_4_dpi_tb +Req_scenario_4:32:60=-1
Можно использовать блоки утверждения и verify
операторы, чтобы собрать функциональное покрытие во время симуляции SystemVerilog. После генерации SystemVerilog с помощью uvmbuild
или slbuild
(Simulink) функции, задайте цели покрытия для каждого утверждения. После того, как симуляция SystemVerilog завершается, просмотрите результаты в сгенерированном файле журнала или используйте сторонний инструмент, чтобы извлечь результаты. Целью покрытия по умолчанию является по крайней мере одно передающее выполнение утверждения или verify
вызвать.
Чтобы увеличить функциональную цель покрытия для определенного утверждения, задайте связанный SID как плюс аргумент в командной строке и приравняйте SID к своей цели покрытия. Например, чтобы увеличить цель покрытия verify
оператор с SID Req_scenario_4:32:60
от значения по умолчанию одной - двух передающих проверок введите этот код в командной строке HDL.
vsim -c -sv_lib ../Req_4 work.Req_4_dpi_tb +Req_scenario_4:32:60=2
По умолчанию сгенерированный компонент DPI выводит ошибку, когда функциональная точка покрытия оценена и перестала работать. Чтобы видеть дополнительный выход, сгенерированный функциональной точкой покрытия, введите аргумент +VERBOSE_VERIFY
в командной строке симуляции HDL. Этот аргумент добавляет эту дополнительную информацию:
UNTESTED
– Когда функциональная точка покрытия не была оценена
PASSED
– Когда функциональная точка покрытия была оценена, и тест передал
Например, при использовании ModelSim®, введите этот код в командной строке.
vsim -c -sv_lib ../Req_4 work.Req_4_dpi_tb +VERBOSE_VERIFY
После выполнения симуляции SystemVerilog со сгенерированной тестовой последовательностью ваш файл журнала выводит предупреждения и ошибки. Чтобы идентифицировать, какой блок породил определенное предупреждение или вывод ошибок, используйте hilite_system
(Simulink) функция.
Например, чтобы подсветить блок, который сгенерировал предупреждение для SID Req_scenario_4:32:60
, введите этот код в командной строке MATLAB.
hilite_system('Req_scenario_4:32:60');
Этот рисунок подсвечивает проверять оператор и тестовый блок последовательности, который создал предупреждение.
Для получения дополнительной информации о SIDs смотрите Идентификаторы Simulink (Simulink).