Sungkeun Kim has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/58855 )

Change subject: mem-garnet: Packet Tracing of garnet network
......................................................................

mem-garnet: Packet Tracing of garnet network

This is a patch to keep track of
a single packet in the garnet network.
This patch would help for finding a deadlock issue
during the extending the garnet network.

Jira Issue: https://gem5.atlassian.net/browse/GEM5-1181

Change-Id: I30e367ad56775dcd13226b83e56a334daa1de0e4

mem-garnet: Packet Tracing of garnet network

Calling getNextPacketID only once for each packet.

Jira Issue: https://gem5.atlassian.net/browse/GEM5-1181

Change-Id: I96ff6b2230bff6a297732c134bfe78a63e2d7428

mem-garnet: Packet Tracing of garnet network

Move m_next_packet_id to NetworkInterface since it is responsible for
creating a packet.

Change-Id: I8d5a66751691e285178c1189560a655be64eeebf
---
M src/mem/ruby/network/garnet/Credit.cc
M src/mem/ruby/network/garnet/GarnetNetwork.cc
M src/mem/ruby/network/garnet/NetworkInterface.cc
M src/mem/ruby/network/garnet/NetworkInterface.hh
M src/mem/ruby/network/garnet/flit.cc
M src/mem/ruby/network/garnet/flit.hh
6 files changed, 46 insertions(+), 6 deletions(-)



diff --git a/src/mem/ruby/network/garnet/Credit.cc b/src/mem/ruby/network/garnet/Credit.cc
index 65ff488..74d6611 100644
--- a/src/mem/ruby/network/garnet/Credit.cc
+++ b/src/mem/ruby/network/garnet/Credit.cc
@@ -46,7 +46,7 @@
 // and m_is_free_signal (whether VC is free or not)

 Credit::Credit(int vc, bool is_free_signal, Tick curTime)
-    : flit(0, vc, 0, RouteInfo(), 0, nullptr, 0, 0, curTime)
+    : flit(0, 0, vc, 0, RouteInfo(), 0, nullptr, 0, 0, curTime)
 {
     m_is_free_signal = is_free_signal;
     m_type = CREDIT_;
diff --git a/src/mem/ruby/network/garnet/GarnetNetwork.cc b/src/mem/ruby/network/garnet/GarnetNetwork.cc
index de566a5..5f23ac7 100644
--- a/src/mem/ruby/network/garnet/GarnetNetwork.cc
+++ b/src/mem/ruby/network/garnet/GarnetNetwork.cc
@@ -60,6 +60,7 @@
* Default parameters (GarnetNetwork.py) can be overwritten from command line
  * (see configs/network/Network.py)
  */
+int GarnetNetwork::m_next_packet_id = 0;

 GarnetNetwork::GarnetNetwork(const Params &p)
     : Network(p)
diff --git a/src/mem/ruby/network/garnet/NetworkInterface.cc b/src/mem/ruby/network/garnet/NetworkInterface.cc
index a33102a..aac4d09 100644
--- a/src/mem/ruby/network/garnet/NetworkInterface.cc
+++ b/src/mem/ruby/network/garnet/NetworkInterface.cc
@@ -436,9 +436,11 @@

         m_net_ptr->increment_injected_packets(vnet);
         m_net_ptr->update_traffic_distribution(route);
+        const int packet_id = m_next_packet_id++;
         for (int i = 0; i < num_flits; i++) {
             m_net_ptr->increment_injected_flits(vnet);
-            flit *fl = new flit(i, vc, vnet, route, num_flits, new_msg_ptr,
+            flit *fl = new flit(packet_id,
+                i, vc, vnet, route, num_flits, new_msg_ptr,
                 m_net_ptr->MessageSizeType_to_int(
                 net_msg_ptr->getMessageSize()),
                 oPort->bitWidth(), curTick());
diff --git a/src/mem/ruby/network/garnet/NetworkInterface.hh b/src/mem/ruby/network/garnet/NetworkInterface.hh
index b5affa0..b52c7f8 100644
--- a/src/mem/ruby/network/garnet/NetworkInterface.hh
+++ b/src/mem/ruby/network/garnet/NetworkInterface.hh
@@ -291,6 +291,8 @@
     std::vector<MessageBuffer *> outNode_ptr;
     // When a vc stays busy for a long time, it indicates a deadlock
     std::vector<int> vc_busy_counter;
+    // static vairable for packet id allocation
+    static int m_next_packet_id;

     void checkStallQueue();
     bool flitisizeMessage(MsgPtr msg_ptr, int vnet);
diff --git a/src/mem/ruby/network/garnet/flit.cc b/src/mem/ruby/network/garnet/flit.cc
index 6e6ed5f..b65297c 100644
--- a/src/mem/ruby/network/garnet/flit.cc
+++ b/src/mem/ruby/network/garnet/flit.cc
@@ -43,7 +43,7 @@
 {

 // Constructor for the flit
-flit::flit(int id, int  vc, int vnet, RouteInfo route, int size,
+flit::flit(int packet_id, int id, int vc, int vnet, RouteInfo route, int size,
     MsgPtr msg_ptr, int MsgSize, uint32_t bWidth, Tick curTime)
 {
     m_size = size;
@@ -51,6 +51,7 @@
     m_enqueue_time = curTime;
     m_dequeue_time = curTime;
     m_time = curTime;
+    m_packet_id = id;
     m_id = id;
     m_vnet = vnet;
     m_vc = vc;
@@ -82,7 +83,7 @@
     int new_size = (int)divCeil((float)msgSize, (float)bWidth);
     assert(new_id < new_size);

-    flit *fl = new flit(new_id, m_vc, m_vnet, m_route,
+    flit *fl = new flit(m_packet_id, new_id, m_vc, m_vnet, m_route,
                     new_size, m_msg_ptr, msgSize, bWidth, m_time);
     fl->set_enqueue_time(m_enqueue_time);
     fl->set_src_delay(src_delay);
@@ -97,7 +98,7 @@
     int new_size = (int)divCeil((float)msgSize, (float)bWidth);
     assert(new_id < new_size);

-    flit *fl = new flit(new_id, m_vc, m_vnet, m_route,
+    flit *fl = new flit(m_packet_id, new_id, m_vc, m_vnet, m_route,
                     new_size, m_msg_ptr, msgSize, bWidth, m_time);
     fl->set_enqueue_time(m_enqueue_time);
     fl->set_src_delay(src_delay);
@@ -109,6 +110,7 @@
 flit::print(std::ostream& out) const
 {
     out << "[flit:: ";
+    out << "PacketId=" << m_packet_id << " ";
     out << "Id=" << m_id << " ";
     out << "Type=" << m_type << " ";
     out << "Size=" << m_size << " ";
diff --git a/src/mem/ruby/network/garnet/flit.hh b/src/mem/ruby/network/garnet/flit.hh
index 8814d3c..a84dc57 100644
--- a/src/mem/ruby/network/garnet/flit.hh
+++ b/src/mem/ruby/network/garnet/flit.hh
@@ -51,7 +51,7 @@
 {
   public:
     flit() {}
-    flit(int id, int vc, int vnet, RouteInfo route, int size,
+ flit(int packet_id, int id, int vc, int vnet, RouteInfo route, int size,
          MsgPtr msg_ptr, int MsgSize, uint32_t bWidth, Tick curTime);

     virtual ~flit(){};
@@ -60,6 +60,7 @@
     int get_size() { return m_size; }
     Tick get_enqueue_time() { return m_enqueue_time; }
     Tick get_dequeue_time() { return m_dequeue_time; }
+    int getPacketID() { return m_packet_id; }
     int get_id() { return m_id; }
     Tick get_time() { return m_time; }
     int get_vnet() { return m_vnet; }
@@ -114,6 +115,7 @@
     uint32_t m_width;
     int msgSize;
   protected:
+    int m_packet_id;
     int m_id;
     int m_vnet;
     int m_vc;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/58855
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I8d5a66751691e285178c1189560a655be64eeebf
Gerrit-Change-Number: 58855
Gerrit-PatchSet: 1
Gerrit-Owner: Sungkeun Kim <ksungkeu...@tamu.edu>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to