Jump to content

just getting started questions on TLM specifically using Windows

Recommended Posts

I've downloaded SystemC 2.3.0.  It included TLM.   Nicely there was a Visual Studio project file for SystemC but apparently not for TLM.   Also there is both a tlm_1 and tlm_2 directory in the package.  I'm just looking for some clarification for how all this comes together and what/how to build.


Many places I've searched for information are older back when TLM wasn't distributed along with SystemC making it less clear the best way to proceed specifically using version 2.3.0.


I'm sure I can succeed in configuring Visual Studio to compile tlm_2 but the fact that there was already such support for SystemC but not TLM makes me wonder if I'm missing something.   If I want to use TLM I do indeed need to build that library in addition to the sysc directory correct??   For someone new to this is tlm_1 obsolete as I would likely use tlm_2 instead or is there a reason for tlm_1 for someone new to SystemC?


My application will be for high level modelling of hardware/firmware to evaluate ideas mainly relative to performance and maybe eventually for power.  The generally higher level and faster performance of TLM seems to fit our needs.


I'm also interested in any sample projects using TLM which include full source code.  I've seen some small ones on http://www.doulos.com but yet more examples would be nice.


Thanks for any help



Link to comment
Share on other sites



TLM is a header-only library, there is no need to compile a dedicated TLM library before using the TLM classes in your application.


You can find some TLM examples including Visual C++ project files in the 'examples/tlm' sub-directory of the SystemC package.  Each example comes with a presentation explaining the contents of the example.  Some more information can be found in 'examples/tlm/README.txt' and in the 'docs/tlm' directory.



Link to comment
Share on other sites

Wrt. TLM-1 vs. TLM-2, these two TLM flavours are both part of the IEEE 1666-2011 SystemC standard.

The two flavours implement different modeling styles:


  • TLM-1 is a message-passing based implementation, essentially built around FIFO channels.  They can be used in a wide variety of use-cases, including even more abstract models than "just" architecture models with address-based, memory-mapped communication.
  • TLM-2 is an advanced implementation of the "transaction-level modeling" concept, where the payload is no longer passed by-value, but the different "hops" on the transaction path reuse the same object. See the IEEE 1666-2011 SystemC LRM for an in-depth description of the underlying concepts and interfaces.
  • Most widely used within the TLM-2.0 interoperability layer is the TLM-2.0 base protocol.  This base protocol defines the payload and communication rules used for the transactions.  The tlm_generic_payload is mostly intended for mermory-mapped communication, e.g. bus-based systems.


Link to comment
Share on other sites

Thanks for the reply.   So when they came out with TLM 2.0 it wasn't as an upgrade/replacement but rather to add extra features with TLM 1 still being maintained and just as current as TLM 2?   So different than say how SystemC 2.3.0 is a newer replacement for SystemC 2.2.


I find little examples, tutorials and such but it's been hard finding a good overall guide or reference.   I've heard mentioned STARC Transaction-Level Modeling (TLM) Guide as a good guide but no indication about how to obtain it.   The Doxygen documentation for TLM shows the classes and but generally no class descriptions that allow me to understand for example the key differences between flavors of sockets in a manner that might let me choose wisely.  It would be great to get any information on both reference works and guides for TLM and SystemC either in print or the web for free or cost.   Ideally recent enough to be relevant for what I find in SystemC 2.3.0.

Link to comment
Share on other sites

As I said in my initial answer, the SystemC package already contains quite some starting material in the examples/tlm directory, already available on your computer. ;-)

The definite document about SystemC TLM-2.0, including the description of the concepts, terminologies and modeling guidelines is of course the IEEE 1666-2011 standard.  You can download the standard free-of-charge (sponsored by the Accellera Systems Initiative) from http://standards.ieee.org/getieee/1666/download/1666-2011.pdf.


A very good starting point can be the video tutorials available from the Accellera TLM community pages at http://www.accellera.org/community/systemc/about_systemc_tlm/


All of this should keep you busy for a while.



Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...