41 lines
665 B
C++
41 lines
665 B
C++
#pragma once
|
|
|
|
#include <simobject.h>
|
|
#include "types.h"
|
|
#include <vector>
|
|
|
|
namespace vortex {
|
|
|
|
class MemSim : public SimObject<MemSim>{
|
|
public:
|
|
struct Config {
|
|
uint32_t channels;
|
|
uint32_t num_cores;
|
|
};
|
|
|
|
struct PerfStats {
|
|
uint64_t reads;
|
|
uint64_t writes;
|
|
|
|
PerfStats()
|
|
: reads(0)
|
|
, writes(0)
|
|
{}
|
|
};
|
|
|
|
SimPort<MemReq> MemReqPort;
|
|
SimPort<MemRsp> MemRspPort;
|
|
|
|
MemSim(const SimContext& ctx, const Config& config);
|
|
~MemSim();
|
|
|
|
void step(uint64_t cycle);
|
|
|
|
const PerfStats& perf_stats() const;
|
|
|
|
private:
|
|
class Impl;
|
|
Impl* impl_;
|
|
};
|
|
|
|
}; |