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

Рабочие процессы генерации компонентов SystemVerilog DPI и универсальной методологии верификации (UVM) испытательного стенда генерации позволяют вам повторно использовать Simulink® модели верификации в получившемся SystemVerilog. Блоки верификации модели Simulink, такие как Assertion (Simulink) или Check Dynamic Lower Bound (Simulink), и вызовы verify (Simulink Test) операторы создают проверки ошибок и функциональные точки покрытия в сгенерированном SystemVerilog.

Когда assertion или verify Simulink сбой вызова, он генерирует ошибку SystemVerilog по умолчанию. Когда любой из них успешен, он генерирует точку покрытия SystemVerilog, которая регистрирует результат PASS. Утверждения и verify Поведение оператора можно настроить с помощью аргументов командной строки SystemVerilog и блока HDL Verifier Assertion. Для получения дополнительной информации о индивидуальной настройке см. раздел Настройка Assertion.

Создайте модель Simulink Test

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

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

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

Чтобы создать и изменить шаги тестирования, используйте Редактор тестовых последовательностей (Simulink Test). В тестовой последовательности используйте verify операторы для оценки симуляции, как описано в Test Sequence and Assessment Syntax (Simulink Test).

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

Включите блоки верификации модели Simulink

Можно также включить эти блоки утверждений из библиотеки 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.

Настройка Assertion

Непосредственную настройку 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

  • Чтобы настроить проверку типа «assertion» из библиотеки Верификации модели, соедините выход блоков с настраиваемым блоком Assertion HDL Verifier путем выполнения следующих шагов.

    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

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

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

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

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

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

Примечание

Чтобы сгенерировать компонент UVM или DPI, блок assertion или test должен находиться внутри подсистемы 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.

Дополнительные сведения о выполнении симуляции см. в разделе Проверка сгенерированного компонента на соответствие данным 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 в командной строке симуляции. Этот аргумент добавляет эту дополнительную информацию:

  • 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.

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

См. также

Блоки

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

Похожие темы