Hello all
I just wanted to share a project I worked on two years ago and have
picked up again recently. This project was started to provide an
educational simulator because the only existing ones at the time were
like SPIKE (
https://github.com/riscv/riscv-isa-sim) and were not easy
for students to use. To implement this goal I took the source code for
MARS and took the MIPS code out and put RISC-V in to achieve this
goal.I suspect many of the people on this list are already familiar
with MARS (
http://courses.missouristate.edu/KenVollmar/mars/), but if
your not, it is a IDE package that simulates a MIPS CPU and has been
used in many university programs.
Since then however, a few good simulators have popped up. Namely Ripes
(
https://github.com/mortbopet/Ripes/) and Venus
(
https://github.com/kvakil/venus). Ripes provides the pipeline view
which is certainly a help to educators teaching computer architecture.
Venus provides a simple interface in the Web which makes it easy to
get started and, in the fork used by Berkeley
(
https://github.com/ThaumicMekanism/venus), has extra features helpful
for grading.
What RARS provides beyond those two is a larger ISA (it supports
RV32IMFN whereas the others support RV32IM) and Linux (Spike)
compatible system calls. Quite large real assembly projects could be
written in RARS and then move over to a professional simulator like
SPIKE or rv8 (
https://github.com/rv8-io/rv8). Additionally,
I have recently been working on a Java API to allow more flexible
grading than the command line interface allows and better floating
point support which would make it possible to support doubles.
I've attached some screenshots of a simple program being run and a
executable can be found on Github
(
https://github.com/TheThirdOne/rars).
If you have any questions, comments or feature requests, I would be
happy to hear them.
Sincerely,
Benjamin Landers