Блоки Model не получают покрытие непосредственно; если вы устанавливаете режим симуляции блока Model к Normal
, SIL
, или PIL
, Simulink® Программное обеспечение Coverage™ записывает покрытие для модели, на которую ссылаются от блока Model. Если режим симуляции для блока Model - что-нибудь кроме Normal
, SIL
, или PIL
, программное обеспечение не записывает покрытие для модели, на которую ссылаются.
Ваша модель Simulink может содержать несколько блоков Model с тем же режимом симуляции, которые ссылаются на ту же модель. Когда программное обеспечение записывает покрытие, каждый экземпляр модели, на которую ссылаются, может быть осуществлен с различными входными параметрами или параметрами, возможно получившиеся дополнительные данные о покрытии для модели, на которую ссылаются.
Программное обеспечение Simulink Coverage записывает покрытие для всех экземпляров модели, на которую ссылаются, с тем же режимом симуляции и комбинирует данные о покрытии для той модели, на которую ссылаются, в конечных результатах.
Чтобы видеть, как это работает, симулируйте модель дважды. В первый раз вы записываете покрытие для одного блока Model в Normal
режим симуляции. Во второй раз вы записываете покрытие для двух блоков Model в Normal
режим симуляции. Оба блока Model ссылаются на ту же модель.
Покрытие записи для первой инстанции модели, на которую ссылаются,
Покрытие записи для второго экземпляра модели, на которую ссылаются,
Покрытие записи для одного блока Model.
Откройте свою модель верхнего уровня. Этот пример использует sldemo_mdlref_datamngt
модель:
Эта модель содержит три блока Model та ссылка sldemo_mdlref_counter_datamngt
модель в качестве примера. Углы каждого блока Model указывают на значение своего параметра Simulation mode:
Режим Counter1 — Simulation: Normal
Режим Counter2 — Simulation: Accelerator
Режим Counter3 — Simulation: Accelerator
Сконфигурируйте свою модель, чтобы записать покрытие в процессе моделирования:
В Редакторе Simulink выберите Model Settings на вкладке Modeling.
На панели 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
, как в примере ниже.
Чтобы убедиться, что программное обеспечение записывает покрытие для обоих экземпляров этой модели:
В Редакторе Simulink выберите Model Settings на вкладке Modeling.
На панели 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%-го покрытия.