From cc2781682a47dc331f7bbcb5d7842db5197d29fc Mon Sep 17 00:00:00 2001 From: Siddarth-Suresh <65844402+Siddarth-Suresh@users.noreply.github.com> Date: Tue, 1 Apr 2025 21:54:38 -0400 Subject: GUI and controller on separate threads --- gui/worker.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 gui/worker.h (limited to 'gui/worker.h') diff --git a/gui/worker.h b/gui/worker.h new file mode 100644 index 0000000..99ab39a --- /dev/null +++ b/gui/worker.h @@ -0,0 +1,50 @@ +#ifndef WORKER_H +#define WORKER_H + +#include +#include +#include + +#include "controller.h" +#include "dram.h" +#include "cache.h" +#include "id.h" +#include "if.h" +#include "ex.h" +#include "mm.h" +#include "wb.h" + +class Worker : public QObject { + Q_OBJECT + +private: + Cache *c; + Dram *d; + Controller *ct; + ID *id_stage; + IF *if_stage; + EX *ex_stage; + MM *mm_stage; + WB *wb_stage; + +public: + explicit Worker(QObject *parent = nullptr); + ~Worker(); + +public slots: + void doWork(); + void refreshDram(); + void refreshCache(); + void refreshRegisters(); + void runSteps(int steps); + void runStep(); + +signals: + void clock_cycles(int value, int pc); + void dram_storage(const std::vector> data); + void cache_storage(const std::vector> data); + void register_storage(const std::array data); + void finished(); +}; + +#endif // WORKER_H \ No newline at end of file -- cgit v1.2.3