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

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

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

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

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

Блочное сокращение

Чтобы добиться более быстрого выполнения во время симуляции модели и в сгенерированном коде, в диалоговом окне Параметров конфигурации, выберите параметр 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 Elimined from Анализ Покрытия.

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

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

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

Адрес незавершенного покрытия

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

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

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

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

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

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

Ограничения

Выполнение условной входной ветви не применяется к Stateflow® чарты.