#pragma once #include #include #include #include "backend/exec.h" #include "backend/regfile.h" #include "frontend/decode.h" #include "frontend/fetch.h" #include "infra/arbiter.h" #include "infra/pipetrace.h" #include "infra/queue.h" #include "infra/sim.h" #include "inst.h" #include "memory/dram.h" struct cpu { backend::exec exec; backend::regfile regfile; frontend::decode decode; frontend::fetch fetch; infra::priority_arbiter dram_arbiter; infra::queue decodeq; memory::dram dram; cpu() { decode.fetch_restartp = &fetch.restartp; decode.instp = &decodeq.input; decodeq.output = ®file.instp; dram_arbiter.outp = &dram.commandp; exec.loadp = &dram_arbiter.peerp[1]; exec.writebackp = ®file.writebackp; fetch.bundlep = &decode.bundlep; fetch.commandp = &dram_arbiter.peerp[2]; regfile.decode_restartp = &decode.restartp; regfile.execp = &exec.execp; regfile.storep = &dram_arbiter.peerp[0]; } };