Jump to content

Recommended Posts

I'm just new to TLM. I'd like to discuss some doubts I have. 

1 AT: My understanding of AT is , TLM seperates the commucation to phases . During commucation , callback functions can indicate sender and receiver which phases are they in. In principle, we can create as many phases as RTL has. But  it is not necesssay to be that accurate if my model is fucus on functionality.  Delay parameter is used to modelize the hardware delay.  One question is when should we use AT model. (1) if I want to modelize a protocol , i need accurate time modeling (instead of approximate model)(2) if i want to modelize a computing unit , i don't care the commucation phase at all. 

2 About delay parameter , we can set delay parameter to modelize hardware delay. If TLM model is developed before hardware, how do we know this value? I think it is a general question, in none TLM model, we use wait() to modelize it. If we are not aware of delay in advance, how the statistic from TLM is reliable? 

3 The typical use scenarios of TLM. It is for performance analysis or functionality verification?



Link to post
Share on other sites

Approximately-Timed (AT) models provide decent timing accuracy for modeling purposes. Common use cases include architectural analysis (cost vs performance). AT models are used to understand the effects of interconnect and bus protocols on overall performance.

Loosely-Timed (LT) models provide for simulation performance (i.e. fast), but often use techniques that sacrifice modeled timing accuracy. The intent is for use in software development on virtual platforms. Techniques used include Temporal De-coupling coupled a notion of a Quantum, and Direct Memory Interface. LT models usually try to minimize calls to wait() due to overhead of context switching. Fast models almost never use sc_clock (slows simulation).

Both modeling styles (AT & LT) should be register accurate and functionally correct. Both include timing, but obviously the degree of accuracy differs greatly.

Standards compliant models will provide both modeling styles in a single design; although; it is often the case that early modeling starts with one or the other and later adds the missing style. Generally, b_transport functions provide the LT coding style, and nb_transport_* methods provide the AT coding style.

Neither should be as accurate as RTL because that would require adding so much code overhead that you might as well write RTL and skip SystemC. Clock cycle accurate models are generally inappropriate. Cycle-Approximate or Cycle-Count Accurate modeling is a better description of AT models.

[As an employee of Doulos Ltd, I teach courses on SystemC modeling with TLM-2.0. You might find that taking an on-line class from us is beneficial. https://www.doulos.com]

Link to post
Share on other sites

Many thanks for your reply, David. I will have a look of your courses.

AT is used to model interconnect and bus protocols. I think these products would focus on their transmission delay ,speed , bandwitdh . These statistics are highly relevant with clock and time. Is it possible to assess interconnect and bus protocol with only approximate time? And if my product is bus protocol, is it practical to use socket to abstract communication ?

Could you please specify what metrics we can get from AT to do architectural analysis?







Link to post
Share on other sites

TLM (Transaction Level Modeling) is focused on communication (interconnection) of SystemC models. So your question is slightly irrelevant. From what you indicate, I would say that AT modeling style would accomplish what you are interested in. Sockets are an almost essential aspect of  TLM as they simplify modeling and can provide information about the transaction.

As to what metrics you can get, that is up to you. SystemC is not a prepacked set of subroutines, nor is it a narrowly focused on one type of analysis. SystemC is a methodology using C++ to model any variety of ideas using an event driven simulation core (provided). You provide the code to stimulate and assess the information. It is common to obtain things such as bus bandwidth and utilization, but there are no primitives provided to do this on its own.

Important: You need to be well versed in C++ to effectively use SystemC. Far too many folks approach SystemC thinking it will be a panacea and only requires C.

There are companies that provide commercial tools on top of SystemC to help with modeling. I will not comment on their utility, but obviously they have some value or they would not be around for long. There are also consulting companies that specialize in SystemC. Learn more on the main Accellera website (https://www.accellera.com). My employer (and thus myself) focuses on the training/educational aspect.

Link to post
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...