HOME   PREV   |ENDOFPACK|

TLM in SystemC: TLM 2.0

TLM 2.0 was defined in July 2008 and it defined a Generic Payload that looks a bit like this: (see the header files for real on the PWF)

  trans->set_command(tlm::TLM_WRITE_COMMAND);
  trans->set_address(addr);
  trans->set_data_ptr(reinterpret_cast<unsigned char*>(&data));
  trans->set_data_length(4);
  trans->set_streaming_width(4);
  trans->set_byte_enable_ptr(0);
  trans->set_response_status( tlm::TLM_INCOMPLETE_RESPONSE );

  socket->b_transport(*trans, delay);

The generic payload can be extened on a a custom basis and intermediate bus bridges and routers can be polymorphic about this: not needing to know about all the extensions but able to update timestamps to model routing delays.

It also defines memory/garbage ownership and transport primitives with timing. Finally, it defines a raft of useful features, such as automatic conversion between blocking and non-blocking styles. However, it is a bit too complex to get a deep understanding of in the time available, so for this course I have mostly ignored it and implemented things in TLM 1.0 style.