Main Content

Model Advisor Checks for High-Integrity Systems Modeling Guidelines

You can use the Simulink® Check™ Model Advisor to check that your model or subsystem complies with the High Integrity System Model modeling guidelines. The modeling guidelines are intended to provide compliance with selected aspects of these safety standards:

  • DO-178C / DO-331

  • IEC 61508

  • IEC 62304

  • ISO 26262

  • EN 50128 (and EN 50657)

  • ISO 25119

To check compliance with the High Integrity System modeling guidelines, run the high-integrity checks from these Model Advisor folders:

  • By Task > Modeling Standards for DO-178C/DO-331 > High-Integrity Systems

  • By Task > Modeling Standards for IEC 61508 > High-Integrity Systems

  • By Task > Modeling Standards for IEC 62304 > High-Integrity Systems

  • By Task > Modeling Standards for EN 50128/EN 50657 > High-Integrity Systems

  • By Task > Modeling Standards for ISO 26262 > High-Integrity Systems

  • By Task > Modeling Standards for ISO 25119 > High-Integrity Systems

The high-integrity system modeling guidelines and their corresponding checks are summarized in this table. For the guidelines that do not have Model Advisor checks, it is not possible to automate checking of the guideline. Guidelines without a corresponding check are noted as not applicable.

Model Advisor CheckCheck IDHigh-Integrity System Modeling Guidelines
Check usage of lookup table blocks (Simulink Check)mathworks.hism.hisl_0033hisl_0033: Usage of Lookup Table blocks
Check for inconsistent vector indexing methods (Simulink Check)mathworks.hism.hisl_0021hisl_0021: Consistent vector indexing method
Check usage of variant blocks (Simulink Check)mathworks.hism.hisl_0023hisl_0023: Verification of variant blocks
Check for root Inports with missing properties (Simulink Check)mathworks.hism.hisl_0024hisl_0024: Inport interface definition
Check usage of Relational Operator blocks (Simulink Check)mathworks.hism.hisl_0017hisl_0017: Usage of blocks that compute relational operators (2)
Check relational comparisons on floating-point signals (Simulink Check)mathworks.hism.hisl_0016hisl_0016: Usage of blocks that compute relational operators
Check usage of Logical Operator blocks (Simulink Check)mathworks.hism.hisl_0018hisl_0018: Usage of Logical Operator block
Check usage of While Iterator blocks (Simulink Check)mathworks.hism.hisl_0006hisl_0006: Usage of While Iterator blocks
Check usage of For and While Iterator subsystems (Simulink Check)mathworks.hism.hisl_0007hisl_0007: Usage of For Iterator or While Iterator subsystems
Check usage of For Iterator blocks (Simulink Check)mathworks.hism.hisl_0008hisl_0008: Usage of For Iterator Blocks
Check usage of If blocks and If Action Subsystem blocks (Simulink Check)mathworks.hism.hisl_0010hisl_0010: Usage of If blocks and If Action Subsystem blocks
Check usage of Switch Case blocks and Switch Case Action Subsystem blocks (Simulink Check)mathworks.hism.hisl_0011hisl_0011: Usage of Switch Case blocks and Action Subsystem blocks
Check safety-related optimization settings for logic signals (Simulink Check)mathworks.hism.hisl_0045hisl_0045: Configuration Parameters > Math and Data Types > Implement logic signals as Boolean data (vs. double)
Check safety-related optimization settings for application lifespan (Simulink Check)mathworks.hism.hisl_0048hisl_0048: Configuration Parameters > Math and Data Types > Application lifespan (days)
Check safety-related optimization settings for data initialization (Simulink Check)mathworks.hism.hisl_0052hisl_0052: Configuration Parameters > Code Generation > Optimization > Data initialization
Check safety-related optimization settings for data type conversions (Simulink Check)mathworks.hism.hisl_0053hisl_0053: Configuration Parameters > Code Generation > Optimization > Remove code from floating-point to integer conversions that wraps out-of-range values
Check safety-related optimization settings for division arithmetic exceptions (Simulink Check)mathworks.hism.hisl_0054hisl_0054: Configuration Parameters > Code Generation > Optimization > Remove code that protects against division arithmetic exceptions
Check safety-related code generation settings for comments (Simulink Check)mathworks.hism.hisl_0038hisl_0038: Configuration Parameters > Code Generation > Comments
Check safety-related code generation interface settings (Simulink Check)mathworks.hism.hisl_0039hisl_0039: Configuration Parameters > Code Generation > Interface
Check safety-related code generation settings for code style (Simulink Check)mathworks.hism.hisl_0047hisl_0047: Configuration Parameters > Code Generation > Code Style
Check safety-related code generation identifier settings (Simulink Check)mathworks.hism.hisl_0049hisl_0049: Configuration Parameters > Code Generation > Identifiers
Check usage of Abs blocks (Simulink Check)mathworks.hism.hisl_0001hisl_0001: Usage of Abs block
Check usage of remainder and reciprocal operations (Simulink Check)mathworks.sldv.hism.hisl_0002hisl_0002: Usage of remainder and reciprocal operations
Check usage of square root operations (Simulink Check)mathworks.hism.hisl_0003hisl_0003: Usage of square root operations
Check usage of log and log10 operations (Simulink Check)mathworks.sldv.hism.hisl_0004hisl_0004: Usage of natural logarithm and base 10 logarithm operations
Check usage of Assignment blocks (Simulink Check)mathworks.hism.hisl_0029hisl_0029: Usage of Assignment blocks
Check usage of Signal Routing blocks (Simulink Check)mathworks.hism.hisl_0034hisl_0034: Usage of Signal Routing blocks
Check for root Inports with missing range definitions (Simulink Check)mathworks.hism.hisl_0025hisl_0025: Design min/max specification of input interfaces
Check for root Outports with missing range definitions (Simulink Check)mathworks.hism.hisl_0026hisl_0026: Design min/max specification of output interfaces
Check state machine type of Stateflow charts (Simulink Check)mathworks.hism.hisf_0001hisf_0001: State Machine Type
Check Stateflow charts for transition paths that cross parallel state boundaries (Simulink Check)mathworks.hism.hisf_0013hisf_0013: Usage of transition paths (crossing parallel state boundaries)
Check Stateflow charts for ordering of states and transitions (Simulink Check)mathworks.hism.hisf_0002hisf_0002: User-specified state/transition execution order
Check Stateflow debugging options (Simulink Check)mathworks.hism.hisf_0011hisf_0011: Stateflow debugging settings
Check Stateflow charts for uniquely defined data objects (Simulink Check)mathworks.hism.hisl_0061hisl_0061: Unique identifiers for clarity
Check Stateflow charts for strong data typing (Simulink Check)mathworks.hism.hisf_0015hisf_0015: Strong data typing (casting variables and parameters in expressions)
Check assignment operations in Stateflow Charts (Simulink Check)mathworks.hism.hisf_0065hisf_0065: Type cast operations in Stateflow to improve code compliance
Check Stateflow charts for unary operators (Simulink Check)mathworks.hism.hisf_0211hisf_0211: Protect against use of unary operators in Stateflow Charts to improve code compliance
Check for MATLAB Function interfaces with inherited properties (Simulink Check)mathworks.hism.himl_0002himl_0002: Strong data typing at MATLAB function boundaries
Check MATLAB Function metrics (Simulink Check)mathworks.hism.himl_0003himl_0003: Complexity of user-defined MATLAB Functions
Check MATLAB Code Analyzer messages (Simulink Check)mathworks.hism.himl_0004himl_0004: MATLAB Code Analyzer recommendations for code generation
Check safety-related model referencing settings (Simulink Check)mathworks.hism.hisl_0037hisl_0037: Configuration Parameters > Model Referencing
Check safety-related diagnostic settings for solvers (Simulink Check)mathworks.hism.hisl_0043hisl_0043: Configuration Parameters > Diagnostics > Solver
Check safety-related solver settings for simulation time (Simulink Check)mathworks.hism.hisl_0040hisl_0040: Configuration Parameters > Solver > Simulation time
Check safety-related solver settings for solver options (Simulink Check)mathworks.hism.hisl_0041hisl_0041: Configuration Parameters > Solver > Solver options
Check safety-related solver settings for tasking and sample-time (Simulink Check)mathworks.hism.hisl_0042hisl_0042: Configuration Parameters > Solver > Tasking and sample time options
Check safety-related diagnostic settings for sample time (Simulink Check)mathworks.hism.hisl_0044hisl_0044: Configuration Parameters > Diagnostics > Sample Time
Check safety-related diagnostic settings for parameters (Simulink Check)mathworks.hism.hisl_0302hisl_0302: Configuration Parameters > Diagnostics > Data Validity > Parameters
Check safety-related diagnostic settings for data used for debugging (Simulink Check)mathworks.hism.hisl_0305hisl_0305: Configuration Parameters > Diagnostics > Data Validity > Debugging
Check safety-related diagnostic settings for data store memory (Simulink Check)mathworks.hism.hisl_0013hisl_0013: Usage of data store memory
Check safety-related diagnostic settings for type conversions (Simulink Check)mathworks.hism.hisl_0309hisl_0309: Configuration Parameters > Diagnostics > Type Conversion
Check safety-related diagnostic settings for signal connectivity (Simulink Check)mathworks.hism.hisl_0306hisl_0306: Configuration Parameters > Diagnostics > Connectivity > Signals
Check safety-related diagnostic settings for bus connectivity (Simulink Check)mathworks.hism.hisl_0307hisl_0307: Configuration Parameters > Diagnostics > Connectivity > Buses
Check safety-related diagnostic settings that apply to function-call connectivity (Simulink Check)mathworks.hism.hisl_0308hisl_0308: Configuration Parameters > Diagnostics > Connectivity > Function calls
Check safety-related diagnostic settings for compatibility (Simulink Check)mathworks.hism.hisl_0301hisl_0301: Configuration Parameters > Diagnostics > Compatibility
Check safety-related diagnostic settings for model initialization (Simulink Check)mathworks.hism.hisl_0304hisl_0304: Configuration Parameters > Diagnostics > Data Validity > Model initialization
Check safety-related diagnostic settings for model referencing (Simulink Check)mathworks.hism.hisl_0310hisl_0310: Configuration Parameters > Diagnostics > Model Referencing
Check safety-related diagnostic settings for saving (Simulink Check)mathworks.hism.hisl_0036hisl_0036: Configuration Parameters > Diagnostics > Saving
Check safety-related diagnostic settings for Merge blocks (Simulink Check)mathworks.hism.hisl_0303hisl_0303: Configuration Parameters > Diagnostics > Data Validity > Merge blocks
Check safety-related diagnostic settings for Stateflow (Simulink Check)mathworks.hism.hisl_0311hisl_0311: Configuration Parameters > Diagnostics > Stateflow
Check model object names (Simulink Check)mathworks.hism.hisl_0032hisl_0032: Model element names
Check for model elements that do not link to requirements (Simulink Check)mathworks.hism.hisl_0070hisl_0070: Placement of requirement links in a model
Check for inappropriate use of transition paths (Simulink Check)mathworks.hism.hisf_0014hisf_0014: Usage of transition paths (passing through states)
Check usage of bit operation blocks (Simulink Check)mathworks.hism.hisl_0019hisl_0019: Usage of bitwise operations
Check data types for blocks with index signals (Simulink Check)mathworks.hism.hisl_0022hisl_0022: Data type selection for index signals
Check model file name (Simulink Check)mathworks.hism.hisl_0031hisl_0031: Model file names
Check if/elseif/else patterns in MATLAB Function blocks (Simulink Check)mathworks.hism.himl_0006himl_0006: MATLAB code if / elseif / else patterns
Check switch statements in MATLAB Function blocks (Simulink Check)mathworks.hism.himl_0007himl_0007: MATLAB code switch / case / otherwise patterns
Check global variables in graphical functions (Simulink Check)mathworks.hism.hisl_0062hisl_0062: Global variables in graphical functions
Check for length of user-defined object names (Simulink Check)mathworks.hism.hisl_0063hisl_0063: Length of user-defined object names to improve MISRA C:2012 compliance
Check usage of Merge blocks (Simulink Check)mathworks.hism.hisl_0015hisl_0015: Usage of Merge blocks
Check usage of standardized MATLAB function headers (Simulink Check)mathworks.hism.himl_0001himl_0001: Usage of standardized MATLAB function headers
Check usage of relational operators in MATLAB Function blocks (Simulink Check)mathworks.hism.himl_0008himl_0008: MATLAB code relational operator data types
Check usage of logical operators and functions in MATLAB Function blocks (Simulink Check)mathworks.hism.himl_0010himl_0010: MATLAB code with logical operators and functions
Check type and size of condition expressions (Simulink Check)mathworks.hism.himl_0011himl_0011: Data type and size of condition expressions
Check naming of ports in Stateflow charts (Simulink Check)mathworks.hism.hisf_0016hisf_0016: Stateflow port names
Check scoping of Stateflow data objects (Simulink Check)mathworks.hism.hisf_0017hisf_0017: Stateflow data object scoping
Check usage of Gain blocks (Simulink Check)mathworks.hism.hisl_0066hisl_0066: Usage of Gain blocks
Check for divide-by-zero calculations (Simulink Check)mathworks.hism.hisl_0067hisl_0067: Protect against divide-by-zero calculations
Check data type of loop control variables (Simulink Check)mathworks.hism.hisl_0102hisl_0102: Data type of loop control variables to improve MISRA C:2012 compliance
Check configuration parameters for MISRA C:2012 (Simulink Check)mathworks.misra.CodeGenSettingshisl_0060: Configuration parameters that improve MISRA C:2012 compliance

Check for blocks not recommended for C/C++ production code deployment (Simulink Check)

Check for blocks not recommended for MISRA C:2012 (Simulink Check)

mathworks.hism.hisl_0020

mathworks.misra.BlkSupport

hisl_0020: Blocks not recommended for MISRA C:2012 compliance

Check safety-related optimization settings for specified minimum and maximum values (Simulink Check)

mathworks.hism.hisl_0056hisl_0056: Configuration Parameters > Code Generation > Optimization > Optimize using the specified minimum and maximum values
Check usage of Reciprocal Sqrt blocks (Simulink Check)mathworks.hism.hisl_0028hisl_0028: Usage of Reciprocal Square Root blocks
Check safety-related settings for hardware implementation (Simulink Check)mathworks.hism.hisl_0071hisl_0071: Configuration Parameters > Hardware Implementation >Inconsistent hardware implementation settings
Check usage of recursions (Simulink Check)mathworks.hism.hisf_0004hisf_0004: Protect against recursive function calls to improve code compliance
Check MATLAB functions not supported for code generation (Simulink Check)mathworks.hism.himl_0012himl_0012: Usage of MATLAB functions for code generation
Metrics for generated code complexity (Simulink Check)mathworks.hism.himl_0013himl_0013: Limitation of built-in MATLAB Function complexity
Check for parameter tunability ignored for referenced models (Simulink Check)mathworks.hism.hisl_0072hisl_0072: Usage of tunable parameters for referenced models
Check usage of bit-shift operations (Simulink Check)mathworks.hism.hisl_0073hisl_0073: Usage of bit-shift operations
Check safety-related diagnostic settings for variants (Simulink Check)mathworks.hism.hisl_0074hisl_0074: Configuration Parameters > Diagnostics > Modeling issues related to variants
Check for disabled and parameterized library links (Simulink Check)mathworks.hism.hisl_0075hisl_0075: Usage of library links
Check for unreachable and dead code (Simulink Check)mathworks.hism.hisl_0101hisl_0101: Avoid operations that result in dead logic to improve code compliance
Check for root Outports with missing properties (Simulink Check)mathworks.hism.hisl_0077hisl_0077: Outport interface definition
Check usage of identical modeling patterns (Simulink Check)mathworks.hism.hisl_0078hisl_0078: Usage of identical modeling patterns
Check for invalid root input and output port connections (Simulink Check)mathworks.hism.hisl_0079hisl_0079: Connections to root input/output ports

See Also