Skip to main content
Papyrus-RT 0.8 screenshot

Papyrus-RT - UML-RT modelling and code generation environment

Papyrus-RT provides an implementation of the UML-RT modeling language together with editors, code generator for C++ and a supporting runtime system and model-compare (diff/merge) capabilities.

For more details, see the Overview section.

UML-RT in a nutshell

UML-RT is a modelling language intended for real-time and embedded systems.

It considerably simplifies the UML language while introducing a few new concepts. The main concepts of UML-RT are capsules and protocols.

A capsule is an active class that defines concurrent behaviour (similar to a thread). It's behaviour may be specified with a (hierarchical) state machine. A capsule has an interface consisting of one or more ports that are typed by a protocol. A protocol defines the set of messages that may be sent and received by the port and processed by its state machine. A capsule may also have internal structure consisting of static or dynamic parts that contain instances of other capsules. Connectors are used to link their ports.

UML-RT also supports the notion of service ports and includes a built-in services library that provides communication, timing, logging and dynamic structure services.

Some highlights

Graphical structure editor

Graphical behavior editor

The structure editor allows the user to edit capsule structure in a convenient way. It is possible to create and arrange capsule references and ports and to create bindings and layer connections.

The behavior editor allows the user to describe capsule behavior by means of a hierarchical finite state machine. It is possible to create and arrange states, choice points, junction points and transitions using the state machine editor.

Code generator

C++ runtime services support

A code generator will translate the UML-RT model into C++ code. This code generator will translate all structural (e.g., capsules, protocols, and classes) and behavioral (i.e., state machines) elements into C++ code, based on their properties, stereotypes, stereotype properties (including those from a profile with properties specific to C++), and runtime services elements. For the generation of the behavioral C++ code from the state machines, the code generator will first translate the behavior provided by each capsule's (or passive class') state machine into an intermediate model that will then be translated to optimized code. Based on user-provided thread allocation information, the code generator will also allocate capsules, or groups of capsules, to threads.

The C++ Runtime Services Library provides support for the execution of the C++ code generated from a UML-RT model. Capsule lifecycle functions (incarnate, destroy, import, deport), message delivery and timing services are provided by the services library and are used by both the generated code as well as the user specifed action code which is part of the capsule behaviour. The runtime system code is distributed in source form as an installable Eclipse feature. The code generator produces both standard makefiles as well as CMakeList files to build the generated code.

Model compare

The model-compare capability allows you to compare and merge different versions of a model at the same abstraction level as the modelling experience, providing integration with source control, specially EGit.


2017-07-20: Papyrus-RT 1.0.0 released. Get it in the downloads section. See also the Release notes.

2017-03-23: Papyrus-RT 0.9.0 released. Get it in the downloads section. See also the Release notes.


Papyrus-RT 1.0.0 released July 20th, 2017.

Papyrus-RT 0.9.0 released March 23rd, 2017.

Papyrus-RT 0.8.0 released October 24th, 2016.

Papyrus-RT 0.7.2 released December 15th, 2015.

Papyrus-RT 0.7.1 released October 12th, 2015.


Back to the top