Engineering teams use Model-Based Design with MATLAB® and Simulink® to design complex embedded systems and generate production-quality C, C++, and HDL code. MathWorks tools use simulation testing and formal methods-based static analysis to complement Model-Based Design with rigor and automation to find errors earlier and achieve higher quality.
With MATLAB and Simulink, you can:
- Trace requirements to architecture, design, tests, and code
- Prove that your design meets requirements and is free of critical run-time errors
- Check compliance and measure quality of models and code
- Generate test cases automatically to increase test coverage
- Produce reports and artifacts, and certify to standards (such as DO-178 and ISO 26262).
“Compared with our past experience with hand-coding, Model-Based Design enabled us to reduce labor costs by 30%, cut testing costs by 20%, and increase productivity by more than 30%. We completed ECU development ahead of schedule while establishing our in-house software development team.”Daming Li, Weichai Power
Using MATLAB and Simulink for Verification and Validation
Informal text requirements that can be stored in documents, spreadsheets, or in requirements management tools, such as IBM® Rational® DOORS®, initiate the development process. Simulink Requirements™ allows you to view, author, and manage requirements together with your architecture, designs, generated code, and test artifacts. You can create a digital thread from requirements to design in System Composer™, Simulink, Stateflow®, or MATLAB tests in Simulink Test™. With this traceability, you can identify implementation or testing gaps and quickly understand the impact of a change on the design or test. Requirements from third-party tools can be viewed, synchronized, and managed to establish traceability with other tools in your development process.
Temporal assessments in Simulink Test allow you to verify text requirements by specifying assessments with precise semantics in a natural language format that can be evaluated and debugged.
Certification Standards Compliance
Automate verification of models and code to standards such as DO-178, ISO 26262, IEC 61508, IEC 62304, and MathWorks Advisory Board (MAB) style guidelines. Simulink Check™ provides industry-recognized checks and metrics that identify standard and guideline violations during development. You can create custom checks to meet your own standards or guidelines. The IEC Certification Kit (for ISO 26262 and IEC 61508) and DO Qualification Kit (for DO-178) provides tool qualification artifacts, certificates, and test suites to help you qualify code generation and verification products and streamline certification of your embedded systems.
Prove Absence of Errors and Formally Verify Requirements
Formal verification finds hidden design errors that result in integer overflow, dead logic, array access violations, and division by zero without simulating the design. Simulink Design Verifier™ can formally verify that your design is free from errors or security vulnerabilities. Simulink Design Verifier can also prove that your design meets critical requirements. If the tool finds an exception, it generates a counterexample for debugging.
Automatic Test Generation
It is important to identify gaps in testing, unintended functionality, or requirements errors. Simulink Coverage™ calculates how much of the model or generated code is exercised during testing. It applies industry standard metrics such as condition, decision, modified condition/decision (MCDC), and custom coverage objectives. Simulink Design Verifier can automatically generate test cases to address incomplete coverage to achieve structural and functional coverage objectives.
Static Code Analysis
For verification of handwritten and generated code, Polyspace® products use formal methods to find bugs and prove the absence of critical run-time errors—without test cases or code execution. Polyspace Bug Finder™ checks and documents the compliance to standards such as MISRA®, ISO 26262, IEC 61508, DO-178, and FDA regulations. You can check for software security vulnerabilities and standards such as CWE, CERT-C, ISO/IEC 17961, and others. Polyspace Code Prover™ performs static analysis to prove the absence of overflow, division-by-zero, out-of-bounds array access, and other run-time errors in C and C++ source code.