52 SingleCoreExt::SingleCoreExt(
int argc,
char** argv):
Simulator(argc, argv) {
54 std::cout <<
"Usage: " << std::endl;
55 std::cout <<
"\t" << argv[0] <<
" <software image>" << std::endl;
92 signal_intr->
Write(0);
93 signal_addr->
Write(0);
94 signal_size->
Write(0);
95 signal_dist->
Write(0);
127 #ifdef MEMORY_ENABLE_COUNTERS 129 mem->GetSignalCounterStore()->
MapTo(
130 mem->GetMap(M0_COUNTER_STORE_ADDR), M0_COUNTER_STORE_ADDR);
131 mem->GetSignalCounterLoad()->
MapTo(
132 mem->GetMap(M0_COUNTER_LOAD_ADDR), M0_COUNTER_LOAD_ADDR);
134 mem1->GetSignalCounterStore()->MapTo(
135 mem->GetMap(M1_COUNTER_STORE_ADDR), M1_COUNTER_STORE_ADDR);
136 mem1->GetSignalCounterLoad()->MapTo(
137 mem->GetMap(M1_COUNTER_LOAD_ADDR), M1_COUNTER_LOAD_ADDR);
138 mem2->GetSignalCounterStore()->MapTo(
139 mem->GetMap(M2_COUNTER_STORE_ADDR), M2_COUNTER_STORE_ADDR);
140 mem2->GetSignalCounterLoad()->MapTo(
141 mem->GetMap(M2_COUNTER_LOAD_ADDR), M2_COUNTER_LOAD_ADDR);
144 #ifdef HFRISCV_ENABLE_COUNTERS 146 cpu->GetSignalCounterArith()->MapTo(
147 mem->GetMap(CPU_COUNTER_ARITH_ADDR), CPU_COUNTER_ARITH_ADDR);
148 cpu->GetSignalCounterLogical()->MapTo(
149 mem->GetMap(CPU_COUNTER_LOGICAL_ADDR), CPU_COUNTER_LOGICAL_ADDR);
150 cpu->GetSignalCounterShift()->MapTo(
151 mem->GetMap(CPU_COUNTER_SHIFT_ADDR), CPU_COUNTER_SHIFT_ADDR);
152 cpu->GetSignalCounterBranches()->MapTo(
153 mem->GetMap(CPU_COUNTER_BRANCHES_ADDR), CPU_COUNTER_BRANCHES_ADDR);
154 cpu->GetSignalCounterJumps()->MapTo(
155 mem->GetMap(CPU_COUNTER_JUMPS_ADDR), CPU_COUNTER_JUMPS_ADDR);
156 cpu->GetSignalCounterLoadStore()->MapTo(
157 mem->GetMap(CPU_COUNTER_LOADSTORE_ADDR), CPU_COUNTER_LOADSTORE_ADDR);
158 cpu->GetSignalCounterCyclesTotal()->MapTo(
159 mem->GetMap(CPU_COUNTER_CYCLES_TOTAL_ADDR),
160 CPU_COUNTER_CYCLES_TOTAL_ADDR);
161 cpu->GetSignalCounterCyclesStall()->MapTo(
162 mem->GetMap(CPU_COUNTER_CYCLES_STALL_ADDR),
163 CPU_COUNTER_CYCLES_STALL_ADDR);
164 cpu->GetSignalHostTime()->MapTo(
165 mem->GetMap(CPU_COUNTER_HOSTTIME_ADDR), CPU_COUNTER_HOSTTIME_ADDR);
193 #ifdef HFRISCV_ENABLE_COUNTERS 195 "\tiarith\t\t" <<
static_cast<int>(
cpu->GetSignalCounterArith()->Read())
198 << static_cast<int>(
cpu->GetSignalCounterLogical()->Read())
200 "\tishift\t\t" << static_cast<int>(
cpu->GetSignalCounterShift()->Read())
203 << static_cast<int>(
cpu->GetSignalCounterBranches()->Read())
205 "\tijumps\t\t" << static_cast<int>(
cpu->GetSignalCounterJumps()->Read())
208 << static_cast<int>(
cpu->GetSignalCounterLoadStore()->Read())
211 << static_cast<int>(
cpu->GetSignalCounterCyclesTotal()->Read())
214 << static_cast<int>(
cpu->GetSignalCounterCyclesStall()->Read())
216 "\tihtime\t\t" << static_cast<int>(
cpu->GetSignalHostTime()->Read())
221 #ifdef MEMORY_ENABLE_COUNTERS 223 "\tloads\t\t" <<
static_cast<int>(
mem->GetSignalCounterStore()->
Read())
225 "\tstores\t\t" << static_cast<int>(
mem->GetSignalCounterLoad()->
Read())
248 int main(
int argc,
char** argv) {
The Signal class models a generic bus of width equals to the sizeof(T)
SimulatorInterruptionStatus
void SetSignalProgRecv(Signal< uint8_t > *)
void MapTo(bool keep_val=true)
Maps current Signal to the internal storage.
void SetSignalIntr(Signal< uint8_t > *)
void SetOutputBuffer(Buffer< FlitType > *)
void SetOutputBuffer(Buffer< FlitType > *ob)
void SetSignalProgSend(Signal< uint8_t > *)
T Read()
Get the last value writen to the bus.
void SetSignalRecvReload(Signal< uint8_t > *)
Buffer< FlitType > * GetInputBuffer()
#define ORCA_MEMORY_SIZE_2
void SetSignalProgSize(Signal< uint32_t > *)
void SetSignalRecvStatus(Signal< uint32_t > *)
void Write(T val)
Writes some value to the bus.
void SetSignalProgDest(Signal< uint16_t > *)
void Read(uint32_t addr, MemoryType *buffer, uint32_t length)
Reads data from a given memory location.
int main(int argc, char **argv)
This is the main routine for your application.
Buffer< FlitType > * GetInputBuffer()
This class models a memory module.
void SetSignalSendStatus(Signal< uint8_t > *)
void SetExitStatus(int status)
std::string GetParam(int index)
#define ORCA_MEMORY_SIZE_1
void SetSignalStall(Signal< uint8_t > *)
void Register(TimedModel *m)
void SetSignalProgAddr(Signal< uint32_t > *)