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

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

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

Чтобы узнать больше проверяют операторы, видят, Оценивают Симуляцию модели Используя, проверяют Операторы (Simulink Test).

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

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

Обзор

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

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

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

  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)

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

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

  2. Нажмите Build в диалоговом окне, которое появляется.

  3. Сборка генерирует код С для подсистемы 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');

Запустите сгенерированный испытательный стенд в симуляторе HDL

Для этого примера будет использоваться средство моделирования ModelsSim/QuestaSim. Для подробных инструкций относительно того, как запустить испытательный стенд, относятся к Начало работы с Генерацией Компонента SystemVerilog DPI.

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

Исследуйте симуляцию HDL выход и заметьте следующее:

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

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

  • Тест отмечен как ПРОЙДЕН, потому что результаты симуляции SystemVerilog совпадают с результатами симуляции Simulink.

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

  • Полной функциональной цели покрытия не удовлетворяют.

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

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

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

Прослеживание ошибки SystemVerilog к Simulink

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

Если вы находите SID для ID шага в тестовом блоке последовательности, можно использовать Simulink программируемые API, чтобы подсветить соответствующий блок. Для получения дополнительной информации смотрите Идентификаторы Simulink (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 теперь показывает:

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

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

  • Больше нет никаких ошибок.

  • Тест отмечен как ПРОЙДЕН, потому что результаты симуляции SystemVerilog совпадают с результатами симуляции Simulink.

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

  • Полной функциональной цели покрытия удовлетворяют.

Увеличьтесь цель покрытия определенного проверяют оценку

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

% 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 ПЕРЕДАЧ, и поэтому тест в целом не также.

Регистрируйте передачу, сбой, и непротестированное состояние для всех проверяет оценки

Можно добавить, регистрируют выход для всех проверок состояния на весь неотфильтрованный verify вызовы путем добавления +VERBOSE_VERIFY плюс аргумент. Эта сила быть полезной, если необходимо проверить синхронизацию и распределение UNTESTED, ПЕРЕДАЧИ и СБОЯ, проверяет значения состояния.

% 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 с минимальным усилием.