exponenta event banner

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

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

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

Создание модели испытательного стенда Simulink

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

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

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

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

verify оператор и блок тестовой последовательности представляют временную проверку в Simulink. При создании компонента SystemVerilog DPI временная логика располагается в сгенерированном коде C. Оболочка SystemVerilog содержит немедленное утверждение, которое запускается при нарушении условия проверки.

Включить блоки проверки модели Simulink

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

Кроме того, можно включить блок подтверждения проверки HDL для создания настраиваемых утверждений. Пример использования блока «Утверждение верификатора HDL» см. в разделе Создание собственных утверждений 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). Откройте инспектор данных моделирования, введя этот код в командной строке MATLAB ®.

Simulink.sdi.view

Для просмотра сигналов во времени выберите их на левой панели инспектора данных моделирования.

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 и настройте сгенерированное немедленное утверждение SystemVerilog. Можно задать пользовательское сообщение при сбое утверждения и выбрать между предупреждением, ошибкой или пользовательской командой при сбое утверждения. Пример использования блока «Утверждение верификатора HDL» см. в разделе Создание собственных утверждений SystemVerilog из Simulink. Результат аналогичен этой цифре.

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

  • Чтобы настроить утверждение из библиотеки проверки модели, подключите вывод блока к настраиваемому блоку подтверждения HDL, выполнив следующие действия.

    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. Добавьте блок подтверждения из программы проверки HDL/For Use с библиотекой SystemVerilog DPI-C и подключите выходной сигнал блока проверки модели к входному порту блока подтверждения.

    4. Настройте блок Утверждение (Assertion), следуя шагам в примере «Создать утверждение» (Generate Assertions).

    Результат аналогичен этой цифре.

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

Создание компонента UVM или SystemVerilog DPI

Конфигурирование модели для создания кода

В диалоговом окне «Параметры конфигурации» выберите «Создание кода» на левой панели. В разделе Выбор цели (Target Selection) задайте для параметра Файл цели системы (System Target File) значение systemverilog_dpi_grt.tlc или в systemverilog_dpi_ert.tlc при использовании встроенного кодера ®.

Выберите SystemVerilog DPI на левой панели. В разделе Порты SystemVerilog задайте тип данных и параметры подключения. Нажмите кнопку ОК.

Создание компонента UVM или SystemVerilog DPI

Примечание

Чтобы создать компонент UVM или DPI, утверждение или тестовый блок должны находиться внутри подсистемы Simulink.

В Simulink щелкните правой кнопкой мыши блок подсистемы, содержащий тестовую последовательность, и выберите C/C + + Code > Build This Subsystem. Щелкните Построить (Build) в открывшемся диалоговом окне.

Кроме того, для создания компонента DPI можно использовать командную строку MATLAB. Используйте 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.

Дополнительные сведения о SID см. в разделе Идентификаторы Simulink (Simulink).

См. также

Блоки

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

Связанные темы