学习:开源项目Cheshire

Cheshire 项目全景分析

Cheshire 是苏黎世联邦理工(ETHZ)与博洛尼亚大学 PULP 项目下的最小化、可运行 Linux 的 64 位 RISC-V 主机平台 ,围绕 CVA6(原 Ariane)应用级核构建。它的定位不是"又一个玩具 SoC",而是给需要主机 CPU 的系统提供一个轻量、可配置、能自主引导的宿主子系统------从极简 Linux SoC,到众核加速器(DSA / PMCAs)的控制平面。


一、架构拆解

完整配置下(hw/cheshire_soc.sv 顶层 + cheshire_pkg 参数包):

子系统 实现要点
计算​ 最多 31 个 CVA6 核,采用 self-invalidation 基一致性(非硬件目录一致性,靠软件/自失效协议维持)
互连​ AXI4 交叉开关(地址宽/数据宽/端口数可配),最多 16 个外部 AXI4 manager 口 + 16 个 AXI/Regbus subordinate 口;简单从设备走轻量 Regbus demux,压低面积与功耗
存储​ LLC(axi_llc)可按路(per-way)运行时切换为 SPM 便签存储器 ;Boot ROM 仅 7.2 KiB(-Os + LTO)
外设​ UART、I2C、SPI Host、GPIO、VGA(带内建 DMA)、全数字 chip-to-chip / D2D 串行链路、高吞吐 iDMA、SpinalHDL 实现的 USB 1.1(OHCI)
中断​ CLINT、CLIC(含 vCLIC)、PLIC,支持动态中断路由与可配外部中断源/目标数
调试​ RISC-V Debug Module + JTAG TTM,可调试 CVA6 及外部任意数量 hart(如加速器里的核)
实时性​ 每 manager 口独立的 AXI4 流量调节器(AXI-RT) ​ 做带宽隔离,以及 UNBENT 总线错误单元​
引导​ 被动预加载(JTAG / UART / D2D)或自主引导(SPI Flash / I2C EEPROM / 支持 GPT 分区的 SD 卡)

内部地址空间固定在 0x0--0x2000_0000,关键节点:Debug ROM 0x0、Boot ROM 0x0200_0000、CLINT 0x0204_0000、PLIC 0x0400_0000、LLC/SPM 0x1000_0000;外部资源从 0x2000_0000 起,LLC 输出区默认 0x8000_0000。


二、核心技术亮点

1. 首个开源可综合的 RPC DRAM 接口。 ​ 这是 Cheshire 论文最大的原创贡献:全数字、工艺无关的 reduced-pin-count DRAM 控制器,PHY 仅 22 个翻转 IO、3.5 kGE 面积 ,访问能耗 250 pJ/B ,200 MHz 下峰值 750 MB/s,优于同能效区间 HyperRAM 方案;32 B 传输访问外部 DRAM 仅需 8 个周期。

**2. "敏捷"存储层次。**​ LLC 逐路可切换为 SPM,让主机在需要时立刻获得片上 SRAM 级延迟;配合 AXI4 + Regbus 双层互连,把"高带宽突发"与"寄存器型低复杂度外设"分流。

3. 面向异构集成的接口设计。 ​ 可配数量的 AXI4 manager/subordinate 口 + 全数字 D2D 链路,本质上是把 Cheshire 设计成可插拔的 chiplet 宿主。

4. 硅验证:Neo 芯片。 ​ TSMC 65 nm 流片,1.2 V 下最高 325 MHz ,数据密集型负载整芯片功耗 < 300 mW,面积约 6.4 mm²。这是开源 SoC 中少见的、完成 RPC DRAM 实测表征的流片案例。


三、工程与生态

  • 构建体系 :Bender 管 IP 依赖 + GNU Make 编排;依赖 GNU Make ≥3.82、CMake ≥3.24、Python ≥3.11、Bender ≥0.27.1、RISC-V GCC ≥11.2,Python 侧已有 pyproject.toml + uv 可复现环境。
  • 目录 :hw(RTL)、sw(软件栈/测试)、target(仿真/FPGA/ASIC)、util、doc。
  • 目标平台 :仿真(QuestaSim 为主流,另有 VCS 流程)、Xilinx FPGA(Genysys2、VCU118、VCU128 支持 Linux 启动;ZCU102 因缺 SPI Flash/SD 而无法启动 Linux)、以及作为 IP 被集成。
  • 软件栈 :通过 cva6-sdk 构建 GCC / OpenSBI / U-Boot / Linux,生成 *.gpt.bin 镜像烧录 SD 卡或 SPI。
  • 许可证 :硬件与工具脚本 Solderpad 0.51,寄存器生成代码 Apache 2.0,USB OHCI 为 MIT,软件 Apache 2.0------整体商业友好。
  • 生态位 :它已被 Carfield(面向汽车混合关键性 SoC)用作主 host domain,负责常驻控制、时钟/复位域管理与对外 IO;也被 Headsail 等后续芯片工作引用。

四、需要留意的短板

  1. IO 一致性靠软件兜底 。USB、DMA 等非一致设备直写内存时,CVA6 缓存可能看不到;RISC-V 基础 ISA 无 CMO 指令,需依赖 Zicbom 扩展(2021 年 11 月 ratified)做 clean/invalidate/flush,靠上游 Linux 驱动侧维护一致性。ETHZ 已把"在 CVA6 + HPDCache + Cheshire 上集成验证 CMO、用 OHCI 驱动打通 USB 1.1"列为明确课题------说明这仍是进行中的痛点。
  2. 主存带宽天花板。RPC DRAM 是"低引脚数换集成成本"的取舍,750 MB/s 远低于 LPDDR 级别,不适合当作通用算力平台的主存方案。
  3. 工具链部分依赖商用 EDA。主流仿真流程绑定 QuestaSim/VCS,FPGA 流程绑定 Vivado;虽有开源 RTL,但完整验证体验并不"全开源"。
  4. 成熟度:仓库自述"仍在早期开发,接口与约定可能无预告变更";版本节奏为 v0.1.0(2024-10)→ v0.3.0(2025-04)→ v0.3.1(2025-06),2026 年仍在持续迭代(VCU128 DRAM 修复、CI 环境迁移、用 RDL 生成地址替代硬编码等)。

五、选型建议

适合:做 DSA/加速器 chiplet 的宿主控制平面、需要可流片的 Linux-capable RV64 基线、研究缓存一致性/实时互连/低引脚 DRAM、教学与体系架构实验(参数化干净、文档齐全)。

不适合:追求高内存带宽或 SMP 强一致性的通用计算、没有商用仿真器又要完整回归验证的团队、希望开箱即用的产品级平台。

上手路径建议:先 make all + QuestaSim 跑通 helloworld.spm.elf,再切 Genesys2 板卡启动 Linux,最后读 docs/um/arch 与 cheshire_pkg.sv 理解参数化边界。

相关推荐
m4Rk_10 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
鬓戈11 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
传奇开心果编程12 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
xian_wwq12 小时前
【学习笔记】等保合规安全基线核查实战
笔记·学习
传奇开心果编程12 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
yangmu320313 小时前
发动机是怎么把油变成动力的:四冲程内燃机原理拆解
学习
m4Rk_13 小时前
【论文阅读】Agent 记忆机制(81):EMR——用情景记忆避免 Agent 在多步推理中反复绕圈
论文阅读·人工智能·学习·开源·github
海海不掉头发13 小时前
阶段五_实验34-38_学习总结
深度学习·神经网络·学习·机器学习
M78佐菲13 小时前
ARM学习笔记(11)
linux·arm开发·笔记·嵌入式硬件·学习
M78佐菲13 小时前
ARM学习笔记(10)
linux·arm开发·笔记·嵌入式硬件·学习