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 blocksmathworks.hism.hisl_0033hisl_0033: Usage of Lookup Table blocks
Check for inconsistent vector indexing methodsmathworks.hism.hisl_0021hisl_0021: Consistent vector indexing method
Check usage of variant blocksmathworks.hism.hisl_0023hisl_0023: Verification of variant blocks
Check for root Inports with missing propertiesmathworks.hism.hisl_0024hisl_0024: Inport interface definition
Check usage of Relational Operator blocksmathworks.hism.hisl_0017hisl_0017: Usage of blocks that compute relational operators (2)
Check relational comparisons on floating-point signalsmathworks.hism.hisl_0016hisl_0016: Usage of blocks that compute relational operators
Check usage of Logical Operator blocksmathworks.hism.hisl_0018hisl_0018: Usage of Logical Operator block
Check usage of While Iterator blocksmathworks.hism.hisl_0006hisl_0006: Usage of While Iterator blocks
Check usage of For and While Iterator subsystemsmathworks.hism.hisl_0007hisl_0007: Usage of For Iterator or While Iterator subsystems
Check usage of For Iterator blocksmathworks.hism.hisl_0008hisl_0008: Usage of For Iterator Blocks
Check usage of If blocks and If Action Subsystem blocksmathworks.hism.hisl_0010hisl_0010: Usage of If blocks and If Action Subsystem blocks
Check usage of Switch Case blocks and Switch Case Action Subsystem blocksmathworks.hism.hisl_0011hisl_0011: Usage of Switch Case blocks and Action Subsystem blocks
Check safety-related optimization settings for logic signalsmathworks.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 lifespanmathworks.hism.hisl_0048hisl_0048: Configuration Parameters > Math and Data Types > Application lifespan (days)
Check safety-related optimization settings for data initializationmathworks.hism.hisl_0052hisl_0052: Configuration Parameters > Code Generation > Optimization > Data initialization
Check safety-related optimization settings for data type conversionsmathworks.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 exceptionsmathworks.hism.hisl_0054hisl_0054: Configuration Parameters > Code Generation > Optimization > Remove code that protects against division arithmetic exceptions
Check safety-related code generation settings for commentsmathworks.hism.hisl_0038hisl_0038: Configuration Parameters > Code Generation > Comments
Check safety-related code generation interface settingsmathworks.hism.hisl_0039hisl_0039: Configuration Parameters > Code Generation > Interface
Check safety-related code generation settings for code stylemathworks.hism.hisl_0047hisl_0047: Configuration Parameters > Code Generation > Code Style
Check safety-related code generation identifier settingsmathworks.hism.hisl_0049hisl_0049: Configuration Parameters > Code Generation > Identifiers
Check usage of Abs blocksmathworks.hism.hisl_0001hisl_0001: Usage of Abs block
Check usage of remainder and reciprocal operationsmathworks.sldv.hism.hisl_0002hisl_0002: Usage of remainder and reciprocal operations
Check usage of square root operationsmathworks.hism.hisl_0003hisl_0003: Usage of square root operations
Check usage of log and log10 operationsmathworks.sldv.hism.hisl_0004hisl_0004: Usage of natural logarithm and base 10 logarithm operations
Check usage of Assignment blocksmathworks.hism.hisl_0029hisl_0029: Usage of Assignment blocks
Check usage of Signal Routing blocksmathworks.hism.hisl_0034hisl_0034: Usage of Signal Routing blocks
Check for root Inports with missing range definitionsmathworks.hism.hisl_0025hisl_0025: Design min/max specification of input interfaces
Check for root Outports with missing range definitionsmathworks.hism.hisl_0026hisl_0026: Design min/max specification of output interfaces
Check state machine type of Stateflow chartsmathworks.hism.hisf_0001hisf_0001: State Machine Type
Check Stateflow charts for transition paths that cross parallel state boundariesmathworks.hism.hisf_0013hisf_0013: Usage of transition paths (crossing parallel state boundaries)
Check Stateflow debugging optionsmathworks.hism.hisf_0011hisf_0011: Stateflow debugging settings
Check Stateflow charts for uniquely defined data objectsmathworks.hism.hisl_0061hisl_0061: Unique identifiers for clarity
Check Stateflow charts for strong data typingmathworks.hism.hisf_0015hisf_0015: Strong data typing (casting variables and parameters in expressions)
Check assignment operations in Stateflow Chartsmathworks.hism.hisf_0065hisf_0065: Type cast operations in Stateflow to improve code compliance
Check Stateflow charts for unary operatorsmathworks.hism.hisf_0211hisf_0211: Protect against use of unary operators in Stateflow Charts to improve code compliance
Check for MATLAB Function interfaces with inherited propertiesmathworks.hism.himl_0002himl_0002: Strong data typing at MATLAB function boundaries
Check MATLAB Function metricsmathworks.hism.himl_0003himl_0003: Complexity of user-defined MATLAB Functions
Check MATLAB Code Analyzer messagesmathworks.hism.himl_0004himl_0004: MATLAB Code Analyzer recommendations for code generation
Check safety-related model referencing settingsmathworks.hism.hisl_0037hisl_0037: Configuration Parameters > Model Referencing
Check safety-related diagnostic settings for solversmathworks.hism.hisl_0043hisl_0043: Configuration Parameters > Diagnostics > Solver
Check safety-related solver settings for simulation timemathworks.hism.hisl_0040hisl_0040: Configuration Parameters > Solver > Simulation time
Check safety-related solver settings for solver optionsmathworks.hism.hisl_0041hisl_0041: Configuration Parameters > Solver > Solver options
Check safety-related solver settings for tasking and sample-timemathworks.hism.hisl_0042hisl_0042: Configuration Parameters > Solver > Tasking and sample time options
Check safety-related diagnostic settings for sample timemathworks.hism.hisl_0044hisl_0044: Configuration Parameters > Diagnostics > Sample Time
Check safety-related diagnostic settings for parametersmathworks.hism.hisl_0302hisl_0302: Configuration Parameters > Diagnostics > Data Validity > Parameters
Check safety-related diagnostic settings for data used for debuggingmathworks.hism.hisl_0305hisl_0305: Configuration Parameters > Diagnostics > Data Validity > Debugging
Check safety-related diagnostic settings for data store memorymathworks.hism.hisl_0013hisl_0013: Usage of data store memory
Check safety-related diagnostic settings for type conversionsmathworks.hism.hisl_0309hisl_0309: Configuration Parameters > Diagnostics > Type Conversion
Check safety-related diagnostic settings for signal connectivitymathworks.hism.hisl_0306hisl_0306: Configuration Parameters > Diagnostics > Connectivity > Signals
Check safety-related diagnostic settings for bus connectivitymathworks.hism.hisl_0307hisl_0307: Configuration Parameters > Diagnostics > Connectivity > Buses
Check safety-related diagnostic settings that apply to function-call connectivitymathworks.hism.hisl_0308hisl_0308: Configuration Parameters > Diagnostics > Connectivity > Function calls
Check safety-related diagnostic settings for compatibilitymathworks.hism.hisl_0301hisl_0301: Configuration Parameters > Diagnostics > Compatibility
Check safety-related diagnostic settings for model initializationmathworks.hism.hisl_0304hisl_0304: Configuration Parameters > Diagnostics > Data Validity > Model initialization
Check safety-related diagnostic settings for model referencingmathworks.hism.hisl_0310hisl_0310: Configuration Parameters > Diagnostics > Model Referencing
Check safety-related diagnostic settings for savingmathworks.hism.hisl_0036hisl_0036: Configuration Parameters > Diagnostics > Saving
Check safety-related diagnostic settings for Merge blocksmathworks.hism.hisl_0303hisl_0303: Configuration Parameters > Diagnostics > Data Validity > Merge blocks
Check safety-related diagnostic settings for Stateflowmathworks.hism.hisl_0311hisl_0311: Configuration Parameters > Diagnostics > Stateflow
Check model object namesmathworks.hism.hisl_0032hisl_0032: Model element names
Check for model elements that do not link to requirementsmathworks.hism.hisl_0070hisl_0070: Placement of requirement links in a model
Check for inappropriate use of transition pathsmathworks.hism.hisf_0014hisf_0014: Usage of transition paths (passing through states)
Check usage of bit operation blocksmathworks.hism.hisl_0019hisl_0019: Usage of bitwise operations
Check data types for blocks with index signalsmathworks.hism.hisl_0022hisl_0022: Data type selection for index signals
Check model file namemathworks.hism.hisl_0031hisl_0031: Model file names
Check if/elseif/else patterns in MATLAB Function blocksmathworks.hism.himl_0006himl_0006: MATLAB code if / elseif / else patterns
Check switch statements in MATLAB Function blocksmathworks.hism.himl_0007himl_0007: MATLAB code switch / case / otherwise patterns
Check global variables in graphical functionsmathworks.hism.hisl_0062hisl_0062: Global variables in graphical functions
Check for length of user-defined object namesmathworks.hism.hisl_0063hisl_0063: Length of user-defined object names to improve MISRA C:2012 compliance
Check usage of Merge blocksmathworks.hism.hisl_0015hisl_0015: Usage of Merge blocks
Check usage of standardized MATLAB function headersmathworks.hism.himl_0001himl_0001: Usage of standardized MATLAB function headers
Check usage of relational operators in MATLAB Function blocksmathworks.hism.himl_0008himl_0008: MATLAB code relational operator data types
Check usage of logical operators and functions in MATLAB Function blocksmathworks.hism.himl_0010himl_0010: MATLAB code with logical operators and functions
Check type and size of condition expressionsmathworks.hism.himl_0011himl_0011: Data type and size of condition expressions
Check naming of ports in Stateflow chartsmathworks.hism.hisf_0016hisf_0016: Stateflow port names
Check scoping of Stateflow data objectsmathworks.hism.hisf_0017hisf_0017: Stateflow data object scoping
Check usage of Gain blocksmathworks.hism.hisl_0066hisl_0066: Usage of Gain blocks
Check for divide-by-zero calculationsmathworks.hism.hisl_0067hisl_0067: Protect against divide-by-zero calculations
Check data type of loop control variablesmathworks.hism.hisl_0102hisl_0102: Data type of loop control variables to improve MISRA C:2012 compliance
Check configuration parameters for MISRA C:2012mathworks.misra.CodeGenSettingshisl_0060: Configuration parameters that improve MISRA C:2012 compliance

Check for blocks not recommended for C/C++ production code deployment

Check for blocks not recommended for MISRA C:2012

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

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

See Also