Если вы симулируете свою модель с помощью кнопки Run, Simulink® Coverage™ создает отчет покрытия модели для заданной модели под названием
. Отчет покрытия модели также открыт автоматически в панели Coverage Details. Отчет покрытия модели содержит несколько разделов:model_name
_cov.html
Раздел информации об анализе содержит основную информацию об анализируемой модели:
Coverage Data Information
Model Information
Harness Information (появляется, если вы записываете покрытие от обвязки Simulink Test™),
Simulation Optimization Options
Coverage Options
Агрегированный тестовый раздел появляется если вы:
Запись агрегировала результаты покрытия по крайней мере для двух тестов через менеджера по Simulink Test, и представьте отчет покрытия для агрегированных результатов, или
Представьте отчет покрытия для совокупных результатов покрытия в Проводнике Результатов.
Если при запуске тесты через менеджера по Simulink Test, агрегированные тестовые ссылки раздела на связанные тесты в менеджере по Simulink Test.
Если вы агрегировали результаты теста через Проводник Результатов, агрегированные тестовые ссылки раздела на соответствующий cvdata узел в Проводнике Результатов.
Для каждого запуска в агрегированном тестовом разделе существует ссылка на соответствующие результаты в менеджере по Simulink Test или Проводнике Результатов.
Если вы записываете покрытие для одной или нескольких обвязок подсистемы, раздел Aggregated Tests перечисляет каждый запущенный модульный тест.
Каждый модуль под тестом получает порядковое число n, и каждый тест для модуля под тестом получает порядковое число m в стиле U
n.m.
Сводные данные покрытия имеют два подраздела:
Тесты — симуляция запускается и время остановки каждого теста и любых команд настройки, которые предшествовали симуляции. Достижение каждого теста включает заданное использование метки любого теста cvtest
команда. Этот раздел только показывает, когда отчет не содержит раздел Aggregated Tests.
Сводные данные — Сводные данные результатов подсистемы. Чтобы видеть подробные результаты для определенной подсистемы, в Итоговом подразделе, кликают по имени подсистемы.
Раздел Details сообщает о подробных результатах покрытия модели. Каждый раздел подробного отчета обобщает результаты для метрик, которые тестируют каждый объект в модели:
Можно также получить доступ к подразделу Деталей элемента модели можно следующим образом:
Щелкните правой кнопкой по элементу Simulink.
В контекстном меню выберите Coverage> Report.
Раздел Filtered Objects перечисляет все объекты в модели, которые были отфильтрованы от записи покрытия и объяснения, которое вы задали для фильтрации тех объектов. Если правило фильтра указывает, что все блоки определенного типа отфильтрованы, все те блоки перечислены здесь.
В следующей диаграмме были отфильтрованы несколько блоков, подсистем и переходов. Два соединенных библиотекой блока, защищенное деление и защищенный division1, были отфильтрованы, потому что их библиотека блоков была отфильтрована.
Раздел Details содержит сводные данные результатов для модели в целом, сопровождаемый списком элементов. Кликните по имени элемента модели, чтобы видеть его результаты покрытия.
Следующие графические показы раздел Details для sldemo_fuelsys
модель в качестве примера.
Каждый раздел Details подсистемы содержит сводные данные результатов тестового покрытия для подсистемы и списка подсистем, которые это содержит. Обзор сопровождается разделами для блоков, графиков и функций MATLAB®, один для каждого объекта, который содержит момент принятия решения в подсистеме.
Следующие графические показы результаты покрытия для подсистемы Динамики Газа Двигателя в sldemo_fuelsys
модель в качестве примера.
Следующий графический Decision Coverage показов приводит для блока MinMax к подсистеме Mixing & Combustion подсистемы Динамики Газа Двигателя в sldemo_fuelsys
модель в качестве примера.
Открытый элемент Ссылок сначала появляется в разделе Block Details первого блока в иерархии модели, которая не достигает 100%-го покрытия. Первый Открытый элемент Ссылок имеет стрелу, которая соединяется с разделом Block Details в отчете следующего блока, который не достигает 100%-го покрытия.
Последующие блоки, которые не достигают 100%-го покрытия, имеют ссылки на разделы Деталей Блока в отчете предыдущих и следующих блоков, которые не достигают 100%-го покрытия.
Следующие графические показы результаты покрытия для Stateflow® строят диаграмму control_logic
в sldemo_fuelsys
модель в качестве примера.
Для получения дополнительной информации об отчетах покрытия модели для диаграмм Stateflow и их объектов, смотрите Покрытие модели для диаграмм Stateflow.
По умолчанию Simulink Coverage записывает покрытие для всех функций MATLAB в модели. Функции MATLAB находятся в блоках MATLAB function, диаграммах Stateflow или внешних файлах MATLAB.
Примечание
Для подробного примера отчетов покрытия для внешних файлов MATLAB см. Внешний Отчет Покрытия файла MATLAB.
Записывать покрытие Simulink Design Verifier™ для sldv.*
функции, вызванные функциями MATLAB и любыми блоками Simulink Design Verifier, выбирают Objectives and Constraints на панели Coverage диалогового окна Configuration Parameters.
Следующий пример показывает детали покрытия для функции MATLAB, hFcnsInExternalEML
, это вызывает четыре функции Simulink Design Verifier. В этом примере, коде для hFcnsInExternalEML
находится во внешнем файле.
Этот пример также показывает детали покрытия Simulink Design Verifier для следующих функций:
sldv.assume
(Simulink Design Verifier)
sldv.condition
(Simulink Design Verifier)
sldv.prove
(Simulink Design Verifier)
sldv.test
(Simulink Design Verifier)
В результатах покрытия код, который достигает 100%-го покрытия, является зеленым. Код, который достигает меньше чем 100%-го покрытия, является красным.
Покрытие для hFcnsInExternalEML
функционируйте и sldv.*
вызовы:
Линия 1, объявление функции для hFcnsInExternalEML
является зеленым, потому что симуляция выполняет эту функцию, по крайней мере, однажды. fcn
вызовы hFcnsInExternalEML
11 раз в процессе моделирования.
Линия 4, sldv.assume(u1 > u2)
, достигает 0%-го покрытия потому что u1 > u2
никогда не оценивает к истине.
Линия 5, sldv.condition(u1 == 0)
, достигает 100%-го покрытия потому что u1 == 0
оценивает к истине по крайней мере для одного временного шага.
Линия 6, switch u1
, достигает 25%-го покрытия потому что только один из этих четырех результатов в switch
оператор (case 0
) происходит в процессе моделирования.
Линия 17, sldv.test(y > u1); sldv.test (y == 4)
достигает 50%-го покрытия. Первый sldv.test
вызов достигает 100%-го покрытия, но второго sldv.test
вызов достигает 0%-го покрытия.
Для получения дополнительной информации о покрытии для функций MATLAB, смотрите Покрытие модели для функций MATLAB.
Для получения дополнительной информации о покрытии для функций Simulink Design Verifier, смотрите Покрытие Целей и Ограничений.
Если при запуске по крайней мере два теста в Simulink Test, которые соединяются с требованиями в Simulink Requirements™, агрегированный отчет покрытия детализирует ссылки между элементами модели, тестами и связанными требованиями.
Раздел Requirement Testing Details включает:
Implemented Requirements — Какие требования соединяются с элементом модели.
Verified by Tests — Какие тесты проверяют требование.
Associated Runs — Какие запуски сопоставлены с каждым тестом верификации.
Для примера того, как проследить результаты покрытия до требований в отчете покрытия, смотрите Результаты покрытия Трассировки к Требованиям при помощи Simulink Test и Simulink Requirements.
Можно указать, что отчет покрытия модели включает в себя цикломатические числа сложности в двух местах в отчете:
Раздел Summary содержит цикломатические числа сложности для каждого объекта в иерархии модели. Для подсистемы или диаграммы Stateflow, тот номер включает цикломатические числа сложности для всех их потомков.
Детали разделяют для каждого списка объектов цикломатические числа сложности для всех отдельных объектов.
Решения анализировали возможные исходы списков таблиц для решения и числа раз, что результат произошел в каждой тестовой симуляции. Результаты, которые не произошли, находятся в красных подсвеченных строках таблицы.
Следующие графические показы Решения анализировали таблицу для блока Saturate в подсистеме Throttle & Manifold подсистемы Динамики Газа Двигателя в sldemo_fuelsys
модель в качестве примера.
Чтобы отобразить и подсветить рассматриваемый блок, щелкните, имя блока во главе раздела, содержащего Решения блока, анализировало таблицу.
Условия анализировали списки таблиц количество случаев истинных и ложных условий на каждом входном порте соответствующего блока.
Аналитическая таблица MCDC приводит случаи условия входа MCDC, представленные соответствующим блоком и степенью, до которой тесты, о которых сообщают, покрывают случаи условия.
Каждая строка аналитической таблицы MCDC представляет случай условия для конкретного входа с блоком. Случай условия для входа n
из блока комбинация входных значений. Введите n
называется входом решения случая условия. Изменение значения входа n
один изменения значение выхода блока.
Аналитическая таблица MCDC показывает выражение случая условия, чтобы представлять случай условия. Выражение случая условия является символьной строкой где:
Положение символа в строке соответствует номеру входного порта.
Символ в положении представляет значение входа. T
средние значения true
F
средние значения false
).
Полужирный символ соответствует значению входа решения.
Например, F
T
F
представляет случай условия для блока с тремя входами, где второй вход является входом решения.
Решение/Столбец условий задает вход решения для входного случая условия. Истина столбец задает входное значение решения, которое заставляет блок выводить true
значение для случая условия. Истина запись использует выражение случая условия, например, F
F
, описывать значения всех входных параметров с блоком, со значением переменной решения полужирным.
Круглые скобки вокруг выражения указывают, что заданная комбинация входных параметров не произошла во время первого (или только) тест, включенный в этот отчет. Другими словами, тест не покрывал соответствующий случай условия. Ложь столбец задает входное значение решения, которое заставляет блок выводить ложное значение и произошло ли значение на самом деле во время первого (или только) тест, включенный в отчет.
Некоторые элементы модели достигают меньшего количества покрытия MCDC в зависимости от определения MCDC, используемого во время анализа. Для получения дополнительной информации о том, как определение MCDC, используемое во время анализа, влияет на результаты покрытия, смотрите Модифицированное Условие и Decision Coverage (MCDC) Определения в Simulink Coverage.
Если вы выбираете Treat Simulink Logic blocks as short-circuited в панели Coverage в диалоговом окне Configuration Parameters, анализ покрытия MCDC не проверяет, происходят ли закороченные входные параметры на самом деле. Аналитическая таблица MCDC использует x
в выражении условия (например, TFxxx
) указать на закороченные входные данные, которые не анализировались инструментом.
Если вы отключаете эту опцию, и Логические блоки не закорачиваются при сборе покрытия модели, вы не можете смочь достигнуть 100%-го покрытия для того блока.
Выберите опцию Treat Simulink Logic blocks as short-circuited для того, где вы хотите, чтобы анализ покрытия MCDC аппроксимировал степень покрытия, которого ваши тесты достигают для сгенерированного кода (большинство выражений логики короткой схемы высокоуровневых языков).
После того, как вы запишете последовательные результаты покрытия, вы можете доступ, Справиться и Накопить Результаты покрытия при помощи Проводника Результатов из Проводника Результатов покрытия. По умолчанию результаты каждой симуляции сохранены и записаны кумулятивно в отчете.
Если вы выбираете Show cumulative progress report в разделе Results параметров конфигурации, результаты, расположенные в самой правой области во всех таблицах совокупного отчета покрытия, отражают рабочее итоговое значение. Отчет организован так, чтобы можно было легко сравнить дополнительное покрытие от нового запуска с покрытием от всех предшествующих запусков на сеансе.
Совокупный отчет покрытия содержит информацию о:
Текущий Запуск — результаты покрытия симуляции, только завершенной.
\delta Процент покрытия, добавленного к совокупному покрытию, достигнутому с симуляцией, только завершенной. Если совокупное покрытие предыдущей симуляции и текущее покрытие являются ненулевыми, дельта может быть 0, если новое покрытие не добавляет к совокупному покрытию.
Совокупный — общее покрытие, собранное для модели до, и включая, симуляция, только завершенная.
После выполнения трех тестов Сводный отчет показывает, какого количества дополнительного покрытия третий достигнутый тест и совокупного покрытия достиг для первых двух тестов.
Анализируемая таблица Решений для совокупного покрытия содержит три столбца данных о результатах решения, которые представляют текущий запуск, дельта начиная с последнего запуска и совокупных данных, соответственно.
Условия анализировали табличные заголовки столбцов использования #n T и #n F, чтобы указать на результаты для отдельных тестов. Таблица использует Итог T и Итог F для совокупных результатов. Можно идентифицировать истинные и ложные условия на каждом входном порте соответствующего блока для каждого теста.
Анализ MCDC #n Верный и #n Ложь столбцы показывает случаи условия для каждого теста. Общее количество T и Общее количество F столбец показывают совокупные результаты.
Примечание
Можно вычислить совокупное покрытие для допускающих повторное использование подсистем и построений Stateflow в командной строке. Для получения дополнительной информации смотрите, Получают Совокупное Покрытие для Допускающих повторное использование Подсистем и Stateflow® Constructs.
Следующая интерактивная схема обобщает степень, до которой получают доступ к элементам интерполяционной таблицы. В этом примере два блока Sine wave генерируют индексы X и Y, которые получают доступ к блоку двумерной интерполяционной таблицы 10 10 элементов, заполненных случайными значениями.
В этой модели индексы интерполяционной таблицы равняются 1, 2..., 10 в каждом направлении. Блок Sine Wave 2 не совпадает с блоком Sine Wave 1 pi/2 радианы. Это генерирует числа X и Y для ребра круга, который вы видите, когда вы исследуете получившееся Покрытие интерполяционных таблиц.
Отчет содержит двумерную таблицу, представляющую элементы интерполяционной таблицы. Индексы элемента представлены линиями сетки границы ячейки, который номер 10 в каждой размерности. Области, где интерполяционная таблица интерполирует между табличными значениями, представлены областями ячейки. Области экстраполяции, оставленной элемента 1 и право на элемент 10, представлены ячейками в ребре таблицы, которые не имеют никакой внешней границы.
Количество интерполированных значений (или экстраполируемый) для каждой ячейки (количества выполнения) во время тестирования представлено оттенком зеленого цвета, присвоенного ячейке. Каждый из шести уровней зеленой штриховки и области значений представленных количеств выполнения отображен на одной стороне таблицы.
Если вы кликаете по отдельной ячейке таблицы, вы видите диалоговое окно, которое отображает местоположение индекса ячейки и точное количество количеств выполнения, сгенерированных для нее во время тестирования. Следующий пример показывает содержимое заштрихованной цветом ячейки на правом краю круга.
Выбранная ячейка обрисована в общих чертах в красном. Можно также кликнуть по ячейкам экстраполяции на ребре таблицы.
Полужирная линия сетки указывает в наименьшем количестве одного входа блока, равного его точному значению индекса, произошедшему во время симуляции. Кликните по границе, чтобы отобразить точное количество хитов для того значения индекса.
Следующая модель в качестве примера использует n-D блок Lookup Table 10 10 5 элементами, заполненными случайными значениями.
У обоих табличные оси X и Y есть индексы 1, 2..., 10. Ось z имеет индексы 10, 20..., 50. К значениям интерполяционной таблицы получают доступ с индексами X и Y, которые два блока Sine wave сгенерировали в предыдущем примере и индексе z, который генерирует блок Ramp.
После симуляции вы видите следующий отчет интерполяционной таблицы.
Вместо двумерной таблицы, ссылка Force Map Generation
отображения следующие таблицы:
О покрытии интерполяционных таблиц для 3D блока интерполяционной таблицы сообщают как набор двумерных таблиц.
Вертикальные панели представляют точные значения индекса z: 10, 20, 30, 40, 50. Если вертикальная панель полужирна, это указывает в наименьшем количестве одного входа блока, было равно точному значению индекса, которое это представляет во время симуляции. Кликните по панели, чтобы получить отчет покрытия для точного значения индекса, что панель представляет.
Можно сообщить о покрытии интерполяционных таблиц для интерполяционных таблиц любой размерности. О покрытии для четырехмерных таблиц сообщают как наборы 3D наборов, как те в предыдущем примере. О пятимерных таблицах сообщают как наборы наборов 3D наборов и так далее.
Все отчеты покрытия модели указывают на состояние параметра Block reduction Simulink в начале отчета. В следующем примере вы устанавливаете Force block reduction off.
В следующем примере вы включили параметр Block reduction Simulink, и вы не установили Force block reduction off.
Рассмотрите следующую модель, где симуляция не выполняет блок MinMax1, потому что существует только один вход — In3
.
Если вы устанавливаете Force block reduction off, отчет не содержит данных о покрытии для этого блока, потому что минимальным входом с блоком MinMax1 всегда является 1
.
Если вы не устанавливаете Force block reduction off, отчет не содержит данных о покрытии для уменьшаемых блоков.
На Панели Покрытия диалогового окна Configuration Parameters, если вы выбираете метрику покрытия Relational Boundary, программное обеспечение составляет таблицу Relational Boundary в отчете покрытия модели для каждого объекта модели, который поддерживается для этого покрытия. Таблица применяется к явной или неявной реляционной операции, вовлеченной в объект модели. Для получения дополнительной информации см.:
Столбец Relational Boundary в Объектах модели, Которые Получают Покрытие.
Приведенные ниже таблицы показывают реляционный граничный отчет покрытия для отношения input1 <= input2
. Внешний вид таблиц зависит от типа данных операнда.
Если оба операнда являются целыми числами (или если один операнд является целым числом и другим булевская переменная), таблица появляется следующей.
Для реляционной операции, такой как
:operand_1
<= operand_2
Первая строка утверждает эти два операнда в форме
.operand_1
- operand_2
Вторая строка утверждает число раз во время симуляции что
равно-1.operand_1
- operand_2
Третья строка утверждает число раз во время симуляции что
равно operand_1
.operand_2
Четвертая строка утверждает число раз во время симуляции что
равно 1.operand_1
- operand_2
Если один из операндов имеет фиксированную точку, и другой операнд является или фиксированной точкой или целым числом, таблица появляется следующей. LSB
представляет значение младшего значащего бита. Для получения дополнительной информации смотрите Точность (Fixed-Point Designer). Если эти два операнда имеют различную точность, меньшее значение точности используется.
Для реляционной операции, такой как
:operand_1
<= operand_2
Первая строка утверждает эти два операнда в форме
.operand_1
- operand_2
Вторая строка утверждает число раз во время симуляции что
равно operand_1
- operand_2
-LSB
.
Третья строка утверждает число раз во время симуляции что
равно operand_1
.operand_2
Четвертая строка утверждает число раз во время симуляции что
равно operand_1
- operand_2
LSB
.
Если один из операндов имеет тип с плавающей точкой, таблица появляется следующей. tol
представляет вычисленное использование значения входных значений и допуска, который вы задаете. Если вы не задаете допуск, значения по умолчанию используются. Для получения дополнительной информации смотрите Реляционное Граничное Покрытие.
Для реляционной операции, такой как
:operand_1
<= operand_2
Первая строка утверждает эти два операнда в форме
. operand_1
- operand_2
Вторая строка утверждает число раз во время симуляции что
имеет значения в области значений operand_1
- operand_2
[-tol..0]
.
Третья строка утверждает число раз во время симуляции что
имеет значения в области значений operand_1
- operand_2
(0..tol]
во время симуляции.
Внешний вид этой таблицы изменяется согласно оператору отношения в блоке. В зависимости от оператора отношения, значения
равняйтесь 0, также: operand_1
- operand_2
Исключенный из реляционного граничного покрытия.
Включенный в область выше реляционного контура.
Включенный в область ниже реляционного контура.
Оператор отношения | Формат отчета | Объяснение |
---|---|---|
== | [-tol..0) | 0 исключен. |
(0..tol] | ||
!= | [-tol..0) | 0 исключен. |
(0..tol] | ||
<= | [-tol..0] | 0 включен в область ниже реляционного контура. |
(0..tol] | ||
< | [-tol..0) | 0 включен в область выше реляционного контура. |
[0..tol] | ||
>= | [-tol..0) | 0 включен в область выше реляционного контура. |
[0..tol] | ||
> | [-tol..0] | 0 включен в область ниже реляционного контура. |
(0..tol] |
0 включен ниже реляционного контура для <=
но выше реляционного контура для <
. Это правило сопоставимо с Decision Coverage. Например:
Для отношения input1 <= input2
, решение верно если input1
меньше чем или равно input2
. <
и =
группируются. Поэтому 0 находится в области ниже реляционного контура.
Для отношения input1 < input2
, решение верно только если input1
меньше input2
. >
и =
группируются. Поэтому 0 находится в области выше реляционного контура.
На Панели Покрытия диалогового окна Configuration Parameters, если вы выбираете метрику покрытия Saturate on integer overflow, программное обеспечение создает Насыщение на анализируемой таблице Переполнения в отчете покрытия модели. Программное обеспечение составляет таблицу для каждого блока выбранным параметром Saturate on integer overflow.
Насыщение на Переполнении анализировало списки таблиц число раз, которое блок насыщает на целочисленном переполнении, указывая на истинное решение. Если блок не насыщает на целочисленном переполнении, таблица показывает ложное решение. Результаты, которые не происходят, находятся в красных подсвеченных строках таблицы.
Следующие графические показы Насыщение на Переполнении анализировали таблицу для блока MinMax в подсистеме Mixing & Combustion подсистемы Динамики Газа Двигателя в sldemo_fuelsys
модель в качестве примера.
Чтобы отобразить и подсветить рассматриваемый блок, щелкните, имя блока во главе раздела, содержащего Насыщение блока на Переполнении, анализировало таблицу.
Если вы выбираете метрику покрытия Signal Range, программное обеспечение создает раздел Signal Range Analysis в нижней части отчета покрытия модели. Этот раздел перечисляет максимальные и минимальные значения сигналов для каждого выходного сигнала в модели, измеренной в процессе моделирования.
Доступ к Анализу Диапазона сигнала сообщает быстро со ссылкой Диапазонов сигнала в области непрокрутки наверху отчета покрытия модели, как показано ниже в sldemo_fuelsys
отчет модели в качестве примера.
О каждом блоке сообщают иерархическим способом; дочерние блоки появляются непосредственно под родительскими блоками. Каждое имя блока в отчете Диапазонов сигнала является ссылкой. Например, выберите EGO sensor
соединитесь, чтобы отобразить этот блок, подсвеченный в его нативной схеме.
Если вы выбираете Signal Size, программное обеспечение создает раздел Variable Signal Widths после данных о Диапазонах сигнала в отчете покрытия модели. Этот раздел перечисляет максимальные и минимальные размеры сигнала для всех выходных портов в модели, которые имеют сигналы переменного размера. Это также перечисляет память, которую Simulink выделил для того сигнала, как измерено в процессе моделирования. Этот список не включает сигналы, размер которых не варьируется в процессе моделирования.
Следующий пример показывает раздел Variable Signal Widths в отчете покрытия. В этом примере размер блока-сигнала Abs варьировался от 2 до 5 с выделением 5.
О каждом блоке сообщают иерархическим способом; дочерние блоки появляются непосредственно под родительскими блоками. Каждое имя блока в Переменном списке Ширин Сигнала является ссылкой. Нажатие на ссылку подсвечивает соответствующий блок в Редакторе Simulink. После анализа сигналы переменного размера имеют более широкий проект линии.
Если вы выбираете Objectives and Constraints, анализ собирает данные о покрытии для всех блоков Simulink Design Verifier в вашей модели.
Для примера того, как это работает, откройте sldvdemo_debounce_testobjblks
модель.
Эта модель содержит два блока Цели тестирования:
Блок True задает свойство, что сигнал имеет значение 2
.
Блок Edge, в Объективной подсистеме Маскированной, описывает свойство, где выход блока AND в Объективной подсистеме Маскированной изменяется от 2
к 1
.
Программное обеспечение Simulink Design Verifier анализирует эту модель и производит модель тестовой обвязки, которая содержит тесты, которые достигают определенных целей тестирования. Чтобы видеть, достигает ли исходная модель тех целей, симулируйте модель тестовой обвязки и соберите данные о покрытии модели. Инструмент model coverage анализирует любые моменты принятия решения или значения в интервале, который вы задаете в блоке Test Objective.
В этом примере отчет покрытия показывает, что вы достигли 100%-го покрытия блока True, потому что значением сигналов был 2
по крайней мере, однажды. Значением сигналов был 2
в 6 из 14 временных шагов.
Входной сигнал с блоком Edge достиг значения True
однажды из 14 временных шагов.