Go to the documentation of this file.
52 #ifndef __MEM_RUBY_NETWORK_NETWORK_HH__
53 #define __MEM_RUBY_NETWORK_NETWORK_HH__
57 #include <unordered_map>
68 #include "mem/ruby/protocol/LinkDirection.hh"
69 #include "mem/ruby/protocol/MessageSizeType.hh"
70 #include "params/RubyNetwork.hh"
99 int network_num, std::string vnet_type);
111 virtual void print(std::ostream& out)
const = 0;
119 {
fatal(
"Functional read not implemented.\n"); }
121 {
fatal(
"Functional write not implemented.\n"); }
168 std::unordered_multimap<MachineType, AddrMapNode>
addrMap;
183 #endif // __MEM_RUBY_NETWORK_NETWORK_HH__
#define fatal(...)
This implements a cprintf based fatal() function.
std::vector< std::string > m_vnet_type_names
virtual void setFromNetQueue(NodeID global_id, bool ordered, int netNumber, std::string vnet_type, MessageBuffer *b)
std::ostream & operator<<(std::ostream &out, const Network &obj)
const PortID InvalidPortID
virtual void collateStats()=0
std::vector< std::vector< MessageBuffer * > > m_toNetQueues
NodeID addressToNodeID(Addr addr, MachineType mtype)
Map an address to the correct NodeID.
virtual void makeExtOutLink(SwitchID src, NodeID dest, BasicLink *link, std::vector< NetDest > &routing_table_entry)=0
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
static uint32_t m_virtual_networks
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
virtual void makeExtInLink(NodeID src, SwitchID dest, BasicLink *link, std::vector< NetDest > &routing_table_entry)=0
std::unordered_map< NodeID, NodeID > globalToLocalMap
NodeID getLocalNodeID(NodeID global_id) const
static RubyDummyPort & instance()
static uint32_t m_control_msg_size
std::unordered_multimap< MachineType, AddrMapNode > addrMap
Ports are used to interface objects to each other.
std::vector< bool > m_ordered
static uint32_t MessageSizeType_to_int(MessageSizeType size_type)
void setToNetQueue(NodeID global_id, bool ordered, int netNumber, std::string vnet_type, MessageBuffer *b)
static uint32_t m_data_msg_size
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
static uint32_t getNumberOfVirtualNetworks()
std::vector< std::vector< MessageBuffer * > > m_fromNetQueues
const Params * params() const
Network & operator=(const Network &obj)
virtual void makeInternalLink(SwitchID src, SwitchID dest, BasicLink *link, std::vector< NetDest > &routing_table_entry, PortDirection src_outport, PortDirection dst_inport)=0
const SimObjectParams * _params
Cached copy of the object parameters.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
std::string PortDirection
virtual void checkNetworkAllocation(NodeID local_id, bool ordered, int network_num, std::string vnet_type)
Port & getPort(const std::string &, PortID idx=InvalidPortID) override
Get a port with a given name and index.
virtual bool functionalRead(Packet *pkt)
virtual void print(std::ostream &out) const =0
Topology * m_topology_ptr
virtual uint32_t functionalWrite(Packet *pkt)
Generated on Wed Sep 30 2020 14:02:13 for gem5 by doxygen 1.8.17