diff options
author | Jason Power <powerjg@cs.wisc.edu> | 2012-08-10 13:50:42 -0500 |
---|---|---|
committer | Jason Power <powerjg@cs.wisc.edu> | 2012-08-10 13:50:42 -0500 |
commit | 11411cc9c70fb532798c5c8fb287ad658111ff15 (patch) | |
tree | 5ac6030e71ed22cfb57ce927ad50cf76e44ba2ea /configs/topologies | |
parent | 706e84f2b8553baba020560f4a83550f05b80630 (diff) | |
download | gem5-11411cc9c70fb532798c5c8fb287ad658111ff15.tar.xz |
Ruby: Clean up topology changes
This patch moves instantiateTopology into Ruby.py and removes the
mem/ruby/network/topologies directory. It also adds some extra inheritance to
the topologies to clean up some issues in the existing topologies.
Diffstat (limited to 'configs/topologies')
-rw-r--r-- | configs/topologies/BaseTopology.py | 23 | ||||
-rw-r--r-- | configs/topologies/Cluster.py | 3 | ||||
-rw-r--r-- | configs/topologies/Crossbar.py | 8 | ||||
-rw-r--r-- | configs/topologies/Mesh.py | 4 | ||||
-rw-r--r-- | configs/topologies/MeshDirCorners.py | 4 | ||||
-rw-r--r-- | configs/topologies/Pt2Pt.py | 4 | ||||
-rw-r--r-- | configs/topologies/Torus.py | 4 |
7 files changed, 32 insertions, 18 deletions
diff --git a/configs/topologies/BaseTopology.py b/configs/topologies/BaseTopology.py index 114a29f19..2390bb5be 100644 --- a/configs/topologies/BaseTopology.py +++ b/configs/topologies/BaseTopology.py @@ -26,6 +26,7 @@ # # Authors: Jason Power +import m5 class BaseTopology(object): description = "BaseTopology" @@ -38,14 +39,28 @@ class BaseTopology(object): """ def makeTopology(self, options, IntLink, ExtLink, Router): - """ Called from src/mem/ruby/network/topologies/TopologyCreatory.py + """ Called from configs/ruby/Ruby.py The return value is ( list(Router), list(IntLink), list(ExtLink)) The API of this function cannot change when subclassing!! Any additional information needed to create this topology should be passed into the constructor when it's instantiated in configs/ruby/<protocol>.py """ - print "BaseTopology should have been overridden in a sub class!!" - import sys - sys.exit(1) + m5.util.fatal("BaseTopology should have been overridden!!") +class SimpleTopology(BaseTopology): + """ Provides methods needed for the topologies included in Ruby before + topology changes. + These topologies are "simple" in the sense that they only use a flat + list of controllers to construct the topology. + """ + description = "SimpleTopology" + + def __init__(self, controllers): + self.nodes = controllers + + def addController(self, controller): + self.nodes.append(controller) + + def __len__(self): + return len(self.nodes) diff --git a/configs/topologies/Cluster.py b/configs/topologies/Cluster.py index e5c6dac0e..93bd0d946 100644 --- a/configs/topologies/Cluster.py +++ b/configs/topologies/Cluster.py @@ -115,3 +115,6 @@ class Cluster(BaseTopology): return routers, int_links, ext_links + def __len__(self): + return len([i for i in self.nodes if type(i) != Cluster]) + \ + sum([len(i) for i in self.nodes if type(i) == Cluster]) diff --git a/configs/topologies/Crossbar.py b/configs/topologies/Crossbar.py index e66492922..c85b8e8eb 100644 --- a/configs/topologies/Crossbar.py +++ b/configs/topologies/Crossbar.py @@ -29,14 +29,11 @@ from m5.params import * from m5.objects import * -from BaseTopology import BaseTopology +from BaseTopology import SimpleTopology -class Crossbar(BaseTopology): +class Crossbar(SimpleTopology): description='Crossbar' - def __init__(self, controllers): - self.nodes = controllers - def makeTopology(self, options, IntLink, ExtLink, Router): # Create an individual router for each controller plus one more for the # centralized crossbar. The large numbers of routers are needed because @@ -53,4 +50,3 @@ class Crossbar(BaseTopology): for i in range(len(self.nodes))] return routers, int_links, ext_links - diff --git a/configs/topologies/Mesh.py b/configs/topologies/Mesh.py index b1f2e6751..81d87f5e5 100644 --- a/configs/topologies/Mesh.py +++ b/configs/topologies/Mesh.py @@ -29,9 +29,9 @@ from m5.params import * from m5.objects import * -from BaseTopology import BaseTopology +from BaseTopology import SimpleTopology -class Mesh(BaseTopology): +class Mesh(SimpleTopology): description='Mesh' def __init__(self, controllers): diff --git a/configs/topologies/MeshDirCorners.py b/configs/topologies/MeshDirCorners.py index 23bcde5a6..13b4acc19 100644 --- a/configs/topologies/MeshDirCorners.py +++ b/configs/topologies/MeshDirCorners.py @@ -29,9 +29,9 @@ from m5.params import * from m5.objects import * -from BaseTopology import BaseTopology +from BaseTopology import SimpleTopology -class MeshDirCorners(BaseTopology): +class MeshDirCorners(SimpleTopology): description='MeshDirCorners' def __init__(self, controllers): diff --git a/configs/topologies/Pt2Pt.py b/configs/topologies/Pt2Pt.py index 360811272..74ff116ff 100644 --- a/configs/topologies/Pt2Pt.py +++ b/configs/topologies/Pt2Pt.py @@ -31,9 +31,9 @@ from m5.params import * from m5.objects import * -from BaseTopology import BaseTopology +from BaseTopology import SimpleTopology -class Pt2Pt(BaseTopology): +class Pt2Pt(SimpleTopology): description='Pt2Pt' def __init__(self, controllers): diff --git a/configs/topologies/Torus.py b/configs/topologies/Torus.py index 7fbcbf55b..9869465ae 100644 --- a/configs/topologies/Torus.py +++ b/configs/topologies/Torus.py @@ -31,9 +31,9 @@ from m5.params import * from m5.objects import * -from BaseTopology import BaseTopology +from BaseTopology import SimpleTopology -class Torus(BaseTopology): +class Torus(SimpleTopology): description='Torus' def __init__(self, controllers): |