Поддержите ограничения и факторы для кода C/C++ и S-функций

Включение S-функций в Simulink Design Verifier

Simulink® Design Verifier™ поддерживает генерацию теста для кода, сгенерированного с Embedded Coder®. Simulink Design Verifier также поддерживает выявление ошибок, генерацию теста и свойство, доказывающее для S-функций что:

  • Legacy Code Tool генерирует с def.Options.supportCoverageAndDesignVerifier установите на истину.

  • Разработчик S-функции генерирует с выбранным On Enable support for Design Verifier вкладки Build Info диалогового окна S-Function Builder.

  • Функциональный slcovmex компиляции, с опцией -sldv переданный функции при компиляции S-функции.

Для получения дополнительной информации о трех подходах займитесь S-функциями MEX C (Simulink).

Поддержите ограничения для кода C/C++ и S-функций

  • Simulink Design Verifier не поддерживает S-функции или код C/C++, содержащий:

    • Непрерывные состояния. Simulink Design Verifier не анализирует такой код.

    • Функции пересечения нулем. Simulink Design Verifier игнорирует такой код во время анализа.

    • Константы, которые описывают объекты NaN или INF. Simulink Design Verifier рассматривает такой код как содержание ошибок переполнения с плавающей точкой. Несмотря на то, что анализ Simulink Design Verifier не может определить тип ошибки переполнения для таких случаев, анализ может определить, какие строки кода вводят несовместимость. Polyspace® может предоставить больше информации о том, почему ваш код содержит ошибки переполнения с плавающей точкой.

  • Необходимо указать, что элементы сигнала, вводящие порты S-функций, скомпилировали с slcovmex непрерывны. Используйте SimStruct функциональный ssSetInputPortRequiredContiguous.

Факторы для Включения S-функций и Кода C/C++ в Simulink Design Verifier

  • При выполнении свойства, доказывающего или анализа генерации тестов для моделей с активированными S-функциями или кода C/C++, сгенерированного с Embedded Coder, Simulink Design Verifier принимает, что код не содержит ошибок времени выполнения. Если код содержит ошибки времени выполнения, такие как деление на нуль, доступ к неинициализированным переменным или массиву за пределы, доказательство свойства или анализ генерации тестов могут привести к неправильным результатам. Код, который проверялся Polyspace и свободен от ошибок времени выполнения, предоставляет правильные результаты в анализе Simulink Design Verifier.

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

  • Если Simulink Design Verifier не может определить размер массивов в вашем коде (например, для массивов, которые динамически выделяются с непостоянным размером), Simulink Design Verifier принимает верхнюю границу для массива. Убедитесь, что данная верхняя граница является соответствующей.

  • Если вы не включаете поддержку Simulink Design Verifier S-функции, Simulink Design Verifier блокирует S-функцию. С включенной поддержкой S-функции Simulink Design Verifier анализировал содержимое S-функции, чтобы получить более подробную информацию. Иногда, Simulink Design Verifier внутренне блокирует S-функцию. Внутренние тупики могут быть результатом различных построений C/C++, таких как:

    • Вызовы библиотечных функций (библиотечная функция заменяется тупиком).

    • Комплексные операции указателя.

    • Броски к или от несовместимых или неизвестных типов указателей.

    Модели, содержащие такие построения, помечены Partially compatible.

Защита исходного кода

Чтобы анализировать содержимое S-функции, информация о реализации S-функции, включая информацию, выведенную из исходного кода, хранится в общем объекте. Несмотря на то, что эта информация не непосредственно доступна пользователям, считайте отключение поддержкой Simulink Design Verifier S-функций в моделях, которые выпущены внешне, если S-функции содержат чувствительный исходный код.

Смотрите также

|