Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[tooling] State of the safety critical tools #175

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

alexandruradovici
Copy link
Collaborator

This pull request adds a list of requirements and existing tools of safety critical certification. This reflects the results of the meetings of the tooling subcommittee.

@af-airbus please take a look at the DAL related entries, some of the lines in the table do not have a DAL minimum requirements
@jgust @Bgenis @pellico and @jmqd please take a look at the ASIL minimum ASIL items, some of the lines of the table arte missing ASIL

@alexandruradovici alexandruradovici changed the title State of the safety critical tools [tooling] State of the safety critical tools Feb 11, 2025
| Function coverage | ASIL-C, DAL-C | llvm (19, rustc 1.82) - unstable, no macros / pattern matching, [cargo-tarpaulin](https://github.com/xd009642/tarpaulin) |
| Call coverage | ASIL-C, DAL-C | llvm (19, rustc 1.82), [cargo-tarpaulin](https://github.com/xd009642/tarpaulin) | - unstable, no macros / pattern matching |
| Branch Coverage | ASIL-B, DAL-C | llvm (19, rustc 1.82), [cargo-tarpaulin](https://github.com/xd009642/tarpaulin) | - unstable, no macros / pattern matching |
| Qualified Compiler | ASIL-D, DAL-D | ferroccene, Ada Core |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the HighTec LLVM based compiler is also ASIL-D certified.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I confirm this.

Copy link

@pazmank pazmank Mar 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ISO 26262 certified for Tricore
released, but not certified for arm

| Qualified Compiler | ASIL-D, DAL-D | ferroccene, Ada Core |
| Fault Injection Tests | ASIL-D, DAL-D | N/A | |
| Test Coverage | ASIL-, DAL-D | llvm (19), cargo-test, [mantra?](https://crates.io/crates/mantra) | |
| Underfined Behaviour Absence | ASIL-A, DAL-C | ensured by static analysis and source code confirmity |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think Miri calls itself an UB detection tool so maybe that should slot in here? Or elsewhere?

| Underfined Behaviour Absence | ASIL-A, DAL-C | ensured by static analysis and source code confirmity |
| Static Analysis Tools | DAL-C | | - make sure coding guidelines specify some rules, probably similar to Polyspace, <br> - an assessment about what the rust compiler covers is necessary <br> - for DO-178 such tools support the *source code conformity* objective |
| Unambiguous Graphical Representation | ASIL-B | UML like too, but for Rust, AUTOSAR suggests - [Explanation of ARA Applications in Rust](https://www.autosar.org/fileadmin/standards/R23-11/AP/AUTOSAR_AP_EXP_ARARustApplications.pdf) |
| Formal Verification | ASIL-C (recommended), DAL-C (recommended) | - [verifast](https://github.com/verifast/verifast) WIP <br> - [creusot](https://github.com/creusot-rs/creusot) WIP, works only for safe rust <br> - gillian-creusot WIP, not in a usable state, works for unsafe rust, [kani](https://model-checking.github.io/kani/) | - prove absence of UB <br> - prove that the code does what it should do <br> - using some spec (different language, eg SPARC or CodeProver, prove that an output is not possible) |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verus is in beta but a formal verification tool that might get thrown in here.

| Use of naming convention | ASIL-A | Clippy | Not available tool that allow to define and enforce naming convention. Clippy check only for predefined and generic naming convention |
| Measurement of execution time and reaction time of software unit | ASIL-A (depends in the requirements) | perf, Intel VTune, flamegraph, [Rapita](https://www.adacore.com/press/rapita-systems-showcases-adacores-gnat-pro-for-rust-at-hisc) | For hard realtime application are required not intrusive profiler that are typically HW specific |
| Test runner | all | - [cargo-nextest](https://nexte.st) <br> - cargo <br> - defmt-test + probe.rs | No ISO qualified tool are available. Example of qualified test runner: [VectorCast](https://www.vector.com/us/en/products/products-a-z/software/vectorcast/?gad_source=1&gclid=EAIaIQobChMIyMKCgvn3igMVM0-RBR1s9BOkEAAYASAAEgJM2_D_BwE#c336977), [TESSY](https://www.razorcat.com/en/product-tessy.html) <br> - tightly linked to the coverage level |
| Automatic generation of unit/integration tests based on equivalence classes and boundary values | ASIL-B | | Example of automatic test generator based on equivalence classe and boundary values: [VectorCast](https://www.vector.com/us/en/products/products-a-z/software/vectorcast/?gad_source=1&gclid=EAIaIQobChMIyMKCgvn3igMVM0-RBR1s9BOkEAAYASAAEgJM2_D_BwE#c336977), [TESSY](https://www.razorcat.com/en/product-tessy.html) |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would property based testing like proptest fit in here?

@PLeVasseur PLeVasseur added the tooling Related to work in the Tooling Subcommittee label Feb 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tooling Related to work in the Tooling Subcommittee
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants