orca-sim
Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes | List of all members
orcasim::modeling::Simulator Class Referenceabstract

#include <Simulator.hpp>

Inheritance diagram for orcasim::modeling::Simulator:
orcasim::platforms::singlecoreext::SingleCoreExt

Public Member Functions

 Simulator (int argc, char **argv)
 
 Simulator ()
 
virtual void Startup ()=0
 
virtual void Schedule ()=0
 
virtual void Simulate ()
 
virtual void Report ()=0
 
void Register (TimedModel *m)
 
void Register (TimedModel *m, SimulationTime t)
 
int GetExitStatus ()
 
void SetExitStatus (int status)
 
std::string GetParam (int index)
 

Static Public Member Functions

static void SetInterruptionStatus (SimulatorInterruptionStatus status)
 
static SimulatorInterruptionStatus GetInterruptionStatus ()
 

Private Attributes

std::chrono::high_resolution_clock::time_point t1
 
std::chrono::high_resolution_clock::time_point t2
 
std::vector< std::string > _params
 
Engine _engine
 
int _exit_status
 

Static Private Attributes

static volatile SimulatorInterruptionStatus _interruption_status = SimulatorInterruptionStatus::RUNNING
 

Detailed Description

Definition at line 55 of file Simulator.hpp.

Constructor & Destructor Documentation

§ Simulator() [1/2]

Simulator::Simulator ( int  argc,
char **  argv 
)

Definition at line 74 of file Simulator.cpp.

74  {
75 
76  std::cout << "param list:" << std::endl;
77  for(int i = 0; i < argc; ++i){
78  std::cout << i << "\t" << argv[i] << std::endl;
79  }
80 
81  _exit_status = 0; // if not overwritten, exist status is zero (EXIT_OK)
83  signal(SIGINT, sig_handler); // register interruption handler
84 
85  // parse params
86  if (argc > 0) {
87  _params = std::vector<std::string>();
88  for (int i = 0; i < argc; i++) {
89  char* param = argv[i];
90  _params.push_back(std::string(param));
91  }
92  }
93 }
static void sig_handler(int _)
std::vector< std::string > _params
Definition: Simulator.hpp:58
static volatile SimulatorInterruptionStatus _interruption_status
Definition: Simulator.hpp:64

§ Simulator() [2/2]

orcasim::modeling::Simulator::Simulator ( )

Member Function Documentation

§ GetExitStatus()

int Simulator::GetExitStatus ( )

Definition at line 139 of file Simulator.cpp.

139  {
140  return _exit_status;
141 }

§ GetInterruptionStatus()

SimulatorInterruptionStatus Simulator::GetInterruptionStatus ( )
static

Definition at line 66 of file Simulator.cpp.

66  {
68 }
static volatile SimulatorInterruptionStatus _interruption_status
Definition: Simulator.hpp:64

§ GetParam()

std::string Simulator::GetParam ( int  index)

Definition at line 70 of file Simulator.cpp.

70  {
71  return std::string(_params[index]);
72 }
std::vector< std::string > _params
Definition: Simulator.hpp:58

§ Register() [1/2]

void Simulator::Register ( TimedModel m)

Definition at line 99 of file Simulator.cpp.

99  {
100  Simulator::Register(model, 1);
101 }
void Register(TimedModel *m)
Definition: Simulator.cpp:99

§ Register() [2/2]

void Simulator::Register ( TimedModel m,
SimulationTime  t 
)

Definition at line 95 of file Simulator.cpp.

95  {
96  _engine.Schedule(Event(time, model));
97 }
This class models a discrete event.
Definition: Event.hpp:39
void Schedule(const Event &e)
Adds an event to the simulation queue.
Definition: Engine.cpp:122

§ Report()

virtual void orcasim::modeling::Simulator::Report ( )
pure virtual

§ Schedule()

virtual void orcasim::modeling::Simulator::Schedule ( )
pure virtual

§ SetExitStatus()

void Simulator::SetExitStatus ( int  status)

Definition at line 143 of file Simulator.cpp.

143  {
144  _exit_status = status;
145 }

§ SetInterruptionStatus()

void Simulator::SetInterruptionStatus ( SimulatorInterruptionStatus  status)
static

Definition at line 62 of file Simulator.cpp.

62  {
64 }
static volatile SimulatorInterruptionStatus _interruption_status
Definition: Simulator.hpp:64

§ Simulate()

void Simulator::Simulate ( )
virtual

Definition at line 103 of file Simulator.cpp.

103  {
104 
105  Startup();
106  Schedule();
107 
109  t1 = std::chrono::high_resolution_clock::now();
110 
112 
113  t2 = std::chrono::high_resolution_clock::now();
114 
115  auto duration =
116  std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1)
117  .count();
118  _engine.NextEpoch();
119 
120  // converts mili to seconds before calculating the frequency
121  double hertz = static_cast<double>(ORCA_EPOCH_LENGTH) /
122  (static_cast<double>(duration) / 1000.0);
123 
124  // divide frequency by 1k (Hz -> KHz)
125  std::cout << "notice: epoch #" << _engine.GetEpochs() << " took ~"
126  << duration << "ms (running @ " << (hertz / 1000000.0)
127  << " MHz)" << std::endl;
128 
129  #ifdef ORCA_EPOCHS_TO_SIM
130  // simulate until reach the limit of pulses
132  break;
133  #endif
134  }
135 
136  Report();
137 }
SimulationTime Run(SimulationTime time=100000)
Executes the simulator until the internal clock reaches <time> cycles.
Definition: Engine.cpp:46
#define ORCA_EPOCHS_TO_SIM
Definition: Simulator.cpp:34
#define ORCA_EPOCH_LENGTH
Definition: Simulator.cpp:33
std::chrono::high_resolution_clock::time_point t2
Definition: Simulator.hpp:57
SimulationTime NextEpoch()
Resets the simulation clock and advance simulation to the next epoch.
Definition: Engine.cpp:81
std::chrono::high_resolution_clock::time_point t1
Definition: Simulator.hpp:57
SimulationTime GetEpochs()
Gets the number of cycles to simulate before reseting the simulation clock.
Definition: Engine.cpp:115
static volatile SimulatorInterruptionStatus _interruption_status
Definition: Simulator.hpp:64

§ Startup()

virtual void orcasim::modeling::Simulator::Startup ( )
pure virtual

Member Data Documentation

§ _engine

Engine orcasim::modeling::Simulator::_engine
private

Definition at line 60 of file Simulator.hpp.

§ _exit_status

int orcasim::modeling::Simulator::_exit_status
private

Definition at line 62 of file Simulator.hpp.

§ _interruption_status

volatile SimulatorInterruptionStatus Simulator::_interruption_status = SimulatorInterruptionStatus::RUNNING
staticprivate

Definition at line 64 of file Simulator.hpp.

§ _params

std::vector<std::string> orcasim::modeling::Simulator::_params
private

Definition at line 58 of file Simulator.hpp.

§ t1

std::chrono::high_resolution_clock::time_point orcasim::modeling::Simulator::t1
private

Definition at line 57 of file Simulator.hpp.

§ t2

std::chrono::high_resolution_clock::time_point orcasim::modeling::Simulator::t2
private

Definition at line 57 of file Simulator.hpp.


The documentation for this class was generated from the following files: