verify ТребованияВ этом примере показано, как протестировать систему управления проектором с помощью моделирования модели, а также как создать компонент SystemVerilog DPI для некоторых требований к высокому уровню контроллера, которые указаны в блоке тестовой последовательности. Это позволит повторно использовать проверку требований, используемую для моделирования модели, в имитаторе ЛПВП с минимальными усилиями.
Модель была взята из примера тестирования контроллера проектора с использованием проверки и тестов в реальном времени (Simulink Test), поставляемых с Simulink Test™, и упрощена, чтобы показать только сценарий требований 4.
Дополнительные сведения о операторах проверки см. в разделе Оценка моделирования модели с помощью операторов проверки (Simulink Test).
В дополнение к заявленным требованиям к продукту в этом примере требуется следующее:
Поддерживаемый имитатор ЛПВП. См. раздел Требования к генерации компонентов UVM и DPI.
Поддерживаемый компилятор Си. См. раздел Выбор и настройка компилятора C или C++ (Simulink Coder).
Тест проверяет контроллер на соответствие его требованиям с помощью тестовых последовательностей, выполняющих модель контроллера верхнего уровня. Контроллер использует кнопочный вход и вход датчика температуры и выдает сигналы управления вентилятором, скоростью вентилятора и индикаторной лампой.
Задача состоит в том, чтобы создать компонент SystemVerilog DPI, который фиксирует высокоуровневое требование номер 4 контроллера. Для получения дополнительной информации о требованиях см. документ слова sltestProjectorCtrlReqs.docx в примере, упомянутом выше.
Требование 4 пытается включить и выключить проектор при высокой температуре проектора (Tproj). Сценарий содержит следующие шаги в блоке Тестовая последовательность:
Установите температуру проектора на 50 градусов Цельсия.
Попробуйте включить.
Система не должна включаться.
Установите температуру 50 градусов Цельсия.
Попробуйте выключить.
Система должна быть выключена.
На рисунке ниже показан испытательный стенд для выполнения вышеуказанного требования и способы 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)
На стенде тестирования Req_scenario_4 щелкните правой кнопкой мыши блок подсистемы Req_4, содержащий блок последовательности тестирования, и выберите. Код C/C + + - > Построить эту подсистему.
Нажмите кнопку Построить (Build) в появившемся диалоговом окне.
Сборка генерирует код 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.

Если требуется отследить инструкцию 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™.