32 #ifndef __MEM_RUBY_NETWORK_GARNET2_0_NETWORKINTERFACE_HH__ 33 #define __MEM_RUBY_NETWORK_GARNET2_0_NETWORKINTERFACE_HH__ 45 #include "params/GarnetNetworkInterface.hh" 53 typedef GarnetNetworkInterfaceParams
Params;
68 void print(std::ostream& out)
const;
120 #endif // __MEM_RUBY_NETWORK_GARNET2_0_NETWORKINTERFACE_HH__ std::vector< int > m_stall_count
void incrementStats(flit *t_flit)
~NetworkInterface()=default
std::vector< Cycles > m_ni_out_vcs_enqueue_time
std::shared_ptr< Message > MsgPtr
void sendCredit(flit *t_flit, bool is_free)
flitBuffer outCreditQueue
GarnetNetworkInterfaceParams Params
void addOutPort(NetworkLink *out_link, CreditLink *credit_link, SwitchID router_id)
int calculateVC(int vnet)
void scheduleOutputLink()
This function looks at the NI buffers if some buffer has flits which are ready to traverse the link i...
std::vector< int > vc_busy_counter
std::deque< flit * > m_stall_queue
flitBuffer outFlitQueue
Used to model link contention.
void addInPort(NetworkLink *in_link, CreditLink *credit_link)
NetworkInterface(const Params *p)
void addNode(std::vector< MessageBuffer *> &inNode, std::vector< MessageBuffer *> &outNode)
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
uint32_t functionalWrite(Packet *)
bool flitisizeMessage(MsgPtr msg_ptr, int vnet)
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
CreditLink * inCreditLink
void print(std::ostream &out) const
std::vector< flitBuffer > niOutVcs
std::vector< int > m_vc_allocator
CreditLink * outCreditLink
std::vector< MessageBuffer * > outNode_ptr
std::vector< MessageBuffer * > inNode_ptr
void init_net_ptr(GarnetNetwork *net_ptr)
std::vector< OutVcState > outVcState
const int m_virtual_networks
GarnetNetwork * m_net_ptr
void init()
init() is called after all C++ SimObjects have been created and all ports are connected.