Сгенерируйте утверждения SystemVerilog и функциональное покрытие

Генерация компонента 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 Test

В Simulink создайте модель для устройства под тестом (DUT), и затем создайте испытательный стенд для модели. Можно использовать комбинацию блоков утверждения из библиотеки Simulink / Model Verification и блоков, которые содержат verify операторы от библиотеки Simulink Test, такие как:

Создайте последовательность Simulink Test

В вашей тестовой модели включайте verify оператор путем добавления одного или нескольких из этих блоков:

Чтобы создать и отредактировать тестовые шаги, используйте Тестовый Редактор Последовательности (Simulink Test). В тестовой последовательности используйте verify операторы, чтобы оценить симуляцию, как описано в Тестовом Синтаксисе Последовательности и Оценки (Simulink Test).

verify оператор и блок Test Sequence представляют временную регистрацию Simulink. Когда вы генерируете компонент SystemVerilog DPI, временная логика расположена в сгенерированном коде C. Обертка SystemVerilog содержит мгновенное утверждение, которое инициировало, когда проверять условие нарушено.

Включайте Simulink блоки Model Verification

Можно также включать эти блоки утверждения из библиотеки Simulink / Model Verification (Simulink).

Кроме того, можно включать блок HDL Verifier Assertion, чтобы создать настраиваемые утверждения. Для примера, который использует блок HDL Verifier Assertion, смотрите, Генерируют Собственный компонент Утверждения SystemVerilog от Simulink.

В SystemVerilog, каждом блоке верификации модели и verify оператор сопоставлен с утверждением и точкой покрытия. Можно настроить цели покрытия, отфильтровать определенные утверждения и видеть многословную информацию для каждого из проверять операторов.

Можно использовать несколько verify операторы и утверждение блокируются в вашей модели.

При симуляции проекта в Simulink симуляция предупреждает если утверждение или verify сбои оценки.

Diagnostic Viewer dialog box showing results of simulation: "Test verification failed at t = 7.1 : System should turn off above max on temp."

Можно просмотреть и смотреть результаты симуляции при помощи Simulation Data Inspector (Simulink). Откройте Simulation Data Inspector путем ввода этого кода в MATLAB® командная строка.

Simulink.sdi.view

Чтобы просматривать сигналы в зависимости от времени, выберите их на левой панели Simulation Data Inspector.

Simulation Data Inspector dialog box with two signals selected on the left pane and a graph on the right pane showing that one test passed and one failed.

Настройте утверждение

Можно настроить SystemVerilog мгновенное утверждение двумя способами:

  • Включайте блок HDL Verifier Assertion и настройте сгенерированный SystemVerilog мгновенное утверждение. Можно установить пользовательское сообщение, когда утверждение перестало работать и может выбрать между предупреждением, ошибкой или пользовательской командой, когда утверждение перестало работать. Для примера, который использует блок HDL Verifier Assertion, смотрите, Генерируют Собственный компонент Утверждения SystemVerilog от Simulink. Результат похож на этот рисунок.

    Input logic connected to a Gain block, which is connected to a DPI customized assertion block

  • Чтобы настроить утверждение от библиотеки Model Verification, соедините блок выход с настраиваемым блоком HDL Verifier Assertion путем выполнения этих шагов.

    1. Добавьте блок от библиотеки Simulink / Model Verification до вашей модели.

    2. Откройте маску блока, и затем установите эти параметры (как показано в этом рисунке):

      • Очистите параметр Enable assertion, чтобы предотвратить избыточное утверждение выходные параметры.

      • Выберите параметр Output assertion signal, чтобы создать булев выходной сигнал, который получает утверждение.

      Block mask for Check Static Upper Bound block, showing that the Enable assertion parameter is cleared, and the Output assertion signal parameter is selected.

    3. Добавьте блок Assertion из библиотеки HDL Verifier / For Use with DPI-C SystemVerilog и соедините выходной сигнал блока Model Verification к входному порту блока Assertion.

    4. Настройте блок Assertion путем выполнения шагов в Сгенерировать примере Рабочего процесса Утверждений.

    Результат похож на этот рисунок.

    A sine-wave generator connected to a static upper bound assertion block, which is connected to a DPI customized assertion block

Сгенерируйте компонент SystemVerilog DPI или UVM

Сконфигурируйте модель для генерации кода

В диалоговом окне Configuration Parameters выберите Code Generation на левой панели. Под Target Selection, набор System Target File к systemverilog_dpi_grt.tlc или к systemverilog_dpi_ert.tlc при использовании Embedded Coder®.

Выберите SystemVerilog DPI на левой панели. Под SystemVerilog Ports, набор тип данных и настройки подключения. Нажмите OK.

Сгенерируйте компонент SystemVerilog DPI или UVM

Примечание

Чтобы сгенерировать 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, и данные о покрытии собраны.

Запустите симуляцию HDL со сгенерированным компонентом

Измените свою текущую папку в dpi_tb папка, которая находится под папкой генерации кода в вашей установке симулятора HDL. Запустите свой симулятор HDL и запустите сгенерированный скрипт, чтобы запустить симуляцию. Симуляция выход сопоставима с Simulink выход.

После того, как симуляция завершается, информация о покрытии отображена для каждого утверждения. По умолчанию утверждение рассматривается покрытым, если оно было оценено, по крайней мере, однажды.

Log file from HDL simulation. The log shows that two verify calls were checked. One was covered in simulation and the other was not.

Для получения дополнительной информации о выполнении симуляции 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 до источника Simulink

После выполнения симуляции SystemVerilog со сгенерированной тестовой последовательностью ваш файл журнала выводит предупреждения и ошибки. Чтобы идентифицировать, какой блок породил определенное предупреждение или вывод ошибок, используйте hilite_system (Simulink) функция.

Например, чтобы подсветить блок, который сгенерировал предупреждение для SID Req_scenario_4:32:60, введите этот код в командной строке MATLAB.

hilite_system('Req_scenario_4:32:60');

Этот рисунок подсвечивает проверять оператор и тестовый блок последовательности, который создал предупреждение.

Image of highlighted Test Sequence block. This block is the source of warnings from SID Req_scenario_4:32:60.

Image of verify statement which created the warning for SID Req_scenario_4:32:60.

Для получения дополнительной информации о SIDs смотрите Идентификаторы Simulink (Simulink).

Смотрите также

Блоки

Синтаксис языка MATLAB

Похожие темы