The Unified Codegeneration project (UCGN) provides an open-source framework for the generation of high quality source code which is suitable for safety-critical applications and certification (e.g (DO-178B)). Currently a Simulink and Stateflow front-end and a C-language back-end are included.
Some of the strengths of UCGN:
- Clearly readable source-code
- Separation of functionality and parameters ("tunable parameters")
- Robust data storage (compile-time static structures in favor of pointer run-time constructs)
- Clear software architecture, direct correspondence to the model architecture
- Separation of reusable library code
- Simplicity and uniformity of software interfaces (for testing etc.)
The following features are supported by the Simulink/UCGN
- Discrete single-rate Simulink models and libraries
- Block library with 50+ standard Simulink blocks
- Periodic, condition-driven Stateflow charts (including flowgraphs, loops)
- Structured data types through bus objects
- Simulink native enumerations
Introduction: Project background, overview
June 18, 2010: This project just came online... so bear with us as we keep adding documentation to this Wiki
June 21, 2010: Released the UCGN Simulink Distribution 1.0.1, including a "Hello World" Simulink example
June 28, 2010: Released SimulinkUcgnDistribution_1.0.2.zip, fixing two bugs (expression precedence and array copy indexing)
July 7, 2010: Released 1.0.3 which contains some minor bug fixes and robustness additions. Also, environment variables (with the syntax %VAR%) can now be used in the working directory property of the project xml files.
February 1, 2011: Released 1.0.4, enabling the use of Simulink enumerated types in Simulink and Stateflow models. This release also contains several bug fixes.
February 17, 2011: Released 1.1.0, the use of flowgraph loops in Stateflow is now enabled.
May 27, 2011: Released 1.1.1, bundling some smaller bugfixes.
August 30, 2011: Released 1.1.2, just some smaller bugfixes
March 29, 2012: Released 1.1.3, bugfixes and stability; also, updated to Simulink's new way of handling of Lookup/Interpolation, added sizeof operation to Stateflow
Visit the UCGN project on SourceForge.
Download the latest UCGN Simulink distribution.
The Semantic Meta-model is the interface to the UCGN Code-generation. The meta-model uses XML/XSD to describe an abstract higher-order programming language, with object oriented features.
Semantic Meta-model: Features, concept
Model Transformation: Simulink
Currently included with the project is a Simulink model transformation layer. Matlab m-files are provided to export Simulink models and libraries into a domain-specific XML representation. The model transformation layer, which is implemented in Java, then takes this XML-model as an input and transforms it into a Semantic Model, for which the UCGN framework can generate source code.
Model Transformation: Simulink: Overview, features, constraints, modeling guide
Simulink UCGN "Hello World" step by step example