Main Page

From UcgnWiki

Jump to: navigation, search



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, 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.

Semantic Meta-model

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 Supported Blocks (details)


Simulink UCGN "Hello World" step by step example

Developers' Corner

Personal tools