Main Content

Model Checks for MAB and JMAAB Compliance

You can use the Model Advisor to verify that your model or subsystem complies with the MathWorks® Advisory Board (MAB) and Japan MATLAB® Automotive Advisory Board modeling (JMAAB) guidelines.

Accessing the MAB and JMAAB Model Advisor Checks

To open the Model Advisor, in the Simulink® editor, click the Modeling tab and select Model Advisor. A System Selector ― Model Advisor dialog box opens. Select the model or system that you want to review and click OK.

The MAB checks are available from these Model Advisor folders:

  • By Product > Simulink Check > Modeling Standards > MAB Checks

  • By Task > Modeling Standards for MAB

The JMAAB checks are available from these Model Advisor folders:

  • By Product > Simulink Check > Modeling Standards > JMAAB Checks

  • By Task > Modeling Standards for JMAAB

For information on using the Model Advisor, see Run Model Advisor Checks and Review Results.

Modeling Guidelines and Model Advisor Checks for MAB and JMAAB

This table identifies MathWorks Advisor Board (MAB) guidelines, the corresponding Japan MathWorks Automotive Advisor Board (JMAAB) guidelines, and Model Advisor check that you can use to verify compliance with these guidelines. Additional information in the tables includes:

  • MAB Modeling Guideline — Links to the MathWorks Advisory Board (MAB) guideline.

  • Corresponding JMAAB Modeling Guideline — Identifies the JMAAB modelling guideline that corresponds to the MAB guideline. To review the guideline, see Control Algorithm Modeling Guidelines Using MATLAB, Simulink, and Stateflow on the MathWorks website.

  • Model Advisor Check — Provides links to the Model Advisor check that is used to verify compliance to the modeling guideline.

    When applicable, this column clarifies why a guideline does not have a corresponding check:

    • No check — Indicates that the guideline can be checked by using a Model Advisor check, however, the check does not currently exist.

    • Not checkable — Indicates that it is not possible to verify compliance to this guideline by using a Model Advisor check.

MAB Modeling Guideline

(Version 5.0)

Corresponding JMAAB Modeling Guideline

(Version 5.1)

Model Advisor Check

ar_0001: Usable characters for file names

ar_0001Check file names
ar_0002: Usable characters for folder names

ar_0002

Check folder names
jc_0241: Length restriction for model file names

jc_0241

Check length of model file name
jc_0242: Length restriction for folder names

jc_0242

Check length of folder name at every level of model path
jc_0201: Usable characters for subsystem names

jc_0201

Check Subsystem names
jc_0231: Usable characters for block names

jc_0231

Check character usage in block names
jc_0211: Usable characters for Inport blocks and Outport block

jc_0211

Check port block names
jc_0243: Length restriction for subsystem names

jc_0243

Check length of subsystem names
jc_0247: Length restriction for block names

jc_0247

Check length of block names
jc_0244: Length restriction for Inport and Outport names

jc_0244

Check length of Inport and Outport names
jc_0222: Usable characters for signal and bus names

jc_0222

Check usable characters for signal names and bus names
jc_0232: Usable characters for parameter names

jc_0232

Check usable characters for parameter names
jc_0245: Length restriction for signal and bus names

jc_0245

Check length of signal and bus names
jc_0246: Length restriction for parameter name

jc_0246

Check length of parameter names
jc_0795: Usable characters for Stateflow data names

jc_0795

Check usable characters for Stateflow data names
jc_0796: Length restriction for Stateflow data names

jc_0796

Check length of Stateflow data name
jc_0791: Duplicate data name definitions

jc_0791

Check duplication of Simulink data names
jc_0792: Unused Data

jc_0792

Check unused data in Simulink Model
jc_0700: Unused data in Stateflow block

jc_0700

Check for unused data in Stateflow Charts
na_0019: Restricted variable namesNo corresponding JMAAB guidelineCheck usage of restricted variable names
jc_0011: Optimization parameters for Boolean data types

jc_0011

Check Implement logic signals as Boolean data (vs. double)
jc_0642: Integer rounding mode setting

jc_0642

Check Signed Integer Division Rounding mode
jc_0806: Detecting incorrect calculation results

jc_0806

Check diagnostic settings for incorrect calculation results

jc_0021: Model diagnostic settings

No corresponding JMAAB guidelineCheck model diagnostic parameters

na_0004: Simulink model appearance settings

na_0004

Check for Simulink diagrams using nonstandard display attributes
db_0043: Model font and font size

db_0043

Check Model font settings
jm_0002: Block resizingjm_0002No check
db_0142: Position of block names

db_0142

Check whether block names appear below blocks
jc_0061: Display of block names

jc_0061

Check the display attributes of block names

db_0140: Display of block parameters

db_0140

Check for nondefault block attributes
jc_0603: Model description

jc_0603

Check Model Description
jc_0604: Using block shadow

jc_0604

Check if blocks are shaded in the model
db_0081: Unconnected signals and blocks

db_0081

Check for unconnected signal lines and blocks
db_0032: Signal line connections

db_0032

Check signal line connections
db_0141: Signal flow in Simulink models

db_0141

Check signal flow in model Check position of signal labels
jc_0110: Direction of block

jc_0110

Check block orientation
jc_0171: Clarification of connections between structural subsystems

jc_0171

Check connections between structural subsystems
jc_0602: Consistency in model element names

jc_0602

Check for consistency in model element names
jc_0281: Trigger signal names

jc_0281

Check trigger signal names
db_0143: Usable block types in model hierarchy

db_0143

Check for mixing basic blocks and subsystems
db_0144: Use of subsystems

db_0144

Not checkable
jc_0653: Delay block layout in feedback loopsjc_0653Check for avoiding algebraic loops between subsystems

hd_0001: Prohibited Simulink sinks

No corresponding JMAAB guidelineCheck for prohibited sink blocks
na_0010: Usage of vector and bus signals

na_0010

Check usage of vector and bus signals
jc_0008: Definition of signal names

jc_0008

Check signal line labels
jc_0009: Signal name propagation

jc_0009

Check for propagated signal labels
db_0097: Position of labels for signals and buses

db_0097

Check signal flow in model Check position of signal labels

na_0008: Display of labels on signals

No corresponding JMAAB guidelineCheck signal line labels

na_0009: Entry versus propagation of signal labels

No corresponding JMAAB guidelineCheck for propagated signal labels
db_0110: Block parameters

db_0110

Check usage of tunable parameters in blocks
db_0112: Usage of index

db_0112

Check Indexing Mode
jc_0645: Parameter definition for calibration

jc_0645

Check if tunable block parameters are defined as named constants
jc_0641: Sample time setting

jc_0641

Check for sample time setting
jc_0643: Fixed-point setting

jc_0643

Check usage of fixed-point data type with non-zero bias
jc_0644: Type setting

jc_0644

Check type setting by data objects
db_0146: Block layout in conditional subsystems

db_0146

Check position of conditional blocks and iterator blocks
jc_0640: Initial value settings for Outport blocks in conditional subsystems

jc_0640

Check undefined initial output for conditional subsystems
jc_0659: Usage restrictions of signal lines input to Merge blocks

jc_0659

Check usage of Merge block
na_0003: Usage of If blocks

na_0003

Check logical expressions in If blocks
jc_0656: Usage of Conditional Control blocks

jc_0656

Check default/else case in Switch Case blocks and If blocks
jc_0657: Retention of output value based on conditional control flow blocks and Merge blocks

jc_0657

Not checkable
na_0002: Appropriate usage of basic logical and numerical operations

na_0002

Check fundamental logical and numerical operations
jc_0121: Usage of add and subtraction blocks

jc_0121

Check usage of Sum blocks
jc_0610: Operator order for multiplication and division block

jc_0610

Check operator order of Product blocks
jc_0611: Input sign for multiplication and division blocks

jc_0611

Check signs of input signals in product blocks
jc_0794: Division in Simulink

jc_0794

No check
jc_0805: Numerical operation block inputs

jc_0805

No check
jc_0622: Usage of Fcn blocks

jc_0622

Check for parentheses in Fcn block expressions
jc_0621: Usage of Logical Operator blocks

jc_0621

Check icon shape of Logical Operator blocks
jc_0131: Usage of Relational Operator blocks

jc_0131

Check usage of Relational Operator blocks
jc_0800: Comparing floating-point types in Simulink

jc_0800

Comparing floating point types in Simulink
jc_0626: Usage of Lookup Table blocks

jc_0626

Check usage of Lookup Tables
jc_0623: Usage of continuous-time Delay blocks and discrete-time Delay blocks

jc_0623

Check usage of Memory and Unit Delay blocks
jc_0624: Usage of Tapped Delay blocks/Delay blocks

jc_0624

Check for cascaded Unit Delay blocks
jc_0627: Usage of Discrete-Time Integrator blocks

jc_0627

Check usage of Discrete-Time Integrator block
jc_0628: Usage of Saturation blocks

jc_0628

Check usage of the Saturation blocks
jc_0651: Implementing a type conversion

jc_0651

Check output data type of operation blocks
db_0042: Usage of Inport and Outport blocks

db_0042

Check position of Inport and Outport blocks
jc_0081: Inport and Outport block icon display

jc_0081

Check display for port blocks
na_0011: Scope of Goto and From blocks

na_0011

Check scope of From and Goto blocks
jc_0161: Definition of Data Store Memory blocks

jc_0161

Check for usage of Data Store Memory blocks
jc_0141: Usage of the Switch blocks

jc_0141

Check usage of Switch blocks
jc_0650: Block input/output data type with switching function

jc_0650

Check input and output datatype for Switch blocks
jc_0630: Usage of Multiport Switch blocks

jc_0630

Check settings for data ports in Multiport Switch blocks
na_0020: Number of inputs to variant subsystems

na_0020

Check for missing ports in Variant Subsystems
na_0036: Default variantna_0036Check use of default variants
na_0037: Use of single variable for variant condition

na_0037

Check use of single variable variant conditionals
db_0122: Stateflow and Simulink interface signals and parameters

db_0122

Check for Strong Data Typing with Simulink I/O

db_0123: Stateflow port names

No corresponding JMAAB guidelineCheck for names of Stateflow ports and associated signals
db_0125: Stateflow local data

db_0125

Check definition of Stateflow data
db_0126: Defining Stateflow events

db_0126

Check definition of Stateflow events
jc_0701: Usable number for first indexjc_0701Check usable number for first index
jc_0712: Execution timing for default transition path

jc_0712

Check execution timing for default transition path
jc_0722: Local data definition in parallel states

jc_0722

Check scope of data in parallel states
jc_0797: Unconnected transitions / states / connective junctions

jc_0797

Check for unconnected objects in Stateflow Charts
db_0137: States in state machines

db_0137

Check for state in state machines
jc_0721: Usage of parallel states

jc_0721

Check usage of parallel states
db_0129: Stateflow transition appearance

db_0129

Check for Stateflow transition appearance
jc_0531: Default transition

jc_0531

Check default transition placement in Stateflow charts
jc_0723: Prohibited direct transition from external state to child state

jc_0723

Check usage of transitions to external states
jc_0751: Backtracking prevention in state transition

jc_0751

Check for unexpected backtracking in state transitions
jc_0760: Starting point of internal transition

jc_0760

Check starting point of internal transition in Stateflow
jc_0763: Usage of multiple internal transitions

jc_0763

Check usage of internal transitions in Stateflow states
jc_0762: Prohibition of state action and flow chart combination

jc_0762

Check prohibited combination of state action and flow chart
db_0132: Transitions in flow charts

db_0132

Check transitions in Stateflow Flow charts
jc_0773: Unconditional transition of a flow chart

jc_0773

Check usage of unconditional transitions in flow charts
jc_0775: Terminating junctions in flow charts

jc_0775

Check terminal junctions in Stateflow
jc_0738: Usage of Stateflow comments

jc_0738

Check usage of Stateflow comments
jc_0790: Action language of Chart block

jc_0790

Check Stateflow chart action language
jc_0702: Use of named Stateflow parameters and constants

jc_0702

Check usage of numeric literals in Stateflow
jm_0011: Pointers in Stateflow

jm_0011

Check for pointers in Stateflow charts
jc_0491: Reuse of Stateflow data

jc_0491

Not checkable
jm_0012: Usage restrictions of events and broadcasting events

jm_0012

Check for usage of events and broadcasting events in Stateflow charts
jc_0733: Order of state action types

jc_0733

Check order of state action types
jc_0734: Number of state action types

jc_0734

Check repetition of Action types
jc_0740: Limitation on use of exit state action

jc_0740

Check if state action type 'exit' is used in the model
jc_0741: Timing to update data used in state chart transition conditions

jc_0741

Check updates to variables used in state transition conditions
jc_0772: Execution order and transition conditions of transition lines

jc_0772

Check usage of transition conditions in Stateflow transitions
jc_0753: Condition actions and transition actions in Stateflow

jc_0753

Check condition actions and transition actions in Stateflow
jc_0711: Division in Stateflow

jc_0711

Not checkable
db_0127: Limitation on MATLAB commands in Stateflow blocks

db_0127

Check for MATLAB expressions in Stateflow charts
jc_0481: Use of hard equality comparisons for floating point numbers in Stateflow

jc_0481

Check usage of floating-point expressions in Stateflow charts
na_0001: Standard usage of Stateflow operators

na_0001

Check Stateflow operators
jc_0655: Prohibition of logical value comparison in Stateflow

jc_0655

Check prohibited comparison operation of logical type signals
jc_0451: Use of unary minus on unsigned integers

jc_0451

Check usage of unary minus operations in Stateflow charts
jc_0802: Prohibited use of implicit type casting in Stateflow

jc_0802

Check for implicit type casting in Stateflow
jc_0803: Passing values to library functions

jc_0803

Not checkable
jc_0732: Distinction between state names, data names, and event names

jc_0732

Check uniqueness of Stateflow State and Data names
jc_0730: Unique state name in Stateflow blocks

jc_0730

Check uniqueness of State names
jc_0731: State name format

jc_0731

Check usage of State names
jc_0501: Format of entries in a State block

jc_0501

Check entry formatting in State blocks in Stateflow charts
jc_0736: Uniform indentations in Stateflow blocks

jc_0736

Check indentation of code in Stateflow states
jc_0739: Describing text inside states

jc_0739

Check for usage of text inside states
jc_0770: Position of transition label

jc_0770

Check placement of Label String in Transitions
jc_0771: Comment position in transition labels

jc_0771

Check position of comments in transition labels
jc_0752: Condition action in transition label

jc_0752

Check usage of parentheses in Stateflow transitions
jc_0774: Comments for through transition

jc_0774

Check for comments in unconditional transitions
jc_0511: Return values from a graphical function

jc_0511

Check return value assignments in Stateflow graphical functions
jc_0804: Prohibited use of recursive calls with graphical functions

jc_0804

No check
na_0042: Usage of Simulink functions

na_0042

Check usage of Simulink function in Stateflow
na_0039: Limitation on Simulink functions in Chart blocks

na_0039

Check use of Simulink in Stateflow charts

na_0018: Number of nested if/else and case statement

No corresponding JMAAB guidelineCheck MATLAB Function metrics

na_0025: MATLAB Function header

No corresponding JMAAB guidelineNo check
na_0024: Shared data in MATLAB functions

na_0024

Check MATLAB code for global variables
na_0031: Definition of default enumerated value

na_0031

Check usage of enumerated values
na_0034: MATLAB Function block input/output settings

na_0034

Check input and output settings of MATLAB Functions

na_0016: Source lines of MATLAB Functions

No corresponding JMAAB guidelineCheck MATLAB Function metrics

na_0017: Number of called function levels

No corresponding JMAAB guidelineCheck the number of function calls in MATLAB Function blocks
na_0021: Strings in MATLAB functions

na_0021

Check usage of character vector inside MATLAB Function block

na_0022: Recommended patterns for Switch/Case statements

No corresponding JMAAB guidelineCheck usage of recommended patterns for Switch/Case statements
jc_0801: Prohibited use of the /* and */ comment symbols

jc_0801

Check for use of C-style comment symbols

See Also