verify
Оператор с тестовым блоком последовательности, чтобы протестировать контроллер проектораЭтот пример демонстрирует, как протестировать систему управления проектора с помощью симуляции модели, и как сгенерировать компонент DPI для некоторых высокоуровневых требований диспетчера, которые заданы в блоке Test Sequence. Это позволит верификации требования, используемой в симуляции модели быть снова использованной в симуляторе HDL с минимальным усилием.
Модель была взята от диспетчера Проектора в качестве примера Тестинга Используя, проверяют и Тесты В реальном времени, поставленные с Simulink Test™. И упрощенный, чтобы показать только Сценарий 4 Требования.
Чтобы узнать больше проверяют операторы, видят, Оценивают Симуляцию Используя Логические Операторы
Продукты потребовали для этого примера:
MATLAB®
Simulink®
Stateflow®
Simulink Test™
Simulink Coder™
Наставник Graphics® ModelSim®/QuestaSim®
Один из поддерживаемых компиляторов C: Microsoft® Visual C ++ или GNU GCC
Тест проверяет контроллер по своим требованиям с помощью тестовых последовательностей, которые осуществляют модели контроллеров верхнего уровня. Диспетчер использует вход кнопки и вход датчика температуры и выходные сигналы, управляющие вентилятором, скоростью вентилятора и лампой проектора.
Цель состоит в том, чтобы сгенерировать компонент DPI, который получает высокоуровневое требование количество 4 контроллера. Для получения дополнительной информации о требованиях отсылают к документу слова sltestProjectorCtrlReqs.docx
в примере, отнесенном выше.
Требование 4 пытается включить и выключить проектор, когда температура проектора (Tproj) высока. Сценарий имеет следующие шаги в блоке Test Sequence:
Установите температуру проектора на 50 степеней Цельсия.
Попытайтесь включить.
Система не должна включать.
Установите температуру на 50 степеней Цельсия.
Попытайтесь выключить.
Система должна выключить.
Изображение ниже показов испытательный стенд для указанного выше требования и как verify
используется, чтобы проверять, что проектор включает или выключает в зависимости от сценария.
Определите имена модели и пути для примера:
filePath = fullfile(matlabroot,'toolbox','hdlverifier','hdlverifier_examples'); testFile = 'svdpi_sltestProjectorCtrlTests.mldatx'; testHarness = 'Req_scenario_4'; model = 'svdpi_sltestProjectorController';
Запустите следующий код, чтобы настроить проект.
cd(tempdir); [~, ~, ~] = rmdir('svdpi_tsverify', 's'); mkdir('svdpi_tsverify'); cd('svdpi_tsverify');
Откройте модель:
open_system(fullfile(filePath,model))
И испытательный стенд модели предварительно сконфигурирован с одним из системных конечных файлов DPI (systemverilog_dpi_grt.tlc). Откройте тестовую обвязку Req_scenario_4
путем выполнения:
sltest.harness.open(model,testHarness)
В испытательном стенде Req_scenario_4 щелкните правой кнопкой мыши по блоку подсистемы Req_4, который содержит тестовый блок последовательности и выбор. Код C/C++-> Сборка Эта Подсистема.
Нажмите Build в диалоговом окне, которое появляется.
Сборка генерирует код С для подсистемы Req_4, и обертку SystemVerilog DPI и файл с именем пакета "Req_4_build/Req_4_dpi.sv" и "Req_4_build/Req_4_dpi_pkg.sv".
Обратите внимание на то, что некоторые предупреждения верификации будут инициированы, это будет объяснено позже.
Кроме того, можно сгенерировать компонент путем выполнения:
rtwbuild('Req_scenario_4/Req_4');
Для этого примера будет использоваться средство моделирования ModelsSim/QuestaSim. Чтобы надеть более подробные инструкции, как запустить испытательный стенд, относятся к Началу работы с генерацией компонента SystemVerilog DPI
После выполнения испытательного стенда замечают ошибку, которая выдается компонентом DPI.
Эта ошибка сопоставима с результатами симуляции в Simulink (ниже). Открытие менеджера по Тесту показывает, что диспетчеру не удается выключиться, когда on_off кнопка нажимается, когда температура выше предела. Открытому менеджеру по тесту можно выполниться:
sltest.testmanager.load(testFile); sltest.testmanager.view;
Решение отказа потребовало бы, чтобы изменить подсистему проверки OnOff в основной модели. С другой стороны, требование verify_sc4_on
удовлетворен, поскольку никакие ошибки не были сгенерированы для этого, проверяют оператор.
Если вы хотите проследить проверять оператор, который сгенерировал ошибку назад к Simulink, необходимо найти Идентификатор Simulink (SID) из сообщения об ошибке как показано ниже:
Если вы находите SID для ID шага в тестовом блоке последовательности, можно использовать Simulink программируемый API, чтобы подсветить соответствующий блок. Выполнение:
Simulink.ID.hilite('Req_scenario_4:32:60');
Это подсветит соответствующий блок как показано ниже.
Чтобы отфильтровать проверять оценку в симуляторе HDL, предоставьте SID оценки, которую вы хотите отфильтровать в качестве plusargs аргумента к симулятору HDL.
Например, можно отфильтровать ошибку что verify_sc4_off
дает путем предоставления аргумента "+Req_scenario_4:32:60" к симулятору HDL.
Для этого примера в ModelSim/QuestaSim команда симуляции была бы:
vsim -classdebug -c -voptargs=+acc -sv_lib ../Req_4 work.Req_4_dpi_tb +Req_scenario_4:32:60
Если вы находитесь на платформе Windows, суффикс _win64 необходим:
vsim -classdebug -c -voptargs=+acc -sv_lib ../Req_4_win64 work.Req_4_dpi_tb +Req_scenario_4:32:60
Чтобы проверять, была ли проверять оценка протестирована, включите многословный режим путем определения "VERBOSE_VERIFY" в качестве plusargs аргумента к симулятору HDL.
Для этого примера в ModelSim/QuestaSim команда симуляции была бы:
vsim -classdebug -c -voptargs=+acc -sv_lib ../Req_4 work.Req_4_dpi_tb +VERBOSE_VERIFY
Журнал симуляции и формы волны показывают многословный выход и как это сопоставляет с менеджером по Тесту Simulink Test™ график.
Генерация компонента DPI и блок Test Sequence из Simulink Test™ могут использоваться, чтобы переместить логику верификации от Simulink до симулятора HDL с минимальным усилием.