Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arcadia

                                                      8I
                                                      8I
                                                      8I   gg
                                                      8I   ""
   ,gggg,gg   ,gggggg,    ,gggg,    ,gggg,gg    ,gggg,8I   gg     ,gggg,gg
  dP"  "Y8I   dP""""8I   dP"  "Yb  dP"  "Y8I   dP"  "Y8I   88    dP"  "Y8I
 i8'    ,8I  ,8'    8I  i8'       i8'    ,8I  i8'    ,8I   88   i8'    ,8I
,d8,   ,d8b,,dP     Y8,,d8,_    _,d8,   ,d8b,,d8,   ,d8b,_,88,_,d8,   ,d8b,
P"Y8888P"`Y88P      `Y8P""Y8888PPP"Y8888P"`Y8P"Y8888P"`Y88P""Y8P"Y8888P"`Y8

Arcadia is an experimental computer built from the processor upward.

The current implementation starts with Oak, an RV32I processor written in
SystemVerilog. The Rust and Verilator simulator surrounds Oak with RAM and
memory-mapped devices, forming a minimal SoC inside the simulation environment.
There is not yet a separate Arcadia SoC hardware implementation.

The repository contains the processor RTL, simulation environment, target
support code, and firmware used to bring up the machine.

Repository layout

  hardware/oak
    Oak RV32I processor RTL and program fixtures.

  hardware/oak/sim
    Runs Oak and implements simulated RAM, MMIO, program loading, tracing,
    and execution control.

  system/ego
    Target-side Rust support for the simulated hardware interfaces.

  system/bringup
    Bare-metal program ran on Oak and its simulated platform.

  system/doom
    Bare-metal PureDOOM port rendered through Oak.

Requirements

  Rust stable
  riscv32i-unknown-none-elf
    rustup target add riscv32i-unknown-none-elf
  Verilator
  A C++17 compiler
  Clang (to build Doom)

Build and run the simulator with tracing enabled

  cd hardware/oak/sim
  cargo run -p oak-sim --features vcd -- --trace path\to\program

The simulator build requires VERILATOR_ROOT to point to the Verilator share
directory when it cannot be discovered automatically.

Build the bringup firmware

  cd system/bringup
  cargo build --release

Run Doom

Initialize the PureDOOM submodule, build the release binary, and
run it in the Oak simulator:

  git submodule update --init system/doom/vendor/PureDOOM
  cargo build --release --manifest-path system/doom/Cargo.toml
  cargo run --release --manifest-path hardware/oak/sim/Cargo.toml -p oak-sim -- system/doom/target/riscv32i-unknown-none-elf/release/doom-arcadia

The simulator opens a framebuffer window once Doom renders its first frame.

See the README in each component for implementation-specific details.

License

Licensed under the Apache License, Version 2.0. See LICENSE.

About

experimental computer (that runs DOOM)

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages