#pragma once #include #include "aisa/aisa.h" #include "aisa/simple-models.h" #include "sim/sim.h" #include "sim/queue.h" #include "uarch/types.h" namespace uarch { struct ExecStage : public sim::Schedulable, aisa::TaskStack, aisa::VectorRF { sim::Queue &execq; sim::Queue &fillreqq; sim::Queue &fillq; sim::Queue &storeq; std::unique_ptr step; aisa::Wires wires; bool outstanding_fill = false; bool fill_complete = false; ExecStage(sim::Scheduler &scheduler, sim::Queue &execq, sim::Queue &fillreqq, sim::Queue &fillq, sim::Queue &storeq); void clock() override; }; }