Покрытие модели для нескольких Образцов ссылочной Модели

О покрытии для блоков Model

Model блоки не получают покрытие напрямую; если вы задаете режим симуляции блока Model равным Normal , SIL, или PIL, the Simulink® Coverage™ программное обеспечение записывает покрытие для модели, на которую ссылается блок Model. Если режим симуляции для блока Model является чем-то иным, кроме Normal, SIL, или PILпрограммное обеспечение не регистрирует покрытие для ссылочной модели.

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

Программное обеспечение Simulink Coverage регистрирует покрытие для всех образцов ссылочной модели с тем же режимом симуляции и объединяет данные покрытия для этой ссылочной модели в конечных результатах.

Запись покрытия для нескольких Образцов ссылочной Модели

Чтобы увидеть, как это работает, моделируйте модель дважды. Первый раз вы записываете покрытие для одного блока Model в Normal режим симуляции. Второй раз вы записываете покрытие для двух блоков Model в Normal режим симуляции. Оба блока Model ссылаются на одну и ту же модель.

Запись покрытия для первого Образца ссылочной Модели

Запишите покрытие для одного блока Model.

  1. Откройте модель верхнего уровня. Этот пример использует sldemo_mdlref_datamngt модель:

    Эта модель содержит три блока Model, которые ссылаются на sldemo_mdlref_counter_datamngt пример модели. Углы каждого блока Model указывают значение их параметра Simulation mode:

    • Counter1 - Режим симуляции: Normal

    • Counter2 - Режим симуляции: Accelerator

    • Counter3 - Режим симуляции: Accelerator

  2. Сконфигурируйте свою модель, чтобы записать покрытие во время симуляции:

    1. В редакторе Simulink выберите Model Settings на вкладке Modeling.

    2. На панели Coverage диалогового окна Параметры конфигурации выберите:

      • Enable coverage analysis

      • Referenced Models

    3. Нажмите Select Models. В диалоговом окне Выбор моделей для анализа покрытия можно выбрать только те модели-ссылки, чей режим симуляции Normal, SIL, или PIL. В этом примере только первый блок Model, который ссылается на sldemo_mdlref_counter_datamngt доступен для записи покрытия.

    4. Щелкните OK, чтобы выйти из диалогового окна Выбор моделей для анализа покрытия.

  3. Нажмите OK, чтобы сохранить настройки покрытия и выйти из диалогового окна Параметров конфигурации.

  4. Симулируйте свою модель.

    Когда симуляция будет завершённая, откроется отчет о покрытии HTML. В этом примере данные покрытия для ссылочных моделей, sldemo_mdlref_counter_datamngt, показывает, что модель достигла покрытия 69%.

  5. Щелкните гиперссылку в отчете для ссылок на модель.

    Откроется подробный отчет о покрытии для модели-ссылки, и ссылочная модель появится с подсветкой, чтобы показать результаты покрытия.

    Обратите внимание на следующее о покрытии для подсистемы 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.

  1. В редакторе Simulink для модели верхнего уровня щелкните правой кнопкой мыши второй блок Model и выберите Block Parameters (ModelReference).

    Откроется диалоговое окно Function Параметры Блоков.

  2. Установите параметр Simulation mode равным Normal.

  3. Щелкните OK, чтобы сохранить изменение и выйти из диалогового окна Function Параметры Блоков.

    Углы блока Model изменяются, чтобы указать, что режим симуляции для этого блока Normal, как в примере ниже.

  4. Чтобы убедиться, что программное обеспечение записывает покрытие для обоих образцов этой модели:

    1. В редакторе Simulink выберите Model Settings на вкладке Modeling.

    2. На панели Coverage выберите Enable coverage analysis.

    3. Выберите Referenced Models и нажмите Select Models.

      В диалоговом окне Select Models for Coverage Analysis проверьте, что выбраны оба образцов ссылочных моделей. В этом примере список теперь выглядит следующим образом.

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

    4. Щелкните OK, чтобы закрыть диалоговое окно Выбор моделей для анализа покрытия.

  5. Симулируйте свою модель снова.

  6. Когда симуляция будет завершённая, откройте отчет о покрытии 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%.