34#include "debug/RubyNetwork.hh"
48 :
Consumer(router), m_router(router), m_id(
id), m_direction(direction),
49 m_vc_per_vnet(m_router->get_vc_per_vnet())
61 for (
int i=0;
i < m_num_vcs;
i++) {
83 DPRINTF(RubyNetwork,
"Router[%d] Consuming:%s Width: %d Flit:%s\n",
120 if (pipe_stages == 1) {
125 assert(pipe_stages > 1);
147 DPRINTF(RubyNetwork,
"Router[%d]: Sending a credit vc:%d free:%d to %s\n",
149 Credit *t_credit =
new Credit(in_vc, free_signal, curTime);
159 if (virtual_channel.functionalRead(pkt,
mask))
169 uint32_t num_functional_writes = 0;
171 num_functional_writes += virtual_channel.functionalWrite(pkt);
174 return num_functional_writes;
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...
Cycles is a wrapper class for representing cycle counts, i.e.
virtual std::string name() const
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void scheduleEventAbsolute(Tick timeAbs)
bool isReady(Tick curTime)
int route_compute(RouteInfo route, int inport, PortDirection direction)
void schedule_wakeup(Cycles time)
void advance_stage(flit_stage t_stage, Tick newTime)
std::string PortDirection
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Tick curTick()
The universal simulation clock.
uint64_t Tick
Tick count type.