diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/Network.hh --- a/src/mem/ruby/network/Network.hh Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/Network.hh Sun Aug 09 13:06:52 2015 -0500 @@ -114,8 +114,6 @@ // vector of queues from the components std::vector > m_toNetQueues; std::vector > m_fromNetQueues; - - std::vector m_in_use; std::vector m_ordered; private: diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/Network.cc --- a/src/mem/ruby/network/Network.cc Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/Network.cc Sun Aug 09 13:06:52 2015 -0500 @@ -57,11 +57,9 @@ // Queues that are feeding the protocol m_fromNetQueues.resize(m_nodes); - m_in_use.resize(m_virtual_networks); m_ordered.resize(m_virtual_networks); for (int i = 0; i < m_virtual_networks; i++) { - m_in_use[i] = false; m_ordered[i] = false; } diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/garnet/BaseGarnetNetwork.hh --- a/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh Sun Aug 09 13:06:52 2015 -0500 @@ -48,9 +48,9 @@ BaseGarnetNetwork(const Params *p); void init(); - int getNiFlitSize() { return m_ni_flit_size; } - int getVCsPerVnet() { return m_vcs_per_vnet; } - bool isFaultModelEnabled() { return m_enable_fault_model; } + int getNiFlitSize() const { return m_ni_flit_size; } + int getVCsPerVnet() const { return m_vcs_per_vnet; } + bool isFaultModelEnabled() const { return m_enable_fault_model; } FaultModel* fault_model; void increment_injected_flits(int vnet) { m_flits_injected[vnet]++; } @@ -74,8 +74,7 @@ void setFromNetQueue(NodeID id, bool ordered, int network_num, std::string vnet_type, MessageBuffer *b); - bool isVNetOrdered(int vnet) { return m_ordered[vnet]; } - bool validVirtualNetwork(int vnet) { return m_in_use[vnet]; } + bool isVNetOrdered(int vnet) const { return m_ordered[vnet]; } virtual void checkNetworkAllocation(NodeID id, bool ordered, int network_num, std::string vnet_type) = 0; diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc Sun Aug 09 13:06:52 2015 -0500 @@ -189,8 +189,7 @@ void GarnetNetwork_d::checkNetworkAllocation(NodeID id, bool ordered, - int network_num, - string vnet_type) + int network_num, string vnet_type) { assert(id < m_nodes); assert(network_num < m_virtual_networks); @@ -198,7 +197,6 @@ if (ordered) { m_ordered[network_num] = true; } - m_in_use[network_num] = true; if (vnet_type == "response") m_vnet_type[network_num] = DATA_VNET_; // carries data (and ctrl) packets diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc Sun Aug 09 13:06:52 2015 -0500 @@ -95,14 +95,9 @@ // Select next round robin vc candidate within valid vnet int next_round_robin_invc = invc; - do { - next_round_robin_invc++; - - if (next_round_robin_invc >= m_num_vcs) - next_round_robin_invc = 0; - } while (!((m_router->get_net_ptr())->validVirtualNetwork( - get_vnet(next_round_robin_invc)))); - + next_round_robin_invc++; + if (next_round_robin_invc >= m_num_vcs) + next_round_robin_invc = 0; m_round_robin_inport[inport] = next_round_robin_invc; for (int invc_iter = 0; invc_iter < m_num_vcs; invc_iter++) { @@ -110,10 +105,6 @@ if (invc >= m_num_vcs) invc = 0; - if (!((m_router->get_net_ptr())->validVirtualNetwork( - get_vnet(invc)))) - continue; - if (m_input_unit[inport]->need_stage(invc, ACTIVE_, SA_, m_router->clockEdge()) && m_input_unit[inport]->has_credits(invc)) { diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc Sun Aug 09 13:06:52 2015 -0500 @@ -180,10 +180,6 @@ { for (int inport_iter = 0; inport_iter < m_num_inports; inport_iter++) { for (int invc_iter = 0; invc_iter < m_num_vcs; invc_iter++) { - if (!((m_router->get_net_ptr())->validVirtualNetwork( - get_vnet(invc_iter)))) - continue; - if (m_input_unit[inport_iter]->need_stage(invc_iter, VC_AB_, VA_, m_router->clockEdge())) { if (!is_invc_candidate(inport_iter, invc_iter)) diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc Sun Aug 09 13:06:52 2015 -0500 @@ -153,7 +153,6 @@ if (ordered) { m_ordered[network_num] = true; } - m_in_use[network_num] = true; } /* diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/garnet/flexible-pipeline/Router.hh --- a/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh Sun Aug 09 13:06:52 2015 -0500 @@ -65,7 +65,6 @@ void grant_vc(int out_port, int vc, Tick grant_time); void release_vc(int out_port, int vc, Tick release_time); void vc_arbitrate(); - int get_vnet(int vc); void printToStream(std::ostream& out) const; @@ -104,6 +103,8 @@ void checkReschedule(); void check_arbiter_reschedule(); void scheduleOutputLinks(); + int get_vnet(int vc) const; + int get_next_round_robin_vc(int vc) const; }; #endif // __MEM_RUBY_NETWORK_GARNET_FLEXIBLE_PIPELINE_ROUTER_HH__ diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/garnet/flexible-pipeline/Router.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc Sun Aug 09 13:06:52 2015 -0500 @@ -159,27 +159,13 @@ if (inport >= m_in_link.size()) inport = 0; int invc = m_round_robin_invc[inport]; - - int next_round_robin_invc = invc; - do { - next_round_robin_invc++; - - if (next_round_robin_invc >= m_num_vcs) - next_round_robin_invc = 0; - - } while (!(m_net_ptr->validVirtualNetwork( - get_vnet(next_round_robin_invc)))); - - m_round_robin_invc[inport] = next_round_robin_invc; + m_round_robin_invc[inport] = get_next_round_robin_vc(invc); for (int vc_iter = 0; vc_iter < m_num_vcs; vc_iter++) { invc++; if (invc >= m_num_vcs) invc = 0; - if (!(m_net_ptr->validVirtualNetwork(get_vnet(invc)))) - continue; - InVcState *in_vc_state = m_in_vc_state[inport][invc]; Tick curTime = clockEdge(); @@ -338,17 +324,7 @@ { for (int port = 0; port < m_out_link.size(); port++) { int vc_tolookat = m_vc_round_robin[port]; - - int next_round_robin_vc_tolookat = vc_tolookat; - do { - next_round_robin_vc_tolookat++; - - if (next_round_robin_vc_tolookat == m_num_vcs) - next_round_robin_vc_tolookat = 0; - } while (!(m_net_ptr->validVirtualNetwork( - get_vnet(next_round_robin_vc_tolookat)))); - - m_vc_round_robin[port] = next_round_robin_vc_tolookat; + m_vc_round_robin[port] = get_next_round_robin_vc(vc_tolookat); for (int i = 0; i < m_num_vcs; i++) { vc_tolookat++; @@ -377,13 +353,22 @@ } int -Router::get_vnet(int vc) +Router::get_vnet(int vc) const { int vnet = vc/m_vc_per_vnet; assert(vnet < m_virtual_networks); return vnet; } +int +Router::get_next_round_robin_vc(int vc) const +{ + vc++; + if (vc == m_num_vcs) + vc = 0; + return vc; +} + void Router::checkReschedule() { diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/simple/SimpleNetwork.hh --- a/src/mem/ruby/network/simple/SimpleNetwork.hh Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/simple/SimpleNetwork.hh Sun Aug 09 13:06:52 2015 -0500 @@ -62,8 +62,7 @@ void setFromNetQueue(NodeID id, bool ordered, int network_num, std::string vnet_type, MessageBuffer *b); - bool isVNetOrdered(int vnet) { return m_ordered[vnet]; } - bool validVirtualNetwork(int vnet) { return m_in_use[vnet]; } + bool isVNetOrdered(int vnet) const { return m_ordered[vnet]; } // Methods used by Topology to setup the network void makeOutLink(SwitchID src, NodeID dest, BasicLink* link, diff -r 89d6736ffa8b -r 7d7ed2b7ecf6 src/mem/ruby/network/simple/SimpleNetwork.cc --- a/src/mem/ruby/network/simple/SimpleNetwork.cc Sun Aug 09 13:06:35 2015 -0500 +++ b/src/mem/ruby/network/simple/SimpleNetwork.cc Sun Aug 09 13:06:52 2015 -0500 @@ -148,7 +148,6 @@ if (ordered) { m_ordered[network_num] = true; } - m_in_use[network_num] = true; } void