Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/18169

Change subject: python: Generalize the dot_writer to handle non Master/Slave roles.
......................................................................

python: Generalize the dot_writer to handle non Master/Slave roles.

Change-Id: I6d93c28e754c0cacacdd5e8885c45bc861135e94
---
M src/python/m5/util/dot_writer.py
1 file changed, 17 insertions(+), 5 deletions(-)



diff --git a/src/python/m5/util/dot_writer.py b/src/python/m5/util/dot_writer.py
index 730f0ed..0fa7f01 100644
--- a/src/python/m5/util/dot_writer.py
+++ b/src/python/m5/util/dot_writer.py
@@ -126,11 +126,23 @@
     for child in simnode_children(simNode):
         dot_create_edges(child, callgraph)

-def dot_add_edge(simNode, callgraph, full_port_name, peerPort):
-    if peerPort.role == "MASTER":
-        peer_port_name = re.sub('\.', '_', peerPort.peer.simobj.path() \
-                + "." + peerPort.peer.name)
-        callgraph.add_edge(pydot.Edge(full_port_name, peer_port_name))
+def dot_add_edge(simNode, callgraph, full_port_name, port):
+    peer = port.peer
+    full_peer_path = re.sub('\.', '_', peer.simobj.path())
+    full_peer_port_name = full_peer_path + "_" + peer.name
+
+    # Each edge is encountered twice, once for each peer. We only want one
+ # edge, so we'll arbitrarily chose which peer "wins" based on their names.
+    if full_peer_port_name < full_port_name:
+        dirType = {
+            (False, False) : 'both',
+            (True,  False) : 'forward',
+            (False, True)  : 'back',
+            (True,  True)  : 'none'
+        }[ (port.is_source,
+            peer.is_source) ]
+        edge = pydot.Edge(full_port_name, full_peer_port_name, dir=dirType)
+        callgraph.add_edge(edge)

 def dot_create_cluster(simNode, full_path, label):
     # get the parameter values of the node and use them as a tooltip

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

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I6d93c28e754c0cacacdd5e8885c45bc861135e94
Gerrit-Change-Number: 18169
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to