dram simulator fix

This commit is contained in:
Blaise Tine
2021-12-07 22:44:06 -05:00
parent a9ec1c08a7
commit 5825b7c15a
30 changed files with 702 additions and 499 deletions

View File

@@ -127,7 +127,7 @@ public:
virtual ~SimEventBase() {}
virtual void fire() const = 0;
virtual void fire() const = 0;
uint64_t time() const {
return time_;
@@ -219,15 +219,21 @@ public:
const std::string& name() const {
return name_;
}
virtual void step(uint64_t cycle) = 0;
}
protected:
SimObjectBase(const SimContext& ctx, const char* name);
private:
virtual void do_reset() = 0;
virtual void do_tick() = 0;
std::string name_;
friend class SimPlatform;
};
///////////////////////////////////////////////////////////////////////////////
@@ -246,18 +252,22 @@ protected:
: SimObjectBase(ctx, name)
{}
void step(uint64_t cycle) override {
this->impl().step(cycle);
}
private:
const Impl& impl() const {
return static_cast<const Impl&>(*this);
const Impl* impl() const {
return static_cast<const Impl*>(this);
}
Impl& impl() {
return static_cast<Impl&>(*this);
Impl* impl() {
return static_cast<Impl*>(this);
}
void do_reset() override {
this->impl()->reset();
}
void do_tick() override {
this->impl()->tick();
}
};
@@ -282,10 +292,6 @@ public:
return true;
}
void flush() {
instance().clear();
}
void finalize() {
instance().clear();
}
@@ -310,7 +316,15 @@ public:
events_.emplace_back(evt);
}
void step() {
void reset() {
events_.clear();
for (auto& object : objects_) {
object->do_reset();
}
cycles_ = 0;
}
void tick() {
// evaluate events
auto evt_it = events_.begin();
auto evt_it_end = events_.end();
@@ -325,7 +339,7 @@ public:
}
// evaluate components
for (auto& object : objects_) {
object->step(cycles_);
object->do_tick();
}
// advance clock
++cycles_;