Генерация функционального покрытия в SystemVerilog из тестовых verify Вызовы

Этот пример демонстрирует, как протестировать систему управления проектором с помощью симуляции модели и как сгенерировать компонент DPI SystemVerilog для некоторых требований высокого уровня контроллера, которые заданы в блоке Test Sequence. Это позволит повторно использовать верификацию требований, используемых для симуляции модели, в симуляторе HDL с минимальными усилиями.

Модель была взята из примера Projector Controller Testing Using Verify и Real-Time Test (Simulink Test), поставляемого с Simulink Test™, и упрощена, чтобы показать только сценарий требования 4.

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

Другие необходимые условия

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

Обзор

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

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

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

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

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

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

  4. Установите температуру 50 степеней по Цельсию.

  5. Попытайтесь выключить.

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

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

Настройте модель для генерации кода

Модель и испытательный стенд предварительно сконфигурированы с одним из системных целевых файлов DPI SystemVerilog (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. Сборка генерирует Код С для подсистемы Req_4, а также оболочку DPI SystemVerilog и файла с именем пакета «Req_4_build/Req_4_dpi.sv» и «Req_4_build/Req_4_dpi_pkg.sv.»

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

Также можно сгенерировать компонент путем выполнения:

slbuild('Req_scenario_4/Req_4');

Запустите сгенерированный тестбенч в Симулятор HDL

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

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 (ниже). Открытие Test Manager показывает, что контроллер не выключается, когда кнопка on_off нажата, когда температура выше предела. Чтобы открыть менеджер тестов, можно выполнить:

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

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

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

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

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

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

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

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

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

% 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, и поэтому тест в целом также не является.

Log Pass, Fail и Untested Status for All Verify Assessment

Можно добавить выход журнала для всех проверок состояния для всех нефильтрованных 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.

Заключение

Генерация компонентов SystemVerilog DPI и блок Test Sequence из Simulink Test™ могут использоваться, чтобы перенести логику верификации из Simulink в Симулятор HDL с минимальными усилиями.