Верификация предположений генерации кода

В начале программного обеспечения в цикле (SIL) или процессоре в цикле (PIL) симуляция, программное обеспечение проверяет некоторые настройки параметра конфигурации со ссылкой на целевой компьютер.

Например, настройки на Configuration Parameters> панель Hardware Implementation задает целевое поведение, которые приводят к реализации неявных предположений в сгенерированном коде. Неправильные настройки могут привести к:

  • Субоптимальный код

  • Отказ выполнения кода, неправильный код вывод и недетерминированное поведение кода

Проверки программного обеспечения:

  • Правильность настроек. Например, целочисленная длина в битах в поле Number of bits: int.

  • Оптимизированы ли настройки. Например, округление деления целого числа со знаком в поле Signed integer division rounds to.

Симуляция генерирует страницу Coder Assumptions для отчета генерации кода, который предоставляет список:

  • Предположения генерации кода, которые проверяются

  • Ожидаемые результаты для проверок предположения

Эта таблица показывает, когда проверки происходят и результаты, когда предположения генерации кода являются неправильными.

ЭтапЧто Проверяется Результат

Препроцессор

Number of bits на:

  • char (ProdBitPerChar)

  • short (ProdBitPerShort)

  • int (ProdBitPerInt)

  • long (ProdBitPerLong)

Если Support long long (ProdLongLongMode) выбран, количество битов на long long

Для каждого типа данных не выполнена проверка препроцессора, если количество битов превышает эти настройки для цели C препроцессор:

  • Для математики целого числа со знаком, TargetPreprocMaxBitsSint.

  • Для математики беззнаковых целых чисел, TargetPreprocMaxBitsUint.

Ошибка, если размеры типа данных для образцового и целевого компьютера не соответствуют.

Время выполнения

Number of bits на:

  • char (ProdBitPerChar)

  • short (ProdBitPerShort)

  • int (ProdBitPerInt)

  • long (ProdBitPerLong)

Ошибка, если размеры типа данных для образцового и целевого компьютера не соответствуют.

Если Support long long (ProdLongLongMode) выбран, количество битов на long long

Ошибка, если:

  • Целевой компьютер не поддерживает long long.

  • Размеры типа данных для образцового и целевого компьютера не соответствуют.

Размер:

  • float

  • double

Вы не можете сконфигурировать эти размеры типа данных через панель Hardware Implementation. Проверка выполнена, только если Support: floating-point numbers выбран.

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

Для double сгенерировано предупреждение, если размер типа данных целевого компьютера не составляет 32 или 64 бита.

Number of bits на:

  • pointer (ProdBitPerPointer)

  • size_t (ProdBitPerSizeT)

  • ptrdiff_t (ProdBitPerPtrDiffT)

Ошибка, если размеры типа данных для образцового и целевого компьютера не соответствуют.

Установка Signed integer division rounds to (ProdIntDivRoundTo)

Предупреждение, если установкой параметра модели является Undefined.

Ошибкой, если поведение целевого компьютера является установкой неопределенного и параметра модели, не является Undefined.

Ошибка, если поведение целевого компьютера задано, но настройки для образцового и целевого компьютера не соответствуют.

Установка Byte ordering (ProdEndianess)

Предупреждение, если установкой является Unspecified. В противном случае, ошибка, если настройки для образцового и целевого компьютера не соответствуют.

Установка Shift right on a signed integer as arithmetic shift (ProdShiftRightIntArith)

Ошибка, если настройки для образцового и целевого компьютера не соответствуют.

Установка Remove root level I/O zero initialization (ZeroExternalMemoryAtStartup)

Предупреждение, если ZeroExternalMemoryAtStartup является 'off' и начальные значения глобальных переменных в целевом приложении, не является нулем.

Установка Remove internal data zero initialization (ZeroInternalMemoryAtStartup)

Предупреждение, если ZeroInternalMemoryAtStartup является 'off' и начальные значения глобальных переменных в целевом приложении, не является нулем.

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

Похожие темы