Эти проверки помогают вам подготовить модель к Simulink® Design Verifier™ анализ. Когда вы запускаете проверку Simulink Design Verifier, Model Advisor проверяет лицензию 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. В Configuration Parameters окне на панели Design Verifier > Design Error Detection выберите как Dead logic, так и Identify active logic. |
Мертвая логика не найдена в модели | Simulink Design Verifier не нашел в модели мертвой логики. Вполне возможно, что есть цели, которые этот анализ не решил. Чтобы расширить результаты этого анализа, используйте поиск ошибок проектирования Simulink Design Verifier, чтобы также идентифицировать активную логику. В редакторе Simulink выберите Apps > Design Verifier > Settings. В Configuration Parameters окне на панели Design Verifier > Design Error Detection выберите как Dead logic, так и Identify active logic. |
MISRA C:2012: Правило 2.1
CERT C, MSC07-C
CWE, CWE-561
Стандарты безопасного кодирования (Embedded Coder)
Обнаружение мертвой логики, вызванной неправильным значением
Проверяйте идентификатор: 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
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: 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, diverr
CERT C, INT33-C и FLP03-C
CWE, CWE-369
Стандарты безопасного кодирования (Embedded Coder)
Обнаружение целочисленного переполнения и ошибок деления на нули
Проверяйте идентификатор: 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, intoflow
CERT C, INT30-C и INT32-C
CWE, CWE-190
Стандарты безопасного кодирования (Embedded Coder)
Обнаружение целочисленного переполнения и ошибок деления на нули
Проверяйте идентификатор: mathworks.sldv.infnan
Обнаруживает Нефинитные и NaN значения с плавающей точкой в вашей модели
Эта проверка обнаруживает вхождения нефинитных и NaN значений с плавающей точкой в вашей модели.
Результат | Рекомендуемое действие |
---|---|
Неудачно, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. Раздел «Несовместимость указателей с автоматическим упрямством». |
В модели найдены нефинитные и NaN значения с плавающей точкой | Чтобы просмотреть условия, которые вызывают вхождение нефинитных и 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
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте на установленные нарушения минимального и максимального значений
Проверяйте идентификатор: mathworks.sldv.dsmaccessviolations
Обнаружение нарушений доступа к хранилищу данных в вашей модели.
Эта проверка обнаруживает следующие нарушения доступа к хранилищу данных:
Чтение-перед-записать
Запись после чтения
Запись-после-запись
Результат | Рекомендуемое действие |
---|---|
Неудачно, модель несовместима | Устраните несовместимость модели. См.:
|
Обнаружены нарушения доступа к хранилищу данных | В отчете Model Advisor нажмите View test case. Программа создает модель тестовой обвязки, а блок Signal Builder отображает тест, который наследует ошибку. |
Проверяйте идентификатор: mathworks.sldv.blockinputrangeviolations
Обнаружите нарушения входной области значений блоков в вашей модели.
Эта проверка обнаруживает нарушения входной области значений для блоков с этими настройками:
Для этих блоков, когда параметр Diagnostic for out-of-range input установлен в Warning
или Error
:
Multiport Switch блоки, когда параметру Diagnostic for default case задано значение Warning
или Error
.
Trigonometric Function блоки, когда параметру Approximation method задано значение CORDIC
Примечание
Проверка не помечает нарушения входной области значений для блоков n-D Lookup Table, когда Interpolation method установлено на Akima spline
или Cubic spline
.
Результат | Рекомендуемое действие |
---|---|
Неудачно, модель несовместима | Устраните несовместимость модели. См.:
|
Найдены нарушения входной области значений блоков | В отчете Model Advisor нажмите View test case. Программа создает модель тестовой обвязки, а блок Signal Builder отображает тест, который наследует ошибку. |
Проверяйте идентификатор: mathworks.sldv.hismviolationshisl_0002
Определяет использование блоков Math Function с помощью rem и reciprocal функций, которые вызывают не конечные результаты.
Состояние | Рекомендуемое действие |
---|---|
Модель или подсистема содержит Math Function - обратную (reciprocal) или оставшиеся (rem) блоки, которые могут привести к не конечным выходным сигналам. Не конечные сигналы не поддерживаются во встраиваемых системах в реальном времени. | При использовании блока Math Function с rem или reciprocal функциональные блоки, защитите вход в блок от того, что меньше или равен нулю. |
Проверяйте идентификатор: mathworks.sldv.hismviolationshisl_0003
Идентифицируйте Sqrt блоки с входами, которые могут быть отрицательными.
Состояние | Рекомендуемое действие |
---|---|
Один или несколько блоков Sqrt в модели имеют входы, которые могут пойти отрицательными во время симуляции. | Ремодель для защиты входов блоков Sqrt от отрицательного изменения. |
Проверяйте идентификатор: mathworks.sldv.hismviolationshisl_0004
Определяет блоки Math Function, используя log и log10 функции, которые вызывают не конечные результаты.
Состояние | Рекомендуемое действие |
---|---|
Один или несколько блоков Math в модели используют натуральный/базовый 10 логарифм (Log и Log10 ) блокирует и может потребовать поддержки без конечных чисел, которая не поддерживается во встраиваемых системах в реальном времени. | Рассмотрите защиту входа блоков таким образом, чтобы он не был меньше или равен нулю. |
Проверяйте идентификатор: mathworks.sldv.hismviolationshisl_0028
Идентифицирует Reciprocal Sqrt блоки с входами, которые могут быть нулевыми или отрицательными.
Состояние | Рекомендуемое действие |
---|---|
Один или несколько блоков Reciprocal Sqrt в модели имеют входы, которые могут перейти к нулю или отрицательному значению во время симуляции. | Ремодель для защиты входов блоков Reciprocal Sqrt от отрицательного изменения. |