SystemC - Overview¶
API Documentation
Introduction¶
The SystemC Module is a versatile adapter that enables seamless integration of external SystemC-components into the FERAL simulation environment. The communication between SystemC-components and FERAL is via ports, which exclusively handle messages in byte format. The module has two approaches for SystemC integration: a Streaming- and an Interrupt approach.
Interrupt Approach¶
The SystemC component can send messages directly to FERAL. Whereas, messages originating from FERAL trigger an interrupt, and the SystemC component processes these messages at its own pace. The following scheme illustrates the method.
The SystemC Module is an external component that is integrated into the FERAL scenario. It communicates with the main Adapter, the LTData Port (LT for loosely timed), to synchronize and exchange data between the SystemC Module and FERAL. When the LTDataPort receives a message from FERAL, it raises an interrupt to notify the module using the IRQ signal and sends the data to the module. After processing the data, the module sends a response back to FERAL (if necessary) through the LTDataPort and signals via the IRQ that the message has been processed. If there are more waiting messages, the dataflow restarts; otherwise, the interrupt is deactivated.
Streaming Approach¶
The Streaming-approach allows direct communication between SystemC and FERAL without an interrupt.
The above image schematize the approach. The LTDataPort has been divided into two components: LTDataPort-Initiator and LTDataPort-Target. Both components synchronize and communicate with FERAL. When FERAL sends a message to the SystemC component, the Initiator receives it and forwards it to SystemC external component. Once the SystemC component processes the message, it sends a response to the Target, which then communicates the answer back to FERAL.