From: Nilay Vaish Date: Fri, 22 Mar 2013 20:53:22 +0000 (-0500) Subject: ruby: network: move routers from topology to network X-Git-Tag: stable_2013_06_16~50 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2d501276429ab674c146a86802e62538892fc500;p=gem5.git ruby: network: move routers from topology to network --- diff --git a/configs/ruby/Ruby.py b/configs/ruby/Ruby.py index 88a0acd49..6859b044e 100644 --- a/configs/ruby/Ruby.py +++ b/configs/ruby/Ruby.py @@ -149,18 +149,17 @@ def create_system(options, system, piobus = None, dma_ports = []): routers, int_links, ext_links = topology.makeTopology(options, IntLinkClass, ExtLinkClass, RouterClass) - net_topology.routers = routers + net_topology.num_routers = len(routers) net_topology.int_links = int_links net_topology.ext_links = ext_links + network = NetworkClass(ruby_system = ruby, topology = net_topology, + routers = routers) if options.network_fault_model: assert(options.garnet_network == "fixed") - fault_model = FaultModel() - network = NetworkClass(ruby_system = ruby, topology = net_topology,\ - enable_fault_model=True, fault_model = fault_model) - else: - network = NetworkClass(ruby_system = ruby, topology = net_topology) + network.enable_fault_model = True + network.fault_model = FaultModel() # # Loop through the directory controlers. diff --git a/src/mem/ruby/network/Network.py b/src/mem/ruby/network/Network.py index a1313a841..1d2e8ed9d 100644 --- a/src/mem/ruby/network/Network.py +++ b/src/mem/ruby/network/Network.py @@ -37,11 +37,9 @@ class Topology(SimObject): cxx_header = "mem/ruby/network/Topology.hh" description = Param.String("Not Specified", "the name of the imported topology module") + num_routers = Param.UInt32("Number of routers in the network") ext_links = VectorParam.BasicExtLink("Links to external nodes") int_links = VectorParam.BasicIntLink("Links between internal nodes") - routers = VectorParam.BasicRouter("Network routers") - print_config = Param.Bool(False, - "display topology config in the stats file") class RubyNetwork(ClockedObject): type = 'RubyNetwork' @@ -52,3 +50,4 @@ class RubyNetwork(ClockedObject): topology = Param.Topology(""); control_msg_size = Param.Int(8, ""); ruby_system = Param.RubySystem(""); + routers = VectorParam.BasicRouter("Network routers") diff --git a/src/mem/ruby/network/Topology.cc b/src/mem/ruby/network/Topology.cc index e80b76d81..58114d147 100644 --- a/src/mem/ruby/network/Topology.cc +++ b/src/mem/ruby/network/Topology.cc @@ -61,7 +61,7 @@ NetDest shortest_path_to_node(SwitchID src, SwitchID next, Topology::Topology(const Params *p) : SimObject(p) { - m_number_of_switches = p->routers.size(); + m_number_of_switches = p->num_routers; // initialize component latencies record m_component_latencies.resize(0); diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc index f6fcc2514..c4965af17 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc @@ -59,9 +59,8 @@ GarnetNetwork_d::GarnetNetwork_d(const Params *p) } // record the routers - for (vector::const_iterator i = - m_topology_ptr->params()->routers.begin(); - i != m_topology_ptr->params()->routers.end(); ++i) { + for (vector::const_iterator i = p->routers.begin(); + i != p->routers.end(); ++i) { Router_d* router = safe_cast(*i); m_router_ptr_vector.push_back(router); } @@ -115,7 +114,6 @@ GarnetNetwork_d::init() router->printFaultVector(cout); } } - } GarnetNetwork_d::~GarnetNetwork_d() diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc index a60d23457..ed75a26d1 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc @@ -53,9 +53,8 @@ GarnetNetwork::GarnetNetwork(const Params *p) m_number_of_pipe_stages = p->number_of_pipe_stages; // record the routers - for (vector::const_iterator i = - m_topology_ptr->params()->routers.begin(); - i != m_topology_ptr->params()->routers.end(); ++i) { + for (vector::const_iterator i = p->routers.begin(); + i != p->routers.end(); ++i) { Router* router = safe_cast(*i); m_router_ptr_vector.push_back(router); } diff --git a/src/mem/ruby/network/simple/SimpleNetwork.cc b/src/mem/ruby/network/simple/SimpleNetwork.cc index 9a8201a05..a51add4a5 100644 --- a/src/mem/ruby/network/simple/SimpleNetwork.cc +++ b/src/mem/ruby/network/simple/SimpleNetwork.cc @@ -80,9 +80,8 @@ SimpleNetwork::SimpleNetwork(const Params *p) } // record the routers - for (vector::const_iterator i = - m_topology_ptr->params()->routers.begin(); - i != m_topology_ptr->params()->routers.end(); ++i) { + for (vector::const_iterator i = p->routers.begin(); + i != p->routers.end(); ++i) { Switch* s = safe_cast(*i); m_switch_ptr_vector.push_back(s); s->init_net_ptr(this);