Home Tools SMOG


The SMOG tool (Separated Model Generator) has been developed during the COMPLEX project. It provides two main functionalities, needed to automate certain parts of the COMPLEX flow. First, it supports applying a mapping of individual tasks to HW or SW by helping to assemble the corresponding packages on source code level and preparing those packages for estimation. Secondly, it provides interface synthesis capabilities and generates wrapper code for reintegrating estimated and annotated models for HW or SW components back into a TLM2 platform. Both functionalities are based on the same tool frontend, reading C/C++/SystemC source code from an input specification and transforming it into an internal representation that resembles an abstract syntax tree (AST). SMOG is a command line tool, allowing controlling its main operation modes by several command line options. Functionality which shall be separated or requires wrapper code for integration into a TLM2 platform is identified by a function name that is specified by a command line option. Therefore, SMOG does not support overloaded functions. Figure 1 gives an overview on the basic SMOG tool flow.

Figure 1: Simplified basic SMOG tool flow

The task separation operation mode searches for the specified function in the loaded AST and analyses it regarding all utilized sub-routines, global variables, and type definitions. These are then included in the generated code that covers all essential parts of the separated functionality. The code is complemented with a simple test bench and a Makefile for use as a standalone executable input model for any downstream hardware or software estimation tool.

In the interface synthesis and TLM2 wrapper generation operation mode, SMOG analyses the signature of a block’s top level function and uses the found information to synthesise an interface for the TLM wrapper and the wrapper itself. A wrapper consist of a module, that provides a TLM socket for interconnecting platform models, a storage location representing a register interface used for communication, as well as a process or method that invokes the encapsulated annotated model using its functional interface. The synthesized register interface includes registers needed to handle requests from multiple clients to a single slave hardware component model, including storage for call parameters and outputs, as well as for interfacing a slave hardware model with a local resource manager (LRM). Next to the wrapper modules also adaptor functions are generated that need to be called from the software in order to turn a call to the original software function into TLM2 transactions for communicating with a separate (annotated) hardware model. The communication performed by the adaptor functions uses the sockets of the communicating wrapper modules. More details on the SMOG tool and its features can be found in D2.5.3.


Last Updated ( Saturday, 18 May 2013 22:53 )  


Successful final review meeting
On Thursday, May 25th, the final COMPLEX review meeting has been held in Brussels.


Final public deliverables uploaded

All public COMPLEX deliverables are now available in the Deliverables section.


COMPLEX @ ISCUG'2013 conference
14-15 April, 2013 - Noida, India


Newsflash RSS Feed