I'd like to talk to you guys about functional safety with LabVIEW. For a few years now, as part of my PhD, I have been working on a solution to implement safety-related systems in LabVIEW (not in the Functional Safety Editor). As a basis, I build on the standard IEC 61508 (basic functional safety standard) and the implementations in known programming languages (C, C ++, ADA). Starting with the general suitability of G up to the design of a language subset for the VI Analyzer (static analysis), I worked out a concept. And in some places I'm already very far.
My current problem is that I am stuck at some points. For example, it is hard to get more detailed information about the compiler than the NI LabVIEW Compiler: Under the Hood page (https://www.ni.com/en-us/support/documentation/supplemental/10/ni-labview-compiler--under-the-hood.h...). Maybe you can help me. Any answer would help me further.
1. What are the key differences between the LabVIEW LLVM-IR and the Clang LLVM-IR?
2. I would like to get a list of all the DFIR optimizations made by the compiler.
3. I would like to get a list of all the LLVM optimizations made by the compiler.
4. Are there possibilities to deactivate some optimizations (in DFIR or LLVM)? A deactivation of some optimizations could help rule out unsafe optimizations.
5. What code simulators are there? I aim to simulate the compiled code to check that the code is correct. For FPGAs, there is the possibility of simulating VHDL. However, I have to do a lot of work here because I have to develop the VHDL code myself. Does the simulation within VeriStand also represent a simulation of the compiled code?
6. How does the assignment of variables work? Does the storage location of a variable change on the target hardware? So is it a static assignment or a non-static assignment? For example, C solves it with the "static" command.
7. Is a global variable in LabVIEW similar to the definition in C or C ++?
8. How does the State Diagram Toolkit work? Would you say it is similar to the definition of a deterministic finite automaton?
In addition, I am looking for contacts for my language subset. Using the basic standard and the MISRA guideline, I have developed a subset of languages that can serve as a first starting point for a static, functionally safe analysis. But it is difficult to verify without feedback.
Do any of you know someone who is familiar with static code analysis in other programming languages and who can help me with this?
Finally, I created a modeling framework that is composed of UML-like models and thus enables uniform modeling and implementation, as well as providing the basis for model-based testing. It is mainly based on state transition diagrams (LabVIEW Statediagram Toolkit) and flowcharts (G-code with different regulations). An example table of the framework is attached.
In your opinion, does this framework make sense?
Is it clear enough?
I hope some of you can possibly help me further. At the moment I am missing the connection to other developers. Perhaps one of you has already worked on a functional safety project with LabVIEW and can give me a few tips. I look forward to any counter question or comment.
I have same questions.
Will appreciate the help.