setTflCOperationEntryParameters

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

Описание

пример

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

Примеры

свернуть все

В этом примере показано, как использовать setTflCOperationEntryParameters функция для установки параметров для записи оператора замены кода для uint8 сложение, которое соответствует алгоритму cast-after-sum.

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 с фиксированной точкой сложение, которое соответствует алгоритму cast-after-sum. Параметры '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');

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

свернуть все

The 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;

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

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'

The 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RTW_CAST_BEFORE_OP

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

RTW_CAST_AFTER_OP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для записей Add/Minus:

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

  • Часть коэффициента корректировки уклона сети концептуальных аргументов для записей Add/Minus должна быть нулем, чтобы произошло совпадение замены.

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

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

Для записей Add/Minus:

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

  • Часть коэффициента корректировки уклона сети концептуальных аргументов для записей Add/Minus должна быть нулем, чтобы произошло совпадение замены.

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

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

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

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

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

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

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

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

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

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

Для записей Add/Minus:

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

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

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

The 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