In our implementation, we chose to build a complete RISC-V simulator rather than limiting it to just outputting the pipeline diagram. The simulator replicates the hardware logic as closely as possible.
To achieve this, we designed individual classes for every minute component, such as:
- MUXes
- AND gates
- OR gates
- ADDERs
This decision was made to minimize C++ abstraction and ensure the implementation closely mirrors actual hardware behavior.
- Implementing exception handling
- Expanding the design to support 64-bit architecture
- Adding branch prediction functionality
- Adding cache functionality
- Support for 'ecall'