В диалоговом окне Параметров конфигурации есть три 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.
Набор Constant блоков, равный false
соединение с управляющим входом на C_Switch2 вызывает true
случай, когда C_Switch2 не происходит. Conditional input branch execution оптимизирует C_Switch1 выход в результате. Simulink Coverage сообщает 0% покрытия на C_Switch1.
Поскольку блок C_Switch1 является мертвой логикой, отчет о покрытии генерирует раздел Blocks Elimined from Анализ Покрытия.
Блок 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® чарты.