Simulink® Coverage™ может выполнить несколько типов анализа покрытия.
Покрытие выполнения является наиболее канонической формой покрытия. Для каждого элемента покрытие выполнения определяет, выполняется ли элемент в процессе моделирования.
Decision Coverage анализирует элементы, которые представляют моменты принятия решения в модели, такие как блок switch или Stateflow® состояния. Для каждого элемента Decision Coverage определяет процент общего количества путей к симуляции через элемент что пересеченная симуляция.
Для примера данных о Decision Coverage в отчете покрытия модели смотрите Анализируемые Решения.
Покрытие условия анализирует блоки, которые выводят логическую комбинацию их входных параметров (например, блок Logical Operator) и переходы Stateflow. Тест достигает полного охвата, когда это заставляет каждый вход к каждому экземпляру логического блока в модели и каждом условии на переходе быть верным, по крайней мере, однажды во время симуляции и лжи, по крайней мере, однажды во время симуляции. Анализ покрытия условия сообщает, покрыл ли тест полностью блок для каждого блока в модели.
Когда вы собираете покрытие для модели, вы не можете смочь достигнуть 100%-го покрытия условия. Например, если вы задаете к логическим блокам короткой схемы путем выбора Treat Simulink Logic blocks as short-circuited в панели Coverage в Параметрах конфигурации, вы не можете смочь достигнуть 100%-го покрытия условия для того блока. См. Анализ MCDC для получения дополнительной информации.
Для примера подготовите данные о покрытии в отчете покрытия модели, смотрите Анализируемые Условия.
Модифицированный анализ условия/Decision Coverage программным обеспечением Simulink Coverage расширяет решение и возможности покрытия условия. Это анализирует блоки, которые выводят логическую комбинацию их входных параметров и переходов Stateflow, чтобы определить степень, до которой тест тестирует независимость логических входных параметров блока и условий перехода.
Тест достигает полного охвата для блока, когда изменение в одном входе, независимом от любых других входных параметров, вызывает изменение в блоке выход.
Тест достигает полного охвата для перехода Stateflow, когда существует по крайней мере один раз, когда изменение в условии инициировало переход для каждого условия.
Если ваша модель содержит блоки, которые задают выражения, которые имеют различные типы логических операторов и больше чем 12 условий, программное обеспечение не может записать покрытие MCDC.
Поскольку Simulink Coverage, покрытие MCDC не может достигнуть полного решения или покрытия условия, можно достигнуть 100%-го покрытия MCDC, не достигая 100% Decision Coverage.
Некоторые объекты Simulink поддерживают покрытие MCDC, некоторые объекты поддерживают только покрытие условия, и некоторые объекты поддерживают только Decision Coverage. Таблица в Объектах модели, Которые Получают списки Покрытий, которые объекты получают который типы покрытия модели. Например, блок Combinatorial Logic может получить Decision Coverage и покрытие условия, но не покрытие MCDC.
Чтобы достигнуть 100%-го покрытия MCDC для вашей модели, как задано DO-178C/DO-331 стандартом, в панели Coverage Параметров конфигурации, выбирают Modified Condition/Decision Coverage (MCDC) как Structural coverage level.
Когда вы собираете покрытие для модели, вы не можете смочь достигнуть 100%-го покрытия MCDC. Например, если вы задаете к логическим блокам короткой схемы, вы не можете смочь достигнуть 100%-го покрытия MCDC для того блока.
Если при запуске тесты независимо и накапливаете все результаты покрытия, можно определить, придерживается ли модель модифицированного условия и стандарта Decision Coverage. Для получения дополнительной информации о DO-178C/DO-331 стандарте, смотрите DO-178C/DO-331 Проверки (Simulink Check).
Для примера данных о покрытии MCDC в отчете покрытия модели см. Анализ MCDC. Для примера накопленных результатов покрытия смотрите Совокупное Покрытие.
Цикломатическая сложность является мерой структурной сложности модели. Это аппроксимирует меру по сложности Маккейба для кода, сгенерированного из модели. Мера по сложности может отличаться для сгенерированного кода, чем для модели из-за функций кода, которые этот анализ не рассматривает, такие как объединенные логические и проверки на ошибки.
Чтобы вычислить цикломатическую сложность объекта (такого как блок, график или состояние), покрытие модели использует следующую формулу:
N является количеством моментов принятия решения, которые представляет объект, и on является количеством результатов для n th момент принятия решения. Вычисление рассматривает векторизованную операцию или блок Multiport switch как один момент принятия решения. Инструмент добавляет 1 к номеру сложности для атомарных подсистем и диаграмм Stateflow.
Для примера цикломатических данных о сложности в отчете покрытия модели смотрите Цикломатическую Сложность.
Покрытие интерполяционных таблиц (LUT) исследует блоки, такие как 1D блок Lookup Table, та выходная информация от входных параметров в таблице вводов и выводов, интерполирующих между или экстраполирующих от записей таблицы. Покрытие интерполяционных таблиц записывает частоту, что поиск по таблице использует каждый интервал интерполяции. Тест достигает полного охвата, когда это выполняет каждый интервал интерполяции и экстраполяции, по крайней мере, однажды. Для каждого блока интерполяционной таблицы в модели отчет покрытия отображает цветную карту интерполяционной таблицы, указывая на каждую интерполяцию. Если общее количество точек останова n-D блока Lookup Table превышает 1,500,000, программное обеспечение не может записать покрытие для того блока.
Для примера данных о покрытии интерполяционных таблиц в отчете покрытия модели смотрите N-мерную Интерполяционную таблицу.
Примечание
Сконфигурируйте покрытие интерполяционных таблиц только в начале симуляции. Если вы настраиваете параметр, который влияет на покрытие интерполяционных таблиц во время выполнения, настройки покрытия для затронутого блока не обновлены.
Покрытие диапазона сигнала записывает минимальные и максимальные значения сигналов в каждом блоке в модели, как измерено в процессе моделирования. Только блоки с выходными сигналами получают покрытие диапазона сигнала.
Программное обеспечение не записывает покрытие диапазона сигнала для управляющих сигналов, сигналы, используемые одним блоком, чтобы инициировать выполнение другого блока. Смотрите Управляющие сигналы.
Если общее количество сигналов в вашей модели превышает 65535, или ваша модель содержит сигнал, ширина которого превышает 65535, программное обеспечение не может записать покрытие диапазона сигнала.
Для примера данных о покрытии диапазона сигнала в отчете покрытия модели смотрите Анализ Диапазона сигнала.
Примечание
Когда вы создаете совокупное покрытие для допускающих повторное использование подсистем или построений Stateflow с одним покрытием области значений, совокупное покрытие имеет самую большую область значений значений сигналов. Для получения дополнительной информации смотрите, Получают Совокупное Покрытие для Допускающих повторное использование Подсистем и Stateflow® Constructs.
Покрытие размера сигнала записывает минимум, максимум и выделенный размер для всех сигналов переменного размера в модели. Только блоки с выходными сигналами переменного размера включены в отчет.
Если общее количество сигналов в вашей модели превышает 65535, или ваша модель содержит сигнал, ширина которого превышает 65535, программное обеспечение не может записать покрытие размера сигнала.
Для примера данных о покрытии размера сигнала в отчете покрытия модели смотрите Покрытие Размера Сигнала для Сигналов Переменной Размерности.
Для получения дополнительной информации о сигналах переменного размера, смотрите Основы Сигнала Переменного Размера.
Программное обеспечение Simulink Coverage собирает данные о покрытии модели для следующих блоков Simulink Design Verifier™ и MATLAB® для функций генерации кода:
Блоки Simulink Design Verifier | MATLAB для функций генерации кода |
---|---|
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, запуска сгенерированные тесты, и используйте блоки, чтобы наблюдать результаты.
Требования модели Define с помощью блока Test Objective и проверяют результаты с данными о покрытии модели что программное обеспечение, собранное в процессе моделирования.
Анализируйте модель, создайте тестовую обвязку и симулируйте обвязку с блоком Test Objective, чтобы собрать данные о покрытии модели.
Анализируйте модель и используйте блок Proof Assumption, чтобы проверить любые контрпримеры, которые идентифицирует Simulink Design Verifier.
Если вы задаете, чтобы собрать покрытие Simulink Design Verifier:
Программное обеспечение собирает покрытие для блоков Simulink Design Verifier и функций.
Программное обеспечение проверяет тип данных сигнала, который соединяется с каждым блоком Simulink Design Verifier. Если тип данных сигнала является фиксированной точкой, параметры блоков должны также быть фиксированной точкой. Если тип данных сигнала не является фиксированной точкой, программное обеспечение пытается преобразовать тип данных параметров блоков. Если программное обеспечение не может преобразовать тип данных параметров блоков, программное обеспечение сообщает об ошибке, и необходимо явным образом присвоить тип данных параметров блоков, чтобы совпадать с сигналом.
Если ваша модель содержит блок 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. Только блоки этим выбранным параметром получают, насыщают на покрытии целочисленного переполнения.
Насыщайте на записях покрытия целочисленного переполнения число раз, которое блок насыщает на целочисленном переполнении.
Тест достигает полного охвата, когда блоки насыщают на целочисленном переполнении, по крайней мере, однажды, и не насыщает, по крайней мере, однажды.
Для примера насыщают на данных о покрытии целочисленного переполнения в отчете покрытия модели, видят, Насыщают согласно Анализу Целочисленного переполнения.
Реляционное граничное покрытие исследует блоки, диаграммы Stateflow и блоки MATLAB function, которые начинают явную или неявную реляционную операцию.
Блокируется, такие как Relational Operator, и If начинают явную реляционную операцию.
Блокируется, такие как Abs, и Saturation начинают неявную реляционную операцию.
Для этих объектов модели метрика записывает, тестирует ли симуляция реляционную операцию с:
Равные значения операнда.
Эта часть реляционного граничного покрытия применяется, только если оба операнда являются числами фиксированной точки или целыми числами.
Значения операнда, которые отличаются определенным допуском.
Эта часть реляционного граничного покрытия применяется ко всем операндам. Для операндов целочисленной и фиксированной точки фиксируется допуск. Для операндов с плавающей точкой можно или использовать предопределенный допуск, или можно задать собственный допуск.
Значение допуска зависит от типа данных обоих операнды. Если оба операнда имеют тот же тип, допуск следует следующим правилам:
Тип данных операнда | Допуск |
---|---|
Плавающая точка, такая как single или double |
|
Фиксированная точка | Значение, соответствующее младшему значащему биту. Для получения дополнительной информации смотрите Точность (Fixed-Point Designer). Чтобы найти значение точности, используйте lsb (Fixed-Point Designer) функция. |
Целое число | 1 |
Boolean | N/A |
Перечисление | N/A |
Если эти два операнда имеют различные типы, допуск следует правилам для более строгого типа. Если один из операндов является boolean, допуск следует правилам для другого операнда. Строгость уменьшается в этом порядке:
Плавающая точка
Фиксированная точка
Целое число
Если оба операнда являются фиксированной точкой, но имеют различную точность, меньшее значение точности используется в качестве допуска.
Вы задаете значение абсолютных и относительных погрешностей для реляционного граничного покрытия входных параметров с плавающей точкой, когда вы выбираете эту метрику в разделе Coverage metrics в theCoverage Панели диалогового окна Configuration Parameters.
Для получения дополнительной информации о:
Как эта метрика покрытия появляется в отчетах, смотрите Реляционный Контур.
Какие объекты модели получают это покрытие, см. таблицу в Объектах модели, Которые Получают Покрытие.
Как получить результаты покрытия из командной строки MATLAB, смотрите, Собирают Реляционное Граничное Покрытие для Поддерживаемого Блока в Модели.