exponenta event banner

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. Для параметров SlingMustBeTheSame и MustExerZeroNetBias должно быть установлено значение 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;

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

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

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

Пример: '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 значение указывает, требуется ли для соответствия замены, чтобы чистое смещение для концептуальных аргументов записей Add/Minus было равно нулю. Для ввода и вывода оператора с фиксированной точкой этот параметр должен быть установлен в 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.

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

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

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

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

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

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

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

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

Пример: '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.

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

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

  • Этот параметр должен иметь значение 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