slcoverage.SFcnSelector class

Пакет: slcoverage

Выберите критерий S-function фильтрации правила

Описание

Задайте критерии выбора S-функции для правила фильтра.

Конструкция

sel = slcoverage.SFcnSelector(type,element) задает тип селектора, чтобы использовать в выбранном элементе модели.

sel = slcoverage.SFcnSelector(type,element,file) создает селектор на основе заданного C или файла C++.

sel = slcoverage.SFcnSelector(type,element,file,function) создает селектор на основе заданного C или функции C++ в заданном файле.

sel = slcoverage.SFcnSelector(type,element,file,function, expression,index) создает селектор на основе заданного индекса заданного выражения решения.

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

развернуть все

Тип S-функции, чтобы выбрать в виде одного из этих значений:

  • slcoverage.SFcnSelectorType.SFcnName выбирает заданную S-функцию.

  • slcoverage.SFcnSelectorType.SFcnInstanceCppFileName выбирает данные о покрытии в файле сгенерированного кода для этого блока. Используйте с file аргумент.

  • slcoverage.SFcnSelectorType.SFcnInstanceCppFunction выбирает экземпляр функции C++ или C. Используйте с file и function аргументы.

  • slcoverage.SFcnSelectorType.SFcnInstanceCppCondition выбирает результат условия заданного кода. Используйте с fileфункцияВыражение, и index аргументы.

  • slcoverage.SFcnSelectorType.SFcnInstanceCppDecision выбирает результат решения заданного. Используйте с fileфункцияВыражение, и index аргументы.

Элемент модели, чтобы выбрать в виде имени свойства элемента, его указателя или его идентификатора Simulink®. Используйте указатель или ID для селекторных типов, которые выбирают экземпляр. Используйте имя свойства, такое как значение 'BlockType' блока свойство, чтобы выбрать элементы многоуровневой модели.

Пример: 'sldemo_lct_bus:18', 'RelationalOperator'

C или файл C++, чтобы выбрать в виде вектора символов или строки.

Пример: 'myfile.c'

C или C++ функционируют, чтобы выбрать в виде вектора символов или строки.

Пример: 'counterbusFcn'

Выражение решения, чтобы выбрать в виде вектора символов или строки.

Пример: 'inputGElower'

Матричное положение выражения, чтобы выбрать в виде целого числа.

Пример 2

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

развернуть все

Селекторный объект, возвращенный как slcoverage.SFcnSelector объект или массив slcoverage.SFcnSelector объекты.

Свойства

развернуть все

Это свойство доступно только для чтения.

Код, используемый, чтобы создать этот селекторный объект, возвратился как вектор символов.

Это свойство доступно только для чтения.

Описание селектора, возвращенного как вектор символов. Simulink Coverage™ создает описание на основе селектора.

Это свойство доступно только для чтения.

Выражение решения для этого селектора, возвращенного как вектор символов.

Это свойство доступно только для чтения.

C или файл C++ для селектора, возвращенного как вектор символов или строка.

Это свойство доступно только для чтения.

C или имя функции C++ для этого селектора, возвращенного как вектор символов.

Это свойство доступно только для чтения.

Идентификатор элемента модели, возвращенного как вектор символов ID Simulink, свойства элемента модели или указателя. Это свойство пусто для slcoverage.CodeSelector класс.

Селекторный тип, возвращенный как один из них slcoverage.SFcnSelectorType значения:

  • SFcnName

  • SFcnInstanceCppFileName

  • SFcnInstanceCppFunction

  • SFcnInstanceCppCondition

  • SFcnInstanceCppDecision

Методы

allSelectorsСелекторы для элемента модели или кода

Копировать семантику

Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Открытый и настроенный модель для покрытия кода S-функции.

modelName = 'sldemo_lct_bus';
open_system(modelName);
set_param(modelName,'CovMetricSettings','dcme','RecordCoverage','on','CovSFcnEnable','on');

def = legacy_code('initialize');
def.SFunctionName = 'sldemo_sfun_counterbus';
def.OutputFcnSpec = 'void counterbusFcn(COUNTERBUS u1[1],int32 u2,COUNTERBUS y1[1],int32 y2[1])';
def.HeaderFiles   = {'counterbus.h'};
def.SourceFiles   = {'counterbus.c'};
def.IncPaths      = {'sldemo_lct_src'};
def.SrcPaths      = {'sldemo_lct_src'};
def.Options.supportCoverageAndDesignVerifier = true;

legacy_code('generate_for_sim',def);

Получите селекторы S-функции от блока sldemo_sfun_counterbus. Исследуйте значение свойства конструктора кода на все селекторы.

sel = slcoverage.SFcnSelector.allSelectors('sldemo_lct_bus/TestCounter/sldemo_sfun_counterbus');
sel.ConstructorCode
ans =

    'slcoverage.SFcnSelector(slcoverage.SFcnSelectorType.SFcnName,'sldemo_sfun_counterbus')'


ans =

    'slcoverage.SFcnSelector(slcoverage.SFcnSelectorType.SFcnInstanceCppFileName,'sldemo_lct_bus:15',
'counterbus.c')'


ans =

    'slcoverage.SFcnSelector(slcoverage.SFcnSelectorType.SFcnInstanceCppFunction,'sldemo_lct_bus:15',
'counterbus.c','counterbusFcn')'


ans =

    'slcoverage.SFcnSelector(slcoverage.SFcnSelectorType.SFcnInstanceCppDecision,'sldemo_lct_bus:15',
'counterbus.c','counterbusFcn','(u1->limits.upper_saturation_limit >= limit) && inputGElower', 1)'


ans =

    'slcoverage.SFcnSelector(slcoverage.SFcnSelectorType.SFcnInstanceCppDecision,'sldemo_lct_bus:15',
'counterbus.c','counterbusFcn','inputGElower',2)'


ans =

    'slcoverage.SFcnSelector(slcoverage.SFcnSelectorType.SFcnInstanceCppCondition,'sldemo_lct_bus:15',
'counterbus.c','counterbusFcn','limit >= u1->limits.lower_saturation_limit',1)'

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

filt = slcoverage.Filter;
rule = slcoverage.FilterRule(sel(6),'OK to exclude',slcoverage.FilterMode.Exclude);
filt.addRule(rule);

Сохраните фильтр как sffilter. Симулируйте модель для покрытия кода. Добавьте файл фильтра как значение к filter свойство получившегося cvdata объект. Затем сгенерируйте отчет покрытия.

filt.save('sffilter');
csim = cvsim(modelName);
csim.filter = 'sffilter';
cvhtml('cov',csim);

Рассмотрите отчет. Нажмите sldemo_sfun_counterbus соедините и найдите, что фильтр постановляет, что вы добавили под Objects Filtered from Coverage Analysis.

Введенный в R2017b