39d38
< #include "base/output.hh"
41,43d39
< #include "sim/host.hh"
< #include "sim/sim_events.hh"
< #include "sim/sim_exit.hh"
45d40
< #include "sim/root.hh"
47,83d41
< using namespace std;
<
< Tick curTick = 0;
< ostream *outputStream;
< ostream *configStream;
<
< /// The simulated frequency of curTick. (This is only here for a short time)
< Tick ticksPerSecond;
<
< namespace Clock {
< /// The simulated frequency of curTick. (In ticks per second)
< Tick Frequency;
<
< namespace Float {
< double s;
< double ms;
< double us;
< double ns;
< double ps;
<
< double Hz;
< double kHz;
< double MHz;
< double GHZ;
< /* namespace Float */ }
<
< namespace Int {
< Tick s;
< Tick ms;
< Tick us;
< Tick ns;
< Tick ps;
< /* namespace Float */ }
<
< /* namespace Clock */ }
<
<
85c43
< class Root : public SimObject
---
> struct Root : public SimObject
87,96c45
< private:
< Tick max_tick;
< Tick progress_interval;
<
< public:
< Root(const std::string &name, Tick maxtick, Tick pi)
< : SimObject(name), max_tick(maxtick), progress_interval(pi)
< {}
<
< virtual void startup();
---
> Root(const std::string &name) : SimObject(name) {}
99,108d47
< void
< Root::startup()
< {
< if (max_tick != 0)
< schedExitSimLoop("reached maximum cycle count", curTick + max_tick);
<
< if (progress_interval != 0)
< new ProgressEvent(&mainEventQueue, progress_interval);
< }
<
111,114c50
< Param<Tick> clock;
< Param<Tick> max_tick;
< Param<Tick> progress_interval;
< Param<string> output_file;
---
> Param<int> dummy; // needed below
120,123c56
< INIT_PARAM(clock, "tick frequency"),
< INIT_PARAM(max_tick, "maximum simulation time"),
< INIT_PARAM(progress_interval, "print a progress message"),
< INIT_PARAM(output_file, "file to dump simulator output to")
---
> INIT_PARAM(dummy, "") // All SimObjects must have params
135,157c68
< outputStream = simout.find(output_file);
< Root *root = new Root(getInstanceName(), max_tick, progress_interval);
<
< using namespace Clock;
< Frequency = clock;
< Float::s = static_cast<double>(Frequency);
< Float::ms = Float::s / 1.0e3;
< Float::us = Float::s / 1.0e6;
< Float::ns = Float::s / 1.0e9;
< Float::ps = Float::s / 1.0e12;
<
< Float::Hz = 1.0 / Float::s;
< Float::kHz = 1.0 / Float::ms;
< Float::MHz = 1.0 / Float::us;
< Float::GHZ = 1.0 / Float::ns;
<
< Int::s = Frequency;
< Int::ms = Int::s / 1000;
< Int::us = Int::ms / 1000;
< Int::ns = Int::us / 1000;
< Int::ps = Int::ns / 1000;
<
< return root;
---
> return new Root(getInstanceName());