Main Content

Model Checks for DO-178C/DO-331 Standard Compliance

You can check that your model or subsystem complies with selected aspects of the DO-178C safety standard by running the Model Advisor.

To check compliance with DO standards, open the Model Advisor and run the checks in By Task > Modeling Standards for DO-178C/DO-331.

The table lists the DO-178C/DO-331 checks.

The following are the High-Integrity System Modeling checks that are applicable for the DO-178C/DO-331 standards.

Model Checks for High Integrity Systems Modeling

You can check that your model or subsystem complies with selected aspects of the High Integrity System Model safety standard by running the Model Advisor.

To check compliance with High Integrity System Model standards, 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

For information on the High Integrity System Model Software Considerations in Airborne Systems and Equipment Certification and related standards, see Radio Technical Commission for Aeronautics (RTCA).

This table lists the High Integrity System Model checks and their corresponding modeling guidelines. For more information about the High-Integrity Modeling Guidelines, see High-Integrity System Modeling.

High Integrity Systems Modeling Checks

High Integrity System Model CheckApplicable High-Integrity System Modeling Guidelines
Check usage of lookup table blocks hisl_0033: Usage of Lookup Table blocks
Check for inconsistent vector indexing methodshisl_0021: Consistent vector indexing method
Check usage of variant blockshisl_0023: Verification of variant blocks
Check for root Inports with missing propertieshisl_0024: Inport interface definition
Check usage of Relational Operator blockshisl_0017: Usage of blocks that compute relational operators (2)
Check relational comparisons on floating-point signalshisl_0016: Usage of blocks that compute relational operators
Check usage of Logical Operator blockshisl_0018: Usage of Logical Operator block
Check usage of While Iterator blockshisl_0006: Usage of While Iterator blocks
Check usage of For and While Iterator subsystemshisl_0007: Usage of For Iterator or While Iterator subsystems
Check usage of For Iterator blockshisl_0008: Usage of For Iterator Blocks
Check usage of If blocks and If Action Subsystem blockshisl_0010: Usage of If blocks and If Action Subsystem blocks
Check usage Switch Case blocks and Switch Case Action Subsystem blockshisl_0011: Usage of Switch Case blocks and Action Subsystem blocks
Check safety-related optimization settings for logic signalshisl_0045: Configuration Parameters > Math and Data Types > Implement logic signals as Boolean data (vs. double)
Check safety-related block reduction optimization settingshisl_0046: Configuration Parameters > Simulation Target > Block reduction
Check safety-related optimization settings for application lifespanhisl_0048: Configuration Parameters > Math and Data Types > Application lifespan (days)
Check safety-related optimization settings for data initializationhisl_0052: Configuration Parameters > Code Generation > Optimization > Data initialization
Check safety-related optimization settings for data type conversionshisl_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 exceptionshisl_0054: Configuration Parameters > Code Generation > Optimization > Remove code that protects against division arithmetic exceptions
Check safety-related code generation settings for commentshisl_0038: Configuration Parameters > Code Generation > Comments
Check safety-related code generation interface settingshisl_0039: Configuration Parameters > Code Generation > Interface
Check safety-related code generation settings for code stylehisl_0047: Configuration Parameters > Code Generation > Code Style
Check safety-related code generation identifier settingshisl_0049: Configuration Parameters > Code Generation > Identifiers
Check usage of Abs blockshisl_0001: Usage of Abs block
Check usage of Math Function blocks (rem and reciprocal functions)hisl_0002: Usage of remainder and reciprocal operations
Check usage of Math Function blocks (log and log10 functions)hisl_0004: Usage of natural logarithm and base 10 logarithm operations
Check usage of Assignment blockshisl_0029: Usage of Assignment blocks
Check usage of Signal Routing blockshisl_0034: Usage of Signal Routing blocks
Check for root Inports with missing range definitionshisl_0025: Design min/max specification of input interfaces
Check for root Outports with missing range definitionshisl_0026: Design min/max specification of output interfaces
Check state machine type of Stateflow chartshisf_0001: State Machine Type
Check Stateflow charts for transition paths that cross parallel state boundarieshisf_0013: Usage of transition paths (crossing parallel state boundaries)
Check Stateflow charts for ordering of states and transitionshisf_0002: User-specified state/transition execution order
Check Stateflow debugging optionshisf_0011: Stateflow debugging settings
Check Stateflow charts for uniquely defined data objectshisl_0061: Unique identifiers for clarity
Check Stateflow charts for strong data typinghisf_0015: Strong data typing (casting variables and parameters in expressions)
Check assignment operations in Stateflow chartshisf_0065: Type cast operations in Stateflow to improve code compliance
Check Stateflow charts for unary operatorshisf_0211: Protect against use of unary operators in Stateflow Charts to improve code compliance
Check for Strong Data Typing with Simulink I/Ohisf_0009: Strong data typing (Simulink and Stateflow boundary)
Check for MATLAB Function interfaces with inherited propertieshiml_0002: Strong data typing at MATLAB function boundaries
Check MATLAB Function metricshiml_0003: Complexity of user-defined MATLAB Functions
Check MATLAB Code Analyzer messageshiml_0004: MATLAB Code Analyzer recommendations for code generation
Check safety-related model referencing settingshisl_0037: Configuration Parameters > Model Referencing
Check safety-related diagnostic settings for solvershisl_0043: Configuration Parameters > Diagnostics > Solver
Check safety-related solver settings for simulation timehisl_0040: Configuration Parameters > Solver > Simulation time
Check safety-related solver settings for solver optionshisl_0041: Configuration Parameters > Solver > Solver options
Check safety-related solver settings for tasking and sample-timehisl_0042: Configuration Parameters > Solver > Tasking and sample time options
Check safety-related diagnostic settings for sample timehisl_0044: Configuration Parameters > Diagnostics > Sample Time
Check safety-related diagnostic settings for parametershisl_0302: Configuration Parameters > Diagnostics > Data Validity > Parameters
Check safety-related diagnostic settings for data used for debugginghisl_0305: Configuration Parameters > Diagnostics > Data Validity > Debugging
Check safety-related diagnostic settings for data store memoryhisl_0013: Usage of data store blocks
Check safety-related diagnostic settings for type conversionshisl_0309: Configuration Parameters > Diagnostics > Type Conversion
Check safety-related diagnostic settings for signal connectivityhisl_0306: Configuration Parameters > Diagnostics > Connectivity > Signals
Check safety-related diagnostic settings for bus connectivityhisl_0307: Configuration Parameters > Diagnostics > Connectivity > Buses
Check safety-related diagnostic settings that apply to function-call connectivityhisl_0308: Configuration Parameters > Diagnostics > Connectivity > Function calls
Check safety-related diagnostic settings for compatibilityhisl_0301: Configuration Parameters > Diagnostics > Compatibility
Check safety-related diagnostic settings for model initializationhisl_0304: Configuration Parameters > Diagnostics > Data Validity > Model initialization
Check safety-related diagnostic settings for model referencinghisl_0310: Configuration Parameters > Diagnostics > Model Referencing
Check safety-related diagnostic settings for savinghisl_0036: Configuration Parameters > Diagnostics > Saving
Check safety-related diagnostic settings for Merge blockshisl_0303: Configuration Parameters > Diagnostics > Data Validity > Merge blocks
Check safety-related diagnostic settings for Stateflowhisl_0311: Configuration Parameters > Diagnostics > Stateflow
Check model object nameshisl_0032: Model object names
Check for model elements that do not link to requirementshisl_0070: Placement of requirement links in a model
Check for inappropriate use of transition pathshisf_0014: Usage of transition paths (passing through states)
Check usage of Bitwise Operator blockhisl_0019: Usage of bitwise operations
Check data types for blocks with index signalshisl_0022: Data type selection for index signals
Check model file namehisl_0031: Model file names
Check if/elseif/else patterns in MATLAB Function blockshiml_0006: MATLAB code if / elseif / else patterns
Check switch statements in MATLAB Function blockshiml_0007: MATLAB code switch / case / otherwise patterns
Check global variables in graphical functionshisl_0062: Global variables in graphical functions
Check for length of user-defined object nameshisl_0063: Length of user-defined object names to improve MISRA C:2012 compliance
Check usage of Merge blockshisl_0015: Usage of Merge blocks
Check usage of conditionally executed subsystemshisl_0012: Usage of conditionally executed subsystems
Check usage of standardized MATLAB function headershiml_0001: Usage of standardized MATLAB function headers
Check usage of relational operators in MATLAB Function blockshiml_0008: MATLAB code relational operator data types
Check usage of logical operators and functions in MATLAB Function blockshiml_0010: MATLAB code with logical operators and functions
Check type and size of conditional expressionshiml_0011: Data type and size of condition expressions
Check naming of ports in Stateflow chartshisf_0016: Stateflow port names
Check scoping of Stateflow data objectshisf_0017: Stateflow data object scoping
Check usage of Gain blockshisl_0066: Usage of Gain blocks
Check for divide-by-zero calculationshisl_0067: Protect against divide-by-zero calculations
Check usage of bitwise operations in Stateflow chartshisf_0003: Usage of bitwise operations
Check data type of loop control variableshisl_0102: Data type of loop control variables to improve MISRA C:2012 compliance
Check configuration parameters for MISRA C:2012hisl_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

hisl_0020: Blocks not recommended for MISRA C:2012 compliance

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

hisl_0056: Configuration Parameters > Code Generation > Optimization > Optimize using the specified minimum and maximum values
Check usage of remainder and reciprocal operationshisl_0002: Usage of remainder and reciprocal operations
Check usage of square root operationshisl_0003: Usage of square root operations
Check usage of log and log10 operationshisl_0004: Usage of natural logarithm and base 10 logarithm operations
Check usage of Reciprocal Sqrt blockshisl_0028: Usage of Reciprocal Square Root blocks
Check safety-related settings for hardware implementationhisl_0071: Configuration Parameters > Hardware Implementation >Inconsistent hardware implementation settings
Check usage of recursionshisf_0004: Protect against recursive function calls to improve code compliance
Check MATLAB functions not supported for code generationhiml_0012: Usage of MATLAB functions for code generation
Metrics for generated code complexityhiml_0013: Limitation of built-in MATLAB Function complexity
Check for parameter tunability ignored for referenced modelshisl_0072: Usage of tunable parameters for referenced models
Check usage of bit-shift operationshisl_0073: Usage of bit-shift operations
Check safety-related diagnostic settings for variantshisl_0074: Configuration Parameters > Diagnostics > Modeling issues related to variants

Related Topics