diff --git a/README.md b/README.md
index 88d7637..91319fc 100644
--- a/README.md
+++ b/README.md
@@ -1,95 +1,322 @@
+

-# TinyCPU
+
TinyCPU
-**A real, synthesizable RV32I RISC-V CPU in SystemVerilog,
compiled to WebAssembly and running your assembly live in the browser.**
+
+ A real, synthesizable RV32I RISC-V CPU in SystemVerilog,
+ compiled to WebAssembly and running live in your browser.
+
-Third in the series after [tiny-gpu](https://github.com/tinycomputers/tiny-gpu) and [tiny-tpu](https://github.com/tinycomputers/tiny-tpu).
+
+ A single-cycle core and a 5-stage pipelined core with forwarding and hazard handling.
+ Assemble a program in the browser, then step through every clock cycle: the pipeline, the registers, the memory, the console.
+
-[](https://github.com/tinycomputers/tiny-cpu/actions/workflows/rtl.yml)
-[](https://github.com/tinycomputers/tiny-cpu/actions/workflows/wasm.yml)
-[](https://github.com/tinycomputers/tiny-cpu/actions/workflows/web.yml)
-[](LICENSE)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-> **Live: [tiny-cpu.vercel.app](https://tiny-cpu.vercel.app)**. The app at `/app`, the landing page and the docs are
-> deployed. The iCE40 synthesis (Phase 9) builds and runs in simulation; the board itself is not yet tested.
->
-> See [`docs/PLAN.md`](docs/PLAN.md) for the full roadmap.
+---
-Every pipeline register, forwarding path and stall the UI will draw is a live `dbg_*` signal from the
-compiled RTL. Nothing on screen is faked.
+
+**TinyCPU** is an open-source, educational **RISC-V processor** you can read, simulate, synthesize and watch run. The RTL is
+written in **SystemVerilog** and is verified against the official `riscv-tests` suite and an independent Python golden model.
+The same hardware is compiled to **WebAssembly** with Verilator and Emscripten, so the page you are reading can run it: no
+JavaScript re-implementation of the CPU sits between you and the design.
+
+> **Live:** [tiny-cpu.vercel.app](https://tiny-cpu.vercel.app). Write RV32I assembly, run it on either core, and step cycle by cycle.
+> **Part of the Tiny series:** [TinyGPU](https://github.com/tinycomputers/tiny-gpu), [TinyTPU](https://github.com/tinycomputers/tiny-tpu), [TinyCompiler](https://tiny-compiler.vercel.app), [TinyAttention](https://tiny-attention.vercel.app).
+
+---
+
+## π Contents
+
+- [What is TinyCPU?](#-what-is-tinycpu)
+- [Features](#-features)
+- [How it works](#οΈ-how-it-works)
+- [Architecture](#-architecture)
+- [Performance](#-performance)
+- [Verification](#-verification)
+- [FPGA](#-fpga)
+- [Get started](#-get-started)
+- [Repository layout](#-repository-layout)
+- [Tech stack](#-tech-stack)
+- [Documentation](#-documentation)
+- [Roadmap](#οΈ-roadmap)
+- [The Tiny series](#-the-tiny-series)
+- [FAQ](#-faq)
+- [License](#-license)
+
+---
+
+## π§ What is TinyCPU?
+
+TinyCPU implements the **RV32I base integer instruction set** of RISC-V, the open ISA used in embedded controllers, research
+processors and teaching courses. It is small enough to read in an afternoon, and it is not a toy: it is a synthesizable design
+that is checked instruction by instruction against a reference.
+
+It is built for three audiences:
+
+- **Students of computer architecture** who want to see a pipeline work, including what a forwarding path and a load-use stall
+ actually do, cycle by cycle.
+- **Hardware engineers** who want a readable, lint-clean, verified RISC-V core to study, extend or synthesize.
+- **Anyone curious about RISC-V and CPUs** who wants to write a few lines of assembly and watch the processor execute them.
+
+## β¨ Features
+
+- **Two cores, one instruction set.** A single-cycle reference core and a classic **5-stage pipeline** (IF, ID, EX, MEM, WB).
+- **Full RV32I** base integer instructions, plus the read-only `cycle`, `time`, `instret` counters (`rdcycle`, `rdinstret` and their high halves).
+- **Hazard handling** in the pipeline: EX/MEM and MEM/WB **forwarding** into EX, a one-cycle **load-use stall**, and a two-cycle **branch flush**.
+- **A runtime switch for forwarding** (`cfg_forward_en`), so you can compare the same program with and without it.
+- **Browser assembler** that produces the same bytes as the GNU RISC-V toolchain (checked against GNU's output on 26 sources).
+- **Live visualizer** with four views: the pipeline with its hazard flags, the single-cycle datapath with live operand values,
+ a hazard lab that measures each hazard with forwarding on and off, and a programs comparison with a data-memory heatmap.
+- **Five example programs** (hello world, Fibonacci, bubble sort, memcpy, prime sieve), each with a known answer.
+- **FPGA build** for the Lattice iCE40UP5K (iCEBreaker), with a UART console and LED status.
+- **Honest verification**: the official `riscv-tests`, random programs, fault cases, and mutation checks that break the design on purpose.
+
+**Not included (yet):** interrupts, traps, privilege modes, the `M` (multiply/divide) and `C` (compressed) extensions, caches,
+and misaligned loads and stores (the address is forced into alignment and flagged). The plan lists these as stretch goals.
+
+## βοΈ How it works
+
+```mermaid
+flowchart LR
+ RTL["SystemVerilog RTL