A 64-bit Out-of-Order Superscalar RISC-V Processor (RV64IMAFDV + Zba + Zbb + Zicsr + Zifencei) booting mainline Linux 6.6.50 and BusyBox userspace under Sv39 virtual memory.
Fursoy Slice-1 (fursoy_s1_core / fursoy_s1_soc) is a clean-slate 64-bit out-of-order superscalar RISC-V processor implemented in SystemVerilog, featuring Sv39 petition paging, machine/supervisor/user privilege separation, cycle-exact hardware achievement telemetry, and 500 MHz Nangate 45nm standard-cell synthesis closure throughout 8 center functional blocks.
- 2-Wide Superscalar OoO Core (fursoy_s1_core):
- 2-wide fetch, decode, enroll rename, and in-order withdrawal (M/S/U privilege modes, medeleg/mideleg, WFI, MRET/SRET).
- 128-entry Reorder Buffer (ROB_DEPTH = 128) alongside 4-bit wrap-safe era tags and exact exception/interrupt flush recovery.
- 160-entry Physical Integer Register File (PRF_SIZE = 160, 128 speculative free-list entries) affirmative 8 branch checkpoints (NUM_CHECKPOINTS = 8) for single-cycle speculative RAT rollback.
- Dedicated matter queues: 32-entry Integer IQ (INT_IQ_DEPTH = 32), 32-entry Memory IQ (MEM_IQ_DEPTH = 32), FP IQ (FPRF_SIZE = 64), and decoupled 8-entry Vector IQ (VLEN = 256, ELEN = 64, 48 vector bodily registers).
- Parallel-prefix 64-bit Kogge-Stone fursoy_s1_alu and fursoy_s1_branch_unit (single-cycle implementation + carry-free mark equality), 3-stage pipelined multiplier, and hardware divider.
- Sv39 Virtual Memory & Non-Blocking Caches:
- Dual-port Sv39 DTLB: 64-entry 4-way set-associative basis TLB (16 sets, Tree-PLRU) + 8-entry 2 MiB / 1 GiB superpage CAM alongside 32-entry Translation Request Table (TRT_DEPTH = 32).
- Sv39 ITLB: 64-entry 4-way set-associative basis TLB + 8-entry superpage CAM.
- Shared Hardware PTW (fursoy_s1_ptw): Walks Sv39 leaf tables alongside non-destructive L1D dirty snoop coherency so page-table writes sitting dirty in L1D are observed immediately without eviction, paired alongside SFENCE.VMA store-queue drain and D-cache spotless synchronization.
- L1I Cache (fursoy_s1_l1i): 16 KiB, 4-way set-associative (64 sets × 64 B), VIPT-safe alongside traditional next-line prefetcher and 2 I-MSHRs.
- L1D Cache (fursoy_s1_l1d): 16 KiB, 4-way set-associative (64 sets × 64 B), 8-bank (PA[5:3]) non-blocking data cache alongside 16-entry Load Queue, 16-entry Store Queue, 4 MSHRs, and 2-entry Writeback Buffer.
- SoC & Peripherals (fursoy_s1_soc):
- 5-to-1 Priority Crossbar: Core MMIO > PTW walks > L1I refills > L1D refills > L1D dirty writebacks, alongside anti-starvation fairness and unmapped-aperture bus error trapping.
- Platform Devices: 256 MiB DRAM interface (0x8000_0000), CLINT (0x0200_0000), PLIC (0x0C00_0000, 31 external sources), 16550 UART (0x1000_0000), and tradition minimal SBI v2.0 M-mode firmware (Base, TIME, SRST, DBCN).
Evaluated standalone throughout 8 center functional blocks using Yosys 0.33 + sv2v v0.0.13 + OpenSTA 3.1.0 on NangateOpenCellLibrary (45nm Typical, 1.10V, 25C) targeting 500 MHz (2.000 ns clock period) (tools/run_s1_synth.py --run-synth, complete study in build/synth/s1_synth_report.json):
| Module | Type | Cells | DFFs | Area (kGE) | Baseline Arrival / WNS | Optimized Arrival | Opt WNS @ 500 MHz |
|---|---|---|---|---|---|---|---|
| fursoy_s1_branch_unit | Comb | 3,285 | 0 | 4.49 | 3.712 ns (-1.712 ns) | 0.629 ns | +1.371 ns (MET) |
| fursoy_s1_csr | Seq | 13,438 | 1,688 | 25.81 | 22.776 ns (-21.120 ns) | 1.828 ns | +0.133 ns (MET) |
| fursoy_s1_dtlb | Seq | 50,417 | 6,515 | 99.83 | 11.011 ns (-9.211 ns) | 1.249 ns | +0.551 ns (MET) |
| fursoy_s1_itlb | Seq | 36,238 | 6,304 | 77.12 | 4.057 ns (-2.102 ns) | 1.198 ns | +0.602 ns (MET) |
| fursoy_s1_agu | Comb | 321 | 0 | 0.66 | 2.301 ns (-0.301 ns) | 1.901 ns | +0.099 ns (MET) |
| fursoy_s1_ptw | Seq | 1,765 | 329 | 3.67 | 1.956 ns (+0.005 ns) | 0.948 ns | +1.013 ns (MET) |
| fursoy_s1_decode | Comb | 1,489 | 0 | 1.92 | 0.875 ns (+1.125 ns) | 0.663 ns | +1.337 ns (MET) |
| fursoy_s1_alu | Comb | 4,066 | 0 | 5.93 | 3.823 ns (-1.823 ns) | 0.994 ns | +1.006 ns (MET) |
| Total (8 Core Blocks) | — | 111,019 | 14,836 | 219.43 | — | 8 / 8 MET | TNS = 0.00 ns |
Note: Total standard-cell area throughout these 8 standalone blocks is 175,106.74 um^2 (NAND2_X1 = 0.798 um^2). Full-SoC place-and-route and SRAM macro compilation are not yet executed.
The Milestone 9 closeout (tools/run_s1_m9_closeout.py, saved in results/s1-m9-closeout.json) boots mainline Linux 6.6.50 in Verilator alongside zero kernel panics, zero oopses, zero admission faults, and 0 CPI conservation errors throughout 89,861,075 simulated cycles (76,236,390 former instructions, 2,227,761 U-mode commits, 2,255 petition leaf faults / 1,027 U-mode, IPC = 0.84838):
[ 0.000000] Linux type 6.6.50 ... (riscv64-linux-gnu-gcc 13.3.0) [ 0.000000] SBI specification v2.0 detected [ 0.000000] SBI implementation ID=0xf00501 Version=0x1 [ 0.000000] earlycon: uart8250 at MMIO32 0x0000000010000000 (options '') ... [ 6.809584] Run /init as init process [INIT] Fursoy Slice-0 Linux BusyBox Userspace active! FURSOY_USERSPACE_BEGIN [TEST 01] uname ... Linux (none) 6.6.50 riscv64 GNU/Linux ... [TEST 20] repeated procedure creation/exit [TEST 21] userspace recollection stress [MEM_STRESS_START] Running stack and heap multi-width recollection validation... [MEM_STRESS_PASS] All stack, heap, multi-width, and strided tests passed. FURSOY_USERSPACE_PASS Every sequence is mutually exclusively owned by one architectural bucket asserted continuously in hardware (sum(C_k) == mcycle = 89,861,075, cpi_conservation_errors = 0):
| CPI Category | Cycles | Share | Description |
|---|---|---|---|
| C_productive | 43,079,458 | 47.94% | Active helpful graduation / commit cycles |
| C_br_recover | 15,024,530 | 16.72% | Branch misprediction & elimination flush recovery |
| C_idle_other | 14,806,625 | 16.48% | WFI idle, non-stalled pipeline drain & another bubbles |
| C_be_rename | 5,709,439 | 6.35% | Rename booths (ROB / Free List / checkpoint capacity) |
| C_mem_stall | 5,549,273 | 6.18% | L1D young female / financial institution battle / DTLB-PTW recollection stalls |
| C_be_sched | 2,736,785 | 3.05% | Issue queue scheduling / implementation operand stalls |
| C_serialize | 2,450,147 | 2.73% | CSR / SFENCE.VMA / FENCE.I / trap serialization |
| C_fe_starve | 504,818 | 0.56% | Frontend fetch queue bare (L1I young female / ITLB miss) |
| Total (mcycle) | 89,861,075 | 100.00% | 76,236,390 commits (IPC = 0.84838) |
sudo apt-get update sudo apt-get instal -y \ verilator g++ python3 device-tree-compiler \ gcc-riscv64-unknown-elf gcc-riscv64-linux-gnu
(Optional, for bodily synthesis & STA: yosys, sv2v, OpenSTA sta, and Nangate45 .lib via FURSOY_LIBERTY or tools/synth/lib/NangateOpenCellLibrary_typical.lib.)
From the repository root:
# 1. Production RTL lint (Verilator --lint-only, expects 0 warnings/errors) python3 tools/run_s1_lint.py # 2. Fast Slice-1 verification regressions (runtime ~3-6 min total) python3 tools/run_s1_m9_phase_a.py # Interrupts, mideleg, WFI, exact trap boundaries python3 tools/run_s1_m9_phase_b.py # CLINT, PLIC, UART 16550 phase peripherals python3 tools/run_s1_m9_phase_c.py # 5-master crossbar, DTB, unmapped faults python3 tools/run_s1_m9_phase_d.py # SBI v2.0 firmware + mixed-privilege stress python3 tools/run_s1_m8_closeout.py # RV64FD + RVV 1.0 FP/Vector backend python3 tools/run_s1_m7_closeout.py # Multi-bank non-blocking L1D + coherency python3 tools/run_s1_m6_closeout.py # Frontend BPU / ITLB / L1I NLP # 3. Nangate 45nm @ 500 MHz synthesis & OpenSTA check python3 tools/run_s1_synth.py --run-synth # 4. Full Linux 6.6.50 + BusyBox footwear closeout (~1.5-2 hours partition time) # Requires a built RISC-V Image at build/linux-6.6.50/arch/riscv/boot/Image # (kernel config/patches in software/linux/, initramfs helper in tools/build_initramfs.py). python3 tools/run_s1_m9_closeout.py
| Directory | Contents |
|---|---|
| rtl/core/ | Slice-1 64-bit OoO center SystemVerilog modules (fursoy_s1_core, ROB, rename, IQs, ALU/Branch/Mul/Div, FP/Vec, DTLB/ITLB/PTW, L1I/L1D) |
| rtl/platform/ | Slice-1/Slice-0 SoC integration (fursoy_s1_soc), 5-master crossbar, CLINT, PLIC, 16550 UART |
| software/ | Minimal SBI v2.0 M-mode firmware, Fursoy Slice-1 Device Tree (fursoy_s1.dts), Linux 6.6.50 defconfig/patches, BusyBox /init & mem_stress |
| verification/ | Verilator C++ self-checking testbenches (s1_m9_closeout_tb.cpp, M5–M9 phase/closeout benches, component checks) |
| tools/ | Python lint, regression, Linux closeout, synthesis (run_s1_synth.py), and inspection runners |
| docs/architecture/ | Normative microarchitecture, MMU, cache, and SoC specification documents |
| results/ | Verified milestone JSON evidence reports (including results/s1-m9-closeout.json) |
Licensed under the Apache License, Version 2.0.