Блоки Model не получают покрытие непосредственно; если вы устанавливаете режим симуляции блока Model к Normal
, SIL
или PIL
, программное обеспечение Simulink® Coverage™ записывает покрытие для модели, на которую ссылаются от блока Model. Если режим симуляции для блока Model - что-нибудь кроме Normal
, SIL
или PIL
, программное обеспечение не записывает покрытие для модели, на которую ссылаются.
Ваша модель Simulink может содержать блоки многоуровневой модели с тем же режимом симуляции, которые ссылаются на ту же модель. Когда программное обеспечение записывает покрытие, каждый экземпляр модели, на которую ссылаются, может быть осуществлен с различными входными параметрами или параметрами, возможно приводящими к дополнительному покрытию для модели, на которую ссылаются.
Программное обеспечение Simulink Coverage записывает покрытие для всех экземпляров модели, на которую ссылаются, с тем же режимом симуляции и комбинирует данные о покрытии для той модели, на которую ссылаются, в конечных результатах.
Чтобы видеть, как это работает, моделируйте модель дважды. В первый раз вы записываете покрытие для одного блока Model в режиме симуляции Normal
. Во второй раз вы записываете покрытие для двух блоков Model в режиме симуляции Normal
. Оба блока Model ссылаются на ту же модель.
Покрытие записи для первой инстанции модели, на которую ссылаются,
Покрытие записи для второго экземпляра модели, на которую ссылаются,
Покрытие записи для одного блока Model.
Откройте свою модель верхнего уровня. Этот пример использует следующую модель:
Эта модель содержит три блока Model, которые ссылаются на модель sldemo_mdlref_counter_datamngt
в качестве примера. Углы каждого блока Model указывают на значение своего параметра Simulation mode:
Режим Counter1 — Simulation: Normal
Режим Counter2 — Simulation: Accelerator
Режим Counter3 — Simulation: Accelerator
Сконфигурируйте свою модель, чтобы записать покрытие во время симуляции:
В окне модели выберите Analysis> Coverage> Settings.
На панели Coverage диалогового окна Configuration Parameters выберите:
Enable coverage analysis
Referenced Models
Нажмите Select Models. В диалоговом окне Select Models for Coverage Analysis можно выбрать только те модели, на которые ссылаются, режимом симуляции которых является Normal
, SIL
или PIL
. В этом примере, только первый блок Model, что ссылки sldemo_mdlref_counter_datamngt
доступны для записи покрытия.
Нажмите OK, чтобы выйти из диалогового окна Select Models for Coverage Analysis.
Нажмите OK, чтобы сохранить ваши настройки покрытия и выйти из диалогового окна Configuration Parameters.
Моделируйте свою модель.
Когда симуляция завершена, отчет покрытия HTML открывается. В этом примере данные о покрытии для модели, на которую ссылаются, sldemo_mdlref_counter_datamngt
, показывают, что модель достигла 69%-го покрытия.
Кликните по гиперссылке в отчете для модели, на которую ссылаются.
Подробный отчет покрытия для модели, на которую ссылаются, открывается, и модель, на которую ссылаются, кажется, с выделением показывает результаты покрытия.
Отметьте неотступно следование за покрытием подсистемой Проверки диапазона в этом примере:
Блок Saturate Count выполнился 100 раз. Этот блок имеет четыре булевых решения. Decision Coverage составлял 50%, потому что два из этих четырех решений никогда не были зарегистрированы:
Решением input > lower limit
никогда не был false
.
Решением input >= upper limit
никогда не был true
.
Функция DetectOverflow
выполнилась 50 раз. Этот скрипт имеет пять решений. Скрипт DetectOverflow
достиг 60%-го покрытия, потому что два из этих пяти решений никогда не были зарегистрированы:
Выражением count >= CounterParams.UpperLimit
никогда не был true
.
Выражением count > CounterParams.LowerLimit
никогда не был false
.
Покрытие записи для двух блоков Model. Установите режим симуляции второго блока Model к Normal
и моделируйте модель. В этом примере блок Counter2 добавляет к покрытию для модели, на которую ссылаются от обоих блоков Model.
В Редакторе Simulink для вашей модели верхнего уровня щелкните правой кнопкой по второму блоку Model и выберите Block Parameters (ModelReference).
Диалоговое окно Function Block Parameters открывается.
Установите параметр Simulation mode на Normal
.
Нажмите OK, чтобы сохранить ваше изменение и выйти из диалогового окна Function Block Parameters.
Углы блока Model изменяются, чтобы указать, что режимом симуляции для этого блока является Normal
, как в примере ниже.
Чтобы убедиться, что программное обеспечение записывает покрытие для обоих экземпляров этой модели:
Выберите Analysis> Coverage> Settings.
На панели Coverage выберите Enable coverage analysis.
Выберите Referenced Models и нажмите Select Models.
В диалоговом окне Select Models for Coverage Analysis проверьте, что оба экземпляра модели, на которую ссылаются, выбраны. В этом примере список теперь похож на следующее.
Если у вас есть несколько экземпляров модели, на которую ссылаются, в режиме Normal
, можно принять решение записать покрытие для всех них или ни одного из них.
Нажмите OK, чтобы закрыть диалоговое окно Select Models for Coverage Analysis.
Моделируйте свою модель снова.
Когда симуляция будет завершена, откройте отчет покрытия HTML.
В этом примере модель, на которую ссылаются, достигла 85%-го покрытия. Отметьте неотступно следование за данными о покрытии подсистемой Проверки диапазона:
Блок Saturate Count выполнился 179 раз. Симуляция блока Counter2 выполнила блок Saturate Count еще 79 раз для в общей сложности 179 выполнения.
Решением input >= upper limit
был true
21 раз во время этой симуляции, по сравнению с 0 во время первой симуляции. Четвертым решением input > lower limit
был все еще никогда false
. Три из четырех решений были зарегистрированы во время симуляции, таким образом, этот блок достиг 75%-го покрытия.
Функция DetectOverflow
выполнилась 100 раз. Симуляция блока Counter2 выполнила функцию DetectOverflow
еще 50 раз.
Функция DetectOverflow
имеет пять решений. Выражением count >= CounterParams.UpperLimit
был true
21 раз во время этой симуляции, по сравнению с 0 во время первой симуляции. Выражением count > CounterParams.LowerLimit
никогда не был false
. Четыре из пяти решений были зарегистрированы во время симуляции, таким образом, функция DetectOverflow
достигла 80%-го покрытия.