Отчет покрытия модели верхнего уровня

Если вы задаете к Generate report automatically after analysis в Покрытии> панель Результатов в диалоговом окне Configuration Parameters, программное обеспечение Simulink® Coverage™ создает отчет покрытия модели для заданной модели под названием model_name_cov.html. Отчет покрытия модели содержит несколько разделов:

Сводные данные покрытия

Раздел сводных данных покрытия содержит основную информацию об анализируемой модели:

  • Model Information

  • Simulation Optimization Options

  • Coverage Options

Сводные данные покрытия имеют два подраздела:

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

  • Сводные данные — Сводные данные результатов подсистемы. Чтобы видеть подробные результаты для определенной подсистемы, в Итоговом подразделе, кликают по имени подсистемы.

Детали

Раздел Details сообщает о подробных результатах покрытия модели. Каждый раздел подробного отчета обобщает результаты для метрик, которые тестируют каждый объект в модели:

Можно также получить доступ к подразделу Деталей элемента модели можно следующим образом:

  1. Щелкните правой кнопкой по элементу Simulink.

  2. В контекстном меню выберите Coverage> Report.

Фильтруемые объекты

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

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

Образцовые детали

Раздел Details содержит сводные данные результатов для модели в целом, сопровождаемый списком элементов. Кликните по имени элемента модели, чтобы видеть его результаты покрытия.

Следующие графические показы раздел Details для модели sldemo_fuelsys в качестве примера.

Детали подсистемы

Каждый раздел Details подсистемы содержит сводные данные результатов тестового покрытия для подсистемы и списка подсистем, которые это содержит. Обзор сопровождается разделами для блоков, графиков и функций MATLAB®, один для каждого объекта, который содержит момент принятия решения в подсистеме.

Следующие графические показы результаты покрытия для подсистемы Динамики Газа Engine в модели sldemo_fuelsys в качестве примера.

Блокируйте детали

Следующий графический Decision Coverage показов приводит для блока MinMax к подсистеме Mixing & Combustion подсистемы Динамики Газа Engine в модели sldemo_fuelsys в качестве примера.

Открытый элемент Ссылок сначала появляется в разделе Block Details первого блока в иерархии модели, которая не достигает 100%-го покрытия. Первый Открытый элемент Ссылок имеет стрелку, которая соединяется с разделом Block Details в отчете следующего блока, который не достигает 100%-го покрытия.

Последующие блоки, которые не достигают 100%-го покрытия, имеют ссылки на разделы Деталей Блока в отчете предыдущих и следующих блоков, которые не достигают 100%-го покрытия.

Стройте диаграмму деталей

Следующие графические показы результаты покрытия для Stateflow® строят диаграмму control_logic в модели sldemo_fuelsys в качестве примера.

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

Детали покрытия для функций MATLAB и функций Simulink Design Verifier

По умолчанию 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 для следующих функций:

В результатах покрытия код, который достигает 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, смотрите Покрытие Целей и Ограничений.

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

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

  • Раздел Summary содержит цикломатические числа сложности для каждого объекта в иерархии модели. Для подсистемы или диаграммы Stateflow, тот номер включает цикломатические числа сложности для всех их потомков.

  • Детали разделяют для каждого списка объектов цикломатические числа сложности для всех отдельных объектов.

Анализируемые решения

Решения анализировали возможные исходы списков таблиц для решения и числа раз, что результат произошел в каждой тестовой симуляции. Результаты, которые не произошли, находятся в красных подсвеченных строках таблицы.

Следующие графические показы Решения анализировали таблицу для блока Saturate в подсистеме Throttle & Manifold подсистемы Динамики Газа Engine в модели sldemo_fuelsys в качестве примера.

Чтобы отобразить и подсветить рассматриваемый блок, щелкните, имя блока во главе раздела, содержащего Решения блока, анализировало таблицу.

Анализируемые условия

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

Анализ MCDC

Аналитическая таблица MCDC приводит случаи условия входа MCDC, представленные соответствующим блоком и степенью, до которой тесты, о которых сообщают, покрывают случаи условия.

Каждая строка аналитической таблицы MCDC представляет случай условия для конкретного входа к блоку. Случай условия для входа n блока является комбинацией входных значений. Вход n называется входом решения случая условия. Изменение значения одного только входа n изменяет значение вывода блока.

Аналитическая таблица MCDC показывает case-выражение условия, чтобы представлять случай условия. Case-выражение условия является символьной строкой где:

  • Положение символа в строке соответствует номеру входного порта.

  • Символ в положении представляет значение входа. (T означает true; F означает false).

  • Полужирный символ соответствует значению входа решения.

Например, F T F представляет случай условия для блока с тремя входами, где второй вход является входом решения.

Решение/Столбец условий задает вход решения для входного случая условия. Истина столбец задает входное значение решения, которое заставляет блок выводить значение true для случая условия. Истина запись использует case-выражение условия, например, 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 в Настройках Результатов покрытия, результаты, расположенные в самой правой области во всех таблицах совокупного отчета покрытия, отражают рабочее итоговое значение. Отчет организован так, чтобы можно было легко сравнить дополнительное покрытие от нового выполнения с покрытием от всех предшествующих выполнений на сеансе.

Совокупный отчет покрытия содержит информацию о:

  • Текущее Выполнение — результаты покрытия симуляции, только завершенной.

  • \delta Процент покрытия, добавленного к совокупному покрытию, достигнутому с симуляцией, только завершенной. Если совокупное покрытие предыдущей симуляции и текущее покрытие являются ненулевыми, дельта может быть 0, если новое покрытие не добавляет к совокупному покрытию.

  • Совокупный — общее покрытие, собранное для модели до, и включая, симуляция, только завершенная.

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

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

Условия анализировали табличные заголовки столбцов использования #n T и #n F, чтобы указать на результаты для отдельных тестов. Таблица использует Итог T и Итог F для совокупных результатов. Можно идентифицировать истинные и ложные условия на каждом входном порте соответствующего блока для каждого теста.

Анализ MCDC #n Верный и #n Ложь столбцы показывает случаи условия для каждого теста. Общее количество T и Общее количество F столбец показывают совокупные результаты.

Примечание

Можно вычислить совокупное покрытие для допускающих повторное использование подсистем и построений Stateflow в командной строке. Для получения дополнительной информации смотрите, Получают Совокупное Покрытие для Допускающих повторное использование Подсистем и Построений Stateflow.

N-мерная интерполяционная таблица

Следующая интерактивная схема обобщает степень, до которой получают доступ к элементам интерполяционной таблицы. В этом примере два блока Синусоиды генерируют индексы X и Y, которые получают доступ к 2D блоку Lookup Table 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, которые два блока Синусоиды сгенерировали в предыдущем примере и индексе 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 в отчете покрытия модели для каждого объекта модели, который поддерживается для этого покрытия. Таблица применяется к явной или неявной реляционной операции, вовлеченной в объект модели. Для получения дополнительной информации см.:

Приведенные ниже таблицы показывают реляционный граничный отчет покрытия для отношения input1 <= input2. Внешний вид таблиц зависит от типа данных операнда.

Целые числа

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

Для реляционной операции, такой как operand_1 <= operand_2:

  • Первая строка утверждает эти два операнда в форме operand_1 - operand_2.

  • Вторая строка утверждает число раз во время симуляции, что operand_1 - operand_2 равен-1.

  • Третья строка утверждает число раз во время симуляции, что operand_1 равен operand_2.

  • Четвертая строка утверждает число раз во время симуляции, что operand_1 - operand_2 равен 1.

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

Если один из операндов имеет фиксированную точку, и другой операнд является или фиксированной точкой или целым числом, таблица появляется можно следующим образом. 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] во время симуляции.

Внешний вид этой таблицы изменяется согласно оператору отношения в блоке. В зависимости от оператора отношения значение operand_1 - operand_2, равного 0, также:

  • Исключенный из реляционного граничного покрытия.

  • Включенный в область выше реляционного контура.

  • Включенный в область ниже реляционного контура.

Оператор отношенияФормат отчетаОбъяснение
==[-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 подсистемы Динамики Газа Engine в модели 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. После анализа сигналы переменного размера имеют более широкий проект строки.

Покрытие Simulink Design Verifier

Если вы выбираете 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 временных шагов.