diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/gui.cc | 106 | ||||
-rw-r--r-- | gui/gui.h | 54 | ||||
-rw-r--r-- | gui/gui.ui | 404 | ||||
-rw-r--r-- | gui/worker.cc | 13 | ||||
-rw-r--r-- | gui/worker.h | 5 |
5 files changed, 472 insertions, 110 deletions
@@ -19,6 +19,16 @@ GUI::GUI(QWidget *parent) // Display clock cycles and PC connect(worker, &Worker::clock_cycles, this, &GUI::onWorkerClockCycles); + connect(worker, &Worker::if_info, this, &GUI::onWorkerFetchInfo); + + connect(worker, &Worker::id_info, this, &GUI::onWorkerDecodeInfo); + + connect(worker, &Worker::ex_info, this, &GUI::onWorkerExecuteInfo); + + connect(worker, &Worker::mm_info, this, &GUI::onWorkerMemoryInfo); + + connect(worker, &Worker::wb_info, this, &GUI::onWorkerWriteBackInfo); + // Display dram connect(worker, &Worker::dram_storage, this, &GUI::onWorkerShowDram); @@ -103,7 +113,7 @@ void displayTableHTML(QTextEdit *textEdit, const std::vector<std::array<signed i textEdit->setReadOnly(true); } -void browseAndUploadFile(QTextEdit *textEdit) { +void browseAndUploadFile(QWidget* parent) { QString filePath = QFileDialog::getOpenFileName(nullptr, "Open File", QDir::homePath(), "Text Files (*.txt);;All Files (*.*)"); if (filePath.isEmpty()) { @@ -112,7 +122,8 @@ void browseAndUploadFile(QTextEdit *textEdit) { QFile file(filePath); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - textEdit->setPlainText("Error: Unable to open file!"); + // textEdit->setPlainText("Error: Unable to open file!"); + QMessageBox::critical(parent, "File Upload", "Unable to open file!"); return; } @@ -135,15 +146,98 @@ void browseAndUploadFile(QTextEdit *textEdit) { file.close(); - textEdit->setReadOnly(false); - textEdit->setHtml(content); - textEdit->setReadOnly(true); + + QMessageBox::information(parent, "File Upload", "Instructions loaded successfully!"); + + // textEdit->setReadOnly(false); + // textEdit->setHtml(content); + // textEdit->setReadOnly(true); } void GUI::onWorkerClockCycles(int cycles, int pc) { + QFont font = ui->cycles_label->font(); + font.setBold(true); + font.setItalic(true); + font.setPointSize(14); + ui->cycles_label->setFont(font); ui->cycles_label->setText("Clock Cycles: " + QString::number(cycles) + "\t\t" + "PC: " + QString::number(pc)); } +void GUI::onWorkerFetchInfo(const std::vector<int> info) { + //QString::asprintf("%04X", value) + if(!info.empty()) { + ui->fetch_pc->setText(QString::number(info[0])); + ui->fetch_instruction_bits->setText(QString::asprintf("%04X", info[1])); + } else { + ui->fetch_pc->clear(); + ui->fetch_instruction_bits->clear(); + } +} + +void GUI::onWorkerDecodeInfo(const std::vector<int> info) { + if(!info.empty()) { + // ui->decode_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); + ui->decode_pc->setText(QString::number(info[0])); + ui->decode_s1->setText(QString::asprintf("%04X", info[1])); + // ui->decode_s2->setText(QString::asprintf("%04X", info[3])); + // ui->decode_s3->setText(QString::asprintf("%04X", info[4])); + } else { + // ui->decode_mnemonic->clear(); + ui->decode_pc->clear(); + ui->decode_s1->clear(); + // ui->decode_s2->clear(); + // ui->decode_s3->clear(); + } +} + +void GUI::onWorkerExecuteInfo(const std::vector<int> info) { + if(!info.empty()) { + ui->execute_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); + ui->execute_pc->setText(QString::number(info[1])); + ui->execute_s1->setText(QString::asprintf("%04X", info[2])); + ui->execute_s2->setText(QString::asprintf("%04X", info[3])); + ui->execute_s3->setText(QString::asprintf("%04X", info[4])); + } else { + ui->execute_mnemonic->clear(); + ui->execute_pc->clear(); + ui->execute_s1->clear(); + ui->execute_s2->clear(); + ui->execute_s3->clear(); + } +} + +void GUI::onWorkerMemoryInfo(const std::vector<int> info) { + if(!info.empty()) { + ui->memory_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); + ui->memory_pc->setText(QString::number(info[1])); + ui->memory_s1->setText(QString::asprintf("%04X", info[2])); + ui->memory_s2->setText(QString::asprintf("%04X", info[3])); + ui->memory_s3->setText(QString::asprintf("%04X", info[4])); + } else { + ui->memory_mnemonic->clear(); + ui->memory_pc->clear(); + ui->memory_s1->clear(); + ui->memory_s2->clear(); + ui->memory_s3->clear(); + } +} + +void GUI::onWorkerWriteBackInfo(const std::vector<int> info) { + if(!info.empty()) { + ui->wb_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); + ui->wb_pc->setText(QString::number(info[1])); + ui->wb_s1->setText(QString::asprintf("%04X", info[2])); + ui->wb_s2->setText(QString::asprintf("%04X", info[3])); + ui->wb_s3->setText(QString::asprintf("%04X", info[4])); + } else { + ui->wb_mnemonic->clear(); + ui->wb_pc->clear(); + ui->wb_s1->clear(); + ui->wb_s2->clear(); + ui->wb_s3->clear(); + } +} + void GUI::onWorkerShowDram(const std::vector<std::array<signed int, LINE_SIZE>> data) { displayTableHTML(ui->dram_table, data); } @@ -163,7 +257,7 @@ void GUI::onWorkerFinished() { void GUI::on_upload_intructions_btn_clicked() { qDebug() << "Upload intructions button clicked."; - browseAndUploadFile(ui->instruction_table); + browseAndUploadFile(ui->register_table); } @@ -7,6 +7,7 @@ #include <QFile> #include <QTextStream> #include <QTextEdit> +#include <QMessageBox> #include "worker.h" QT_BEGIN_NAMESPACE @@ -33,6 +34,16 @@ signals: private slots: void onWorkerClockCycles(int value, int pc); + void onWorkerFetchInfo(const std::vector<int> info); + + void onWorkerDecodeInfo(const std::vector<int> info); + + void onWorkerExecuteInfo(const std::vector<int> info); + + void onWorkerMemoryInfo(const std::vector<int> info); + + void onWorkerWriteBackInfo(const std::vector<int> info); + void onWorkerShowDram(const std::vector<std::array<signed int, LINE_SIZE>> data); void onWorkerShowCache(const std::vector<std::array<signed int, LINE_SIZE>> data); @@ -65,5 +76,48 @@ private: Ui::GUI *ui; QThread workerThread; Worker *worker; + const std::map<Mnemonic, QString> mnemonicNameMap = { + {Mnemonic::ADD, "ADD"}, + {Mnemonic::SUB, "SUB"}, + {Mnemonic::MUL, "MUL"}, + {Mnemonic::QUOT, "QUOT"}, + {Mnemonic::SFTR, "SFTR"}, + {Mnemonic::SFTL, "SFTL"}, + {Mnemonic::AND, "AND"}, + {Mnemonic::OR, "OR"}, + {Mnemonic::NOT, "NOT"}, + {Mnemonic::XOR, "XOR"}, + {Mnemonic::ADDV, "ADDV"}, + {Mnemonic::SUBV, "SUBV"}, + {Mnemonic::MULV, "MULV"}, + {Mnemonic::DIVV, "DIVV"}, + {Mnemonic::CMP, "CMP"}, + {Mnemonic::CEV, "CEV"}, + {Mnemonic::LOAD, "LOAD"}, + {Mnemonic::LOADV, "LOADV"}, + {Mnemonic::ADDI, "ADDI"}, + {Mnemonic::SUBI, "SUBI"}, + {Mnemonic::SFTRI, "SFTRI"}, + {Mnemonic::SFTLI, "SFTLI"}, + {Mnemonic::ANDI, "ANDI"}, + {Mnemonic::ORI, "ORI"}, + {Mnemonic::XORI, "XORI"}, + {Mnemonic::STORE, "STORE"}, + {Mnemonic::STOREV, "STOREV"}, + {Mnemonic::JMP, "JMP"}, + {Mnemonic::JRL, "JRL"}, + {Mnemonic::JAL, "JAL"}, + {Mnemonic::BEQ, "BEQ"}, + {Mnemonic::BGT, "BGT"}, + {Mnemonic::BUF, "BUF"}, + {Mnemonic::BOF, "BOF"}, + {Mnemonic::PUSH, "PUSH"}, + {Mnemonic::POP, "POP"}, + {Mnemonic::NOP, "NOP"}, + }; + QString mnemonicToString(Mnemonic mnemonic) { + auto it = mnemonicNameMap.find(mnemonic); + return (it != mnemonicNameMap.end()) ? it->second : "Unknown"; + } }; #endif // GUI_H @@ -13,49 +13,16 @@ <property name="windowTitle"> <string>RISC V[ECTOR]</string> </property> - <widget class="QWidget" name="centralwidget"> - <layout class="QVBoxLayout" name="verticalLayout_14"> + <widget class="QWidget" name="centralwidget"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="6" rowspan="2"> - <widget class="Line" name="line_14"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - </widget> - </item> - <item row="1" column="1" rowspan="2"> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="font"> - <font> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Instructions</string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> + <layout class="QGridLayout" name="gridLayout_2" rowstretch="0,0,0" columnstretch="0,3,0,1,0"> + <item row="0" column="1"> + <layout class="QVBoxLayout" name="verticalLayout_19"> <item> - <widget class="QTextEdit" name="instruction_table"/> - </item> - </layout> - </item> - <item row="1" column="3" rowspan="2"> - <layout class="QVBoxLayout" name="verticalLayout_13"> - <item> - <layout class="QVBoxLayout" name="verticalLayout_3"> + <layout class="QVBoxLayout" name="verticalLayout_20"> <item> - <widget class="QLabel" name="label_2"> + <widget class="QLabel" name="label_5"> <property name="font"> <font> <bold>true</bold> @@ -67,7 +34,7 @@ </widget> </item> <item> - <widget class="Line" name="line_2"> + <widget class="Line" name="line_25"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -79,18 +46,18 @@ </layout> </item> <item> - <widget class="Line" name="line_13"> + <widget class="Line" name="line_26"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout_5"> + <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> - <layout class="QVBoxLayout" name="verticalLayout_2"> + <layout class="QVBoxLayout" name="verticalLayout_21"> <item> - <widget class="QLabel" name="label_4"> + <widget class="QLabel" name="label_6"> <property name="font"> <font> <bold>true</bold> @@ -102,7 +69,7 @@ </widget> </item> <item> - <widget class="Line" name="line_4"> + <widget class="Line" name="line_27"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -114,16 +81,16 @@ </layout> </item> <item> - <widget class="Line" name="line_19"> + <widget class="Line" name="line_28"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_4"> + <layout class="QVBoxLayout" name="verticalLayout_22"> <item> - <widget class="QLabel" name="label_3"> + <widget class="QLabel" name="label_10"> <property name="font"> <font> <bold>true</bold> @@ -135,7 +102,7 @@ </widget> </item> <item> - <widget class="Line" name="line_3"> + <widget class="Line" name="line_29"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -150,33 +117,255 @@ </item> </layout> </item> - <item row="1" column="2" rowspan="2"> - <widget class="Line" name="line_17"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - </widget> - </item> - <item row="0" column="1" colspan="5"> - <widget class="Line" name="line_10"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item row="3" column="1" colspan="5"> - <widget class="Line" name="line_11"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> + <item row="1" column="0" colspan="5"> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QGroupBox" name="Fetch"> + <property name="title"> + <string>Fetch</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLineEdit" name="fetch_instruction_bits"> + <property name="placeholderText"> + <string>Instruction Bits</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="fetch_pc"> + <property name="placeholderText"> + <string>Program Counter</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="Decode"> + <property name="title"> + <string>Decode</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLineEdit" name="decode_s1"> + <property name="placeholderText"> + <string>Instruction Bits</string> + </property> + </widget> + </item> + <!-- <item> + <widget class="QLineEdit" name="decode_s2"> + <property name="text"> + <string/> + </property> + <property name="placeholderText"> + <string>Program COunte</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="decode_s3"> + <property name="placeholderText"> + <string>s3</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="decode_mnemonic"> + <property name="placeholderText"> + <string>Mnemonic</string> + </property> + </widget> + </item> --> + <item> + <widget class="QLineEdit" name="decode_pc"> + <property name="placeholderText"> + <string>Program Counter</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="Line" name="line_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="Execute"> + <property name="title"> + <string>Execute</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QLineEdit" name="execute_s1"> + <property name="placeholderText"> + <string>s1</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="execute_s2"> + <property name="text"> + <string/> + </property> + <property name="placeholderText"> + <string>s2</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="execute_s3"> + <property name="placeholderText"> + <string>s3</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="execute_mnemonic"> + <property name="placeholderText"> + <string>Mnemonic</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="execute_pc"> + <property name="placeholderText"> + <string>Program Counter</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="Line" name="line_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="Memory"> + <property name="title"> + <string>Memory</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QLineEdit" name="memory_s1"> + <property name="placeholderText"> + <string>s1</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="memory_s2"> + <property name="text"> + <string/> + </property> + <property name="placeholderText"> + <string>s2</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="memory_s3"> + <property name="placeholderText"> + <string>s3</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="memory_mnemonic"> + <property name="placeholderText"> + <string>Mnemonic</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="memory_pc"> + <property name="placeholderText"> + <string>Program Counter</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="Line" name="line_4"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="WriteBack"> + <property name="title"> + <string>Write Back</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QLineEdit" name="wb_s1"> + <property name="placeholderText"> + <string>s1</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="wb_s2"> + <property name="text"> + <string/> + </property> + <property name="placeholderText"> + <string>s2</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="wb_s3"> + <property name="placeholderText"> + <string>s3</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="wb_mnemonic"> + <property name="placeholderText"> + <string>Mnemonic</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="wb_pc"> + <property name="placeholderText"> + <string>Program Counter</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> </item> - <item row="1" column="5" rowspan="2"> - <layout class="QVBoxLayout" name="verticalLayout_12"> + <item row="0" column="3"> + <layout class="QVBoxLayout" name="verticalLayout_23"> <item> - <layout class="QVBoxLayout" name="verticalLayout_8"> + <layout class="QVBoxLayout" name="verticalLayout_24"> <item> - <widget class="QLabel" name="label_7"> + <widget class="QLabel" name="label_12"> <property name="font"> <font> <bold>true</bold> @@ -188,14 +377,14 @@ </widget> </item> <item> - <widget class="Line" name="line_5"> + <widget class="Line" name="line_33"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_6"> + <layout class="QVBoxLayout" name="verticalLayout_25"> <item> <widget class="QPushButton" name="upload_intructions_btn"> <property name="text"> @@ -204,7 +393,7 @@ </widget> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> + <layout class="QHBoxLayout" name="horizontalLayout_8"> <item> <widget class="QPushButton" name="upload_program_state_btn"> <property name="text"> @@ -217,7 +406,7 @@ </layout> </item> <item> - <widget class="Line" name="line_7"> + <widget class="Line" name="line_34"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -226,9 +415,9 @@ </layout> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_9"> + <layout class="QVBoxLayout" name="verticalLayout_26"> <item> - <widget class="QLabel" name="label_8"> + <widget class="QLabel" name="label_13"> <property name="font"> <font> <bold>true</bold> @@ -240,16 +429,16 @@ </widget> </item> <item> - <widget class="Line" name="line_8"> + <widget class="Line" name="line_35"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_5"> + <layout class="QVBoxLayout" name="verticalLayout_27"> <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> + <layout class="QHBoxLayout" name="horizontalLayout_9"> <item> <widget class="QPushButton" name="refresh_dram_btn"> <property name="text"> @@ -274,12 +463,25 @@ </layout> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout"> + <layout class="QHBoxLayout" name="horizontalLayout_10"> + <item> + <widget class="QPushButton" name="Reset_Btn"> + <property name="text"> + <string>Reset</string> + </property> + </widget> + </item> <item> <widget class="QCheckBox" name="enable_pipeline_checkbox"> <property name="text"> <string>Enable Pipeline</string> </property> + <property name="checkable"> + <bool>false</bool> + </property> + <property name="checked"> + <bool>false</bool> + </property> </widget> </item> <item> @@ -287,6 +489,9 @@ <property name="text"> <string>Enable Cache</string> </property> + <property name="checkable"> + <bool>false</bool> + </property> </widget> </item> </layout> @@ -296,16 +501,16 @@ </layout> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_10"> + <layout class="QVBoxLayout" name="verticalLayout_28"> <item> - <widget class="Line" name="line_15"> + <widget class="Line" name="line_36"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> - <widget class="QLabel" name="label_9"> + <widget class="QLabel" name="label_14"> <property name="font"> <font> <bold>true</bold> @@ -317,16 +522,16 @@ </widget> </item> <item> - <widget class="Line" name="line_9"> + <widget class="Line" name="line_37"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_7"> + <layout class="QVBoxLayout" name="verticalLayout_29"> <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> + <layout class="QHBoxLayout" name="horizontalLayout_11"> <item> <widget class="QLineEdit" name="number_steps_inp"> <property name="placeholderText"> @@ -355,16 +560,16 @@ </layout> </item> <item> - <widget class="Line" name="line_16"> + <widget class="Line" name="line_38"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_11"> + <layout class="QVBoxLayout" name="verticalLayout_30"> <item> - <widget class="QLabel" name="label_11"> + <widget class="QLabel" name="label_15"> <property name="font"> <font> <bold>true</bold> @@ -376,7 +581,7 @@ </widget> </item> <item> - <widget class="Line" name="line_6"> + <widget class="Line" name="line_39"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -400,15 +605,8 @@ </item> </layout> </item> - <item row="0" column="0" rowspan="3"> - <widget class="Line" name="line_12"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - </widget> - </item> - <item row="1" column="4" rowspan="2"> - <widget class="Line" name="line_18"> + <item row="0" column="2"> + <widget class="Line" name="line_5"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> diff --git a/gui/worker.cc b/gui/worker.cc index 685b46c..e7c9876 100644 --- a/gui/worker.cc +++ b/gui/worker.cc @@ -63,6 +63,8 @@ void Worker::doWork() this->d->load(p); } + + Worker::~Worker() { emit finished(); @@ -98,6 +100,11 @@ void Worker::runSteps(int steps) emit cache_storage(this->c->view(0, 8)); emit register_storage(this->ct->get_gprs()); emit clock_cycles(this->ct->get_clock_cycle(), this->ct->get_pc()); + emit if_info(this->if_stage->stage_info()); + emit id_info(this->id_stage->stage_info()); + emit ex_info(this->ex_stage->stage_info()); + emit mm_info(this->mm_stage->stage_info()); + emit wb_info(this->wb_stage->stage_info()); } void Worker::runStep() @@ -107,6 +114,10 @@ void Worker::runStep() emit dram_storage(this->d->view(0, 256)); emit cache_storage(this->c->view(0, 8)); emit register_storage(this->ct->get_gprs()); - qDebug() << "PC " << this->ct->get_pc(); emit clock_cycles(this->ct->get_clock_cycle(), this->ct->get_pc()); + emit if_info(this->if_stage->stage_info()); + emit id_info(this->id_stage->stage_info()); + emit ex_info(this->ex_stage->stage_info()); + emit mm_info(this->mm_stage->stage_info()); + emit wb_info(this->wb_stage->stage_info()); } diff --git a/gui/worker.h b/gui/worker.h index 99ab39a..ee8926b 100644 --- a/gui/worker.h +++ b/gui/worker.h @@ -44,6 +44,11 @@ signals: void dram_storage(const std::vector<std::array<signed int, LINE_SIZE>> data); void cache_storage(const std::vector<std::array<signed int, LINE_SIZE>> data); void register_storage(const std::array<int, GPR_NUM> data); + void if_info(const std::vector<int> info); + void id_info(const std::vector<int> info); + void ex_info(const std::vector<int> info); + void mm_info(const std::vector<int> info); + void wb_info(const std::vector<int> info); void finished(); }; |