本文主要介绍如何利用 Claude Code(CC)完成 GitHub 上一个开源 RISC-V 项目的完整环境部署。由于我一直希望搭建一个能够运行 Linux 的RISC-V SoC,并将此前流片实现的 AI 加速器作为外设挂载到系统中做一些有意思的应用,因此选择了这个开源项目作为Baseline。整个部署过程包括了 RTL 仿真环境、RISC-V GNU 编译工具链、Linux 系统编译环境以及 GUI 实时交互界面等多个环节。整个过程耗时不到 12 小时。两年前为了调通这个工程,前后折腾了一两周,最终甚至连个 Linux 都没编译出来
。只能说现在智能体的工作效率已经离谱到确实可以进行大裁员了。IC 设计当前这种低效的开发方式,迟早也会被 AI 彻底取代。
工程地址: https://github.com/chengquan/QRISC-V996

本工程完全由 Claude Code 独立生成,本人仅负责“聊天”和下发指令。整个工程消耗了不到一周Token预算的10%,套餐为每月 100 刀。
展示如下:已成功在RTL级跑通一个 Linux 操作系统。Github上有全部实现细节,照着Markdown操作即可,有兴趣的铁子可以跑一下。

与 Claude Code 的大致“聊天”内容如下:
你能基于开源的 BiRISC-V core 以及一些相关外设,帮我构建一个 RISC-V based SoC 吗?(我只提供了几个 GitHub 链接,比如https://github.com/ultraembedded/biriscv)Result:CC 基本无阻力完成,顺利完成了SoC的构建。
这个开源工程声称支持 Linux,并提供了编译后的运行环境。但我希望从零开始完整编译 Linux。你能基于其 Boot 程序和 BusyBox 配置实现吗?所需的软件和代码你自行在网上查找。Result:CC 初期编译失败,经过我与它 2–3 轮交互后,它定位到 Linux 内核版本与 Glibc 不兼容的问题,并最终通过升级内核至 4.5 解决。
我发现开源提供的 testbench 是 SystemC 写的,你能帮我替换成 Verilog 版本吗?Result:CC 无阻力完成。
当前验证流程都在后台运行,你能做一个 Python GUI 方便我实时交互与监控吗?Result:CC 无阻力完成。
我发现 UART 是挂在 SBI 上的,你能帮我改成基于 device tree 的驱动方式吗?Result:CC 经过一段 debug 后(期间虽然提示了一些 bug,但我完全不懂这个,只能打鸡血鼓励它
),最终自行完成,并顺带生成了新的系统镜像。
我既希望这个 SoC 能运行裸机程序,也能运行 Linux 程序,你能帮我做一个 SDK,并基于现有外设给出一些示例代码吗?Result:CC 无阻力完成。
最后,我想把整个工程整理并发布到 GitHub,你能帮我精简结构,并在每个文件夹下补充完整的 Markdown 文档,确保他人可以复现吗?Result:CC 无阻力完成。
本文以下内容均由Claude Code生成。不用看了,凑字数的。
先说结论
不用买开发板、不用流片,只要一台装了 Linux 的电脑(Windows的 WSL 也行),你就能看着一颗 RISC-V 处理器——从上电、跑引导程序、启动 Linux 内核、一直到出现 “~ #” 命令行提示符——全过程都在你眼前的“数字电路仿真”里发生。而且这颗“芯片”和这套 Linux,从硬件电路到操作系统,全部是从源代码自己编译出来的。
这个项目叫QRISC-V996。下面用大白话讲清楚:它是什么、为什么有意思、你能拿它干什么。
一、它到底是什么?
一句话:一个“能开机、能交互、能跑程序”的完整 RISC-V 电脑——只不过这台电脑活在仿真里。

图1 全景:你敲命令→ 仿真里的 RISC-V 芯片→ 运行自编的 Linux
拆开看是四层,每一层都是开源、可自己重建的:
·处理器核:biRISC-V,一颗双发射的 RV32IMA 核(带指令/数据缓存、内存管理单元 MMU)——相当于芯片的“大脑”。
·外设:UART 串口、定时器、GPIO、SPI、中断控制器——全是真正的硬件电路描述(RTL),不是软件假装的。
·操作系统:一套从源码编译的 Linux 5.4 + BusyBox 文件系统。
·引导程序:SBI 固件,负责把内核拉起来、并补上这颗核没有的几条指令。
这四层用Verilator(把电路“翻译”成可运行程序的工具)做成一个仿真器,我们叫它 tb_soc。你通过一个串口控制台GUI 跟里面的 Linux 打字交互,就像连着一块真开发板。
二、为什么这件事有意思?
因为它把通常“看不见、摸不着”的东西,全摊开在你面前了:
·看得见硬件:一条指令怎么取、缓存怎么命中、外设寄存器怎么被读写,都能用波形看到每一个时钟周期。
·全栈自编:从 Verilog 电路,到 GCC 交叉编译器,到Linux 内核,到根文件系统——没有黑盒,每一层都能改、能重建。
·真实但安全:它是真实的电路逻辑(不是“差不多得了”的行为模型),却跑在电脑里,改错了也不会烧板子。
一句话:它是学习“计算机到底怎么从一堆门电路变成能跑 Linux 的系统”的绝佳活教材。
三、芯片内部长什么样?
处理器核通过 AXI 总线,接到一个“互联”上;互联再按地址把请求分发给 DRAM 和各个外设。每个外设都有一个固定的“门牌号”(地址),软件往那个地址读写,就等于操作真实硬件。

图2SoC 内部:核 + AXI 互联+ 真 RTL 外设(每个外设一个地址)
这里踩过两个很“硬核”的坑,也是这个项目最有价值的部分之一:
·AXI ID 路由:核的取指和访存走两条总线,响应必须按编号送回正确的那条,否则取指会永久卡死、根本起不来。
·中断电平:外部中断信号必须“电平跟随”,否则中断只来一次核就僵住——这是让真中断驱动的串口能工作的关键。
这两个都是真实的电路Bug,定位它们要靠看波形一拍一拍地追,修好后系统才能一路启动到命令行。
四、你能拿它干什么?——写程序
平台自带一个 SDK,两种玩法:
① 裸机程序(没有操作系统):直接在核上跑,直接读写外设寄存器去点灯(GPIO)、发串口、收发 SPI。启动快、最适合验证硬件和看波形。一条命令就能编译并跑:
./build_run.sh examples/gpio.c
② Linux 程序(在系统里当进程跑):用标准 C 写,经 /dev/mem 操作外设。这里有个很实用的小发明——“虚拟磁盘”。

图3 虚拟磁盘:改一个程序几秒搞定,不用重建内核
通常你改一个Linux 程序,要把它重新“烤”进内核镜像里,重建一次要一两分钟。虚拟磁盘的做法是:把程序单独打包,放到内存里内核不用的一块区域;开机时系统再用 mmap 把它取出来放进/opt。于是改程序只要重打这块磁盘(几秒),内核完全不用动——迭代效率天差地别。
五、上手有多快?
装好依赖、编译一次仿真器(一两分钟),就能启动:
python3 gui/biriscv_soc_console.py# 点“启动”,等到 ~ # 就能敲命令了
到了命令行,uname、ls、cat /proc/cpuinfo 都能跑;cpuinfo 里会看到 isa: rv32ima、mmu: sv32——这就是biRISC-V 核的真实身份证。想看硬件波形,勾一下“录波形”,GPIO/SPI 引脚的每一次跳变都看得清清楚楚。
写在最后
QRISC-V996 把“一台 RISC-V 电脑”从最底层的电路,到最上层的 Linux 命令行,完整地、可复现地摆在了你面前。它不追求跑得多快(周期级仿真本就慢),而是追求“透明”——每一层都看得见、改得动、能从零重建。
如果你想真正搞懂“计算机是怎么从晶体管一路变成能跑Linux 的系统”,这是一个少见的、能让你亲手把整条链路走一遍的项目。
致谢:处理器核 biRISC-V、外设riscv_soc、引导器riscv-linux-boot 均来自开源社区ultraembedded;操作系统基于Linux 5.4 与 BusyBox。