SystemC & TLM-2.0 - TLM-2.0 Interoperability in SyetemC
TML-2.0 Interoperability
about telling to interoperability let's about telling to interoperability let's start by defining some terms until them to an initiator is a component that initiates new transactions a target is a component but acts as the endpoint for a transaction, it's an interconnect is a component that simply forwards transactions and is neither an initiator and a target transactions themselves are passed by reference in tier latitude they can be passed in the direction from initiates to target or in the forward path also passed back from target toward initiator on the backward path.
Initiator and Target Sockets
the heart of tearing to our six interface method, cleans that from the tiller to core interfaces on the forward path there are calls to be transport and be transport get direct memory pointer and transport debug and all the backward path caused to env transport backward and invalidate direct memory point let's investigate those core interfaces in a little bit more detail because they're the first step toward achieving interoperability on tier limited.
Blocking Transport
first blocking transport on tier limited first blocking transport the B transport method is the most straightforward way to pass remembering that bus transaction the complete transaction from executing just a single function called new transport is only called on the forward path and as well as passing a transaction by reference it also includes a timing annotation argument a B transport is used with the loosely typed coding style where the goal is to maximize simulation speed.
Non-Blocking Transport
the non-blocking trust what interface is a little more complicated. it supports calls on both the forward path and the backward paths and the idea. with non-blocking transport is a participant multiple phases where a single transaction involves multiple calls we transport some code in the forward direction some code in the backward direction, and that allows more phase transactions and more timely resolution and at the same time sacrifices some simulation speed so it's typically used with the approx time coding style.
TLM-2 Core Interface - DMI and Debug
when the final method calls belong to the DMI in the debug interfaces DMI interfaces, the direct memory interface the get direct memory pointer method which is called on the forward path requests a direct memory pointer from a target the invalidates direct memory pointer which is called on the backward path invalidates the DMI region has previously been accessed and granted. finally transport debug is used for non intrusive read write operations so transport debug is only called on the forward path and the whole point of transport debug is it executes with zero delay no context switches no side effects.
Generic Payload Attributes
for each of these interfaces a single transaction type is purposed and transaction type that gives maximum interoperability is the generic payload. the generic payload has been designed specifically for modeling memory mat buses so it features a command address, data bite enable a streaming mode and your response status and the generic payload can be used in one of two ways, it can either be used off-shelf from what the creating very abstract models of memory mat buses or you're not concerned about the details of specific protocols or it can be extended and used to describe behavior of a specific protocol by making use of the extension mechanism.
Extensions
so the generic payload extension mechanism it's one of the key bits of machinery in tearling - it has a number of advantages generic payload extensions can be routed through components they that know nothing about them so the example shown here the initiation the target at the top can both understand an extension that's routed through a base protocol Ruta that there's nothing about that extinction. the same mechanism cursive used to create private extensions where the generic payload is just used as a place to temporarily put attributes that are best associated with the transaction another component of state need to know anything about those private extensions.
Interoperability versus Internals
so let's step back from the detail well and have a look at interoperability more generally in tier 2 the interoperability layer consists of their core telling two interfaces the API's that are necessary to give the maximum amount of interoperability, so it consists of the interfaces we've discusses the initiator and target sockets a generic payload and the base protocol and the base protocol is a collection of rules for putting together these other elements for maximum interoperability. in addition to the interoperability layer tier limiting also defines the coding styles loosely x in approximately timed and this set of utilities the coding styles and the utilities don't directly make or break interoperability but they are important for productivity they're important to ensure a consistent coding style and to minimize the learning curve for T-, so amongst the unit utilities there are convenient sockets the cotton keeper, which is used for the loosely timed coding style and payload event queues that are used for the approximately time coding style.
b/nb Conversion
we've seen that amongst the core interfaces that are both blocking and non-blocking transport methods and the blocking transport method is typically used with the loosely tied coding style so let's look at a scenario where a loosely timed initiator is communicating. like a target so that straightforward because war components called the transport now let's introduce into the picture an approximately timed initiator, that's making close to enemy transport. now clearly something special has to happen here on in order to maintain interoperability while the tree collides with the utilities there is a particular convenient socket the tearling target socket the supports automatic adaption between the blocking and non-blocking interfaces so the non-blocking colors from the initiator get intercepted by the simple target socket and the simple target socket and dose the appropriate adaption to call the B transport method in the target because although the blocking of the non-blocking methods can be combined without compromising interoperability in order to maximize simulation speed modelers should still be matched for performance so even a single approximately timed component introduced into a loosely time simulation might significantly impact the performance of a simulation.
Kind of Interoperability
so TLM-2 supports interoperability at two different levels for maximum interoperability it makes strength use of the interoperability layer over the interoperability layer consists of the base protocol combined with generic payload G's through the standard sockets. so any initiators interconnects and targets that make use of the base protocol can be connected together off. the shelf and will talk to each other, however it's still possible for functional incompatibilities to exist even using the base protocol fruits are booked a target might not support certain features of the generic payload for example by tea labels or streaming with such a target would still be compliant with the TMT standard and could be connected to other such components that make it functional areas. if it's in purpose.
in that sense the other kind of interoperability that tell into supports is when defining new specific protocols, so a new protocol cannot be bound to the base protocol or more specifically if you have two sockets that are tempted to use different protocol types and they can't be bound together however new specialized protocol should still be creative on top of the generic protocol and that's got two particular advantages: firstly the specific protocol can still exploit the consistency of coding style that the base protocol the generic payload support and secondly the new protocol can still exploit the extension mechanism of the base protocol and the generic payload so in this case we've got an adapter inserted between two different protocols and that adapter can do an extremely low cost conversion between the two different protocols because they're based both based on the same underlying Tynan to machinery.