exponenta event banner

Создание функционального покрытия в SystemVerilog из системного теста verify Требования

В этом примере показано, как протестировать систему управления проектором с помощью моделирования модели, а также как создать компонент SystemVerilog DPI для некоторых требований к высокому уровню контроллера, которые указаны в блоке тестовой последовательности. Это позволит повторно использовать проверку требований, используемую для моделирования модели, в имитаторе ЛПВП с минимальными усилиями.

Модель была взята из примера тестирования контроллера проектора с использованием проверки и тестов в реальном времени (Simulink Test), поставляемых с Simulink Test™, и упрощена, чтобы показать только сценарий требований 4.

Дополнительные сведения о операторах проверки см. в разделе Оценка моделирования модели с помощью операторов проверки (Simulink Test).

Другие предпосылки

В дополнение к заявленным требованиям к продукту в этом примере требуется следующее:

Обзор

Тест проверяет контроллер на соответствие его требованиям с помощью тестовых последовательностей, выполняющих модель контроллера верхнего уровня. Контроллер использует кнопочный вход и вход датчика температуры и выдает сигналы управления вентилятором, скоростью вентилятора и индикаторной лампой.

Задача состоит в том, чтобы создать компонент SystemVerilog DPI, который фиксирует высокоуровневое требование номер 4 контроллера. Для получения дополнительной информации о требованиях см. документ слова sltestProjectorCtrlReqs.docx в примере, упомянутом выше.

Требование 4 пытается включить и выключить проектор при высокой температуре проектора (Tproj). Сценарий содержит следующие шаги в блоке Тестовая последовательность:

  1. Установите температуру проектора на 50 градусов Цельсия.

  2. Попробуйте включить.

  3. Система не должна включаться.

  4. Установите температуру 50 градусов Цельсия.

  5. Попробуйте выключить.

  6. Система должна быть выключена.

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

Настройка модели для создания кода

Модель и испытательный стенд предварительно сконфигурированы с помощью одного из целевых файлов системы SystemVerilog DPI (systemverilog_dpi_grt.tlc). Откройте тестовый жгут Req_scenario_4 путем выполнения:

testFile = 'svdpi_sltestProjectorCtrlTests.mldatx';
testHarness = 'Req_scenario_4';
model = 'svdpi_sltestProjectorController';
open_system(model)
sltest.harness.open(model,testHarness)

Создать компонент DPI SystemVerilog

  1. На стенде тестирования Req_scenario_4 щелкните правой кнопкой мыши блок подсистемы Req_4, содержащий блок последовательности тестирования, и выберите. Код C/C + + - > Построить эту подсистему.

  2. Нажмите кнопку Построить (Build) в появившемся диалоговом окне.

  3. Сборка генерирует код C для подсистемы Req_4, а также обертку SystemVerilog DPI и файл пакета с именами «Req_4_build/Req_4_dpi.sv» и «Req_4_build/Req_4_dpi_pkg.sv.».

Обратите внимание, что некоторые предупреждения о проверке будут запущены, это будет объяснено позже.

Кроме того, можно создать компонент путем выполнения следующих действий:

slbuild('Req_scenario_4/Req_4');

Запуск сгенерированных средств тестирования в симуляторе ЛПВП

В данном примере используется симулятор Sim/QuestaSim. Подробные инструкции по запуску testbench см. в разделе Начало работы с компонентом SystemVerilog DPI.

cd Req_4_build/dpi_tb
! vsim -c -do run_tb_mq.do  # Run ModelSim/QuestaSim in console mode
cd ../..

Проверьте выходные данные моделирования ЛПВП и обратите внимание на следующее:

  • Информационное сообщение показывает, что функциональная зона покрытия будет собрана для 2 проверочных вызовов в компоненте.

  • Если температура выше предельного значения, то при отключении контроллера отображается ошибка.

  • Тест помечен как PASSED, поскольку результаты моделирования SystemVerilog соответствуют результатам моделирования Simulink.

  • Функциональная переадресация показывает, что переадресация достигается для первого верифицируемого вызова, но не достигается для второго.

  • Общая цель функционального покрытия не достигнута.

Ошибка согласуется с результатами моделирования в Simulink (см. ниже). Открытие диспетчера тестирования показывает, что контроллер не отключается при нажатии кнопки on_off, когда температура выше предельного значения. Для открытия менеджера тестирования можно выполнить следующее:

sltest.testmanager.load(testFile);
sltest.testmanager.view;

Для устранения неисправности потребуется изменить подсистему проверки OnOff в главной модели. Другое требование, verify_sc4_on, удовлетворен, как показано в результатах Simulink Test и SystemVerilog.

Трассировка ошибки SystemVerilog в Simulink

Если требуется отследить инструкцию verify, которая вызвала ошибку, обратно в Simulink, необходимо найти идентификатор Simulink Identifier (SID) из сообщения об ошибке, как показано ниже:

После нахождения идентификатора SID для идентификатора шага в блоке тестовой последовательности можно использовать программные API Simulink для выделения соответствующего блока. Дополнительные сведения см. в разделе Идентификаторы Simulink (Simulink). Выполните следующую команду:

Simulink.ID.hilite('Req_scenario_4:32:60');

При этом будет выделен соответствующий блок, как показано ниже.

Фильтрация определенной оценки проверки

Для фильтрации любых проверок состояния оценки в имитаторе ЛПВП введите в имитатор ЛПВП SID оценки, которую требуется отфильтровать, в качестве аргумента плюсаргов. Такой фильтр означает отсутствие ошибок и проверки покрытия для этой оценки. Например, можно отфильтровать ошибку, которая verify_sc4_off дает, подавая аргумент «+ Req _ scription _ 4:32:60» в имитатор ЛПВП. Это можно сделать с помощью переменной среды, чтобы не изменять созданный сценарий.

% Clear environment variables that influence the SV simulation
setenv EXTRA_SVDPI_COMP_ARGS
setenv EXTRA_SVDPI_SIM_ARGS
% Filter the failing verify()
setenv EXTRA_SVDPI_SIM_ARGS +Req_scenario_4:32:60=-1
cd Req_4_build/dpi_tb
! vsim -c -do run_tb_mq.do  # Run ModelSim/QuestaSim in console mode
cd ../..

Обратите внимание, что моделирование HDL теперь показывает:

  • Предупреждение о том, что выполняется фильтрация одной из оценок проверки

  • Информационное сообщение о том, что покрытие будет собрано для другой оценки

  • Ошибок больше нет.

  • Тест помечен как PASSED, поскольку результаты моделирования SystemVerilog соответствуют результатам моделирования Simulink.

  • Функциональное покрытие показывает, что покрытие достигнуто для включенной оценки

  • Общая цель функционального покрытия достигнута.

Увеличение цели охвата конкретной оценки проверки

Можно также изменить требуемую цель функционального покрытия для любой оценки, указав положительное значение в плюс arg. Целью по умолчанию является просмотр по крайней мере 1 состояния PASS для проверочного вызова. Если бы вы хотели убедиться, что было по крайней мере 2 проверки состояния PASS, вы бы указали «2» в качестве значения плюс arg.

% Clear environment variables that influence the SV simulation
setenv EXTRA_SVDPI_COMP_ARGS
setenv EXTRA_SVDPI_SIM_ARGS
% Filter the failing |verify| and set a coverage goal of 2 for the other |verify|
setenv EXTRA_SVDPI_SIM_ARGS '+Req_scenario_4:32:60=-1 +Req_scenario_4:32:39=2'
cd Req_4_build/dpi_tb
! vsim -c -do run_tb_mq.do  # Run ModelSim/QuestaSim in console mode
cd ../..

Обратите внимание, что моделирование HDL теперь показывает, что не отфильтрованный verify не соответствует цели покрытия, по крайней мере, 2 PASS, и поэтому тест в целом также не выполняется.

Регистрация прохождения, неуспешного завершения и непроверенного состояния для всех оценок проверки

Можно добавить выходные данные журнала для всех проверок статуса для всех нефильтрованных verify путем добавления + VERBOSE _ VERIFY плюс arg. Это может оказаться полезным при необходимости проверки синхронизации и распределения значений состояния проверки UNTESTED, PASS и FAIL.

% Clear environment variables that influence the SV simulation
setenv EXTRA_SVDPI_COMP_ARGS
setenv EXTRA_SVDPI_SIM_ARGS
% Log every status check.
setenv EXTRA_SVDPI_SIM_ARGS +VERBOSE_VERIFY
cd Req_4_build/dpi_tb
! vsim -c -do run_tb_mq.do  # Run ModelSim/QuestaSim in console mode
cd ../..

Обратите внимание, что моделирование HDL теперь показывает каждое значение проверки статуса UNTESTED и PASS как SystemVerilog info сообщения и каждого состояния FAIL ошибка SystemVerilog.

Заключение

Для переноса логики проверки из Simulink в имитатор ЛПВП с минимальными усилиями можно использовать генерацию компонентов SystemVerilog DPI и блок тестовой последовательности из Simulink Test™.