Fixes from Niklas, Johannes, Hendrik
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
|
||||
This section covers the basics of virtual prototyping, SystemC and transaction level modeling.
|
||||
|
||||
\revabbr{Virtual prototypes}{VPs} are software models of physical hardware systems, can be used for software development before the actual hardware is available.
|
||||
\revabbr{Virtual prototypes}{VPs} are software models of physical hardware systems, that can be used for software development before the actual hardware is available.
|
||||
They make it easier to test the product as VPs provide visiblity and controllability across the entire system and therefore reduce the time-to-market and development cost \cite{Antonino2018}.
|
||||
|
||||
SystemC is a C++ class library with an event-driven simulation kernel, used for developing complex system models (i.e., VPs) in a high-level language.
|
||||
@@ -25,9 +25,8 @@ Moreover, there is the event queue type \texttt{sc\_event\_queue}, which makes i
|
||||
|
||||
The concepts presented are used in Section \ref{sec:implementation}, where the implementation of various SystemC modules will be discussed.
|
||||
|
||||
SystemC supports a number of abstraction levels for modeling systems, namely \textit{cycle-accurate}, the most accurate but also the slowest abstraction, \textit{approximately-timed} and \textit{loosley-timed}.
|
||||
The latter two abstraction levels belog to \revabbr{transaction level modeling}{TLM}, which will be discussed in the next Section \ref{sec:tlm}.
|
||||
Another level of abstraction, \textit{untimed}, will not be the subject of this thesis.
|
||||
SystemC supports a number of abstraction levels for modeling systems, namely \textit{cycle-accurate}, the most accurate but also the slowest abstraction, \textit{untimed}, \textit{approximately-timed} and \textit{loosley-timed}.
|
||||
The latter two abstraction levels belong to \revabbr{transaction level modeling}{TLM}, which will be discussed in the next Section \ref{sec:tlm}.
|
||||
|
||||
\subsection{Transaction Level Modeling}
|
||||
\label{sec:tlm}
|
||||
@@ -54,10 +53,10 @@ GPs are passed as references, so they do not need to be copied between modules.
|
||||
|
||||
SystemC defines two coding styles for the use of TLM, called \revabbr{loosley-timed}{LT} and \revabbr{approximately-timed}{AT}.
|
||||
In the LT coding style, a transaction is blocking, meaning that the transaction will be modeled by only one function call.
|
||||
This comes at the cost of limited temporal accuracy, as only the start and end times of the transaction are modeled, and the initiator must wait until the transaction is complete before making the next request.
|
||||
This comes at the cost of limited temporal accuracy, as only the start and end times of the transaction are modeled, and the initiator must wait until the transaction is completed before making the next request.
|
||||
However, the fast simulation time, especially when the so-called concept of \textit{temporal decoupling} with \textit{timing quantums} is used, makes it possible to use this coding style for rapid software development; LT is suitable for developing drivers for a simulated hardware component.
|
||||
|
||||
The AT coding style is non-blocking and therefore can be used to model with a higher timing accuracy than LT.
|
||||
The AT coding style is non-blocking and can therefore be used to model with a higher timing accuracy than LT.
|
||||
This high accuracy makes it possible to use AT for hardware-level design space exploration.
|
||||
With AT, a special protocol is used that uses a four-phase handshake:
|
||||
\texttt{BEGIN\_REQ},
|
||||
@@ -98,7 +97,7 @@ However, since the initiator is blocked due to backpressure during this period,
|
||||
Another form of this shortcut is the combination with return path of the forward transport function call.
|
||||
Here, the return path is used to directly send the \texttt{BEGIN\_REQ} phase, without invoking the backward transport function altogether, reducing the required number of transport calls to only two.
|
||||
|
||||
The last shortcut, that can be made is the so-called \textit{early completion}.
|
||||
The last shortcut that can be made is the so-called \textit{early completion}.
|
||||
When the target receives the \texttt{BEGIN\_REQ} phase, it can already place the requested data into the payload and pass \texttt{TLM\_COMPLETED} as the return value back to the initiator.
|
||||
This notifies that the whole transaction is already completed at this point, so no further transport calls are required.
|
||||
Note that this form of early completion is very similar to the LT coding style, where a transaction also is modeled using only one function call.
|
||||
@@ -108,7 +107,7 @@ Here, \texttt{TLM\_COMPLETED} is returned during the backward transport call of
|
||||
SystemC also supports additional user-defined phases through its \texttt{DECLARE\_EXTENDED\_\\PHASE()} macro for special cases.
|
||||
|
||||
In contrast to the TLM-LT protocol, TLM-AT allows to model the pipelining of transactions; multiple transactions can be processed simultaneously by one target.
|
||||
The responses also do not need to be in the same order as the initiator has sent them; they can be \textit{out out order}.
|
||||
The responses also do not need to be in the same order as the initiator has sent them; they can be \textit{out-of-order}.
|
||||
|
||||
The TLM-AT coding style is the protocol used to implement the processor model and the cache model in Section \ref{sec:implementation} of this thesis.
|
||||
Some of the earlier described shortcuts are taken advantage of throughout those models.
|
||||
|
||||
Reference in New Issue
Block a user