Skip to content

Commit 1690103

Browse files
committed
Sv32 MMU (#165)
2 parents 477ac5d + 0bcbd39 commit 1690103

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3641
-195
lines changed

extras/core_graphics/diagram.drawio

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<mxGeometry relative="1" as="geometry">
1616
<mxPoint x="232" y="258" as="targetPoint" />
1717
<Array as="points">
18-
<mxPoint x="301" y="266" t />
18+
<mxPoint x="301" y="266" />
1919
<mxPoint x="301" y="258" />
2020
</Array>
2121
</mxGeometry>
@@ -968,6 +968,16 @@
968968
<mxGeometry x="37" width="40" height="10" as="geometry" />
969969
</mxCell>
970970
</object>
971+
<UserObject label="Privilege:" tags="simple pipeline forwarding" id="Haz_PrivilegeLabel">
972+
<mxCell style="text;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=6;fontFamily=sans-serif;fontStyle=1;spacing=0;labelPosition=center;verticalLabelPosition=middle;labelBackgroundColor=none;spacingBottom=1;" parent="i2To6XwWsyNyerFe5G8K-6" vertex="1">
973+
<mxGeometry x="2" y="30" width="41" height="8" as="geometry" />
974+
</mxCell>
975+
</UserObject>
976+
<object label="MACHINE" component="multi-text-value" source="Privilege" tags="simple hazardunit pipeline forwarding" id="uWEq7-PrivilegeValue">
977+
<mxCell style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontFamily=sans-serif;fontSize=9;fontColor=#000000;fontStyle=1;spacing=0;spacingBottom=1;" parent="i2To6XwWsyNyerFe5G8K-6" vertex="1">
978+
<mxGeometry x="37" y="27" width="40" height="10" as="geometry" />
979+
</mxCell>
980+
</object>
971981
<object label="0" component="debug-value" source="StallCount" tags="simple hazardunit pipeline forwarding" id="uWEq7-W_z53UrtFael4O-79">
972982
<mxCell style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontFamily=sans-serif;fontSize=9;fontColor=#000000;fontStyle=1;spacing=0;spacingBottom=1;" parent="i2To6XwWsyNyerFe5G8K-6" vertex="1">
973983
<mxGeometry x="37" y="14" width="40" height="10" as="geometry" />

src/cli/CMakeLists.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,43 @@ add_cli_test(
7777
--asm "${CMAKE_SOURCE_DIR}/tests/cli/modifiers-pcrel/program.S"
7878
EXPECTED_OUTPUT "tests/cli/modifiers-pcrel/stdout.txt"
7979
)
80+
81+
add_cli_test(
82+
NAME virtual_memory_template
83+
ARGS
84+
--asm "${CMAKE_SOURCE_DIR}/tests/cli/virtual_memory/template/program.S"
85+
--dump-registers
86+
EXPECTED_OUTPUT "tests/cli/virtual_memory/template/stdout.txt"
87+
)
88+
89+
add_cli_test(
90+
NAME virtual_memory_dtlb
91+
ARGS
92+
--asm "${CMAKE_SOURCE_DIR}/tests/cli/virtual_memory/dtlb/program.S"
93+
--dump-registers
94+
EXPECTED_OUTPUT "tests/cli/virtual_memory/dtlb/stdout.txt"
95+
)
96+
97+
add_cli_test(
98+
NAME virtual_memory_itlb
99+
ARGS
100+
--asm "${CMAKE_SOURCE_DIR}/tests/cli/virtual_memory/itlb/program.S"
101+
--dump-registers
102+
EXPECTED_OUTPUT "tests/cli/virtual_memory/itlb/stdout.txt"
103+
)
104+
105+
add_cli_test(
106+
NAME virtual_memory_memrw
107+
ARGS
108+
--asm "${CMAKE_SOURCE_DIR}/tests/cli/virtual_memory/memrw/program.S"
109+
--dump-registers
110+
EXPECTED_OUTPUT "tests/cli/virtual_memory/memrw/stdout.txt"
111+
)
112+
113+
add_cli_test(
114+
NAME virtual_memory_exec
115+
ARGS
116+
--asm "${CMAKE_SOURCE_DIR}/tests/cli/virtual_memory/exec/program.S"
117+
--dump-registers
118+
EXPECTED_OUTPUT "tests/cli/virtual_memory/exec/stdout.txt"
119+
)

src/gui/CMakeLists.txt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ set(gui_SOURCES
2525
windows/messages/messagesview.cpp
2626
dialogs/new/newdialog.cpp
2727
ui/hexlineedit.cpp
28+
ui/pow2spinbox.cpp
29+
windows/tlb/tlbview.cpp
30+
windows/tlb/tlbdock.cpp
2831
windows/editor/highlighterasm.cpp
2932
windows/editor/highlighterc.cpp
3033
windows/editor/linenumberarea.cpp
@@ -52,7 +55,7 @@ set(gui_SOURCES
5255
windows/predictor/predictor_btb_dock.cpp
5356
windows/predictor/predictor_bht_dock.cpp
5457
windows/predictor/predictor_info_dock.cpp
55-
)
58+
)
5659
set(gui_HEADERS
5760
dialogs/about/aboutdialog.h
5861
windows/cache/cachedock.h
@@ -71,6 +74,9 @@ set(gui_HEADERS
7174
windows/messages/messagesview.h
7275
dialogs/new/newdialog.h
7376
ui/hexlineedit.h
77+
ui/pow2spinbox.h
78+
windows/tlb/tlbview.h
79+
windows/tlb/tlbdock.h
7480
windows/editor/highlighterasm.h
7581
windows/editor/highlighterc.h
7682
windows/editor/linenumberarea.h
@@ -98,19 +104,19 @@ set(gui_HEADERS
98104
windows/predictor/predictor_btb_dock.h
99105
windows/predictor/predictor_bht_dock.h
100106
windows/predictor/predictor_info_dock.h
101-
)
107+
)
102108
set(gui_UI
103109
dialogs/gotosymbol/gotosymboldialog.ui
104110
dialogs/new/NewDialog.ui
105111
windows/peripherals/peripheralsview.ui
106112
mainwindow/MainWindow.ui
107113
dialogs/new/NewDialogCache.ui
108-
)
114+
)
109115
set(gui_RESOURCES
110116
resources/icons/icons.qrc
111117
resources/samples/samples.qrc
112118
windows/coreview/schemas/schemas.qrc
113-
)
119+
)
114120

115121

116122
if ("${WASM}")
@@ -160,7 +166,7 @@ set_target_properties(gui PROPERTIES
160166
MACOSX_BUNDLE_BUNDLE_VERSION "${MAIN_PROJECT_VERSION}"
161167
MACOSX_BUNDLE_SHORT_VERSION_STRING "${MAIN_PROJECT_VERSION}"
162168
MACOSX_BUNDLE_ICONFILE ${ICON_NAME}
163-
)
169+
)
164170
# END MACOS
165171

166172
# =============================================================================
@@ -174,5 +180,5 @@ set_target_properties(gui PROPERTIES
174180
install(TARGETS gui
175181
RUNTIME DESTINATION bin
176182
BUNDLE DESTINATION ${EXECUTABLE_OUTPUT_PATH}
177-
)
183+
)
178184

src/gui/dialogs/new/NewDialog.ui

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,234 @@
656656
</item>
657657
</layout>
658658
</widget>
659+
<widget class="QWidget" name="tab_virtual_memory">
660+
<property name="accessibleName">
661+
<string>Virtual Memory</string>
662+
</property>
663+
<layout class="QVBoxLayout" name="verticalLayout_11">
664+
<item>
665+
<widget class="QGroupBox" name="group_vm">
666+
<property name="enabled">
667+
<bool>true</bool>
668+
</property>
669+
<property name="title">
670+
<string>Virtual Memory</string>
671+
</property>
672+
<property name="checkable">
673+
<bool>true</bool>
674+
</property>
675+
<property name="checked">
676+
<bool>true</bool>
677+
</property>
678+
<layout class="QVBoxLayout" name="verticalLayout_12">
679+
<item>
680+
<widget class="QGroupBox" name="itlb_groupBox">
681+
<property name="enabled">
682+
<bool>true</bool>
683+
</property>
684+
<property name="title">
685+
<string>Program Translation Lookaside Buffer (TLB)</string>
686+
</property>
687+
<property name="checkable">
688+
<bool>false</bool>
689+
</property>
690+
<layout class="QFormLayout" name="formLayout_2">
691+
<item row="0" column="0">
692+
<widget class="QLabel" name="label_2">
693+
<property name="text">
694+
<string>Number of sets:</string>
695+
</property>
696+
</widget>
697+
</item>
698+
<item row="0" column="1">
699+
<widget class="Pow2SpinBox" name="itlb_number_of_sets">
700+
<property name="minimum">
701+
<number>1</number>
702+
</property>
703+
<property name="maximum">
704+
<number>1024</number>
705+
</property>
706+
<property name="singleStep">
707+
<number>1</number>
708+
</property>
709+
<property name="stepType">
710+
<enum>QAbstractSpinBox::DefaultStepType</enum>
711+
</property>
712+
<property name="value">
713+
<number>1</number>
714+
</property>
715+
<property name="displayIntegerBase">
716+
<number>10</number>
717+
</property>
718+
</widget>
719+
</item>
720+
<item row="1" column="0">
721+
<widget class="QLabel" name="label_7">
722+
<property name="text">
723+
<string>Degree of associativity:</string>
724+
</property>
725+
</widget>
726+
</item>
727+
<item row="1" column="1">
728+
<widget class="QSpinBox" name="itlb_degree_of_associativity">
729+
<property name="minimum">
730+
<number>1</number>
731+
</property>
732+
<property name="singleStep">
733+
<number>1</number>
734+
</property>
735+
<property name="value">
736+
<number>1</number>
737+
</property>
738+
</widget>
739+
</item>
740+
<item row="2" column="0">
741+
<widget class="QLabel" name="label_8">
742+
<property name="text">
743+
<string>Replacement policy:</string>
744+
</property>
745+
</widget>
746+
</item>
747+
<item row="2" column="1">
748+
<widget class="QComboBox" name="itlb_replacement_policy">
749+
<item>
750+
<property name="text">
751+
<string>Random</string>
752+
</property>
753+
</item>
754+
<item>
755+
<property name="text">
756+
<string>Least Recently Used (LRU)</string>
757+
</property>
758+
</item>
759+
<item>
760+
<property name="text">
761+
<string>Least Frequently Used (LFU)</string>
762+
</property>
763+
</item>
764+
<item>
765+
<property name="text">
766+
<string>Pseudo Least Recently Used (PLRU)</string>
767+
</property>
768+
</item>
769+
</widget>
770+
</item>
771+
</layout>
772+
</widget>
773+
</item>
774+
<item>
775+
<widget class="QGroupBox" name="dtlb_groupBox">
776+
<property name="enabled">
777+
<bool>true</bool>
778+
</property>
779+
<property name="title">
780+
<string>Data Translation Lookaside Buffer (TLB)</string>
781+
</property>
782+
<property name="checkable">
783+
<bool>false</bool>
784+
</property>
785+
<layout class="QFormLayout" name="formLayout_3">
786+
<item row="0" column="0">
787+
<widget class="QLabel" name="label_3">
788+
<property name="text">
789+
<string>Number of sets:</string>
790+
</property>
791+
</widget>
792+
</item>
793+
<item row="0" column="1">
794+
<widget class="Pow2SpinBox" name="dtlb_number_of_sets">
795+
<property name="minimum">
796+
<number>1</number>
797+
</property>
798+
<property name="maximum">
799+
<number>1024</number>
800+
</property>
801+
<property name="singleStep">
802+
<number>1</number>
803+
</property>
804+
<property name="stepType">
805+
<enum>QAbstractSpinBox::DefaultStepType</enum>
806+
</property>
807+
<property name="value">
808+
<number>1</number>
809+
</property>
810+
<property name="displayIntegerBase">
811+
<number>10</number>
812+
</property>
813+
</widget>
814+
</item>
815+
<item row="1" column="0">
816+
<widget class="QLabel" name="label_5">
817+
<property name="text">
818+
<string>Degree of associativity:</string>
819+
</property>
820+
</widget>
821+
</item>
822+
<item row="1" column="1">
823+
<widget class="QSpinBox" name="dtlb_degree_of_associativity">
824+
<property name="minimum">
825+
<number>1</number>
826+
</property>
827+
<property name="singleStep">
828+
<number>1</number>
829+
</property>
830+
<property name="value">
831+
<number>1</number>
832+
</property>
833+
</widget>
834+
</item>
835+
<item row="2" column="0">
836+
<widget class="QLabel" name="label_6">
837+
<property name="text">
838+
<string>Replacement policy:</string>
839+
</property>
840+
</widget>
841+
</item>
842+
<item row="2" column="1">
843+
<widget class="QComboBox" name="dtlb_replacement_policy">
844+
<item>
845+
<property name="text">
846+
<string>Random</string>
847+
</property>
848+
</item>
849+
<item>
850+
<property name="text">
851+
<string>Least Recently Used (LRU)</string>
852+
</property>
853+
</item>
854+
<item>
855+
<property name="text">
856+
<string>Least Frequently Used (LFU)</string>
857+
</property>
858+
</item>
859+
<item>
860+
<property name="text">
861+
<string>Pseudo Least Recently Used (PLRU)</string>
862+
</property>
863+
</item>
864+
</widget>
865+
</item>
866+
</layout>
867+
</widget>
868+
</item>
869+
</layout>
870+
</widget>
871+
</item>
872+
<item>
873+
<spacer name="verticalSpacer_6">
874+
<property name="orientation">
875+
<enum>Qt::Vertical</enum>
876+
</property>
877+
<property name="sizeHint" stdset="0">
878+
<size>
879+
<width>21</width>
880+
<height>40</height>
881+
</size>
882+
</property>
883+
</spacer>
884+
</item>
885+
</layout>
886+
</widget>
659887
<widget class="QWidget" name="tab_memory">
660888
<property name="accessibleName">
661889
<string>Memory Timings</string>
@@ -955,6 +1183,13 @@
9551183
</item>
9561184
</layout>
9571185
</widget>
1186+
<customwidgets>
1187+
<customwidget>
1188+
<class>Pow2SpinBox</class>
1189+
<extends>QSpinBox</extends>
1190+
<header>ui/pow2spinbox.h</header>
1191+
</customwidget>
1192+
</customwidgets>
9581193
<resources/>
9591194
<connections/>
9601195
</ui>

0 commit comments

Comments
 (0)