From 75ff39499dbf285257dabf1258f35f543d713c0a Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Sun, 24 Feb 2019 01:09:41 +0100 Subject: Add some more labels and clarify rs, rt, rd in execute stage. This allows simple visual compare of rs and rt in execution stage with register number to be written in memory and write-back stages. Signed-off-by: Pavel Pisa --- qtmips_gui/coreview.cpp | 16 ++++++++++++++++ qtmips_gui/coreview.h | 1 + 2 files changed, 17 insertions(+) (limited to 'qtmips_gui') diff --git a/qtmips_gui/coreview.cpp b/qtmips_gui/coreview.cpp index 7b5275f..ce438ca 100644 --- a/qtmips_gui/coreview.cpp +++ b/qtmips_gui/coreview.cpp @@ -204,10 +204,14 @@ CoreViewScene::CoreViewScene(machine::QtMipsMachine *machine) : QGraphicsScene() // Write back stage NEW_V(710, 330, writeback_value, true); // Write back value + new_label("RsD", 215, 241); NEW_V(205, 250, decode_rs_num_value, false, 2, 0, 10); + new_label("RtD", 215, 261); NEW_V(205, 270, decode_rt_num_value, false, 2, 0, 10); + new_label("RtD", 297, 372); NEW_V(320, 380, decode_rt_num_value, false, 2, 0, 10); + new_label("RdD", 297, 380); NEW_V(320, 390, decode_rd_num_value, false, 2, 0, 10); NEW_V(320, 500, writeback_regw_num_value, false, 2, 0, 10); @@ -472,6 +476,10 @@ CoreViewScenePipelined::CoreViewScenePipelined(machine::QtMipsMachine *machine) NEW_V(460, 105, execute_regw_value, false, 1); NEW_V(560, 105, memory_regw_value, false, 1); + new_label("RtE", 427, 372); + NEW_V(450, 380, execute_rt_num_value, false, 2, 0, 10); + new_label("RdE", 427, 380); + NEW_V(450, 390, execute_rd_num_value, false, 2, 0, 10); NEW_V(510, 385, execute_regw_num_value, false, 2, 0, 10); NEW_V(610, 385, memory_regw_num_value, false, 2, 0, 10); @@ -499,6 +507,14 @@ CoreViewScenePipelined::CoreViewScenePipelined(machine::QtMipsMachine *machine) con = new_bus(hu.j_alu_out->new_connector(CON_AX_X), dc.cmp->new_connector(0.5, 1)); con->setAxes({CON_AXIS_Y(380), CON_AXIS_X(330)}); + struct coreview::Latch::ConnectorPair regdest_dc_rs = latch_id_ex->new_connector(ex.mux_regdest->connector_in(0)->point().y() - latch_id_ex->y() - 8); + new_bus(dc.instr_bus->new_connector(0, ex.mux_regdest->connector_in(0)->y() - 8), regdest_dc_rs.in, 2); + new_label("RsE", 427, 364); + NEW_V(450, 370, execute_rs_num_value, false, 2, 0, 10); + NEW(Junction, ex.j_rs_num, 442, 372); + new_bus(regdest_dc_rs.out, ex.j_rs_num->new_connector(coreview::Connector::AX_X), 2); + + NEW_V(434, 250, execute_reg1_ff_value, false, 1); // Register 1 forward to ALU NEW_V(434, 303, execute_reg2_ff_value, false, 1); // Register 2 forward to ALU diff --git a/qtmips_gui/coreview.h b/qtmips_gui/coreview.h index fe6d951..0abc870 100644 --- a/qtmips_gui/coreview.h +++ b/qtmips_gui/coreview.h @@ -98,6 +98,7 @@ protected: } dc; struct { coreview::Junction *j_mux; + coreview::Junction *j_rs_num; coreview::Multiplexer *mux_imm, *mux_regdest; } ex; struct { -- cgit v1.2.3