setTflCOperationEntryParameters

Установите заданные параметры для записи оператора в заменяющей таблице кода

Описание

пример

setTflCOperationEntryParameters(hEntry,varargin) устанавливает заданные параметры для записи оператора в заменяющей таблице кода.

Примеры

свернуть все

В этом примере показано, как использовать setTflCOperationEntryParameters функционируйте, чтобы установить параметры для заменяющей записи оператора кода для uint8 сложение, которое совпадает с алгоритмом броска после суммы.

op_entry = RTW.TflCOperationEntry;
op_entry.setTflCOperationEntryParameters( ...
    'Key',                      'RTW_OP_ADD', ...
    'EntryInfoAlgorithm',       'RTW_CAST_AFTER_OP', ...
    'Priority',                 90, ...
    'SaturationMode',           'RTW_SATURATE_UNSPECIFIED', ...
    'RoundingModes',            {'RTW_ROUND_UNSPECIFIED'}, ...
    'ImplementationName',       'u8_add_u8_u8', ...
    'ImplementationHeaderFile', 'u8_add_u8_u8.h', ...
    'ImplementationSourceFile', 'u8_add_u8_u8.c');

В этом примере показано, как использовать setTflCOperationEntryParameters функционируйте, чтобы установить параметры для заменяющей записи оператора кода для фиксированной точки int16 деление. Запись таблицы задает сетевое масштабирование между входными параметрами оператора и выход, чтобы сопоставить область значений наклона и значений смещения к заменяющей операции.

op_entry = RTW.TflCOperationEntryGenerator_NetSlope;
op_entry.setTflCOperationEntryParameters( ...
    'Key',                      'RTW_OP_DIV', ...
    'Priority',                 90, ...
    'SaturationMode',           'RTW_WRAP_ON_OVERFLOW', ...
    'RoundingModes',            {'RTW_ROUND_CEILING'}, ...
    'NetSlopeAdjustmentFactor',   1.0, ...
    'NetFixedExponent',           0.0, ...
    'ImplementationName',       's16_div_s16_s16', ...
    'ImplementationHeaderFile', 's16_div_s16_s16.h', ...
    'ImplementationSourceFile', 's16_div_s16_s16.c' );

В этом примере показано, как использовать setTflCOperationEntryParameters функционируйте, чтобы установить параметры для заменяющей записи оператора кода для фиксированной точки uint16 сложение, которое совпадает с алгоритмом броска после суммы. Параметры 'SlopesMustBeTheSame' и 'MustHaveZeroNetBias' должны быть установлены на true задавать равный наклон и обнулять сетевое смещение через оператор вводят и выводить. Это сопоставляет относительный наклон и значения смещения (а не определенный наклон и комбинацию смещения) к заменяющей операции.

op_entry = RTW.TflCOperationEntryGenerator;
op_entry.setTflCOperationEntryParameters( ...
    'Key',                     'RTW_OP_ADD', ...
    'EntryInfoAlgorithm',      'RTW_CAST_AFTER_OP', ...
    'Priority',                 90, ...
    'SaturationMode',           'RTW_WRAP_ON_OVERFLOW', ...
    'RoundingModes',            {'RTW_ROUND_UNSPECIFIED'}, ...
    'SlopesMustBeTheSame',      true, ...
    'MustHaveZeroNetBias',      true, ...
    'ImplementationName',       'u16_add_SameSlopeZeroBias', ...
    'ImplementationHeaderFile', 'u16_add_SameSlopeZeroBias.h', ...
    'ImplementationSourceFile', 'u16_add_SameSlopeZeroBias.c');

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

свернуть все

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

Инстанцирование классаПоддержка

hEntry = RTW.TflCOperationEntry;

Замена оператора поддержек.

hEntry = RTW.TflCOperationEntryGenerator;

Обеспечивает параметры для сложения фиксированной точки и вычитания, которые не доступны в RTW.TflCOperationEntry (SlopesMustBeTheSame и MustHaveZeroNetBias).

hEntry = RTW.TflCOperationEntryGenerator_NetSlope;

Обеспечивает сетевые наклонные параметры для умножения фиксированной точки и деления, которые не доступны в RTW.TflCOperationEntry (NetSlopeAdjustmentFactor и NetFixedExponent).

hEntry = RTW.TflBlasEntryGenerator;

Замена поддержек нескалярных операторов с функциями MathWorks BLAS.

hEntry = RTW.TflCBlasEntryGenerator;

Замена поддержек нескалярных операторов с функциями C BLAS ANSI®/ISO®.

hEntry = MyCustomOperationEntry;

(где MyCustomOperationEntry класс, выведенный из RTW.TflCOperationEntry)

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

Если вы хотите задать SlopesMustBeTheSame или MustHaveZeroNetBias для вашей записи оператора инстанцируйте своей записи таблицы с помощью hEntry = RTW.TflCOperationEntryGenerator вместо hEntry = RTW.TflCOperationEntry. Если вы хотите использовать NetSlopeAdjustmentFactor и NetFixedExponent, инстанцируйте своей записи таблицы при помощи hEntry = RTW.TflCOperationEntryGenerator_NetSlope.

Пример: op_entry

Пример: 'Key','RTW_OP_ADD'

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Key','RTW_OP_ADD'

AcceptExprInput значение отмечает генератор кода, что функция реализации, описанная этой записью, принимает входные параметры выражения. Значением по умолчанию является true если ImplType равняется FCN_IMPL_FUNCT и false если ImplType равняется FCN_IMPL_MACRO.

Если значением является true, входные параметры выражения интегрированы в сгенерированный код в форме, похожей на эту форму:

 rtY.Out1 = myAdd(rtU.In1, rtU.In2 * rtU.In3);

Если значением является false, временная переменная сгенерирована для входа выражения:

real_T temp;

temp = rtU.In2 * rtU.In3;
rtY.Out1 = myAdd(rtU.In1, temp);

Пример: 'AcceptExprInput',true

AdditionalHeaderFiles значение задает дополнительные заголовочные файлы для заменяющей записи таблицы кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочей области MATLAB® или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'AdditionalHeaderFiles',{}

AdditionalIncludePaths значение указывает, что полный путь дополнительных включает пути для заменяющей записи кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'AdditionalIncludePaths',{}

AdditionalLinkObjs значение задает дополнительные объекты ссылки для заменяющей записи таблицы кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'AdditionalLinkObjs',{}

AdditionalLinkObjsPaths значение задает полный путь дополнительных путей к объекту ссылки для заменяющей записи кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'AdditionalLinkObjsPaths',{}

AdditionalSourceFiles значение задает дополнительные исходные файлы для заменяющей записи таблицы кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'AdditionalSourceFiles',{}

AdditionalSourcePaths значение задает полный путь дополнительных исходных путей для заменяющей записи кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'AdditionalSourcePaths',{}

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

Пример: 'AdditionalCompileFlags',{}

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

Пример: 'AdditionalLinkFlags',{}

AllowShapeAgnosticMatch значение включает заменяющее соответствие кода на основе общего количества элементов, а не определенной матричной формы для матриц, которые непрерывно выделяются в памяти. Для получения дополнительной информации смотрите, Позволяют Соответствие Агностика Формы.

Пример: 'AllowShapeAgnosticMatch', false

ArrayLayout значение задает порядок элементов массива в памяти, поддержанной заменяющей реализацией. По умолчанию, заменяющая поддержка внедрения упорядоченный по столбцам формат данных. Для ROW-MAJOR, заменяющая поддержка внедрения упорядоченный по строкам формат данных. Для COLUMN_AND_ROW, заменяющая поддержка внедрения упорядоченные по столбцам и упорядоченные по строкам форматы данных.

Пример: 'ArrayLayout','ROW_MAJOR'

EntryInfoAlgorithm значение задает алгоритм для заданной математической функции, которая должна быть соответствующей для замены оператора, чтобы произойти. Заменяющие библиотеки кода поддерживают замену на основе алгоритма для математических операций RTW_OP_ADD и RTW_OP_MINUS. Допустимые аргументы для поддерживаемых операций перечислены в таблице. Аргументы имеют то же значение для обеих операций.

АргументЗначение

RTW_CAST_BEFORE_OP

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

RTW_CAST_AFTER_OP

Вычислите идеальный результат операции входных параметров. Затем введите, бросает результат к типу выходных данных. Потеря происходит во время броска типа. Этот алгоритм ведет себя так же на язык C кроме тех случаев, когда со знаком из операндов не соответствует. Например, когда вы добавляете долгую операцию со знаком в длинный операнд без знака, стандартные правила языка C преобразуют длинный операнд со знаком в длинный операнд без знака. Результатом является значение, которое не идеально.

Пример: 'EntryInfoAlgorithm','RTW_CAST_AFTER_OP'

GenCallback задает коллбэк, который следует за генерацией кода. Если вы задаете 'RTW.copyFileToBuildDir', и если эта запись операции является соответствующей и используется, функция вызовов генератора кода RTW.copyFileToBuildDir после генерации кода. Эта функция обратного вызова копирует дополнительный заголовок, источник или объектные файлы, которые вы задали для этой записи в папку сборки.

Пример: 'GenCallback','RTW.copyFileToBuildDir'

ImplementationHeaderFile значение задает имя заголовочного файла, который объявляет функцию реализации. Вектор символов или строковый скаляр могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'ImplementationHeaderFile','s32_mul.h'

ImplementationHeaderPath значение задает полный путь к заголовочному файлу реализации. Вектор символов или строковый скаляр могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'ImplementationHeaderPath', fullfile('$MATLAB_ROOT', 'crl')

ImplementationName значение задает имя функции реализации, которая может соответствовать или отличаться от Key имя.

Пример: 'ImplementationName','s32_mul_s32_s32_sat'

ImplementationSourceFile значение задает имя исходного файла реализации. Вектор символов или строковый скаляр могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'ImplementationSourceFile','s32_mul.c'

ImplementationSourcePath значение задает полный путь к исходному файлу реализации. Вектор символов или строковый скаляр могут включать лексемы. Например, в маркерном $mytoken$, mytoken переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.

Пример: 'ImplementationSourcePath', fullfile('$MATLAB_ROOT', 'crl')

ImplType значение задает тип записи таблицы. Используйте FCN_IMPL_FUNCT для функции или FCN_IMPL_MACRO для макроса.

Пример: 'ImplType','FCN_IMPL_FUNCT'

Key значение задает ключ для оператора, чтобы заменить. Ключ должен совпадать с ключом оператора, перечисленным в Коде, который Можно Заменить из кода MATLAB или Кода, который Можно Заменить Из Моделей Simulink.

Пример: 'Key','RTW_OP_ADD'

MustHaveZeroNetBias значение задает, требует ли заменяющее соответствие, чтобы сетевое смещение для концептуальных аргументов Добавило/Минус, что записи являются нулем. Для Добавления/Минус входных параметров оператора неподвижной точки и выхода этот параметр должен быть установлен на true. Инстанцируйте записи при помощи hEntry = RTW.TflCOperationEntryGenerator вместо hEntry = RTW.TflCOperationEntry.

Для Mul/Div/MulDiv/Shift/Cast записей:

  • Генератор кода игнорирует значение этого аргумента.

  • Смещение концептуальных аргументов для Mul/Div/MulDiv/Shift/Cast записей должно быть нулем для заменяющего соответствия, чтобы произойти.

Пример: 'MustHaveZeroNetBias',true

NetSlopeAdjustmentFactor значение задает фиксированную экспоненту (E) часть сетевого наклона (F2E, например,-3.0) для фиксированной точки концептуальные аргументы, требуемые для заменяющего соответствия произойти для Mul/Div/MulDiv/Shift/Cast записей. Инстанцируйте записи при помощи hEntry = RTW.TflCOperationEntryGenerator_NetSlope вместо hEntry = RTW.TflCOperationEntry.

Для Добавляют/Минус записи:

  • Генератор кода игнорирует значение этого аргумента.

  • Наклонная часть поправочного коэффициента сетевого наклона концептуальных аргументов для Добавляет/Минус, что записи должны быть нулем для заменяющего соответствия, чтобы произойти.

Пример: 'NetFixedExponent', -3.0

NetSlopeAdjustmentFactor значение задает наклонную часть корректировки сетевого наклона (F2E, например, 1.0) для фиксированной точки концептуальные аргументы, требуемые для заменяющего соответствия произойти для Mul/Div/MulDiv/Shift/Cast записей. Инстанцируйте записи при помощи hEntry = RTW.TflCOperationEntryGenerator_NetSlope вместо hEntry = RTW.TflCOperationEntry.

Для Добавляют/Минус записи:

  • Генератор кода игнорирует значение этого аргумента.

  • Наклонная часть поправочного коэффициента сетевого наклона концептуальных аргументов для Добавляет/Минус, что записи должны быть нулем для заменяющего соответствия, чтобы произойти.

Пример: 'NetSlopeAdjustmentFactor',1.5

Priority значение задает поисковый приоритет записи операции относительно других записей того же имени операции и концептуального списка аргументов в рамках этой таблицы. Самый высокий приоритет 0, и самый низкий приоритет равняется 100. Если таблица обеспечивает две реализации для операции, реализацию с более высокими приоритетными тенями та с более низким приоритетом.

Пример: 'Priority',100

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

Пример: 'RoundingModes',{'RTW_ROUND_UNSPECIFIED'}

SaturationMode значение задает режим насыщения, поддержанный функцией реализации.

Пример: 'SaturationMode','RTW_SATURATE_UNSPECIFIED'

SideEffects значение отмечает генератор кода, чтобы не оптимизировать далеко функцию реализации, описанную этой записью. Этот параметр применяется к функциям реализации, которые возвращают void но не должны быть оптимизированы далеко, такие как a memcpy реализация или функция реализации та глобальная память доступов значения. Для тех реализация функционирует только, необходимо включать этот параметр и задать значение true.

Пример: 'SideEffects',false

SlopesMustBeTheSame значение задает, требует ли заменяющее соответствие, чтобы наклон был тем же самым для концептуальных аргументов Mul/Div/MulDiv/Shift/Cast записей. Инстанцируйте записи при помощи hEntry = RTW.TflCOperationEntryGenerator вместо hEntry = RTW.TflCOperationEntry.

Для Добавляют/Минус записи:

  • Генератор кода игнорирует значение этого аргумента.

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

Пример: 'SlopesMustBeTheSame',true

StoreFcnReturnInLocalVar значение отмечает генератор кода, что возвращаемое значение функции реализации, описанной этой записью, должно храниться в локальной переменной независимо от других настроек сворачивания выражения. Если значением является false, другие настройки сворачивания выражения определяют, свернуто ли возвращаемое значение. Хранение функции возвращается в локальной переменной, может увеличить ясность сгенерированного кода. Этот пример показывает код, сгенерированный со сворачиванием выражения:

void sw_step(void)
{
    if (ssub(sadd(sw_U.In1, sw_U.In2), sw_U.In3) <= 
        smul(ssub(sw_U.In4, sw_U.In5),sw_U.In6)) {  
      sw_Y.Out1 = sw_U.In7;  
    } else {
       sw_Y.Out1 = sw_U.In8;  
    }
}

С StoreFcnReturnInLocalVar установите на true, сгенерированный код потенциально легче изучить и отладить:

void sw_step(void)
{  
    real32_T rtb_Switch;  
    real32_T hoistedExpr;
    ......  
    rtb_Switch = sadd(sw_U.In1, sw_U.In2);
    rtb_Switch = ssub(rtb_Switch, sw_U.In3);
    hoistedExpr = ssub(sw_U.In4, sw_U.In5); 
    hoistedExpr = smul(hoistedExpr, sw_U.In6);  
    if (rtb_Switch <= hoistedExpr) {
       sw_Y.Out1 = sw_U.In7;  
    } else { 
       sw_Y.Out1 = sw_U.In8;  
    }
}

Пример: 'StoreFcnReturnInLocalVar',false

Представленный в R2007b