Проверяйте допущения генерации кода

Генератор кода реализует допущения, которые зависят, например, от настроек аппаратной реализации вашей модели. Важно проверить, что допущения действительны для вашего целевого компьютера. Используйте buildStandaloneCoderAssumptions функция для создания приложения, которое выполняет проверку предположений на вашем целевом компьютере.

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

  1. С GenerateReport установлено на 'on', создайте (Ctrl+B) свою модель.

  2. Чтобы просмотреть список допущений генератора кода, которые можно проверить, откройте отчет о генерации кода и щелкните Coder Assumptions ссылку.

    Для получения дополнительной информации смотрите Список допущений кодера.

  3. Выполняйте buildStandaloneCoderAssumptions, который использует сгенерированный код в папке сборки, чтобы создать приложение, которое запускает проверку допущений генерации кода.

  4. Загрузите приложение на целевой компьютер или целевое окружение, а затем запустите приложение.

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

Проверяйте допущения генератора кода для компьютера разработчика

Если целевым компьютером является, например, ваша Windows® компьютер разработчика, вы можете использовать Microsoft® Визуальная студия® чтобы запустить и отлажить приложение:

  1. Чтобы открыть модель, в Командном окне введите rtwdemo_sil_topmodel.

  2. В диалоговом окне Model Параметры Конфигурации, на панели Hardware Implementation, задайте настройки, соответствующие целевому компьютеру. Для примера на 64-разрядном компьютере Windows задайте следующие параметры:

    • Device vendorIntel

    • Device typex86-64 (Windows 64)

  3. Очистите Enable portable word sizes параметра конфигурации модели.

  4. Создайте модель (Ctrl+B).

  5. Чтобы просмотреть список допущений генератора кода, откройте отчет о генерации кода и щелкните Coder Assumptions ссылку.

  6. Из Командного окна, в рабочей папке, запустите:

    buildStandaloneCoderAssumptions('rtwdemo_sil_topmodel_ert_rtw')
    В папке сборки функция создает coderassumptions\standalone подпапка, содержащая целевое приложение, rtwdemo_sil_topmodel_ca.

  7. Откройте Microsoft Visual Studio и выберите File > Open > Project/Solution

  8. Используя диалоговое окно «Открыть проект», перейдите к coderassumptions\standalone и выберите подпапку rtwdemo_sil_topmodel_ca. Затем нажмите Open.

  9. Выберите File > Open > File. Используя диалоговое окно «Открыть файл», выберите coderassumptions\standalone\rtwdemo_sil_topmodel_ca.c

  10. На return оператор, вставьте точку пропуска.

  11. Выберите Debug > Start Debugging.

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

    1. В rtwdemo_sil_topmodel_ca.c код, щелкните правой кнопкой мыши Results.

    2. В контекстном меню выберите Add Watch.

Переменные в структуре данных содержат:

  • Проверяйте результаты (TestResults)

  • Целевые аппаратные истины (ActualValues)

  • Допущения генератора кода (ExpectedValues)

Для примера, если предположение генератора кода для bitsPerChar точно, вы видите CA_PASS значение в status переменная.

Список допущений кодера

Раздел содержимого отчета о генерации кода имеет ссылку на страницу Coder Assumptions. На странице представлен список:

  • Допущения генерации кода, которые можно проверить

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

Эта таблица описывает метки, которые вы видите в списке.

КатегорияМеткаПредположение, что вы можете проверить
Настройка языка C/C + + для целевого компьютера или компьютера разработчика

BitPerChar

Количество бит в char (ProdBitPerChar)

BitPerShort

Количество бит в short (ProdBitPerShort)

BitPerInt

Количество бит в int (ProdBitPerInt)

BitPerLong

Количество бит в long (ProdBitPerLong)

BitPerFloat

Размер float (Только если PurelyIntegerCode является 'off')

BitPerDouble

Размер double (Только если PurelyIntegerCode является ‘off’)

BitPerPointer

Количество бит в pointer (ProdBitPerPointer)

BitPerSizeT

Количество бит в size_t (ProdBitPerSizeT)

BitPerPtrDiffT

Количество бит в ptrdiff_t (ProdBitPerPtrDiffT)

Endianess

Упорядоченное расположение байтов (ProdEndianess)

Shift right for signed integer is arithmetic shift

Поведение битов знака (ProdShiftRightIntArith)

Signed integer division rounds to

Округление для целого деления (ProdIntDivRoundTo)

Стандарт языка C/C + +

Initial value of a global integer variable and dynamically allocated memory is zero

Нулевая инициализация памяти (ZeroExternalMemoryAtStartup, ZeroInternalMemoryAtStartup, и GenerateAllocFcn)

Числа с плавающей запятой

Flush-to-zero computed subnormal values (FTZ)

Обработка субнормальных чисел в нуле

Flush-to-zero incoming subnormal values (DAZ)

Денормалы - это субнормальная обработка числа с нулем

См. также

Похожие темы