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