polyspacePackNGo

Сгенерируйте и файлы опций пакета, чтобы запустить анализ Polyspace кода, сгенерированного из модели Simulink

Описание

пример

archivePath = polyspacepacknGo(mdlName) исследует модель mdlName Simulink®, извлечения файлы опций Polyspace® от него и пакеты файлы опций в zip-файле, расположенном в archivePath. Перед использованием polyspacePackNGo, сгенерируйте код из своей модели Simulink. Затем заархивируйте сгенерированный код, например, при помощи packNGo. Сгенерируйте файлы опций Polyspace из модели Simulink и включайте их в архив кода при помощи polyspacePackNGo. В различной среде разработки, при выполнении анализа Polyspace сгенерированного кода, используют файлы опций, включенные в архив кода, чтобы сохранить информацию модели специфичную, такую как технические требования области значений проекта. У вас должен быть Embedded Coder®, чтобы использовать rtwbuild (Embedded Coder).

пример

archivePath = polyspacepacknGo(mdlName,psOpt) генерирует и группирует файлы опций Polyspace, которые сгенерированы согласно спецификации в psOpt. Объект psOpt должен быть объект опций Polyspace, который сгенерирован при помощи pslinkoptions. Используя psOpt, измените опции для анализа Polyspace.

пример

archivePath = polyspacepacknGo(mdlName,psOpt,asModelRef) генерирует и группирует файлы опций Polyspace при помощи asModelRef задавать, сгенерировать ли файлы опции для кода модели - ссылки или автономного кода.

Примеры

свернуть все

Чтобы сгенерировать и группировать файлы опций Polyspace для модели Simulink, использовать polyspacePacknGo.

Откройте модель Simulink rtwdemo_counter и задайте папку для хранения сгенерированного кода.

% Open the model
mdlName = 'rtwdemo_counter';
open_system(mdlName);
% Specify a folder for generated code
codegenFolder = 'rtwdemo_counter_ert_rtw';

Чтобы позволить упаковать сгенерированный код в архиве, установите опцию PackageGeneratedCodeAndArtifacts к true. Задайте имя архива сгенерированного кода как genCodeArchive.zip.

configSet = getActiveConfigSet(mdlName);
set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true);
set_param(configSet, 'PackageName', 'genCodeArchive.zip');

Чтобы сделать модель совместимой с Polyspace, установите SystemTargetFile к etr.tlc.

set_param(configSet, 'SystemTargetFile', 'ert.tlc');

После конфигурирования модели сгенерируйте код.

if exist(fullfile(pwd,codegenFolder), 'dir') == 0
    rtwbuild(mdlName)
end

Поскольку PackageGeneratedCodeAndArtifacts установлен в true, сгенерированный код упаковывается в архив genCodeArchive.zip.

Сгенерируйте и файлы опций Polyspace пакета.

zipFile = polyspacePackNGo(mdlName);
В коде архивируют genCodeArchive.zip, файлы опций Polyspace упакованы в polyspace папка.

Чтобы задать аналитические опции Polyspace при упаковке и генерации файлов опций, использовать pslinktoptions.

Откройте модель Simulink rtwdemo_counter и сконфигурируйте модель для генерации архива кода, который совместим с Polyspace.

% Open the model
mdlName = 'rtwdemo_counter';
open_system(mdlName);
% Specify a folder for generated code
codegenFolder = 'rtwdemo_counter_ert_rtw';
configSet = getActiveConfigSet(mdlName);
% Enable packing the generated code into an archive
set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true);
% Specify a name for the code archive
set_param(configSet, 'PackageName', 'genCodeArchive.zip');
% Configure the model to be Polyspace Compatible
set_param(configSet, 'SystemTargetFile', 'ert.tlc');

После конфигурирования модели сгенерируйте код.

if exist(fullfile(pwd,codegenFolder), 'dir') == 0
    rtwbuild(mdlName)
end

Поскольку PackageGeneratedCodeAndArtifacts установлен в true, сгенерированный код упаковывается в архив genCodeArchive.zip.

Чтобы задать аналитические опции Polyspace, используйте pslinkoptions объект. Создайте этот объект при помощи функционального pslinkoptions.

psOpt = pslinkoptions(mdlName);
Объект psopt структура, где отдельные поля представляют аналитические опции Polyspace, которые можно задать.

Задайте опции Polyspace при помощи psOpt объект. Например, установите InputRangeMode к полному спектру. Для полного списка опций смотрите входной параметр psOpt.

psOpt.InputRangeMode = 'FullRange';

Сгенерируйте и файлы опций Polyspace пакета. Используйте psOpt возразите в качестве второго аргумента в polyspacePacknGo.

zipFile = polyspacePackNGo(mdlName,psOpt);
В коде архивируют genCodeArchive.zip, файлы опций Polyspace упакованы в polyspace папка. Файл optionsFile.txt содержит заданные аналитические опции Polyspace.

Чтобы ускорить симуляции модели, вызовите модели Simulink, на которые ссылаются, как цели симуляции. Чтобы сгенерировать цели симуляции модели - ссылки из модели Simulink, сгенерируйте код из модели при помощи slbuild с процессом сборки, заданным как ModelReferenceCoderTargetOnly. Затем группируйте сгенерированный код при помощи packNGo. Чтобы сгенерировать и группировать файлы опций Polyspace для анализа такого кода, используйте функцию polyspacePacknGo с дополнительным аргументом asModelRef установите на true.

Откройте модель Simulink rtwdemo_counter и сконфигурируйте модель для генерации архива кода, который совместим с Polyspace.

% Load model
mdlName = 'rtwdemo_counter';
load_system(mdlName);
configSet = getActiveConfigSet(mdlName);
% Enable packing the generated code into an archive 
set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true);
% Configure the model to be Polyspace Compatible
set_param(configSet, 'SystemTargetFile', 'ert.tlc');

После конфигурирования модели сгенерируйте цель симуляции модели - ссылки от него при помощи функции slbuild. Задайте опцию ModelReferenceCoderTargetOnly. Смотрите slbuild (Simulink).

slbuild(mdlName,'ModelReferenceCoderTargetOnly');
Код, который сгенерирован, хранится в папке slprj.

Чтобы группировать код, который сгенерирован как модель - ссылка, используйте функцию packNGo. Найдите файл buildinfo.mat в <working folder>/slprj/ert/rtwdemo_counter и используйте полный путь для него как вход к packNGo. Эта команда генерирует архив, содержащий сгенерированный код и объект buildinfo.mat. Смотрите packNGo (Embedded Coder).

% Locate buildinfo and generate code archive
buildinfo = fullfile(pwd,'slprj','ert',mdlName,'buildinfo.mat');
packNGo(buildinfo)

Чтобы задать аналитические опции Polyspace, используйте pslinkoptions объект. Создайте этот объект при помощи функционального pslinkoptions.

psOpt = pslinkoptions(mdlName);
Объект psOpt структура, где отдельные поля представляют аналитические опции Polyspace, которые можно задать.

Задайте опции Polyspace при помощи psOpt объект. Например, установите InputRangeMode к полному спектру. Для полного списка опций смотрите входной параметр psOpt

psOpt.InputRangeMode = 'FullRange';

Сгенерируйте и файлы опций Polyspace пакета. Используйте psOpt возразите в качестве второго аргумента в polyspacePacknGo. Установите третий аргумент asModelRef к true.

zipFile = polyspacePackNGo(mdlName,psOpt,true);
В коде архивируют rtwdemo_counter.zip, файлы опций Polyspace упакованы в polyspace папка.

Входные параметры

свернуть все

Символьный массив, содержащий имя модели, для которой вы хотите сгенерировать и группировать файлы опций Polyspace.

Пример: polyspacePackNGo('rtwdemo_roll')

Типы данных: char

Задает опции для анализа Polyspace при помощи a pslinkoptions объект. Можно изменить определенные аналитические опции путем изменения psOpt, который является структурой, где отдельные поля представляют аналитические опции Polyspace. Для списка заливок опций, которые можно изменить, см. таблицу Polyspace Analysis Options Supported polyspacePacknGo.

Аналитические опции Polyspace, поддержанные polyspacePacknGo

СвойствоЗначениеОписание
EnableAdditionalFileList: Позвольте дополнительному списку файлов анализироваться в виде true или false. Используйте с AdditionalFileList опция. truePolyspace проверяет дополнительные файлы, заданные в AdditionalFileList опция.
false (значение по умолчанию)Polyspace не проверяет дополнительные файлы.
AdditionalFileList: Список дополнительных файлов, которые будут анализироваться заданный как массив ячеек файлов. Чтобы добавить эти файлы в анализ, используйте EnableAdditionalFileList опция.cellArrayPolyspace рассматривает перечисленные файлы для верификации.
InputRangeMode: Указывает диапазон входных переменных.'DesignMinMax' (значение по умолчанию)Polyspace использует входной диапазон, заданный в рабочей области или блоке.
'Fullrange'Polyspace использует полнофункциональные входные параметры.
ParamRangeMode: Указывает диапазон постоянных параметров.'DesignMinmax'Polyspace использует постоянную область значений параметра, заданную в рабочей области или в блоке.
'None' (значение по умолчанию)Polyspace использует значение параметров, заданных в коде.
OutputRangeMode: Задает выходные утверждения.'DesignMinMax'Polyspace применяет утверждения к выходным параметрам при помощи области значений, заданной в блоке или рабочей области.
'None' (значение по умолчанию)Polyspace не применяет утверждения к выходным переменным.
ModelRefVerifDepth: Задайте глубину для анализа моделей, на которые ссылается текущая модель.'Current model Only' (значение по умолчанию)Polyspace анализирует только топ-модель, не анализируя модели, на которые ссылаются. Используйте эту опцию, когда вы обращаетесь к моделям, которые не должны анализироваться, такие как модели библиотеки.
'1'|'2'|'3'Polyspace анализирует модели, на которые ссылаются, до заданной глубины в ссылочной иерархии. Чтобы анализировать модели, на которые ссылается топ-модель, задайте свойство ModelRefVerifDepth как '1'. Чтобы анализировать модели, на которые ссылается первый уровень ссылок, задайте это свойство как '2'.
'All'Polyspace проверяет все модели, на которые ссылаются.
ModelRefByModelRefVerif: Задайте, хотите ли вы анализировать все модели, на которые ссылаются, вместе или индивидуально.truePolyspace анализирует топ-модель и модели, на которые ссылаются, вместе. Используйте эту опцию, чтобы проверять на интегрирование или масштабирующиеся проблемы.
false (значение по умолчанию)Polyspace анализирует топ-модель и модели, на которые ссылаются, индивидуально.
AutoStubLUT: Задает, как используются интерполяционные таблицы.true (значение по умолчанию)Polyspace блокирует интерполяционные таблицы и проверяет модель, не анализируя код интерполяционной таблицы.
falsePolyspace включает код интерполяционной таблицы в анализ.
CheckConfigBeforeAnalysis: Задает уровень проверки настройки, сделанной, прежде чем анализ Polyspace запустится.'Off'Polyspace проверяет только на ошибки. Анализ останавливается, если ошибки найдены.
'OnWarn' (значение по умолчанию)Polyspace останавливает анализ, когда ошибки найдены, и отображает сообщение, когда предупреждения найдены.
'OnHalt'Polyspace останавливает анализ, когда или ошибки или предупреждения найдены.

Пример: polyspacePackNGo('rtwdemo_roll', psOpt), где ps_opt объект опций, созданный путем вызова pslinkoptions

Индикатор для анализа модели - ссылки в виде true или false.

  • Если asModelRef false (значение по умолчанию), функция генерирует файлы опций так, чтобы Polyspace анализировал сгенерированный код как автономный код.

  • Если asModelRef true, функция генерирует файлы опций так, чтобы Polyspace анализировал сгенерированный код как код модели - ссылки.

    Примечание

    Если вы устанавливаете asModelRef к trueИспользование slbuild (Simulink), чтобы сгенерировать код.

Пример: polyspacePackNGo('rtwdemo_roll', psOpt,true)

Типы данных: логический

Выходные аргументы

свернуть все

Символьный массив, содержащий путь к сгенерированному архиву. Файлы опций расположены в polyspace папка в архиве. polyspace папка содержит эти файлы опций:

  • optionsFile.txt: текстовый файл, содержащий опции Polyspace, требуемые запускать анализ Polyspace сгенерированного кода, не теряя информацию модели специфичную, такую как спецификация области значений проекта.

  • model_drs.xml: Файл, содержащий спецификацию области значений проекта модели.

  • linkdata.xml: Файл, который соединяет сгенерированный код с компонентами модели.

Чтобы запустить анализ Polyspace сгенерированного кода в среде, которая отличается, чем среда, где код был сгенерирован из модели Simulink, используйте эти файлы.

Типы данных: char

Введенный в R2020b