slcoverage. Класс SFcnSelector

Пакет: 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, function, expression и аргументами index.

  • slcoverage.SFcnSelectorType.SFcnInstanceCppDecision выбирает результат решения заданного. Используйте с file, function, expression и аргументами 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

Для просмотра документации необходимо авторизоваться на сайте