Skip to content
Merged
Show file tree
Hide file tree
Changes from 101 commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
8789836
[bb-test] refactor: Update memory management in sw and ISA integration
shirohasuki Dec 20, 2025
ecfe3a0
[arch] feat: update config with Serializable
shirohasuki Dec 22, 2025
41f8f46
[bb-test] fix: fix the mistake of the bits of the ISA inst need resolved
Mikemy666 Dec 24, 2025
45f09ff
[arch] feat: complete implementation of hierarchical parameterisation
shirohasuki Dec 28, 2025
e0594f4
[arch] fix: fix lots of bugs to pass compilation
shirohasuki Dec 30, 2025
cce29a9
[arch] feat: add common Router
shirohasuki Jan 1, 2026
06f1149
[arch] refactor: remove EmptyBall module and update BBus initialization
shirohasuki Jan 1, 2026
88e31e4
[arch] feat: enhance BBus and MemRouter with dynamic bandwidth handli…
shirohasuki Jan 1, 2026
57fb795
[arch] refactor: streamline BBus and MemRouter for flat indexing and …
shirohasuki Jan 2, 2026
06b38bc
[arch] refactor: employ composition over inheritance to streamline th…
shirohasuki Jan 4, 2026
02354b2
[arch] slightly update
shirohasuki Jan 4, 2026
16a79da
Fix some bugs
SJM946 Jan 4, 2026
83965cb
[arch] feat: add channel peak
shirohasuki Jan 4, 2026
d29ea17
[arch] refactor: update BallDomain and related modules to use top-lev…
shirohasuki Jan 4, 2026
1e2febc
[arch] feat: introduce ChannelMappingTable
shirohasuki Jan 4, 2026
38ffc17
[arch] refactor: remove redundant ball_id, bank_id, and rob_id assign…
shirohasuki Jan 4, 2026
d904ce5
[arch] slightly update
shirohasuki Jan 4, 2026
f9b5fd0
[arch] feat: implement ChannelCluster and refactor BallMemChannel int…
shirohasuki Jan 4, 2026
e33396a
[arch] refactor: update BallDomain and related modules to use unified…
shirohasuki Jan 4, 2026
1b77849
[arch] del: remove fpga package object
shirohasuki Jan 4, 2026
83e3a0c
[arch] refactor: simplify BallDomain and BBus channel connections usi…
shirohasuki Jan 4, 2026
5758a61
[arch] fix: fix some bugs of the connection about memrouter
Mikemy666 Jan 4, 2026
86cb203
[arch] fix: fix some bugs of the connection about memroute againr
Mikemy666 Jan 4, 2026
a21572c
[arch]Fix some initialization bugs
SJM946 Jan 4, 2026
7f6ee9d
[arch] fix: fix some bugs of the dead lock of channel module
Mikemy666 Jan 4, 2026
daf63e0
[arch]feat:add initialization of some val
Mikemy666 Jan 5, 2026
1719942
[arch]fix: Fixed the bug where accpipe data was misread.
Mikemy666 Jan 5, 2026
ab16d63
[arch]fix:Fixed bugs in the memdomain backend and strictly controlled…
Mikemy666 Jan 5, 2026
9d7d9a2
Revert "[arch] fix: fix some bugs of the dead lock of channel module"
Mikemy666 Jan 5, 2026
35c5a9b
[arch]Fix sone interface bugs in memrouter
SJM946 Jan 5, 2026
b404ad2
[arch]Fix:fix some bugs of memdomain
Mikemy666 Jan 6, 2026
8dd289d
[arch]Fix interface initialazaiton bugs in memrouter
SJM946 Jan 6, 2026
8e3abab
[arch]fix:fix the circle of combination bug of accpipe
Mikemy666 Jan 6, 2026
6824f78
[arch]fix:fix the bugs of toybuckyball
Mikemy666 Jan 6, 2026
77a8d40
[arch]fix:fix the potential problems of readreqgen module
Mikemy666 Jan 6, 2026
ca2c912
[arch]fix:fix some bugs of memrouter
Mikemy666 Jan 7, 2026
aae4599
[arch]feat:add writereqgen part for memrouter
Mikemy666 Jan 8, 2026
a4b9ce6
[arch]fix:fix the potential probelmes of combination loops
Mikemy666 Jan 8, 2026
ecb79bb
[arch] fix: fix mvin/mvout test bug
shirohasuki Jan 9, 2026
aea83c1
[bebop] feat: bump bebop to the latest version.
shirohasuki Jan 10, 2026
5e2a908
Merge main: convert bebop to submodule
shirohasuki Jan 10, 2026
f58fca0
[bb-tests/ctest] refactor: replace bb_mset for memory allocation cons…
shirohasuki Jan 11, 2026
c9b48ff
[bb-tests/ctest] refactor: update memory allocation to use virtual ba…
shirohasuki Jan 11, 2026
cc9a24b
Fix some bugs and simplify the logic
SJM946 Jan 22, 2026
18bd7de
test
SJM946 Jan 22, 2026
863d52e
Merge branch 'main' into vmem-dev
shirohasuki Jan 22, 2026
ec19a12
[arch]Fix memdomain bugs, successfully finish running vecunit matmul …
shirohasuki Jan 23, 2026
ccab3c1
[arch]Partly fix TLB bugs
SJM946 Jan 25, 2026
3f0ddd2
[arch]Revert changes to default.json
SJM946 Jan 25, 2026
6081c4b
[arch]Fix TLB bugs, using paddr for now
SJM946 Jan 26, 2026
d3c1b30
[arch] Add AxisBundle class for blink interface
shirohasuki Jan 29, 2026
513bc5a
[arch]Remove memRouter and add mapping table for MemMidend
SJM946 Jan 30, 2026
ec610a6
[sims] feat: add cosimulation support
shirohasuki Jan 30, 2026
f444a0c
[sims] add cosim server
shirohasuki Jan 30, 2026
79b7386
[arch]Fix some TLB/reader/writer bugs
SJM946 Jan 30, 2026
0d36b0e
[arch] refactor: rewrite RoCC command
shirohasuki Feb 2, 2026
4771e88
[arch]Rewrite mapping table allocating logic
SJM946 Feb 2, 2026
d18df9f
[nix] feat: init Nix Flake support
shirohasuki Feb 2, 2026
8ca9697
[nix] wip: nix installation update
shirohasuki Feb 2, 2026
ea14ac9
[nix] wip: nix installation update
shirohasuki Feb 2, 2026
20e745c
[nix] feat: update Nix environment setup
shirohasuki Feb 2, 2026
97255b5
[nix] fix: fix bugs in build-all.sh
shirohasuki Feb 2, 2026
1065605
[arch]fix: fix bugs of bankwriting in memdomain
Mikemy666 Feb 3, 2026
c18a8fc
[arch]fix: fix bugs of error addr from dma
Mikemy666 Feb 3, 2026
c6f7804
[arch] Fix read request bug
SJM946 Feb 3, 2026
71d8245
Merge branch 'vmem-dev' of https://github.com/DangoSys/buckyball into…
SJM946 Feb 3, 2026
434e84b
[arch]fix:fix some bugs of bankreading in memdomain
Mikemy666 Feb 3, 2026
4b7c13d
[arch] Fix vecunit read resp bug
SJM946 Feb 3, 2026
df4a9fe
[arch]improve:improve the robust of bankreading
Mikemy666 Feb 4, 2026
14b470f
[nix] feat: add htif env into nix
shirohasuki Feb 4, 2026
fd2e510
[arch] Add acc config inst
SJM946 Feb 5, 2026
c770fd7
[arch]fix :fix the bug of reludecode and improve ctest
Mikemy666 Feb 6, 2026
1bdc23b
[arch]fix:fix bugs of streamreader and add transposeball
Mikemy666 Feb 6, 2026
67b719f
[arch] fix:fix bugs of reluball
Mikemy666 Feb 9, 2026
a51f257
[arch] Remove acc config inst, add vbank config inst, rewrite memBank…
SJM946 Feb 10, 2026
da2d09a
[arch] Fix memBackend bugs
SJM946 Feb 10, 2026
2b37c89
[arch]fix:fix some bugs of transposeball
Mikemy666 Feb 11, 2026
cf545b0
Merge branch 'dev-from-67b719f' into vmem-dev
Mikemy666 Feb 11, 2026
77af77b
[arch] Add acc_group_id signal for acc control
SJM946 Feb 11, 2026
11e7eee
[arch]add:add im2colBall
Mikemy666 Feb 11, 2026
73f1ff0
Merge branch 'vmem-dev' of github.com:DangoSys/buckyball into vmem-dev
Mikemy666 Feb 11, 2026
60c5894
[arch] Rewrite AccPipe and finish acc control in MemBackend
SJM946 Feb 12, 2026
c0a1edd
feat: add bebop nix support
shirohasuki Feb 12, 2026
8220eed
[arch] Fix some bugs and simplify the logic in MemBackend
SJM946 Feb 12, 2026
714326b
[arch]fix:fix bugs of lost data of last line in backend
Mikemy666 Feb 13, 2026
55a4aa1
[arch]fix:fix dead error of compling
Mikemy666 Feb 13, 2026
7b561cf
[arch] Fix some bugs in VecUnit, successfully finish running vecunit_…
SJM946 Feb 13, 2026
3657cbc
[scripts] del: remove old build system. ATTENTION: this update need r…
shirohasuki Feb 13, 2026
80b04f0
[scripts] fix: add sbt to build environment and fix bug in rtl build
shirohasuki Feb 14, 2026
03d1769
[ci] fix: fix PR head checkout
shirohasuki Feb 14, 2026
130ef8b
[nix] feat: add UV dependency to build environment
shirohasuki Feb 14, 2026
64d9837
[ci] feat: add DeterminateSystems Nix action to GitHub workflow
shirohasuki Feb 14, 2026
703d651
[scripts] feat: update build-all.sh to include bebop installation step
shirohasuki Feb 14, 2026
306977b
[nix] feat: add pre-commit package to flake.nix
shirohasuki Feb 14, 2026
af9f85f
[scripts] fix: replace bbdev env with nix
shirohasuki Feb 14, 2026
2e2e7d9
[doc] update README.md
shirohasuki Feb 15, 2026
b8046e2
[scripts] fix: update condition for Nix installation check;
shirohasuki Feb 15, 2026
38be7df
[bbdev] fix: bump to fix ci bug
shirohasuki Feb 25, 2026
6322afa
[arch] Simplify MemMidend
Feb 26, 2026
5c90ead
[arch] Remove channel_id in MemBackend mapping table
Feb 27, 2026
1df991f
[arch]Rewrite memset inst
Feb 27, 2026
dc0247b
[arch]fix:fix the bugs of im2col in decoding
Mikemy666 Feb 28, 2026
3f36236
[arch] Fix some bugs, successfully running most workloads using VecBall
Feb 28, 2026
53e2c93
[arch] Fix some bugs in workloads
Feb 28, 2026
fd464d6
[bb-tests] fix: replace virtual bank configuration with memory alloca…
shirohasuki Feb 28, 2026
a21dfef
[bb-tests] fix: fix bugs in mvin_mvout and relu tests
shirohasuki Mar 1, 2026
c9d0df3
[bb-tests]add:add transpose on ctest
Mikemy666 Mar 1, 2026
918fbcb
[bb-tests]fix:fix bugs of ctests set
Mikemy666 Mar 1, 2026
77941e9
[bb-tests] fix:fix bugs of ctests set
shirohasuki Mar 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
38 changes: 21 additions & 17 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,37 +17,41 @@ jobs:
echo "🔎 Branch: ${{ github.head_ref }} -> ${{ github.base_ref }}"
echo "🔎 Repository: ${{ github.repository }}"

- name: Pull from the repository
# - uses: actions/checkout@v4
# - uses: DeterminateSystems/determinate-nix-action@v3

- name: Reset to clean state
shell: zsh {0}
run: |
source ~/.zshrc
buckyball_exec
setproxy
git fetch origin +refs/pull/${{ github.event.pull_request.number }}/head:refs/remotes/origin/pr/${{ github.event.pull_request.number }}
cd ~/Code/buckyball
git fetch origin
git clean -fd
git reset --hard ${{ github.sha }}
git checkout ${{ github.head_ref }}

- name: Nix build
shell: zsh {0}
run: |
cd ~/Code/buckyball
nix build

- name: Build Workloads
shell: zsh {0}
run: |
source ~/.zshrc
buckyball_exec
bbdev workload --build
cd ~/Code/buckyball
nix develop -c bbdev workload --build

- name: Build Verilator
shell: zsh {0}
run: |
source ~/.zshrc
buckyball_exec
bbdev verilator --clean
bbdev verilator --verilog
bbdev verilator --build '--jobs 16'
cd ~/Code/buckyball
nix develop -c bbdev verilator --clean
nix develop -c bbdev verilator --verilog '--config sims.verilator.BuckyballToyVerilatorConfig'
nix develop -c bbdev verilator --build '--jobs 16'

- name: Smoke Test
shell: zsh {0}
run: |
source ~/.zshrc
buckyball_exec
bbdev sardine --run '--workload ctest'
cd ~/Code/buckyball
nix develop -c bbdev sardine --run '--workload ctest'

- run: echo "🍏 PR Test is ${{ job.status }}."
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
.motia/
.cursor/
.bsp/
out/
result

CLAUDE.local.md
node_modules/
env.sh
Expand Down
24 changes: 9 additions & 15 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,18 @@
[submodule "arch/thirdparty/chipyard"]
path = arch/thirdparty/chipyard
url = https://github.com/ucb-bar/chipyard.git
[submodule "workflow/vscode"]
path = workflow/vscode
url = https://github.com/DangoSys/buckyball-vscode.git
[submodule "thirdparty/picker"]
path = thirdparty/picker
url = https://github.com/XS-MLVP/picker.git
[submodule "bebop/host/gem5/gem5"]
path = bebop/host/gem5/gem5
url = https://github.com/gem5/gem5.git
[submodule "bebop/host/spike/riscv-isa-sim"]
path = bebop/host/spike/riscv-isa-sim
url = https://github.com/riscv-software-src/riscv-isa-sim
[submodule "tools/palladium"]
path = tools/palladium
url = https://github.com/SEU-ACAL/awesome-palladium.git
[submodule "compiler"]
path = compiler
url = https://github.com/DangoSys/bb-compiler.git
[submodule "arch/thirdparty/t1"]
path = arch/thirdparty/t1
url = https://github.com/DangoSys/t1.git
[submodule "bebop"]
path = bebop
url = https://github.com/DangoSys/bebop.git
[submodule "bbdev"]
path = bbdev
url = https://github.com/DangoSys/bbdev.git
[submodule "thirdparty/palladium"]
path = thirdparty/palladium
url = https://github.com/SEU-ACAL/awesome-palladium.git
27 changes: 17 additions & 10 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ repos:
hooks:
- id: clang-format
name: clang-format C++ code
language: system
files: \.(cpp|hpp|cc|cxx|h|c|hxx)$
args: [--style=llvm]

- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black
language_version: python3.10
language: system

# a comprehensive tool for checking the style and quality of Python code.
# It combines three popular Python tools:
Expand All @@ -24,6 +25,7 @@ repos:
rev: 6.1.0
hooks:
- id: flake8
language: system
args:
- --max-line-length=120 # Adjust as per your style guide
- --ignore=F821,F403,F405,F401,W503,E203,E402,E401,W605,E712,E711,F841
Expand All @@ -40,17 +42,22 @@ repos:
rev: v5.0.0
hooks:
- id: end-of-file-fixer
language: system
- id: trailing-whitespace
language: system
- id: check-merge-conflict
language: system
- id: check-yaml
language: system
- id: check-added-large-files
language: system

# # Scala formatting with scalafmt
# - repo: local
# hooks:
# - id: scalafmt-check
# name: Check Scala formatting with scalafmt
# entry: bash -c 'cd arch && scalafmt --test'
# language: system
# files: ^arch/.*\.scala$
# pass_filenames: false
# Scala formatting with scalafmt
- repo: local
hooks:
- id: scalafmt
name: Format Scala code with scalafmt
entry: bash -c 'cd arch && scalafmt --config .scalafmt.conf src/main/scala'
language: system
files: ^arch/src/main/scala/.*\.scala$
pass_filenames: false
48 changes: 10 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,63 +21,35 @@ The buckyball framework provides a complete hardware design, simulation verifica

## Quick Start

### Environment Dependencies
### Installation in Nix
We use Nix Flake as our main build system. If you have not installed nix, install it following the [guide](https://nix.dev/manual/nix/2.28/installation/installing-binary.html), and enable flake following the [wiki](https://nixos.wiki/wiki/Flakes#Enable_flakes). Or you can try the [installer](https://github.com/DeterminateSystems/nix-installer) provided by Determinate Systems, which enables flake by default.

Before getting started, please ensure your system meets the following dependency requirements:

**Required Software**:
- Anaconda/Miniconda (Python environment management)
- Ninja Build System
- GTKWave (waveform viewer)
- Bash Shell environment (doesn't need to be the primary shell)

**Installing Dependencies**:
```bash
# Install Anaconda
# Download from: https://www.anaconda.com/download/

# Install system tools
sudo apt install ninja-build gtkwave

# Optional: FireSim passwordless configuration
# Add to /etc/sudoers: user_name ALL=(ALL) NOPASSWD:ALL
```

### Source Build

**1. Clone Repository**

```bash
git clone https://github.com/DangoSys/buckyball.git
cd buckyball
```

**2. Initialize Environment**
```bash
./scripts/init.sh
cd buckyball
./scripts/nix/build-all.sh
```
*Note: Initialization takes approximately 3 hours, including dependency downloads and compilation*

**3. Environment Activation**
After the first time installation, you can enter the environment anytime by running:

```bash
source buckyball/env.sh
nix develop
```

**4. Verify Installation**
**3. Verify Installation**

Run Verilator simulation test to verify installation:
```bash
bbdev verilator --run '--jobs 16 --binary ctest_vecunit_matmul_ones_singlecore-baremetal --config sims.verilator.BuckyballToyVerilatorConfig --batch'
```

### Docker Quick Experience

We support providing a Docker environment for rapid deployment of buckyball.

**Notice**:
- Docker images are provided only for specific release versions.
- Docker image may not be the latest version, source build is recommended.

> We do not provide support for this version as it is not a stable release.

### Buckyball as a library
We support providing a streamlined version of buckyball installation, integrated as a generator within Chipyard.
Expand All @@ -88,7 +60,7 @@ bbdev verilator --run '--jobs 16 --binary ctest_vecunit_matmul_ones_singlecore-b
> We do not provide support for this version as it is not a stable release.


## Quick Tutorial
## Tutorial
You can start to learn ball and blink from [here](https://github.com/DangoSys/buckyball/blob/main/docs/bb-note/src/tutorial/tutorial.md)

## Additional Resources
Expand Down
2 changes: 1 addition & 1 deletion arch/.mill-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.11.4
0.11.12
6 changes: 3 additions & 3 deletions arch/.scalafmt.conf
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
version = 2.6.4

# Exclude thirdparty directory from formatting
project.excludeFilters = [
"thirdparty"
# Only format src/main/scala directory
project.includeFilters = [
"src/main/scala/.*\\.scala$"
]

# Basic formatting
Expand Down
29 changes: 15 additions & 14 deletions arch/build.sbt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// See README.md for license details.

val chisel6Version = "6.5.0"
val chiselTestVersion = "6.0.0"
val chisel6Version = "6.5.0"
val chiselTestVersion = "6.0.0"
val scalaVersionFromChisel = "2.13.12"

// Fix for scalafix undefined setting
Expand All @@ -19,11 +19,11 @@ lazy val chisel6Settings = Seq(
lazy val chiselSettings = chisel6Settings ++ Seq(
libraryDependencies ++= Seq(
"org.apache.commons" % "commons-lang3" % "3.12.0",
"org.apache.commons" % "commons-text" % "1.9"
"org.apache.commons" % "commons-text" % "1.9"
)
)

lazy val scalaTestSettings = Seq(
lazy val scalaTestSettings = Seq(
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.2.+" % "test"
)
Expand All @@ -34,19 +34,18 @@ lazy val scalaTestSettings = Seq(
// ------------------------------------------------------------------------------
lazy val chipyard = ProjectRef(file("thirdparty/chipyard"), "chipyard")
lazy val firechip = ProjectRef(file("thirdparty/chipyard"), "firechip")

// Palladium FPGA subproject (external reference)
lazy val palladium = ProjectRef(file("../tools/palladium"), "palladium")
// Palladium FPGA subproject
lazy val palladium = ProjectRef(file("../thirdparty/palladium"), "palladium")

// ------------------------------------------------------------------------------
// Project Settings
// ------------------------------------------------------------------------------
lazy val buckyball = (project in file("."))
.dependsOn(chipyard, firechip, palladium)
.settings(
name := "buckyball",
name := "buckyball",
organization := "com.buckyball",
version := "1.0.0",
version := "1.0.0",
scalaVersion := scalaVersionFromChisel,
scalacOptions ++= Seq(
"-deprecation",
Expand All @@ -58,10 +57,12 @@ lazy val buckyball = (project in file("."))
Resolver.sonatypeRepo("releases")
),
chisel6Settings ++
scalaTestSettings ++
Seq(
libraryDependencies ++= Seq(
"edu.berkeley.cs" %% "rocketchip" % "1.6"
scalaTestSettings ++
Seq(
libraryDependencies ++= Seq(
"edu.berkeley.cs" %% "rocketchip" % "1.6",
"com.lihaoyi" %% "os-lib" % "0.10.0",
"com.lihaoyi" %% "upickle" % "3.3.1"
)
)
)
)
Loading
Loading