Repository navigation
Releases: munetomo-maruyama/mmRISC-2
Release list
mmRISC-2 Rev.02 (the final version)
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
aptrun 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)
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 onmainthen. 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)
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).