From df580c5352528a4837b996a838f486d3838050a4 Mon Sep 17 00:00:00 2001 From: bd Date: Fri, 11 Apr 2025 23:09:49 -0400 Subject: Move storage to a separate git repository. --- gui/CMakeLists.txt | 4 +--- gui/main.cc | 40 +++++++++++----------------------------- 2 files changed, 12 insertions(+), 32 deletions(-) (limited to 'gui') diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 6b5eb22..5b177d2 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -1,5 +1,4 @@ cmake_minimum_required(VERSION 3.5) -set(CMAKE_CXX_COMPILER "g++") add_compile_options(-Wall -lstdc++) add_compile_options(-Wextra -Wpedantic) @@ -22,9 +21,8 @@ file(GLOB SRCS qt_add_resources(GUI_RESOURCES "resources.qrc") add_executable(risc_vector ${SRCS} ${GUI_RESOURCES}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib Qt6::Widgets) +target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib ram_lib Qt6::Widgets) set_target_properties(risc_vector PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) - diff --git a/gui/main.cc b/gui/main.cc index ce47d10..e873d1c 100644 --- a/gui/main.cc +++ b/gui/main.cc @@ -1,4 +1,3 @@ -#include "cli.h" #include "definitions.h" #include "gui.h" #include "logger.h" @@ -34,31 +33,24 @@ static void print_version_number() static void err() { std::cerr << "Usage:\n\trisc_vector [OPTIONS]\nOptions:\n\t--debug,\t-d: " - "turn on verbose output\n\t--memory-only,\t-m: run the memory " - "simulator only, without a GUI.\n\t--version,\t-v: print the " - "version information and exit\n" + "turn on verbose output\n\t--version,\t-v: print the version " + "information and exit\n" << std::endl; } -static void parseArguments(int argc, char **argv, bool &memory_only) +static void parseArguments(int argc, char **argv) { struct option long_options[] = { - {"debug", no_argument, 0, 'd'}, - {"memory-only", no_argument, 0, 'm'}, - {0, 0, 0, 0}}; + {"debug", no_argument, 0, 'd'}, {0, 0, 0, 0}}; int opt; - while ((opt = getopt_long(argc, argv, "d:m", long_options, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "d", long_options, NULL)) != -1) { switch (opt) { case 'd': global_log->setLevel(DEBUG); global_log->log(DEBUG, "DEBUG output enabled."); break; - case 'm': - global_log->log(INFO, "Starting the storage CLI interface..."); - memory_only = true; - break; default: err(); exit(EXIT_FAILURE); @@ -71,21 +63,11 @@ int main(int argc, char **argv) print_version_number(); global_log->log(INFO, "Initializing..."); - bool memory_only = false; - parseArguments(argc, argv, memory_only); - - if (memory_only) { - Cli cli; - cli.run(); - } else { - global_log->log(INFO, "Starting QT..."); - QApplication a(argc, argv); - GUI w; - w.show(); - return a.exec(); - } + parseArguments(argc, argv); - global_log->log(INFO, "Cleaning up..."); - global_log->log(INFO, "Goodbye!"); - return EXIT_SUCCESS; + global_log->log(INFO, "Starting QT..."); + QApplication a(argc, argv); + GUI w; + w.show(); + return a.exec(); } -- cgit v1.2.3 From 249e5bc94ef86307ecf68f8a07c65b2672ebb21c Mon Sep 17 00:00:00 2001 From: bd Date: Sat, 12 Apr 2025 00:10:52 -0400 Subject: Delete some more storage-only files --- CMakeLists.txt | 7 ++-- gui/CMakeLists.txt | 3 +- gui/main.cc | 2 +- inc/definitions.h | 102 ----------------------------------------------------- inc/stage.h | 2 +- inc/utils.h | 39 -------------------- src/sim/ex.cc | 2 +- src/utils/utils.cc | 42 ---------------------- tests/utils.cc | 65 ---------------------------------- 9 files changed, 7 insertions(+), 257 deletions(-) delete mode 100644 inc/definitions.h delete mode 100644 inc/utils.h delete mode 100644 src/utils/utils.cc delete mode 100644 tests/utils.cc (limited to 'gui') diff --git a/CMakeLists.txt b/CMakeLists.txt index c7918b5..cb614b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,11 +26,6 @@ set(RAM ram) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -# header files -include_directories( - ${PROJECT_SOURCE_DIR}/inc -) - # don't build RAM's tests set(RAM_TESTS OF CACHE BOOL "" FORCE) @@ -47,6 +42,7 @@ qt_standard_project_setup() # binary executable add_library(${PROJECT_NAME}_lib ${SRCS}) +target_include_directories(${PROJECT_NAME}_lib PRIVATE ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(${PROJECT_NAME}_lib ${RAM}_lib) find_package(Catch2 REQUIRED) @@ -56,6 +52,7 @@ file(GLOB_RECURSE TESTS "tests/*.cc") # test executable add_executable(test_rv ${SRCS} ${TESTS}) +target_include_directories(test_rv PRIVATE ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(test_rv PRIVATE Catch2::Catch2WithMain PRIVATE ${RAM}_lib) # test discovery diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 5b177d2..0d73527 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -21,7 +21,8 @@ file(GLOB SRCS qt_add_resources(GUI_RESOURCES "resources.qrc") add_executable(risc_vector ${SRCS} ${GUI_RESOURCES}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib ram_lib Qt6::Widgets) +target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/inc) +target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib ram_lib Qt6::Widgets) set_target_properties(risc_vector PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" diff --git a/gui/main.cc b/gui/main.cc index e873d1c..5e45465 100644 --- a/gui/main.cc +++ b/gui/main.cc @@ -1,4 +1,4 @@ -#include "definitions.h" +#include "pipe_spec.h" #include "gui.h" #include "logger.h" #include diff --git a/inc/definitions.h b/inc/definitions.h deleted file mode 100644 index c81c4e3..0000000 --- a/inc/definitions.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef DEFINITIONS_H -#define DEFINITIONS_H -#include "logger.h" -#include - -/** - * The number of bits to specify a word in a line - */ -#define LINE_SPEC 2 -/** - * The total number of words in a line - */ -#define LINE_SIZE static_cast(pow(2, 2)) -/** - * Number of bits in a word - */ -#define WORD_SPEC 32 - -/** - * The number of bits to specify a memory word - * The number of bits to specify a memory line - * The total number of lines in memory - */ -#define MEM_WORD_SPEC 10 -#define MEM_LINE_SPEC static_cast(MEM_WORD_SPEC - LINE_SPEC) -#define MEM_WORDS static_cast(pow(2, MEM_WORD_SPEC)) -#define MEM_LINES static_cast(pow(2, MEM_LINE_SPEC)) - -/** - * The number of bits to specify a l1 cache word - * The number of bits to specify a l1 cache line - * The total number of lines in l1 cache - */ -#define L1_CACHE_WORD_SPEC 7 -#define L1_CACHE_LINE_SPEC \ - static_cast(L1_CACHE_WORD_SPEC - LINE_SPEC) -#define L1_CACHE_LINES static_cast(pow(2, L1_CACHE_LINE_SPEC)) - -/** - * The total number of cycles a memory access takes - */ -#define MEM_DELAY 3 - -/** - * The total number of cycles a level one cache access takes - */ -#define L1_CACHE_DELAY 0 - -/** - * The number of general purpose registers - */ -#define GPR_NUM 16 - -/** - * The number of vector registers - */ -#define V_NUM 8 - -/** - * The number of bits to specify an instruction type - */ -#define TYPE_SIZE 2 - -/** - * The number of bits to specify a register - */ -#define REG_SIZE 5 - -/** - * The number of bits to specify an R-Type opcode. - */ -#define R_OPCODE_SIZE 5 - -/** - * The number of bits to specify an opcode. - */ -#define OPCODE_SIZE 4 - -/** - * The maximum value an integer can hold. - * The minimum is always this number plus one negated. - */ -#define MAX_INT 2147483647 - -/** - * Return the N least-significant bits from integer K using a bit mask - * @param the integer to be parsed - * @param the number of bits to be parsed - * @return the N least-significant bits from K - */ -#define GET_LS_BITS(k, n) ((k) & ((1 << (n)) - 1)) -/** - * Return the bits from integer K starting at N and ending at M using a bit - * mask - * @param the integer to be parsed - * @param the index of the starting bit to be parsed - * @param the index of the ending bit to be parsed - * @return a section of bits from K - */ -#define GET_MID_BITS(k, m, n) GET_LS_BITS((k) >> (m), ((n) - (m))) - -#endif /* DEFINITIONS_H_INCLUDED */ diff --git a/inc/stage.h b/inc/stage.h index 51ab667..da33075 100644 --- a/inc/stage.h +++ b/inc/stage.h @@ -1,8 +1,8 @@ #ifndef STAGE_H #define STAGE_H #include "accessor.h" -#include "definitions.h" #include "instrDTO.h" +#include "pipe_spec.h" #include "response.h" #include "storage.h" #include diff --git a/inc/utils.h b/inc/utils.h deleted file mode 100644 index a375b68..0000000 --- a/inc/utils.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef UTILS_H -#define UTILS_H -#include - -/** - * Parse an address into a tag, index into the cache table, and a line - * offset. - * @param the address to be parsed - * @param the resulting tag - * @param the resulting index - * @param the resulting offset - */ -void get_cache_fields(int address, int *tag, int *index, int *offset); - -/** - * Formats a string using snprintf. - * @param an object that represents the format string - * @param arguments to be formatted - * @return a string object holding the formatted result - */ -const std::string string_format(const char *const zcFormat, ...); - -/** - * Given `address`, returns an address that is within the current memory size - * using a clean wrap. - * @param an address - * @return an address guaranteed to be within range. - */ -int wrap_address(int address); - -/** - * Given `address`, returns the line and word it is in. - * @param an address - * @param the line (row) `address` is in - * @param the word (column) `address` corresponds to - */ -void get_memory_index(int address, int &line, int &word); - -#endif /* UTILS_H_INCLUDED */ diff --git a/src/sim/ex.cc b/src/sim/ex.cc index b6f8a1d..50f00a8 100644 --- a/src/sim/ex.cc +++ b/src/sim/ex.cc @@ -1,6 +1,6 @@ #include "ex.h" #include "accessor.h" -#include "definitions.h" +#include "pipe_spec.h" #include "instrDTO.h" #include "response.h" #include "stage.h" diff --git a/src/utils/utils.cc b/src/utils/utils.cc deleted file mode 100644 index e12a0e0..0000000 --- a/src/utils/utils.cc +++ /dev/null @@ -1,42 +0,0 @@ -#include "utils.h" -#include "definitions.h" -#include -#include -#include - -void get_cache_fields(int address, int *tag, int *index, int *offset) -{ - *tag = GET_MID_BITS(address, L1_CACHE_LINE_SPEC + LINE_SPEC, MEM_WORD_SPEC); - *index = GET_MID_BITS(address, LINE_SPEC, L1_CACHE_LINE_SPEC + LINE_SPEC); - *offset = GET_LS_BITS(address, LINE_SPEC); -} - -const std::string string_format(const char *const zcFormat, ...) -{ - va_list vaArgs; - va_start(vaArgs, zcFormat); - - va_list vaArgsCopy; - va_copy(vaArgsCopy, vaArgs); - const int iLen = std::vsnprintf(NULL, 0, zcFormat, vaArgsCopy); - va_end(vaArgsCopy); - - std::vector zc(iLen + 1); - std::vsnprintf(zc.data(), zc.size(), zcFormat, vaArgs); - va_end(vaArgs); - return std::string(zc.data(), iLen); -} - -int wrap_address(int address) -{ - if (address < 0) { - return ((address % MEM_WORDS) + MEM_WORDS) % MEM_WORDS; - } - return address % MEM_WORDS; -} - -void get_memory_index(int address, int &line, int &word) -{ - line = wrap_address(address) / LINE_SIZE; - word = address % LINE_SIZE; -} diff --git a/tests/utils.cc b/tests/utils.cc deleted file mode 100644 index 2e0e934..0000000 --- a/tests/utils.cc +++ /dev/null @@ -1,65 +0,0 @@ -#include "utils.h" -#include "definitions.h" -#include - -TEST_CASE("Parse arbitrary fields # one", "[utils]") -{ - int tag, index, offset; - int address = 0b0001010101; - get_cache_fields(address, &tag, &index, &offset); - CHECK(tag == 0b000); - CHECK(index == 0b10101); - CHECK(offset == 0b01); -} - -TEST_CASE("Parse arbitrary fields # two", "[utils]") -{ - int tag, index, offset; - int address = 0b0100111011; - get_cache_fields(address, &tag, &index, &offset); - CHECK(tag == 0b010); - CHECK(index == 0b01110); - CHECK(offset == 0b11); -} - -TEST_CASE("wrap address outside upper bound", "[utils]") -{ - int address = MEM_WORDS + 25; - int wrapped = wrap_address(address); - REQUIRE(wrapped == 25); -} - -TEST_CASE("wrap address inside upper bound", "[utils]") -{ - int address = MEM_WORDS - 25; - int wrapped = wrap_address(address); - REQUIRE(wrapped == MEM_WORDS - 25); -} - -TEST_CASE("wrap address at upper bound", "[utils]") -{ - int address = MEM_WORDS; - int wrapped = wrap_address(address); - REQUIRE(wrapped == 0); -} - -TEST_CASE("wrap address lower than 0 with magnitude lesser than mem size", "[utils]") -{ - int address = -10; - int wrapped = wrap_address(address); - REQUIRE(wrapped == MEM_WORDS - 10); -} - -TEST_CASE("wrap address lower than 0 but with magnitude greater than mem size", "[utils]") -{ - int address = -(MEM_WORDS + 10); - int wrapped = wrap_address(address); - REQUIRE(wrapped == MEM_WORDS - 10); -} - -TEST_CASE("wrap address at 0", "[utils]") -{ - int address = 0; - int wrapped = wrap_address(address); - REQUIRE(wrapped == 0); -} -- cgit v1.2.3