Jump to content

Convenience Socket for NoC Mesh


Recommended Posts

Hi Accellera forum,

 

I have an NoC Mesh that is using convenience tagged socket for its North, South, West, and East socket. Then I also have initiator socket and target socket, to connect this NoC node to the processor or memory or to any other peripherals in my SystemC-TLM platform.

 

My question is can we implement more than one blocking transport function inside one SystemC module? Because the functionality of N,S,W,E socket are different with the target socket one. 

 

Several transaction are passed to the correct destination node, until at one point there is a transaction that has so big transaction.get_address( ) value (0xffffffe0) which leads to simulation error. It is clear that the transaction address can't be routed to any of the node because there isn't any address that large inside the platform architecture.

I have test the application using processor - decoder - memory, and it works just fine. My best guess is that maybe my socket implementation is not correct 100%.

 

Appreciate any suggestion and feedback.

Thank you.

Regards,

Arya.

Link to comment
Share on other sites

This is easy. Just name your b_transport implementations: b_transport_N, b_transport_E, b_transport_S, b_transport_W, and register them for the respective sockets. Do the same for all the other methods. I would probably use multi_passthrough flavor of sockets for this.

 

Example:

#include "tlm_utils/multi_passthrough_initiator_socket.h"
#include "tlm_utils/multi_passthrough_target_socket.h" 

struct Bus: sc_module // with two bidirectional sockets North & South
{
   tlm_utils::multi_passthrough_target_socket<Bus>     targ_socket_N;
   tlm_utils::multi_passthrough_initiator_socket<Bus>  init_socket_N;
   tlm_utils::multi_passthrough_target_socket<Bus>     targ_socket_S;
   tlm_utils::multi_passthrough_initiator_socket<Bus>  init_socket_S;

   SC_CTOR(Bus)
   : targ_socket_N("targ_socket_N")
   , init_socket_N("init_socket_N")
   , targ_socket_S("targ_socket_S")
   , init_socket_S("init_socket_S")
   {
      targ_socket_N.register_b_transport( this, &Bus::b_transport_N );
      targ_socket_S.register_b_transport( this, &Bus::b_transport_S );
      ...
   }

   virtual void b_transport_N( int id, tlm::tlm_generic_payload& trans, sc_time& delay );
   virtual void b_transport_S( int id, tlm::tlm_generic_payload& trans, sc_time& delay );    ...
};

Link to comment
Share on other sites

  • 3 months later...

Thanks for your response David.

 

I would like to answer to my original question here. I found the solution few months ago but forgot to update back here.

The error has been fixed by adding debug transport function to the network model. I was working with TLM-LT open sourced ISS tool.

The tool eventually utilize the debug transport function call to load application/firmware to the memory(ROM) for the cpu model to run it.

 

Regards,

Arya.

Link to comment
Share on other sites

  • 5 months later...

Hi Accellera forum,

 

I have an NoC Mesh that is using convenience tagged socket for its North, South, West, and East socket. Then I also have initiator socket and target socket, to connect this NoC node to the processor or memory or to any other peripherals in my SystemC-TLM platform.

 

My question is can we implement more than one blocking transport function inside one SystemC module? Because the functionality of N,S,W,E socket are different with the target socket one. 

 

Several transaction are passed to the correct destination node, until at one point there is a transaction that has so big transaction.get_address( ) value (0xffffffe0) which leads to simulation error. It is clear that the transaction address can't be routed to any of the node because there isn't any address that large inside the platform architecture.

I have test the application using processor - decoder - memory, and it works just fine. My best guess is that maybe my socket implementation is not correct 100%.

 

Appreciate any suggestion and feedback.

Thank you.

Regards,

Arya.

Dear Arya

I wanna to establish the NoC platform with mesh topology. so I take some info http://www.tkt.cs.tut.fi/research/nocbench/download.htmland download the TG2 from it. but fully confused, I dont know what i must be do. plz help me. 

best

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.

Guest
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...