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 но не должны быть оптимизированы далеко, такие как 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