Folders and files
| Name | Name | 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.