76 Tick arrival_time = current_time + delta;
77 assert(arrival_time > current_time);
79 Message* msg_ptr = message.get();
84 scheduleEventAbsolute(arrival_time);
86 panic(
"No Consumer for WireBuffer! %s\n", *
this);
103 assert(msg_ptr != NULL);
118 Tick future_time = current_time + recycle_latency;
119 node->setLastEnqueueTime(future_time);
125 scheduleEventAbsolute(future_time);
146 RubyWireBufferParams::create()
std::shared_ptr< Message > MsgPtr
void enqueue(MsgPtr message, Tick current_time, Tick delta)
ostream & operator<<(ostream &out, const WireBuffer &obj)
RubyWireBufferParams Params
void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
uint64_t Tick
Tick count type.
void recycle(Tick current_time, Tick recycle_latency)
void dequeue(Tick current_time)
Consumer * m_consumer_ptr
WireBuffer(const Params *p)
void print(std::ostream &out) const
bool isReady(Tick current_time)
std::vector< MsgPtr > m_message_queue
Abstract superclass for simulation objects.
void setLastEnqueueTime(const Tick &time)