Типы покрытия модели

Simulink® Coverage™ можете выполнить несколько типов анализа покрытия.

Покрытие выполнения (EC)

Охват выполнением является самой основной формой покрытия. Для каждого элемента охват выполнением определяет, выполняется ли элемент во время симуляции.

Decision Coverage (DC)

Decision Coverage анализирует элементы, которые представляют точки принятия решений в модели, такие как блок Switch или Stateflow® состояния. Для каждого элемента Decision Coverage определяет процент от общего количества путей симуляции через элемент, который прошел симуляция.

Для примера данных Decision Coverage в отчете о покрытии модели, смотрите Решения Проанализированы.

Покрытие условия (CC)

Условие покрытия анализирует блоки, которые выводят логическую комбинацию их входов (для примера, блока Логического Оператора) и переходов Stateflow. A теста достигает полного покрытия, когда он заставляет каждый вход в каждый образец логического блока в модели и каждое условие на переходе быть true по крайней мере один раз во время симуляции и false по меньшей мере один раз во время симуляции. Анализ покрытия условия сообщает, полностью ли тест покрыл блок для каждого блока в модели.

Когда вы собираете покрытие для модели, вы, возможно, не сможете достичь покрытия 100% условия. Например, если вы задаете для логических блоков с короткой схемой, путем выбора Treat Simulink Logic blocks as short-circuited на панели Coverage в Параметрах конфигурации (Configuration Parameters), вы можете не достичь покрытия 100% условий для этого блока. Для получения дополнительной информации см. раздел «Анализ MCDC».

Пример данных о покрытии условия в отчете о покрытии модели см. в разделе «Проанализированные условия».

Измененное условие/покрытие принятия решений (MCDC)

Модифицированный анализ покрытия состояния/принятия решения программным обеспечением Simulink Coverage расширяет возможности покрытия решением и условием. Он анализирует блоки, которые выводят логическую комбинацию их входов и переходов Stateflow, чтобы определить, в какой степени тест проверяет независимость входных входов логических блоков и условий перехода.

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

  • A теста достигает полного покрытия для перехода Stateflow, когда существует по меньшей мере одно время, когда изменение условия запускает переход для каждого условия.

Если ваша модель содержит блоки, которые определяют выражения, которые имеют различные типы логических операторов и более 12 условий, программное обеспечение не может записать покрытие MCDC.

Поскольку покрытие MCDC Simulink Coverage может не достичь полного покрытия принятия решения или условия, вы можете достичь покрытия 100% MCDC, не достигнув 100% Decision Coverage.

Некоторые объекты Simulink поддерживают покрытие MCDC, некоторые объекты поддерживают только покрытие условий, а некоторые объекты поддерживают только Decision Coverage. В таблице Объекты модели, которые получают покрытие, перечислены объекты, которые получают какие типы покрытия модели. Для примера блок Комбинаторной логики может получить Decision Coverage и покрытие условий, но не покрытие MCDC.

Чтобы достичь 100% покрытия MCDC для вашей модели, как определено стандартом DO-178C/DO-331, в панели Coverage параметров конфигурации, выберите Structural coverage level Измененное условие/Покрытие принятия решений (MCDC).

Когда вы собираете покрытие для модели, вы, возможно, не сможете достичь 100% покрытия MCDC. Для примера, если вы задаете, чтобы короткая схема логические блоки, вы, возможно, не сможете достичь 100% покрытия MCDC для этого блока.

Если вы запускаете тесты независимо и накапливаете все результаты покрытия, можно определить, соответствует ли ваша модель измененному условию и стандарту Decision Coverage. Для получения дополнительной информации о стандарте DO-178C/DO-331 смотрите DO-178C/DO-331 Checks (Simulink Check).

Для примера данных о покрытии MCDC в отчете о покрытии модели, смотрите Анализ MCDC. Пример накопленных результатов покрытия см. в разделе Совокупное покрытие.

Цикломатическая сложность

Цикломатическая сложность является мерой структурной сложности модели. Он аппроксимирует меру сложности Маккейба для кода, сгенерированного из модели. Мера сложности может быть другой для сгенерированного кода, чем для модели, из-за функций кода, которые этот анализ не рассматривает, таких как консолидированная логика и проверки на ошибки.

Чтобы вычислить цикломатическую сложность объекта (такого как блок, график или состояние), покрытие модели использует следующую формулу:

c=1N(on1)

N - количество точек принятия решений, которые представляет объект, а on - количество результатов для n-го момента принятия решений. Вычисление рассматривает векторизованную операцию или блок Multiport switch как одну точку принятия решения. Инструмент добавляет 1 к числу сложности для атомарных подсистем и диаграмм Stateflow.

Для примера данных о цикломатической сложности в отчете о покрытии модели, см. «Цикломатическая сложность».

Покрытие интерполяционных таблиц

Покрытие интерполяционных таблиц (LUT) исследует блоки, такие как блок 1-D интерполяционная таблица, которые выводят информацию от входов в таблице входов и выходов, интерполяцию между записями таблицы или экстраполяцию из них. Покрытие интерполяционных таблиц регистрирует частоту, которую интерполяция используется интерполяцией в интерполяционном интервале. A теста достигает полного покрытия, когда она выполняет каждую интерполяцию и экстраполяцию интервала по крайней мере один раз. Для каждого блока интерполяционной таблицы в модели в отчете о покрытии отображается цветная карта интерполяционной таблицы с указанием каждой интерполяции. Если общее количество точек останова блока Интерполяционной таблицы n-D превышает 1 500 000, программное обеспечение не может записать покрытие для этого блока.

Пример покрытий интерполяционных таблиц в отчете о покрытии модели см. в N-Размерной интерполяционной таблице.

Примечание

Сконфигурируйте покрытие интерполяционных таблиц только в начале симуляции. Если вы настраиваете параметр, который влияет на покрытие интерполяционных таблиц во время исполнения, настройки покрытия для затронутого блока не обновляются.

Охват диапазона сигнала

Охват диапазона сигнала записывает минимальное и максимальное значения сигналов в каждом блоке модели, измеренные во время симуляции. Только блоки с выходными сигналами получают охват диапазона сигнала.

Программное обеспечение не делает запись освещения диапазона сигнала для управляющих сигналов, сигналы, используемые одним блоком, чтобы начать выполнение другого блока. См. «Сигналы управления».

Если общее количество сигналов в вашей модели превышает 65535, или ваша модель содержит сигнал, ширина которого превышает 65535, программное обеспечение не может записать охват диапазона сигнала.

Для примера данных о покрытии диапазона сигнала в отчете о покрытии модели, смотрите Анализ диапазона сигнала.

Примечание

Когда вы создаете совокупное покрытие для переиспользуемых подсистем или конструкций Stateflow с единичным покрытием области значений, совокупное покрытие имеет наибольший возможный диапазон значений сигналов. Для получения дополнительной информации смотрите Получение совокупного покрытия для переиспользуемых подсистем и конструкций Stateflow ®.

Покрытие размера сигнала

Покрытие размера сигнала записывает минимальный, максимальный и назначенный размер для всех сигналов переменного размера в модели. В отчет включены только блоки с выходными сигналами переменного размера.

Если общее количество сигналов в вашей модели превышает 65535, или ваша модель содержит сигнал, ширина которого превышает 65535, программное обеспечение не может записать охват размера сигнала.

Для примера данных о покрытии размера сигнала в отчете о покрытии модели, смотрите Покрытие размера сигнала для сигналов переменного измерения.

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

Цели и ограничения охвата

Программное обеспечение Simulink Coverage собирает данные о покрытии модели для следующих блоков Simulink Design Verifier™ и MATLAB® для функций генерации кода:

Блоки Simulink Design VerifierMATLAB для функций генерации кода
Test Condition (Simulink Design Verifier)sldv.condition (Simulink Design Verifier)
Test Objective (Simulink Design Verifier)sldv.test (Simulink Design Verifier)
Proof Assumption (Simulink Design Verifier)sldv.assume (Simulink Design Verifier)
Proof Objective (Simulink Design Verifier)sldv.prove (Simulink Design Verifier)

Если у вас нет лицензии Simulink Design Verifier, можно собрать покрытие модели для модели, которая содержит эти блоки или функции, но вы не можете анализировать модель с помощью программного обеспечения Simulink Design Verifier.

Добавив в модель один или несколько блоков или функций Simulink Design Verifier, можно:

  • Проверьте результаты анализа Simulink Design Verifier, запустите сгенерированные тесты и используйте блоки для наблюдения результатов.

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

  • Анализируйте модель, создайте тестовую обвязку и симулируйте обвязку с блоком Цели тестирования, чтобы собрать данные о покрытии модели.

  • Проанализируйте модель и используйте блок Proof Assumption, чтобы проверить любые контрпримеры, которые идентифицирует Simulink Design Verifier.

Если вы задаете, чтобы собрать покрытие Simulink Design Verifier:

  • Программа собирает покрытие для блоков и функций Simulink Design Verifier.

  • Программа проверяет тип данных сигнала, который соединяется с каждым блоком Simulink Design Verifier. Если тип данных сигнала является фиксированной точкой, параметры блоков должен также быть фиксированной точкой. Если тип данных сигнала не является фиксированной точкой, программное обеспечение пытается преобразовать тип данных параметров блоков. Если программное обеспечение не может преобразовать тип данных параметров блоков, программное обеспечение сообщает об ошибке, и вы должны явным образом назначить тип данных параметров блоков, чтобы он совпадал с сигналом.

  • Если ваша модель содержит блок Verification Subsystem, программное обеспечение записывает покрытие только для блоков Simulink Design Verifier в блок Verification Subsystem (Simulink Design Verifier); он не регистрирует покрытие для других блоков в Подсистеме верификации.

Если вы не задаете собирать покрытие Simulink Design Verifier, программное обеспечение не проверяет типы данных для блоков и функций Simulink Design Verifier в вашей модели и не собирает покрытие.

Пример данных о покрытии для блоков или функций Simulink Design Verifier в отчете о покрытии модели см. в разделе «Покрытие Simulink Design Verifier».

Насыщение по целочисленному переполнению покрытия

Насыщение на целочисленное переполнение покрытии исследует блоки, такие как блок Abs, с выбранным параметром Saturate on integer overflow. Только блоки с выбранным этим параметром получают насыщение при целочисленном переполнении.

Насыщение при целочисленном переполнении фиксирует количество раз, когда блок насыщается при целочисленном переполнении.

A теста достигает полного покрытия, когда блоки насыщаются при целочисленном переполнении хотя бы один раз и не насыщаются хотя бы один раз.

Для примера насыщения данных о покрытии целочисленного переполнения в отчете о покрытии модели, смотрите Saturate on Целочисленного переполнения Analysis.

Реляционное граничное покрытие

Реляционный краевой охват исследует блоки, диаграммы Stateflow и блоки MATLAB function, которые имеют явную или неявную реляционную операцию.

  • Блоки, такие как Relational Operator и If, имеют явную реляционную операцию.

  • Блоки, такие как Abs и Saturation, имеют неявную реляционную операцию.

Для этих объектов модели в метрике записывается, проверяет ли симуляция реляционную операцию с:

  • Равные значения операнда.

    Эта часть покрытия реляционной границы применяется только, если оба операнда являются целыми числами или числами с фиксированной точкой.

  • Значения операнда, которые отличаются определенным допуском.

    Эта часть покрытия реляционных границ применяется ко всем операндам. Для целочисленных и фиксированных операндов допуск фиксирован. Для операндов с плавающей точкой можно использовать предопределенный допуск или можно задать собственный допуск.

Значение допуска зависит от типа данных обоих операндов. Если оба операнда имеют одинаковый тип, допуск выполняется согласно следующим правилам:

Тип данных операндаДопуск
Плавающая точка, например single или double

max(absTol, relTol* max(|lhs|,|rhs|))

  • absTol является заданным абсолютной погрешностью значением. По умолчанию это 1e-05.

  • relTol является заданным относительной погрешностью значением. По умолчанию это 0.01.

  • lhs - левый операнд и rhs правый операнд.

  • max(x,y) возвращает x или y, в зависимости от того, что больше.

Фиксированная точкаЗначение, соответствующее наименьшему значению бита. Для получения дополнительной информации см. раздел «Точность» (Fixed-Point Designer). Чтобы найти значение точности, используйте lsb (Fixed-Point Designer) функцию.
Целое число1
БулевН/Д
EnumН/Д

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

  1. Плавающая точка

  2. Фиксированная точка

  3. Целое число

Если оба операнда являются фиксированной точкой, но имеют разную точность, то меньшее значение точности используется в качестве допуска.

Вы задаете значение абсолютных и относительных погрешностей для реляционного покрытия границ входов с плавающей точкой, когда вы выбираете эту метрику в разделе Coverage metrics в панели покрытия диалогового окна Параметры конфигурации.

Для получения дополнительной информации о:

Для просмотра документации необходимо авторизоваться на сайте