35 _queue = std::priority_queue<Event>();
51 #ifdef ORCA_BASE_CHECK_FOR_EMPTY_QUEUE 53 throw std::runtime_error(
"Simulation queue is empty");
83 int queue_size =
static_cast<int>(
_queue.size());
89 Event tmp_queue[queue_size];
93 for (
int i = 0; i < queue_size; i++) {
94 tmp_queue[i] =
_queue.top();
95 tmp_queue[i].
time -= discount;
101 for (
int i = 0; i < queue_size; i++)
102 _queue.push(tmp_queue[i]);
123 #ifdef URSA_ZERO_TIME_CHECKING 125 throw std::runtime_error(
"Simulator: unable to schedule " 127 "Events must be scheduled to run with time > 0.");
SimulationTime Run(SimulationTime time=100000)
Executes the simulator until the internal clock reaches <time> cycles.
SimulationTime GetGlobalTime()
Gets the current global time.
This class models a discrete event.
std::priority_queue< Event > _queue
queue that stores all events
SimulationTime _timeout
max time the simulation can reach
SimulationTime NextEpoch()
Resets the simulation clock and advance simulation to the next epoch.
SimulationTime _globalTime
The global clock, stores current simulation time.
std::string GetName()
Getter method for the <_name> field.
SimulationTime _epochs
number of cycles to simulate before reseting the queue
This class implements an event queue to schedule and execute hardware modules.
virtual SimulationTime Run()=0
Method which is called by the simulator when during the execution of the TimedModel.
void Schedule(const Event &e)
Adds an event to the simulation queue.
SimulationTime time
Point in time when the event will trigger.
SimulationTime GetEpochs()
Gets the number of cycles to simulate before reseting the simulation clock.
TimedModel * timedModel
Model whose activation function will be called once the event triggers.