BuckyBall 项目结构概览
BuckyBall 是一个面向领域特定架构的可扩展框架,项目采用模块化设计,各目录职责明确,支持从硬件设计到软件开发的完整工具链。
主要目录结构
核心架构模块
arch/
- 硬件架构实现,包含 Scala/Chisel 编写的 RTL 代码- 基于 Rocket-chip 和 Chipyard 框架
- 实现自定义 RoCC 协处理器和内存子系统
- 支持多种配置和扩展选项
测试验证模块
bb-tests/
- 统一测试框架workloads/
- 应用工作负载测试customext/
- 自定义扩展验证sardine/
- Sardine 测试框架uvbb/
- 单元测试套件
仿真环境模块
sims/
- 仿真器和验证环境- 支持 Verilator、VCS 等多种仿真器
- 集成 FireSim FPGA 加速仿真
- 提供性能分析和调试工具
开发工具模块
-
scripts/
- 构建和部署脚本- 环境初始化脚本
- 自动化构建工具
- 依赖管理和配置
-
workflow/
- 开发工作流和自动化- CI/CD 流水线配置
- 文档生成工具
- 代码质量检查
文档系统
docs/
- 项目文档bb-note/
- 基于 mdBook 的技术文档img/
- 文档图片资源- 支持自动生成和更新
第三方依赖
thirdparty/
- 外部依赖模块 (submodules)chipyard/
- Berkeley Chipyard SoC 设计框架circt/
- CIRCT 电路编译器工具链
开发工作流
- 环境准备: 使用
scripts/init.sh
初始化开发环境 - 架构开发: 在
arch/
目录进行硬件设计和修改 - 测试验证: 使用
bb-tests/
中的测试套件进行功能验证 - 仿真调试: 通过
sims/
目录的仿真环境进行性能分析 - 文档更新: 自动生成或手动更新
docs/
中的技术文档
构建系统
项目支持多种构建方式:
- Make: 传统 Makefile 构建
- SBT: Scala 项目构建工具
- CMake: 测试框架构建系统
- Conda: Python 环境和依赖管理
版本管理说明
- Submodules:
thirdparty/
下的模块需要独立更新 - 主仓库: 核心代码和配置随主分支同步更新
- 文档: 支持自动生成,与代码变更保持同步