Data Modeling toolchain
(part of the TASTE tools)
How TASTE works
(Click to enlarge)
The eagle-eye view of what this is about
Please install VideoLAN and watch this video.
For a list of the latest changes and updates of DMT, click here.
What is this?
This page hosts the latest versions of all the software developed by Semantix for the European Space Agency, in the context of ASSERT and the projects that followed it. The tools included are used to automatically create the necessary translation and interworking units that these projects depended on. In essence, they allow code generated by different modeling tools to seamlessly interwork without user involvement in the message marshaling process.
Supported functional modelling:
For (a lot) more details, please read the User Manual (available from the Downloads section in PDF form, as well as online here).
- MATLAB/Simulink: The tools generate optimal "glue" code that maps data into/from the Real-Time Workshop/Embedded Coder generated data structures. Appropriate skeleton projects are also created, for easy implementation of the MATLAB/Simulink subsystem.
- SCADE/Lustre: The automatically generated "glue" code knows how to directly access the structures created by ESTEREL's KCG, thus allowing access to/from SCADE-generated data. The asn2dataModel transformation generates the necessary .xscade files, which accurately mirror the ASN.1 data types into SCADE. SCADE skeleton projects (with full interface details) are also generated.
- PragmaDev RTDS: The generated "glue" code transparently maps the data into/from the RTDS-generated C data structures. RTDS skeleton projects are also created, for easy implementation of the subsystems. Here is a presentation of a TASTE-based project that uses PragmaDev and SCADE to implement a system.
- ObjectGeode: The generated "glue" code provides mapping macros that transparently map the data into/from the ObjectGeode-generated C data structures. This mapping layer is then used by the corresponding signal handling/sending layer. ObjectGeode skeleton projects are also created, for easy implementation of the OG subsystem.
- Ada: the "glue" code includes the necessary C and Ada "bridges", both variables and functions. Ada project skeletons are also created, where the user can simply "fill-in the blanks" of automatically generated template-code, and get completely automatic integration of his code in the end system.
- C: the "glue" code includes the necessary C "bridges", both variables and functions. Skeleton project files are also created, allowing the user to populate the "core" logic, without worrying about message marshalling details.
- VHDL and SystemC: the "glue" code includes the necessary VHDL "bridges" to intercept read/write accesses over the bus, automatically written device driver to handle the device, as well as SystemC skeleton with all interface details filled in.
Automatically created GUIs
(Click to enlarge)
The code generators included can also automatically create portable wxWidgets-based GUIs that allow their users to easily call any of the provided interfaces and get data back from callbacks. In essence, TeleCommands can be invoked and Telemetries received without writing a single line of code.
Automatically created Python bridges
Testing the (usually complex) logic inside space systems requires big regression checking suites. TASTE tools automatically create Python bridges that offer direct access to the contents of the ASN.1 parameters, as well as direct runtime access to the TM/TCs offered by the system.
All that the user needs to do to create his set of regression checks, is to:
- Either write Python scripts, that exercise any behavioural aspect of the system e.g. a scenario like this: when I send a TC with value X in param Y, then I expect a TM after a max waiting of Z seconds, with the value K in the incoming param L. Note that this kind of scenario can be expressed in less than 10 lines of Python code, with an order of magnitude less work than the corresponding C/Ada code.
- Or use the ready-made "recorder" application, that records the TM/TCs sent at runtime - and then use msc2py to create the Python script that reproduces the recorded scenario at runtime!
You can find a complete (standalone) example - with embedded instructions in its comments - here. You can also download a video (please use VideoLAN to watch it) of the recording and playback process.
Automatically created real-time plots of Telemetry data
The build process automatically detects the Telemetry structures used in the system, and creates invocation scripts that pipe the data to GnuPlot, plotting them in real-time:
Automatically created run-time interfaces to MSC Tracer
The automatically generated GUIs send and receive telemetry and telecommands. The exchanged TM/TC messages can be plotted in real-time in the freely available PragmaDev MSC Tracer, with (optionally) the message parameters expanded inline:
Here's a video (please download it and use VideoLAN to watch it) of the automatically generated GUIs interacting at run-time, with the MSC tracer. The video also demonstrates that the TM/TC message exchanges are recorded (in MSC format), and then, a Python script is generated from the recorded MSC that reproduces the scenario, testing the system at runtime and verifying that the behaviour remains consistent.
These tools convert ASN.1 grammars into TASTE-importable Data Type definitions.
This tool converts ASN.1 grammars to Modeling Tool-specific semantically equivalent data type definitions.
This tool allows automatic integration of SCADE/Simulink/PragmaDev/ObjectGeode/Ada/C code. It converts system level descriptions that include Data Type Packages (constructed
via asn2aadlPlus) to Modeling Tool-specific "glue" code that
implements (at runtime) all necessary mappings of data structures (from asn1scc-generated data structures to Modelling-tool generated data structures).
This is the space certifiable ASN.1 compiler: it creates encoders and decoders for unaligned PER (uPER) encoded messages, utilizing no dynamic memory and no system calls.
- ICD generator
This tool parses ASN.1 grammars and creates the equivalent Interface Control Documents (ICD) in navigateable hypertext.
License information for the tools is here.