Skip to content

Releases: munetomo-maruyama/mmRISC-2

mmRISC-2 Rev.02 (the final version)

Choose a tag to compare

@munetomo-maruyama munetomo-maruyama released this 19 Oct 17:00

mmRISC-2 Rev.02, the final version (2026-10-20). A 64-bit RISC-V CPU (RV64GC) designed entirely by Claude Code, booting Linux 7.2 on the Digilent Arty A7-100T at 50 MHz.

mmRISC-2 の最終版 Rev.02(2026-10-20)。Claude Code がすべてを設計した 64-bit RISC-V CPU(RV64GC)で、Digilent Arty A7-100T の上で 50 MHz で Linux 7.2 が起動する。

What is new since Rev.01

  • Larger TLBs: ITLB of 16 and DTLB of 32 entries (from 8 / 8), with PMU events for the page table walks (decisions 79 to 81). On Linux loads against Rev.01: awk −20.5 %, gunzip −11.4 %, ls -lR −8.7 %, the other kernel loads −3.5 to −5.9 %.
  • Decision 82: a load on the wrong path of a late branch no longer leaves MR waiting for the DTLB. CoreMark had lost 0.3 %; now 3.034 CoreMark/MHz.
  • Bare-metal development in the Eclipse IDE: a start-up kit (crt0, linker script, printf to the UART, the timer and interrupts), example projects, build and debug on the board over JTAG / cJTAG, on Ubuntu and Windows (LitexSystem/docs/ECLIPSE.md).
  • Debian 13 on the board, with gcc: Debian (riscv64) boots from the SD card in place of BusyBox, and gcc 14, make, gdb 16, git and apt run on mmRISC-2 itself (LitexSystem/docs/DEBIAN.md).
  • Tried and not taken: write-validate of whole lines (W1, +0.1 % in simulation) and posted uncached stores (W2, under 0.1 % by measurement) (ROADMAP.md).

Rev.01 からの変更

  • TLB の拡大: ITLB 16・DTLB 32 エントリ(8 / 8 から)と、ページテーブル探索の PMU イベント(決定 79〜81)。Rev.01 と比べた Linux の負荷: awk −20.5 %、gunzip −11.4 %、ls -lR −8.7 %、ほかのカーネルの負荷 −3.5〜−5.9 %。
  • 決定 82: late branch の外れた経路のロードが、MR に DTLB を待たせないように。0.3 % 下がっていた CoreMark が 3.034 /MHz に。
  • 統合開発環境 Eclipse によるベアメタル開発: 起動キット(crt0、リンカスクリプト、UART への printf、タイマと割り込み)とサンプルのプロジェクト。JTAG / cJTAG でボード上でビルド・デバッグ。Ubuntu と Windows で(ECLIPSE_J.md)。
  • ボード上の Debian 13 と gcc: BusyBox の代わりに Debian(riscv64)が SD カードから起動し、gcc 14、make、gdb 16、git、apt が mmRISC-2 そのものの上で動く(DEBIAN_J.md)。
  • 試して取り込まなかったもの: ライン全体の write-validate(W1、シミュレーションで +0.1 %)、キャッシュ無しのストアを待たない(W2、測って 0.1 % 未満)(ROADMAP_J.md)。

Numbers / 数値

Rev.02
CoreMark/MHz (board, Linux) 2.504 (rv64gc -O2), 2.794 (Zba/Zbb -O2), 3.034 (fastest options)
DMIPS/MHz 1.495 / 1.501 (-O2), 1.541 / 1.545 (fastest options)
Floating point FIR 66.6 MFLOPS, matrix multiply 43.6 MFLOPS (50 MHz)
ISA RV64IMAFDC, Zba, Zbb, Zbs, Zbc, Zicond, Zicboz, Zihintpause, Zihintntl, Sstc, Sdtrig, Zihpm / Sscofpmf / Smcntrpmf, Sv39, PMP 8
FPGA 50 MHz, WNS +0.140 ns, LUT 50,301 (79.3 %), slices 92.9 %
Verification 554 bug injections, all detected; 120-minute stress test PASS (memory, Ethernet, SD at once)

Attached / 添付

  • 20261020_WhitePaper_mmRISC-2.pdf: white paper (English, A4, 18 pages): how Claude Code designed mmRISC-2, the specification, the history, the rework and verification, the software environments, an evaluation of AI-driven design.
  • 20261020_WhitePaper_mmRISC-2_J.pdf: ホワイトペーパー(日本語版)。

Everything to make an SD card (Image, fw_jump.bin, boot.json) is in LitexSystem/software/boot/ of the source; the corresponding source of the Linux kernel is in the release linux-src-4929f78c004e. The repository is under the Apache License 2.0.

SD カードを作るファイル一式(Image、fw_jump.bin、boot.json)はソースの LitexSystem/software/boot/ にある。Linux カーネルの対応するソースはリリース linux-src-4929f78c004e に置いてある。リポジトリは Apache License 2.0。

mmRISC-2 Rev.01 (the first release)

Choose a tag to compare

@munetomo-maruyama munetomo-maruyama released this 19 Oct 17:04

mmRISC-2 Rev.01, the first release (2026-10-12). A 64-bit RISC-V CPU (RV64GC) designed entirely by Claude Code, booting Linux 7.2 on the Digilent Arty A7-100T at 50 MHz, 30 days after the start of the project. The final version is Rev.02.

mmRISC-2 の最初のリリース Rev.01(2026-10-12)。Claude Code がすべてを設計した 64-bit RISC-V CPU(RV64GC)で、Digilent Arty A7-100T の上で 50 MHz で Linux 7.2 が起動する。着手から 30 日。最終版は Rev.02。

Contents

  • RV64GC (IMAFDC) + Zba / Zbb / Zbs / Zbc / Zicond / Zicboz, M / S / U, Sv39 MMU (ITLB / DTLB of 8 entries each, hardware page table walker), PMP 8
  • An 8-stage in-order pipeline, branch prediction (256-entry BTB, gshare, return address stack)
  • FPU (F / D), a pipeline that takes one operation every cycle
  • L1 caches (I$ / D$ 16 KB each, the D$ non-blocking and write-back) and an L2 cache of 256 KB; the SoC's DMA goes through the D$ (coherence in hardware)
  • CLINT / PLIC, Sstc; JTAG / cJTAG on-chip debug (Debug Spec 1.0, 4 triggers); performance counters usable with Linux's perf (26 events)
  • On the board: LiteX BIOS → OpenSBI → Linux 7.2 → BusyBox from the SD card, Ethernet (DHCP, TFTP)

内容

  • RV64GC(IMAFDC)+ Zba / Zbb / Zbs / Zbc / Zicond / Zicboz、M / S / U、Sv39 MMU(ITLB / DTLB 各 8 エントリ、ハードウェアのページウォーカ)、PMP 8
  • 8 段のインオーダ・パイプライン、分岐予測(BTB 256、gshare、戻りアドレススタック)
  • FPU(単精度・倍精度)、毎サイクル 1 演算のパイプライン
  • L1 キャッシュ(I$ / D$ 各 16 KB、D$ はノンブロッキング・書き戻し)と L2 キャッシュ 256 KB。SoC の DMA も D$ を通す(一貫性をハードウェアで保つ)
  • CLINT / PLIC、Sstc。JTAG / cJTAG のオンチップデバッグ(Debug Spec 1.0、トリガ 4 本)。Linux の perf で使える性能カウンタ(イベント 26 種)
  • 実機: LiteX BIOS → OpenSBI → Linux 7.2 → SD カードの BusyBox、Ethernet(DHCP、TFTP)

Numbers / 数値

Rev.01
CoreMark/MHz (board, Linux) 2.498 (rv64gc -O2), 2.786 (Zba/Zbb -O2), 3.025 (fastest options)
DMIPS/MHz 1.496 (-O2), 1.542 (fastest options)
Floating point FIR 65.6 MFLOPS, matrix multiply 41.2 MFLOPS (50 MHz)
FPGA 50 MHz, WNS +0.664 ns, LUT 46,928 (74.0 %), slices 86.2 %
Verification 550 bug injections, all detected; 120-minute stress test PASS (mem 81, net 41, sd 517, NG 0)

Attached / 添付

  • 20261015_WhitePaper_mmRISC-2.pdf: white paper on Rev.01 (English, A4, 16 pages), written after the tag (2026-10-15) and published on main then. The Rev.02 edition is attached to Rev.02.
  • 20261015_WhitePaper_mmRISC-2_J.pdf: Rev.01 のホワイトペーパー(日本語版)。タグの後(2026-10-15)に書き、当時の main で公開したもの。Rev.02 版は Rev.02 に添付。

The SD card files (Image, fw_jump.bin, boot.json) are in LitexSystem/software/boot/ of the source; the corresponding source of the Linux kernel is in linux-src-4929f78c004e. Apache License 2.0.

SD カードのファイル一式(Image、fw_jump.bin、boot.json)はソースの LitexSystem/software/boot/ に、Linux カーネルの対応するソースは linux-src-4929f78c004e にある。Apache License 2.0。

Linux kernel source for LitexSystem/software/boot/Image (GPL-2.0)

Choose a tag to compare

Corresponding source of the Linux kernel image distributed in this repository as LitexSystem/software/boot/Image (GPL-2.0).

このリポジトリが LitexSystem/software/boot/Image として配布している Linux カーネル(GPL-2.0)の、対応するソース一式。

File Contents
linux-4929f78c004e.tar.xz litex-hub/linux commit 4929f78c004ecab9b68bb41018a3d11749dcea62 (7.2.0-rc2 base), unmodified (git archive of that commit)
linux.config The .config the Image was built with (same as LitexSystem/software/boot/linux.config)
SHA256SUMS Checksums of the two files above

Build:

tar -xJf linux-4929f78c004e.tar.xz
cp linux.config linux-4929f78c004e/.config
cd linux-4929f78c004e
make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- Image

Compiler: riscv64-unknown-linux-gnu-gcc 13.2.0 (binutils 2.43.1). The version string of the distributed Image ends in -dirty only because the tree it was built in sat on a case-insensitive file system, where 13 files whose names differ only in case collapsed; none of them is built with this configuration (CONFIG_NETFILTER is off). See LitexSystem/software/boot/README.md.

Checked (2026-10-09): building these two files as above gives an Image of the same size (15,464,960 bytes) and the same .config as the distributed one. Its strings are the same except for the build time (in the version banner and in the timestamps of the built-in initramfs) and the ./ prefix of some source file names (in-tree versus out-of-tree build).

The rest of this repository is under the Apache License 2.0 (LICENSE, NOTICE).