exponenta event banner

Оптимизация Simulink и охват модели

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

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

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

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

Сокращение блоков

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

Одна из опций покрытия модели, «Принудительное сокращение блока», позволяет игнорировать параметр сокращения блока при сборе покрытия модели.

Если параметр Сокращение блока (Block reduction) не выбран или если выбран параметр Принудительное уменьшение блока (Force block reduction off), программа Simulink Coverage™ предоставляет данные покрытия для каждого блока в модели, который собирает покрытие.

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

Выполнение ветви условного ввода

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

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

Блок константы имеет значение false подключенный к управляющему входу на C_Switch2 вызывает true случай C_Switch2 не возникает. Выполнение условного входного ответвления оптимизирует C_Switch1 в результате. Simulink Coverage сообщает о покрытии C_Switch1 0%.

Поскольку блок C_Switch1 является неактивной логикой, в отчете о покрытии создается раздел «Блоки, устраненные из анализа покрытия».

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

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

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

Неполное покрытие адреса

Неполное покрытие можно устранить в моделях, в которых параметр выполнения условного входного ответвления выбран следующим образом:

  • Пересмотр конструкции модели. Неполное покрытие из-за выполнения условной ветви ввода может указывать на недостаток конструкции модели.

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

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

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

Сведения об использовании см. в разделе Выполнение ветви условного ввода.

Ограничения

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