Оптимизация Simulink и покрытие модели

В диалоговом окне Configuration Parameters существует три параметра оптимизации Simulink®, которые могут влиять на ваши данные о покрытии модели:

Встроенные параметры

Чтобы преобразовать настраиваемые параметры модели в постоянные значения для генерации кода, в диалоговом окне Configuration Parameters, на панели Math and Data Types, устанавливают Default parameter behavior на Inlined.

Когда параметры преобразовываются в константы, Simulink может устранить определенные решения в вашей модели. Вы не можете достигнуть покрытия для устраненного решения, таким образом, отчет покрытия отображает 0/0 для тех решений.

Блокируйте сокращение

Чтобы достигнуть более быстрого выполнения во время симуляции модели и в сгенерированном коде, в диалоговом окне Configuration Parameters, выбирают параметр Block reduction. Программное обеспечение Simulink сворачивает определенные группы блоков в один, более эффективный блок или удаляет их полностью.

Одна из опций покрытия модели, Force block reduction off, позволяет вам игнорировать параметр Block reduction при сборе покрытия модели.

Если вы не выбираете параметр Block reduction, или если вы выбираете Force block reduction off, программное обеспечение Simulink Coverage™ обеспечивает данные о покрытии для каждого блока в модели, которая собирает покрытие.

Если бы вы выбираете параметр Block reduction и не устанавливаете Force block reduction off, отчет покрытия перечисляет уменьшаемые блоки, которые собрали бы покрытие.

Условное входное выполнение ветви

Параметр Conditional input branch execution может вызвать ниже, чем ожидаемые результаты Simulink Coverage.

Случай 1: восходящий блок switch, полностью оптимизированный

Набор блока Constant к false соединенный с входом управления на C_Switch2 вызывает true случай C_Switch2, чтобы не произойти. Conditional input branch execution оптимизирует C_Switch1 в результате. Simulink Coverage сообщает о 0%-м покрытии относительно C_Switch1.

Поскольку блок C_Switch1 является мертвой логикой, отчет покрытия генерирует раздел Blocks Eliminated from Coverage Analysis.

Случай 2: восходящий блок switch, частично оптимизированный

Блок Step преобразован в булев тип данных выходные параметры false и true до и после времени Шага, соответственно.

Отключение Conditional input branch execution предоставляет полную страховую защиту. Включение Conditional input branch execution предоставляет частичную страховую защиту на A_Switch1, потому что A_Switch1 не видит ложный случай в то же самое время, когда A_Switch2 видит истинный случай. Другими словами, или оба блока Switch верны, или оба являются ложными. Ложный случай A_Switch1 не влияет на модель. Отчет покрытия правильно сообщает о 50%-м покрытии относительно A_Swtch1.

Обратитесь к неполному покрытию

Можно обратиться к неполному покрытию в моделях, где параметр Conditional input branch execution выбран:

  • Пересмотр проекта модели. Неполное покрытие из-за Conditional input branch execution могло указать на недостаток дизайна модели.

  • Выравнивание по ширине недостающего покрытия, если недоступная логика в модели является намеренной.

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

  • Очистка Conditional input branch execution. Это устраняет проблему неполного покрытия Switch, но не обращается к недоступной логике.

Для получения дополнительной информации использования смотрите, что вход Conditional переходит выполнение.

Ограничения

Условное входное выполнение ветви не применяется к графикам Stateflow®.