Primero recordemos qué significa el estilo loosely-timed: en este estilo usamos la función bloqueante b_transport y por tanto tenemos dos puntos de sincronización asociados a cada transacción, que corresponden al inicio y al fin de la misma. Estos dos puntos pueden estar en el mismo tiempo de simulación o estar separados (en el caso de tener los dos puntos de sincronización en el mismo instante de simulación, estaríamos en el caso untimed). Continue reading »
Ejemplo de Untimed
Vamos con el primer ejemplo…
Initiator
Empezamos con los includes de las cabeceras necesarias
#include
using namespace sc_core;
#include "tlm.h"
#include "tlm_utils/simple_initiator_socket.h"
Primero incluimos systemc (previsible, eh?) y luego tlm.h (también previsible).
Por último incluimos el socket mas sencillo de todos para este ejemplo.
A continuación declaramos la classe Initiator
class Initiator: sc_module
{
public:
tlm_utils::simple_initiator_socket initiator_socket;
SC_HAS_PROCESS(Initiator);
Initiator(sc_module_name name_);
private:
void initiator_thread();
};