62 const NetDest& routing_table_entry,
81 if (
params().adaptive_routing) {
90 int out_queue_length = 0;
92 for (
auto buffer : link->m_out_buffers) {
93 out_queue_length += buffer->getSize(current_time);
112 assert(out_links.size() == 0);
114 const NetDest &dst = link->m_routing_entry;
119 out_links.emplace_back(msg_dsts.
AND(dst), link->m_link_id);
Tick clockEdge(Cycles cycles=Cycles(0)) const
Determine the tick when a cycle begins, by default the current one, but the argument also enables the...
virtual const NetDest & getDestination() const
NetDest AND(const NetDest &andNetDest) const
void removeNetDest(const NetDest &netDest)
bool intersectionIsNotEmpty(const NetDest &other_netDest) const
WeightBased(const Params &p)
void findRoute(const Message &msg, std::vector< RouteInfo > &out_links) const
std::vector< std::unique_ptr< LinkInfo > > m_links
void route(const Message &msg, int vnet, bool deterministic, std::vector< RouteInfo > &out_links) override
void addOutPort(LinkID link_id, const std::vector< MessageBuffer * > &m_out_buffer, const NetDest &routing_table_entry, const PortDirection &direction, int link_weight) override
std::enable_if_t< std::is_integral_v< T >, T > random()
Use the SFINAE idiom to choose an implementation based on whether the type is integral or floating po...
#define gem5_assert(cond,...)
The assert macro will function like a normal assert, but will use panic instead of straight abort().
const Params & params() const
std::string PortDirection
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Tick
Tick count type.