Sungkeun Kim has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/58857 )
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: I1138484807ef127a3240b46154e29ae77678f1e9
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/58857
Reviewed-by: Srikant Bharadwaj <srikant.bharad...@amd.com>
Maintainer: Srikant Bharadwaj <srikant.bharad...@amd.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/mem/ruby/network/garnet/Credit.cc
M src/mem/ruby/network/garnet/GarnetNetwork.cc
M src/mem/ruby/network/garnet/GarnetNetwork.hh
M src/mem/ruby/network/garnet/NetworkInterface.cc
M src/mem/ruby/network/garnet/flit.cc
M src/mem/ruby/network/garnet/flit.hh
6 files changed, 35 insertions(+), 6 deletions(-)
Approvals:
Srikant Bharadwaj: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
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..01b2473 100644
--- a/src/mem/ruby/network/garnet/GarnetNetwork.cc
+++ b/src/mem/ruby/network/garnet/GarnetNetwork.cc
@@ -70,6 +70,7 @@
m_buffers_per_data_vc = p.buffers_per_data_vc;
m_buffers_per_ctrl_vc = p.buffers_per_ctrl_vc;
m_routing_algorithm = p.routing_algorithm;
+ m_next_packet_id = 0;
m_enable_fault_model = p.enable_fault_model;
if (m_enable_fault_model)
diff --git a/src/mem/ruby/network/garnet/GarnetNetwork.hh
b/src/mem/ruby/network/garnet/GarnetNetwork.hh
index 912445b..d18caae 100644
--- a/src/mem/ruby/network/garnet/GarnetNetwork.hh
+++ b/src/mem/ruby/network/garnet/GarnetNetwork.hh
@@ -153,6 +153,7 @@
}
void update_traffic_distribution(RouteInfo route);
+ int getNextPacketID() { return m_next_packet_id++; }
protected:
// Configuration
@@ -209,6 +210,7 @@
std::vector<NetworkLink *> m_networklinks; // All flit links in the
network
std::vector<CreditLink *> m_creditlinks; // All credit links in the
network
std::vector<NetworkInterface *> m_nis; // All NI's in Network
+ int m_next_packet_id; // static vairable for packet id allocation
};
inline std::ostream&
diff --git a/src/mem/ruby/network/garnet/NetworkInterface.cc
b/src/mem/ruby/network/garnet/NetworkInterface.cc
index a33102a..1154718 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);
+ int packet_id = m_net_ptr->getNextPacketID();
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/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/+/58857
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: I1138484807ef127a3240b46154e29ae77678f1e9
Gerrit-Change-Number: 58857
Gerrit-PatchSet: 7
Gerrit-Owner: Sungkeun Kim <ksungkeu...@tamu.edu>
Gerrit-Reviewer: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: Marjan Fariborz <mfarib...@ucdavis.edu>
Gerrit-Reviewer: Srikant Bharadwaj <srikant.bharad...@amd.com>
Gerrit-Reviewer: Sungkeun Kim <ksungkeu...@tamu.edu>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
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