Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.
/ Vulcan Public archive

RISC-V Instruction Set Simulator (Built for education).

License

Notifications You must be signed in to change notification settings

vmmc2/Vulcan

Repository files navigation

Vulcan

vulcanlogo RISC-V Instruction Set Simulator Built For Education.

Features

  • RV32I Extension.
  • RV32M Extension.
  • RV32A Extension.
  • RV32F Extension.
  • Visualization of programming counter (PC), machine code and original instructions side-by-side.
  • Embedded editor inside Vulcan.
  • Integer registers visualization.
  • Single precision floating-point registers visualization.
  • Memory visualization.
  • Syntax Error Alert.

Implemented Instructions

RV32I Extension

  • lui
  • auipc
  • jal
  • jalr
  • beq
  • bne
  • blt
  • bge
  • bltu
  • bgeu
  • lb
  • lh
  • lw
  • lbu
  • lhu
  • sb
  • sh
  • sw
  • addi
  • slti
  • sltiu
  • xori
  • ori
  • andi
  • slli
  • srli
  • srai
  • add
  • sub
  • sll
  • slt
  • sltu
  • xor
  • srl
  • sra
  • or
  • and
  • fence
  • fence.i
  • ecall
  • ebreak
  • csrrw
  • csrrs
  • csrrc
  • csrrwi
  • csrrsi
  • csrrci

RV32M Extension

  • mul
  • mulh
  • mulhsu
  • mulhu
  • div
  • divu
  • rem
  • remu

RV32F Extension

  • flw
  • fsw
  • fmadd.s
  • fmsub.s
  • fnmsub.s
  • fnmadd.s
  • fadd.s
  • fsub.s
  • fmul.s
  • fdiv.s
  • fsqrt.s
  • fsgnj.s
  • fsgnjn.s
  • fsgnjx.s
  • fmin.s
  • fmax.s
  • fcvt.w.s
  • fcvt.wu.s
  • fmv.x.w
  • feq.s
  • flt.s
  • fle.s
  • fclass.s
  • fcvt.s.w
  • fcvt.s.wu
  • fmv.w.x

RV32A Extension

  • lr.w
  • sc.w
  • amoswap.w
  • amoadd.w
  • amorxor.w
  • amoand.w
  • amoor.w
  • amomin.w
  • amomax.w
  • amominu.w
  • amomaxu.w

Limitations

  • Unfortunately, by the time that I did the initial version, Flutter Web does not support responsive web apps. Because of it, one must use Vulcan in fullscreen mode. Otherwise, the app will throw overflow exceptions.

Usage

Web Browser Status

  • Google Chrome
  • Mozilla Firefox
  • Microsoft Edge

How to use it?

  • You must be familiar with RISC-V Assembly in order to use Vulcan properly. If you want to learn about it, you can check the documentation folder inside this repository.

How to simulate my RISC-V Assembly code?

  • You must go to the "Editor" tab and write your code inside the editor. When you are done, press the "Simulate" button.

Local Usage

  • First of all, you must install the Dart SDK in your computer: https://dart.dev/
  • Then, you need to install the Flutter framework: https://flutter.dev/
  • Since Vulcan is a Flutter WebApp, you must install the Web extension. More info can be found here: https://flutter.dev/docs/get-started/web
  • After that, you can download this repository as a zip folder. Extract it in your machine. In the command line, get inside it and finally run the following command:
flutter run -d chrome
  • Then you can use it as you please.
  • This is the version 1.0 (not the final).

Web usage

Bugs and Errors

  • If you find any bugs, errors or strange behavior, feel free to open an issue. The only thing that I ask is to provide a detailed explanation of the bug/error/strange behavior. If possible, provide a screenshot.

Screenshots

Home Page

homepage

Editor Page

editorpage

Simulator Page 1

simpage1

Simulator Page 2

simpage2

Simulator Page 3

simpage3

Simulator Page 4

simpage4