Эти проверки помогают подготовить модель к анализу Simulink ® Design Verifier™. При выполнении проверки Simulink Design Verifier мастер модели выдает лицензию Simulink Design Verifier.
Дополнительные сведения о Model Advisor см. в разделах Запуск проверок Model Advisor и автоматизация выполнения проверок Model Advisor.
Код чека: mathworks.sldv.compatibility
Определите элементы, которые не поддерживаются в анализе Simulink Design Verifier.
Эта проверка позволяет оценить совместимость модели с Simulink Design Verifier.
| Состояние | Рекомендуемое действие |
|---|---|
| Несовместимый |
Избегайте использования следующих неподдерживаемых программных элементов или блоков Simulink в модели или компоненте модели, которые требуется проанализировать. |
| Частично совместим |
|
| Совместимый | Simulink Design Verifier может анализировать модель. |
Код чека: mathworks.sldv.deadlogic
Определите логику, которая остается неактивной во время моделирования.
Эта проверка определяет части модели, которые остаются неактивными во время моделирования.
С помощью Simulink Design Verifier можно выполнить более подробный анализ, определяющий как неработающую логику, так и активную логику. Дополнительные сведения см. в разделе Обнаружение неработающей логики, вызванной неправильным значением.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C и CWE
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. См.:
Также см. раздел Обработка несовместимости с автоматическим блокированием. |
| В модели найдена мертвая логика | Simulink Design Verifier доказал, что эти решения и результаты условий не могут возникнуть и являются неубедительной логикой в модели. Неработоспособная логика также может быть побочным эффектом указанных ограничений на параметры или указанных минимальных и максимальных ограничений на входные порты. В редких случаях неработоспособная логика может быть результатом аппроксимаций, выполняемых Simulink Design Verifier. Не исключено, что есть цели, которые этот анализ не решил. Чтобы расширить результаты этого анализа, используйте обнаружение ошибок конструкции Simulink Design Verifier для определения активной логики. В редакторе Simulink выберите Apps > Design Verifier > Settings. В окне «Параметры конфигурации» на панели «Design Verifier > Design Error Detection» выберите «Dead logic» и «Identify active logic». |
| Мертвая логика не найдена в модели | Simulink Design Verifier не нашел в модели мертвой логики. Не исключено, что есть цели, которые этот анализ не решил. Чтобы расширить результаты этого анализа, используйте обнаружение ошибок конструкции Simulink Design Verifier для определения активной логики. В редакторе Simulink выберите Apps > Design Verifier > Settings. В окне «Параметры конфигурации» на панели «Design Verifier > Design Error Detection» выберите «Dead logic» и «Identify active logic». |
MISRA C:2012: Правило 2.1
CERT C, MSC07-C
CWE, CWE-561
Стандарты безопасного кодирования (встроенный кодер)
Обнаружение неработоспособной логики, вызванной неправильным значением
Панель «Верификатор проекта»: обнаружение ошибок конструкции
Код чека: mathworks.sldv.arraybounds
Обнаруживает операции, доступ к которым осуществляется за пределами индекса массива
Эта проверка обнаруживает экземпляры доступа к массиву за пределами границ в Simulink Design Verifier.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C, CWE, ISO/IEC TS 17961.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим блокированием. |
| В модели обнаружен доступ вне связанного массива |
Чтобы просмотреть условия, вызывающие доступ к массиву вне границ, создайте модель кабельных трасс. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
MISRA C:2012: правило 18.1
ISO/IEC TS 17961:2013, invptr
CERT C, ARR30-C
CWE, CWE-118
Стандарты безопасного кодирования (встроенный кодер)
Код чека: mathworks.sldv.divbyzero
Обнаружение ошибок деления на ноль в модели
Эта проверка определяет операции в модели, которые вызывают ошибки деления на ноль.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C, CWE, ISO/IEC TS 17961.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим блокированием. |
| В модели найдено деление на ноль |
Чтобы просмотреть условия, вызывающие деление на ноль, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
MISRA C:2012: Директива 4.1
ISO/IEC TS 17961:2013, diversr
CERT C, INT33-C и FLP03-C
CWE, CWE-369
Стандарты безопасного кодирования (встроенный кодер)
Обнаружение переполнения целого числа и ошибок деления на ноль
Код чека: mathworks.sldv.integeroverflow
Обнаружение ошибок переполнения целочисленных или фиксированных данных в модели
Эта проверка определяет операции, которые превышают диапазон типов данных для целочисленных операций или операций с фиксированной точкой.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C, CWE, ISO/IEC TS 17961.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим блокированием. |
| В модели обнаружено целочисленное переполнение |
Для просмотра условий, вызывающих переполнение целого числа, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
MISRA C:2012: Директива 4.1
ISO/IEC TS 17961:2013, введение
CERT C, INT30-C и INT32-C
CWE, CWE-190
Стандарты безопасного кодирования (встроенный кодер)
Обнаружение переполнения целого числа и ошибок деления на ноль
Код чека: mathworks.sldv.infnan
Обнаружение значений Nonfinite и NaN с плавающей запятой в модели
Эта проверка обнаруживает в модели вхождения значений с плавающей запятой non-finite и NaN.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим блокированием. |
| В модели найдены значения с плавающей запятой Nonfinite и NaN | Для просмотра условий, вызывающих появление значений с плавающей запятой non-finite и NaN, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
Код чека: mathworks.sldv.subnormal
Обнаружение субнормальных значений с плавающей запятой в модели
Эта проверка обнаруживает вхождения субнормальных значений с плавающей запятой в модели.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим блокированием. |
| Субнормальные значения с плавающей запятой, найденные в модели | Для просмотра условий, вызывающих появление субнормальных значений с плавающей точкой, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
Код чека: mathworks.sldv.minmax
Обнаружение сигналов, превышающих указанные минимальные и максимальные значения
Этот анализ проверяет указанные минимальное и максимальное значения (диапазоны проектирования) на промежуточных сигналах в модели и на выходных портах. Если анализ обнаруживает, что сигнал превышает проектный диапазон, результаты определяют, где в модели произошли ошибки.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C и CWE.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим блокированием. |
| Нарушение минимума и/или максимума, обнаруженных в модели |
Для просмотра условий, вызывающих нарушение, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
MISRA C:2012: Директива 4.1
CERT C, API00-C
CWE, CWE-628
Стандарты безопасного кодирования (встроенный кодер)
Проверка указанных нарушений минимального и максимального значений
Код чека: mathworks.sldv.dsmaccessviolations
Обнаружение нарушений доступа к хранилищу данных в модели.
Эта проверка обнаруживает следующие нарушения доступа к хранилищу данных:
Чтение перед записью
Запись после чтения
Запись после записи
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. См.:
|
| Обнаружены нарушения доступа к хранилищу данных | В отчете Model Advisor щелкните Просмотр тестового случая. Программа создает модель кабельных трасс, а блок «Построитель сигналов» отображает тестовый пример, который воспроизводит ошибку. |
Код чека: mathworks.sldv.blockinputrangeviolations
Обнаружение нарушений входного диапазона блоков в модели.
Эта проверка выявляет нарушения диапазона ввода для блоков со следующими настройками:
Для этих блоков, если для входного параметра Diagnostic for out-of-range установлено значение Warning или Error:
Блоки мультипортового коммутатора, если для параметра Diagnostic for default case установлено значение Warning или Error.
Тригонометрические функциональные блоки, если для параметра метода аппроксимации установлено значение CORDIC
Примечание
Проверка не помечает нарушения входного диапазона для n-D блоков таблицы поиска, если для метода интерполяции установлено значение Akima spline или Cubic spline.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. См.:
|
| Обнаружены нарушения диапазона ввода блоков | В отчете Model Advisor щелкните Просмотр тестового случая. Программа создает модель кабельных трасс, а блок «Построитель сигналов» отображает тестовый пример, который воспроизводит ошибку. |
Код чека: mathworks.sldv.hismviolationshisl_0002
Определяет использование блоков математических функций с использованием rem и обратных функций, которые приводят к неграничным результатам.
| Состояние | Рекомендуемое действие |
|---|---|
Модель или подсистема содержит математическую функцию - обратную (reciprocal) или остаток (rem) блоки, которые могут привести к получению несграничных выходных сигналов. Несграничные сигналы не поддерживаются во встроенных системах реального времени. | При использовании блока Математическая функция (Math Function) с rem или reciprocalфункциональные блоки, защищают вход в блок от того, чтобы он был меньше или равен нулю. |
Код чека: mathworks.sldv.hismviolationshisl_0003
Определите блоки Sqrt с входами, которые могут быть отрицательными.
| Состояние | Рекомендуемое действие |
|---|---|
| Один или несколько блоков Sqrt в модели имеют входные данные, которые могут быть отрицательными во время моделирования. | Реконструкция для защиты входных данных блоков Sqrt от отрицательного изменения. |
Код чека: mathworks.sldv.hismviolationshisl_0004
Определяет блоки математических функций с помощью функций log и log10, которые приводят к получению неграничных результатов.
| Состояние | Рекомендуемое действие |
|---|---|
Один или несколько математических блоков в модели используют натуральный/базовый 10 логарифм (Log и Log10) блокирует и может требовать поддержки не конечного числа, которая не поддерживается во встроенных системах реального времени. | Рассмотрите возможность защиты входа блоков таким образом, чтобы он не был меньше или равен нулю. |
Код чека: mathworks.sldv.hismviolationshisl_0028
Определяет взаимные блоки Sqrt с входами, которые могут быть нулевыми или отрицательными.
| Состояние | Рекомендуемое действие |
|---|---|
| Один или несколько взаимных блоков Sqrt в модели имеют входные данные, которые могут быть нулевыми или отрицательными во время моделирования. | Ремоделировать, чтобы защитить вход блоков обратного Sqrt от отрицательного. |