If you want to build the bitstream for it, you need to have Oracle Java 8 and SBT - see https://github.com/SpinalHDL/VexRiscv#dependencies. I did not build that version of Verilator until I started using SpinalSim, so you don't need it to build a bitstream.
I also built a version of openocd configured for this project - https://github.com/SpinalHDL/openocd_riscv. But you only need that if you are going to debug to use SpinalSim to run or debug an elf file.
You then need to clone my version of the Vexriscv repository and then do::
"make generate" uses sbt to compile and run the scala and generate the verilog file MuraxArduino.v., and "make prog" builds and uploads the bitstream.
The version of the f32c Arduino bootloader I am using is included in that. It is at https://github.com/lawrie/VexRiscv/blob/master/src/main/ressource/hex/muraxArduino.hex
If you want to build the bootloader, you need a riscv compiler. I now have three on the my system including the one that comes with f32c/arduino. The bootloader source is in a separate repository - https://github.com/lawrie/VexRiscvSocSoftware/tree/master/projects/murax/boothex. You can build that with the make file. It currently assumes a riscv64 toolchain in /opt/riscv. (The one I built for icicle is there on my system). But as I say you don't need to do this as there is a version of the build hex file in the Vexriscv repository.
If you don't want to build the bitstream I could push that to the Vexriscv repository, or I could push the MuraxArduino.v file.
You then need my version of the f32c/arduino system. The best way to get that is to install the original version using the Arduino board manager as described in https://github.com/f32c/arduino, and then overwrite the ~/.arduino15/packages/FPGArduino directory with my version - https://github.com/lawrie/arduino.
Then in the Arduino IDE, you select::
Tools > Board:Generic FPGA Board
CPU Architect: RISC-V
CPU Speed: 50 Mhz
RAM Size: 32KB BRAM Internal
The reason for selecting 32KB BRAM Internal is that I have edited the start address for that to 0x9000000, which is the Blackice external SRAM. If you select 8kb BRAM Internal instead, it will use BRAM to run the Arduino program, but that only works for small programs. I could have edited the entry for 1MB SRAM Onboard instead, or added one for 512KB SRAM Onboard.
You need to copy the bitstream (e.g. do make prog) before uploading a new Arduino program. It is probably possible to make uploading a new Arduino program do a reset to avoid this.
You need to look at the PCF file to see what pins I have used for the various components.
Currently PWM works on just one pin as I have not implemented the combined PWM and GPIO component.
Arduino pins 0-3 and the Leds, pins 8-13 and the buttons and switches and the others (up to pin 31) are switchable between input and output using pinMode. PinMode INPUT_PULLUP is not implemented. I currently have an LED strip on pins 16-23.
Uart is on pins 85 and 88, i.e. the second USB connector.
There is one each of the components: SPI, Wire (i2c), PWM, tone, pulseIn, shiftIn, shiftOut, SevenSegment (a bonus component). I don't guarantee things working very well. I did use SPI to get data from an ADXL345 acceleration sensor, but there are some problems with it. Uart is lacking any flow control, so only works for simple cases. I am driving a Ping sensor using the pulseIn component.