kuncikehidupan Posted April 27, 2015 Report Share Posted April 27, 2015 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. Quote Link to comment Share on other sites More sharing options...
David Black Posted April 28, 2015 Report Share Posted April 28, 2015 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 ); ... }; Quote Link to comment Share on other sites More sharing options...
kuncikehidupan Posted August 3, 2015 Author Report Share Posted August 3, 2015 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. Quote Link to comment Share on other sites More sharing options...
Babak Aghaei Posted January 16, 2016 Report Share Posted January 16, 2016 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.