Project Description

Software engineers should be proficient in their area of expertise and also have overview of adjacent abstraction layers to understand the world in better context. Despite SUSE is not a hardware company, this project aims at implementing a simple RISC-V processor on a hobby FPGA board.

More details are in project repo's README.

Goal for this Hackweek

  • Get familiar with FPGA tools
  • Peek into HDL (hardware definition languages)
  • Design the CPU using SystemVerilog
  • Create a demo program to run on the CPU
  • Run the circuit in a simulator and eventually on the FPGA too
  • Implement some non-trivial features like pipelining or some instruction set extension

Resources

Looking for hackers with the skills:

risc-v fpga clang verilog

This project is part of:

Hack Week 23

Activity

  • almost 2 years ago: PPavlu joined this project.
  • almost 2 years ago: mkoutny added keyword "risc-v" to this project.
  • almost 2 years ago: mkoutny added keyword "fpga" to this project.
  • almost 2 years ago: mkoutny added keyword "clang" to this project.
  • almost 2 years ago: mkoutny added keyword "verilog" to this project.
  • almost 2 years ago: mkoutny started this project.
  • almost 2 years ago: mkoutny originated this project.

  • Comments

    • mkoutny
      almost 2 years ago by mkoutny | Reply

      We implemented several blocks of the circuitry:

      • control (roughly fetch/decode),
      • register file,
      • ALU,
      • block RAM,
      • memory control (for unaligned access).

      We also implemented memory mapped IO (using serial over USB block provided by TinyFPGA's library).

      Additionally, we made a simple demo program and tooling to cross-compile it on non-RISC-V machine and prepare it to "load" it to FPGA board's memory.

      Every circuit block is accompanied with (simulator) testsuite and they pass \o/ We didn't manage to run the circuit on FPGA, probably because of memory data preloading or cumbersome IO. That will need more debugging in the future. (Hence we also didn't get down to any of the non-trivial features.)

    Similar Projects

    Create openSUSE images for Arm/RISC-V boards by avicenzi

    Project Description

    Create openSUSE images (or test generic EFI images) for Arm and/or RISC-V boards that are not yet supported.

    Goal for this Hackweek

    Create bootable images of Tumbleweed for SBCs that currently have no images available or are untested.

    Consider generic EFI images where possible, as some boards can hold a bootloader.

    Document in the openSUSE Wiki how to flash and use the image for a given board.

    Boards that I have around and there are no images:

    • Rock 3B
    • Nano PC T3 Plus
    • Lichee RV D1
    • StartFive VisionFive (has some image needs testing)

    Hack Week 22

    Hack Week 21

    Resources


    pudc - A PID 1 process that barks to the internet by mssola

    Description

    As a fun exercise in order to dig deeper into the Linux kernel, its interfaces, the RISC-V architecture, and all the dragons in between; I'm building a blog site cooked like this:

    • The backend is written in a mixture of C and RISC-V assembly.
    • The backend is actually PID1 (for real, not within a container).
    • We poll and parse incoming HTTP requests ourselves.
    • The frontend is a mere HTML page with htmx.

    The project is meant to be Linux-specific, so I'm going to use io_uring, pidfs, namespaces, and Linux-specific features in order to drive all of this.

    I'm open for suggestions and so on, but this is meant to be a solo project, as this is more of a learning exercise for me than anything else.

    Goals

    • Have a better understanding of different Linux features from user space down to the kernel internals.
    • Most importantly: have fun.

    Resources