You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Peter Aaser d7df1adfaf
Create LICENSE
6 vuotta sitten
project Nuke 6 vuotta sitten
src Nuke 6 vuotta sitten
.gitignore Nuke 6 vuotta sitten
LICENSE Create LICENSE 6 vuotta sitten
README.md Nuke 6 vuotta sitten
TODO.org Nuke 6 vuotta sitten
build.sbt Nuke 6 vuotta sitten
deliver.sh Nuke 6 vuotta sitten
exercise.org Nuke 6 vuotta sitten
instructions.org Nuke 6 vuotta sitten
sbt.sh Nuke 6 vuotta sitten

README.md

This is the coursework for the graded part of the TDT4255 course at NTNU.

Since it is the authors opinion that most tools out there are vastly underdesigned, this project comes with a lot of added homegrown utilities, including a RISC-V parser, assembler and interpreter.

When you test a design with a given program, that program is first parsed, then run in a software interpreter to get correct output, then assembled into a binary. This binary will then be loaded to your synthesized design (your processor) by the test harness provided in the skeleton code, along with any initial state.

Your processor will run the supplied binary, and the changes to state (memory and registers) will be recorded and compared with the interpreter log.

If it matches, your processor works, if not, you get an execution trace, hopefully showing what went wrong and where.

To get started, read the exercise.org file, it goes over the first pieces of the puzzle.

If you want to learn chisel on your own and use this project please send me some feedback on what you liked, disliked and what could have been improved :) If you end up using it for a course you're teaching I would be thrilled too. In this case, you can spend the time you're saving by sending a pull requests with some improvements!

Pull requests are more than welcome!

Nice to have list:

  • More sophisticated test feedback. A detailed error report on why the processor design failed.
  • Scaffolding to run synthesized designs. Preferrably targeting the PYNQ platform.
  • A fix for whatever problems you run into when using this project.
  • Either a battery of tests to find corner cases stress testing forwarders, hazard detectors etc, or even better, the tools to generate code with hazards automatically.