yari icon indicating copy to clipboard operation
yari copied to clipboard

YARI is a high performance open source FPGA soft-core RISC implementation, binary compatible with MIPS I. The distribution package includes a complete SoC, simulator, GDB stub, scripts, and various ex...

          YARI -- Yet Another RISC Implementation

Last update: 2010-09-04

INTRODUCTION

YARI is an high performance soft core RISC implementation, binary compatible with a subset of MIPS R3000.

This README will be out of date at the time you read this, but the implementation currently comprises:

  • A reference simulator which closely matches the RTL implementation (in fact they co-simulate).

  • A few regression and tests programs

  • An RTL (Verilog) implementation

    Core features:

    • an eight stage pipeline.
    • a 4-way associative write-through instruction cache (default 8 KiB)
    • a 4-way associative write-through data cache (default 16 KiB)
    • a store buffer
    • all of the integer user-level instructions supported

    Peripherals (depending on the target)

    • Async SRAM interface (32-bit and 16-bit)
    • Sync burst SRAM interface (32-bit)
    • Serial in/out
    • 1024x768x8 video interface

    Simulation

    • Enough support to fully simulate the RTL with Icarus Verilog.
    • Co-simulation against the reference simulator supported

    Synthesis

    • Multiple target platforms supported (currently only Altera based)
    • Runs at 80+ MHz.
  • A boot loader pre-loaded into the I$ - will load programs over the serial port.

  • Assorted tools to turn the elf binaries into ROM and RAM images.

GETTING STARTED

There are a few prerequisites for full YARI enjoyment:

  • For building any test programs: Cross compilation tool much be built (mips-elf-gcc, etc). The script xtools/BUILD is what I used to build them

  • For simulation: Icarus Verilog. Great stuff. Get the most recent version from http://www.icarus.com/eda/verilog

  • For synthesis: currently I've only tested with Quartus 7.2sp1, 8.0, 8.0sp1, and 10.0. Get it for free from http://www.altera.com.

With the Icarus Verilog installed you should be able to simply run

make rtlsim

and see the trace of instructions as the Verilog implementation makes it through a small self-checking regression test.

For more interesting workloads, try

make -C testcases VERB= PROG=buzzard isasim

or try co-simulation

make -C testcases VERB= PROG=fib cosim