Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
245 commits
Select commit Hold shift + click to select a range
852e450
Memrouter changes for virtualization(#16)
Mikemy666 Dec 7, 2025
c259f27
[docs] fix: add mdbook missing files
shirohasuki Dec 7, 2025
a10a666
Virtualizetion of the whole BallDomain (#17)
Mikemy666 Dec 8, 2025
d3b81ab
[arch] feat: replace saturn with t1
shirohasuki Dec 9, 2025
b973362
[ci] fix: add missing dependency in doc.yml
shirohasuki Dec 9, 2025
5e023aa
[arch/core] feat: add usingRVVRoCC in rocket decoder, which would sen…
shirohasuki Dec 14, 2025
87667fe
[arch/rocket] fix: add other insts' routing in RoCC CmdRouter
shirohasuki Dec 15, 2025
6644183
change the framework of memdomain for the preparation of virtualizati…
Mikemy666 Dec 16, 2025
51013ee
[arch/gpdomain] feat: add rvv decoder in sequncer
shirohasuki Dec 16, 2025
0a01adf
[bb-test/ctest/rvv] del: remove staurn's rvv tests and add two base t…
shirohasuki Dec 16, 2025
e67d6f8
[arch/memdomain] refactor: made some adjustments to the architecture …
Mikemy666 Dec 18, 2025
987f7c6
[compiler] fix: specify 'llvm' in git submodule update for compiler i…
shirohasuki Dec 18, 2025
c8ca497
[arch/memdomain] refractor: finish the back-end arch unification (#20)
Mikemy666 Dec 18, 2025
1101258
[submodules] update: bump submodule versions for compiler and palladium
shirohasuki Dec 18, 2025
d4c5ad6
[arch/memdomain] fix: resolve ther bug of CI TEST (#21)
Mikemy666 Dec 19, 2025
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
df4a549
[docs] doc: update README
shirohasuki Mar 1, 2026
644d72f
[arch]fix: fix bugs of im2col ball and pass the test (#24)
Mikemy666 Mar 1, 2026
83f8dfb
[arch]fix: Fix memConfiger bugs
SJM946 Mar 2, 2026
96a8b9c
[arch] feat: add scoreboard for ILP
shirohasuki Mar 2, 2026
10f4888
Merge branch 'main' into dev-ilp
shirohasuki Mar 2, 2026
a044611
[arch] fix: fix memdomain backend bugs
shirohasuki Mar 2, 2026
a58c76e
[arch] chore: update subproject commits and scalafmt version; remove …
shirohasuki Mar 2, 2026
d44ebc2
[arch] chore: remove debug print statements from VecStoreUnit
shirohasuki Mar 2, 2026
7f86483
[arch] fix: correct address calculation in Transpose and VecLoadUnit …
shirohasuki Mar 2, 2026
5d8c610
[arch] feat: Halving the registers files of Transpose
shirohasuki Mar 2, 2026
e313cac
[arch] fix: update VecLoadUnit and VecStoreUnit
shirohasuki Mar 2, 2026
b419d27
[docs] feat: add new documentation submodule and remove outdated files
shirohasuki Mar 4, 2026
65fbf83
[docs] update: bump documentation submodule to latest commit
shirohasuki Mar 4, 2026
a547d5a
Update README links and badges
shirohasuki Mar 4, 2026
9f274c5
[arch]add:build shared mem framework
Mikemy666 Mar 5, 2026
e006ad2
[arch]refactor:rebuild the framework of backend
Mikemy666 Mar 5, 2026
a5f5e99
[arch] add: Add SystolicArrayBall and BFP test
SJM946 Mar 5, 2026
9b34e40
[nix] update: bump Verilator version to 5.036 and add ccache and lld …
shirohasuki Mar 5, 2026
9f533ec
[nix] update: downgrade Verilator version to 5.022
shirohasuki Mar 6, 2026
fd5f21d
[ci] update: add ALL_PROXY environment variable to CI and PR workflows
shirohasuki Mar 6, 2026
d6cdf68
[arch] add: Introduce BBTile architecture with decoupled Buckyball ac…
shirohasuki Mar 6, 2026
a8babf8
[arch]add:add shared_mvin/out inst but not finished
Mikemy666 Mar 6, 2026
53679fb
[arch]add:build is_shared flag to backend
Mikemy666 Mar 6, 2026
c30822e
[nix] update: add Yosys and OpenSTA tools
shirohasuki Mar 6, 2026
b0be7f8
[arch] feat: enhance coverage support with signal handling and cleanup
shirohasuki Mar 6, 2026
8ad61a9
[bbdev] update: bump bbdev to the latest version
shirohasuki Mar 7, 2026
51a955a
[arch] feat: implement Quant and Dequant Balls with associated tests …
shirohasuki Mar 7, 2026
e33f494
[bbAgent] fix: refactor MCP server to use official SDK
shirohasuki Mar 7, 2026
d31cd19
[arch] feat: implement Im2col module with LineBufferManager and Strea…
shirohasuki Mar 7, 2026
85124a8
[bb-tests] feat: add MLIR OpTest workloads and tests for Gemmini oper…
shirohasuki Mar 7, 2026
ebe4f0c
[arch] fix: fix bugs in TLB
shirohasuki Mar 7, 2026
5470ea1
[bb-tests] fix: update TLB test workload names for consistency
shirohasuki Mar 7, 2026
a879d2d
[arch]add: finish is_shared flag connection but sharedmemback have pr…
Mikemy666 Mar 8, 2026
02ded4e
[arch]add:send hartid signal to sharedmem
Mikemy666 Mar 8, 2026
7d1865d
[mcp] feat: add waveform-mcp submodule and configuration; update buil…
shirohasuki Mar 8, 2026
6ded000
[bbAgent] feat: initialize waveform-mcp submodule
shirohasuki Mar 8, 2026
0c35959
[arch] feat: refactor instruction encoding
shirohasuki Mar 8, 2026
7652a44
[bbAgent] add skills for ball creation and registration checks
shirohasuki Mar 9, 2026
b6bea0b
[arch]fix:change the code framework of sharedmembackend
Mikemy666 Mar 9, 2026
9497a18
[trace]add:add is_ shared and hartid for debug
Mikemy666 Mar 9, 2026
737f127
[arch]fix:put two signal together on hartid
Mikemy666 Mar 9, 2026
9a60266
[arch]refactor:let hardware detect is_shared automatically
Mikemy666 Mar 11, 2026
5bafdfc
[arch]fix:fix bugs of connection between sharedmem and balls
Mikemy666 Mar 11, 2026
4abed3b
[bbtest]fix:fix bugs of index of shared banks
Mikemy666 Mar 11, 2026
9e65082
Update README.md
shirohasuki Mar 11, 2026
a8ab1c9
Update README.md
shirohasuki Mar 11, 2026
49b1ac1
[bdb] feat: add MMIO support and UART output handling
shirohasuki Mar 12, 2026
33446c5
[arch] fix: update mmio_tick to debounce wFire signal and adjust cloc…
shirohasuki Mar 12, 2026
4388b8e
[ci] fix: update verilator configuration in CI workflows
shirohasuki Mar 12, 2026
624590d
[arch] fix: correct memory section handling in BBSimHarness and link…
shirohasuki Mar 12, 2026
ec532a1
[bb-tests] refactor: sync new simulation framework
shirohasuki Mar 12, 2026
908259f
[bb-tests] fix: update CMakeLists for workload directories and compil…
shirohasuki Mar 12, 2026
127aea5
[bbdev] update: bump bbdev to the latest version
shirohasuki Mar 12, 2026
7684f0f
[arch] fix: update mmio_tick for rising-edge detection and clean up B…
shirohasuki Mar 12, 2026
38dc608
[ci] fix: update verilator configuration in CI workflows
shirohasuki Mar 12, 2026
02d7993
[arch] refactor: simplified RoB design and remove outdated limitation
shirohasuki Mar 14, 2026
e6ddb6a
[arch] feat: integrate SubROB into GlobalRS
shirohasuki Mar 14, 2026
47b15aa
[arch] Make MemMidend more general
Mar 15, 2026
8bd6970
[arch] fix: fix bugs in gemminiball
shirohasuki Mar 15, 2026
f1c2835
[arch] fix: fix bugs in gemminiball
shirohasuki Mar 17, 2026
2cc269a
[arch] fix: fix bugs in gemminiball
shirohasuki Mar 19, 2026
9f8e47b
[arch] del: remove unused channel and memory router components
shirohasuki Mar 20, 2026
0316193
[arch] feat: introduce GlobalScheduler and BAT to support new schedul…
shirohasuki Mar 20, 2026
d39bea7
[arch] feat: add NDJSON visualization script and enhance tracing with…
shirohasuki Mar 20, 2026
9cd49a7
[arch] del: remove bebop submodule and related files; refactor build …
shirohasuki Mar 21, 2026
d5fd471
[bebop] feat: add bebop next
shirohasuki Mar 21, 2026
0bbb8fc
[bebop] update: bump bebop version
shirohasuki Mar 21, 2026
298af92
[bb-tests] fix: correct_tiled_matmul
shirohasuki Mar 21, 2026
ab998be
[compiler] update: bump compiler to support latest buckyball ISAs
shirohasuki Mar 22, 2026
e27a4da
[bb-tests] del: remove OpTest toy and tile workloads, update CMakeLis…
shirohasuki Mar 23, 2026
35136a7
[bebop] update: bump bebop
shirohasuki Mar 24, 2026
606b10a
feat(bebop): Add Spike and Verilator cosimulation module
daiyongyuan Mar 30, 2026
24c2971
feat(bebop): feat: add vector computation support and enhance bebop_a…
daiyongyuan Mar 30, 2026
31a85a0
fix: add necessary tools (cmake, java, dtc, spike) to build environment
shirohasuki Mar 31, 2026
3d36720
feat: add Edein submodule and update bebop reference
shirohasuki Mar 31, 2026
30f2af0
feat(bebop): addBebopBuckyballSubsystemCosim for Spike-Verilator
daiyongyuan Mar 31, 2026
c5a8008
Merge branch 'main' of https://github.com/DangoSys/buckyball into main
daiyongyuan Mar 31, 2026
4f6ba34
[bbdev] update: new bbdev with iii
shirohasuki Apr 2, 2026
bd4887a
[arch/gemminiball] refactor: align gemminiball config with original g…
shirohasuki Apr 5, 2026
fe47e75
[docs] misc: update documentation and skills with English translations
shirohasuki Apr 8, 2026
eeadeac
feat(pegasus): add PegasusShell
daiyongyuan Apr 8, 2026
96cd4da
[pegasus] feat: add Pegasus submodule to test on au280
shirohasuki Apr 13, 2026
860f09d
[repo] del: remove unused submodules
shirohasuki Apr 13, 2026
d62c556
[nix] fix: add missing system utilities (rsync, nodejs) to build envi…
shirohasuki Apr 13, 2026
52629d9
[workflow] feat: add bluefolk
shirohasuki Apr 13, 2026
6003106
[pegasus] feat: add linux kernel build step
shirohasuki Apr 14, 2026
82f6d27
[pegasus] feat: add functions to flash bitstream and run workload on …
shirohasuki Apr 15, 2026
4632cef
[scripts] update: remove linux submodule initialization avoid long ti…
shirohasuki Apr 15, 2026
b02f045
[scripts] cleanup: remove FireMarshal submodule initialization from b…
shirohasuki Apr 15, 2026
dc7a259
[pegasus] update: bump to the latest version
shirohasuki Apr 16, 2026
8e9fb4e
[pegasus] update: add DDR4 signal connections
shirohasuki Apr 17, 2026
2ef1d17
[pegasus] update: add DDR4 signal connections
shirohasuki Apr 17, 2026
e28c16a
[pegasus] fix: correct clock signal assignments to use elements map
shirohasuki Apr 17, 2026
5ddda5b
[trace]add:enable to monitor the pbank
Mikemy666 Apr 18, 2026
8ca4239
[arch/pegasus] refactor: replace clock signals with reference clock i…
shirohasuki Apr 21, 2026
19e9bce
[arch/pegasus] fix: fix bugs in buildbistream
shirohasuki Apr 21, 2026
73e319e
[arch/pegasus] feat: add CDC for 150MHz
shirohasuki Apr 21, 2026
a7f4a67
[eval]add:add run-dc.sh
Mikemy666 Apr 22, 2026
5cf2029
[bbdev]: update bbdev for dc workflow (#32)
Mikemy666 Apr 22, 2026
32c84e4
[bbdev/dc] refactor: clean up dc step
shirohasuki Apr 22, 2026
9b83a41
[bbdev] fix: update bbdev to the correct commit
shirohasuki Apr 22, 2026
904f300
[bbdev/palladium] del: remove palladium verilog API and related event…
shirohasuki Apr 22, 2026
8a3a533
[bb-tests] fix: conditionally add kernel subdirectory and streamline …
shirohasuki Apr 22, 2026
6ce6272
[bbdev] feat: bump bbdev to the latest version with api testing
shirohasuki Apr 22, 2026
afd5dfd
[arch/examples feat: update to our band new config system with serial…
shirohasuki Apr 22, 2026
175567f
[bbdev] feat: bump to latest commit for sardine
shirohasuki Apr 23, 2026
6c364f6
[arch/sim] feat: add DRAMSim2 memory management implementation
shirohasuki Apr 24, 2026
a1e9b91
[compiler] refactor: migrate to buddy-mlir submodule and update sourc…
shirohasuki Apr 27, 2026
4e3489c
[compiler] fix: update path of buddy-mlir
shirohasuki Apr 27, 2026
0bbe89c
[nix] feat: add build environment for FlatBuffers and NUMA libraries
shirohasuki Apr 27, 2026
5f68508
[compiler] refactor: move Buckyball intrinsics and lower Tile dialect…
shirohasuki Apr 27, 2026
cd0396b
[compiler] fix: fix compilation failed in buddy-mlir
shirohasuki Apr 27, 2026
f7f5a4b
[compiler] feat: Unified Bank SSA and compute operations semantics
shirohasuki Apr 28, 2026
d796817
[arch/sim] feat: add P2E simulation harness and configurations, remov…
shirohasuki Apr 29, 2026
a549213
[arch] feat: add per-tile private L2 cache configurations for Goban a…
shirohasuki Apr 30, 2026
020d475
[arch] feat: add unused output wire for DDR4 controller and remove de…
shirohasuki May 1, 2026
9944289
[arch] refactor: comment out DDR4 inout port connections in P2ETop
shirohasuki May 2, 2026
645c443
[compiler] fix: commit missing cmake files
shirohasuki May 7, 2026
febed8e
[nix] refactor: remove pegasus submodule
shirohasuki May 11, 2026
6ca6c27
[arch/sims] del: remove unused pegasus
shirohasuki May 11, 2026
832f88f
feat: add Hadamard machine ball for element-wise multiplication
May 13, 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
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .claude/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*
!skills/
!skills/**/*
!CLAUDE.md
110 changes: 110 additions & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Buckyball

A RISC-V based DSA (Domain Specific Architecture) framework. Built with Chisel 6.5.0 and Nix Flake.

## Project Structure

- `arch/src/main/scala/framework/` — framework core
- `balldomain/prototype/` — Ball operator implementations (one subdirectory per Ball)
- `balldomain/blink/` — Blink protocol definitions (`BlinkIO`, `BankRead/Write`, `BallStatus`)
- `balldomain/configs/` — `BallDomainParam` + `default.json` (`ballIdMappings`)
- `balldomain/bbus/` — BBus interconnect
- `balldomain/rs/` — `BallRsIssue` / `BallRsComplete` (issue/complete interfaces)
- `memdomain/backend/banks/` — `SramReadIO` / `SramWriteIO`
- `core/bbtile/` — BBTile integration (Rocket core + Buckyball)
- `top/` — `GlobalConfig` (top-level parameter aggregation)
- `arch/src/main/scala/examples/toy/balldomain/` — toy config
- `DISA.scala` — instruction opcodes (`funct7` BitPat)
- `DomainDecoder.scala` — instruction decode table (`ListLookup`)
- `bbus/busRegister.scala` — Ball generator registration (`match case`)
- `arch/src/main/scala/sims/` — simulation configs
- `verilator/` — Verilator config
- `bb-tests/` — tests
- `workloads/lib/bbhw/isa/` — ISA C macros (one `.c` file per instruction)
- `workloads/src/CTest/toy/` — C test cases
- `sardine/` — pytest test framework
- `bbdev/` — developer toolchain (Motia workflow backend)

## Blink Protocol

Balls connect to BBus through the Blink protocol. Every Ball implements the `HasBlink` trait.

```
BlinkIO(b: GlobalConfig, inBW: Int, outBW: Int):
cmdReq: Flipped(Decoupled(BallRsIssue)) // command input (includes BallDecodeCmd + rob_id)
cmdResp: Decoupled(BallRsComplete) // completion output (includes rob_id)
bankRead: Vec(inBW, Flipped(BankRead)) // SRAM read ports
bankWrite: Vec(outBW, Flipped(BankWrite)) // SRAM write ports
status: BallStatus { idle, running } // status signals

BankRead/BankWrite metadata fields (all Input):
bank_id, rob_id, ball_id, group_id

SramReadIO: req.valid/ready + req.bits.addr -> resp.valid + resp.bits.data
SramWriteIO: req.valid/ready + req.bits(addr, data, mask, wmode) -> resp.valid + resp.bits.ok
```

Key timing rule: SRAM read latency is 1 cycle (`resp.valid` is asserted in the next cycle after `req.fire`).

## Registration Invariants

When adding or modifying Ball registrations, all six conditions below must hold:

1. `ballNum` in `default.json` equals the length of `ballIdMappings`
2. `ballId` is strictly increasing (`0, 1, 2, ...`) with no gaps
3. No duplicated `ballId`
4. No duplicated `funct7` values in `DISA.scala`
5. Case names in `busRegister.scala` equal `ballName` set in `default.json`
6. BID values in `DomainDecoder.scala` equal `ballId` set in `default.json`

Use the `/check` skill to validate all invariants and optionally auto-fix issues.

## MCP Tools

The project configures the `buckyball-dev` MCP server with the following tools.

**Important: build, simulation, synthesis, and tests must be invoked via MCP tools. Do not call `bbdev` CLI or `nix develop` directly.**
`bbdev` CLI is for human developers, while MCP tools are for agents. MCP tools manage bbdev server lifecycle and call it through HTTP APIs.

### Validation
- `validate` — check all 6 registration invariants

### bbdev API wrappers (with automatic server lifecycle management)
- `bbdev_workload_build` — build CTests
- `bbdev_verilator_run(binary, config?, batch?, coverage?)` — full flow: clean -> verilog -> build -> sim
- `bbdev_verilator_verilog(config)` — generate Verilog; `config` is required
- `bbdev_verilator_build(jobs?, coverage?)` — build Verilator simulator
- `bbdev_verilator_sim(binary, batch?, coverage?)` — run simulation (requires prior build)
- `bbdev_sardine_run(workload?, coverage?)` — run batch tests
- `bbdev_yosys_synth(top?, config?)` — Yosys synthesis + OpenSTA timing analysis

Default config value: `sims.verilator.BuckyballToyVerilatorConfig`
Simulation binary naming format: `ctest_<name>_test_singlecore-baremetal`

### Analysis report paths
- Area reports: `bbdev/api/steps/yosys/log/hierarchy_report.txt` (submodule breakdown), `area_report.txt` (top-level)
- Timing report: `bbdev/api/steps/yosys/log/timing_report.txt`
- Coverage report: `bb-tests/sardine/reports/coverage/html/`
- Simulation logs: `arch/log/<timestamp>/stdout.log`, `disasm.log`
- bdb debug log: `arch/log/<timestamp>/bdb.log`, with three DPI-C traces:
- `[ITRACE]` — instruction issue/complete
- `[MTRACE]` — SRAM reads/writes
- `[PMCTRACE]` — Ball/Mem performance counters (elapsed cycles)

## Skills

Project skills are under `.claude/skills/`:
- `/ball` — create a new Ball operator (full flow: implementation -> registration -> ISA -> CTest -> simulation)
- `/check` — registration consistency check + auto-fix
- `/verify` — Ball functional verification (build -> simulation -> coverage -> PMC analysis)
- `/optimize` — RTL area/latency optimization (applies to any module, not only Balls)
- `/debug` — simulation debugging (log analysis -> waveform -> failure pattern matching)
- `/waveform` — waveform analysis (`waveform-mcp` usage guide)

## Conventions

- Do not edit registration files while changing Ball implementation; do not edit implementation files while changing registration
- Chisel version is 6.5.0; do not use 6.6+ APIs
- Register CTests in CMakeLists via `add_cross_platform_test_target`
- **Do not call `bbdev` CLI or `nix develop -c bbdev ...` directly**; use MCP tools
- Ball wrapper class names must match `ballName` in `default.json`
63 changes: 63 additions & 0 deletions .claude/skills/ball/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
name: ball
description: Create a new Buckyball Ball operator named $ARGUMENTS, covering the full flow from implementation to verification.
---

**Important: all build/simulation operations must go through MCP tools (`validate`, `bbdev_workload_build`, `bbdev_verilator_run`, etc.). Do not use bbdev CLI or nix develop directly.**

## Phase 1 - Requirement Collection

1. Inspect registration state and decide `ballId` + `funct7`:
- `arch/src/main/scala/framework/balldomain/configs/default.json`
- `arch/src/main/scala/examples/toy/balldomain/DISA.scala`
2. Check for partial existing implementation (incremental mode):
- existing directory in `arch/src/main/scala/framework/balldomain/prototype/`
- existing ISA macro in `bb-tests/workloads/lib/bbhw/isa/`
- existing CTest in `bb-tests/workloads/src/CTest/toy/`
3. Confirm with user:
- operator semantics
- `inBW` / `outBW`
- whether `op2` is needed
- meaning of `iter`

## Phase 2 - Implement the Ball

1. Read references:
- simple example: `.../prototype/relu/ReluBall.scala`, `Relu.scala`
- complex example: `.../prototype/systolicarray/`
- Blink protocol: `.../blink/blink.scala`, `bank.scala`, `status.scala`
- SRAM IO: `.../memdomain/backend/banks/SramIO.scala`
2. Create files under `arch/src/main/scala/framework/balldomain/prototype/<name>/` using templates from `references/`.

### Key constraints
- SRAM read latency is 1 cycle (`resp.valid` in the cycle after `req.fire`)
- Latch command fields when `cmdReq.fire`
- Base FSM pattern: `idle -> read -> compute -> write -> complete -> idle`
- `status.idle` and `status.running` must map correctly to FSM states

## Phase 3 - Register the Ball

Update files in order:
1. `.../configs/default.json` - append `ballIdMappings` entry and update `ballNum`
2. `.../bbus/busRegister.scala` - add import + `match case`
3. `.../DISA.scala` - add `val XXX = BitPat("bxxxxxxx")`
4. `.../DomainDecoder.scala` - add decode row (`BID = ballId.U`)

## Phase 4 - Add ISA C Macro

Create `<funct7_decimal>_<name>.c` under `bb-tests/workloads/lib/bbhw/isa/`, then include it in `isa.h`.

## Phase 5 - Add CTest

1. Create `<name>_test.c` under `bb-tests/workloads/src/CTest/toy/`
2. Register in `bb-tests/workloads/src/CTest/toy/CMakeLists.txt` using `add_cross_platform_test_target`
3. Append workload entry in `bb-tests/sardine/tests/test_ctest.py` (`ctest_workloads`)

## Phase 6 - Validate, Build, and Simulate

1. Run `validate` and ensure all 6 invariants pass
2. Run `bbdev_workload_build`
3. Run `bbdev_verilator_run` for this Ball's CTest binary
4. Interpret results:
- `PASSED` -> done
- `FAILED` -> switch to `/debug`
42 changes: 42 additions & 0 deletions .claude/skills/check/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
name: check
description: Staticaly validate Buckyball Ball registration consistency and optionally auto-fix mismatches. Use this skill when users ask to inspect registration status, validate Ball configuration, troubleshoot registration issues, or verify consistency after registration edits.
---

## Validation Flow

Call MCP tool `validate` to check these 6 invariants:
1. `ballNum` equals `ballIdMappings` array length
2. `ballId` is strictly increasing (`0, 1, 2, ...`) with no gaps
3. no duplicated `ballId`
4. no duplicated `funct7` in `DISA.scala`
5. case names in `busRegister.scala` match `ballName` in `default.json`
6. BID values in `DomainDecoder.scala` match `ballId` in `default.json`

Report pass/fail for each item.

## Registration Summary

After validation, generate a summary table for all Ball registrations. Data sources:

- `arch/src/main/scala/framework/balldomain/configs/default.json` — `ballId`, `ballName`, `inBW`, `outBW`
- `arch/src/main/scala/examples/toy/balldomain/DISA.scala` — `funct7` values
- `arch/src/main/scala/examples/toy/balldomain/DomainDecoder.scala` — BID in decode rows

Table format:

| ballId | ballName | funct7 | inBW | outBW | DISA | busReg | Decoder |
|--------|----------|--------|------|-------|------|--------|---------|
| 0 | VecBall | 32 | 2 | 4 | ok | ok | ok |
| ... | ... | ... | ... | ... | ... | ... | ... |

## Auto Fix

If validation finds inconsistencies and they are deterministic to fix, ask whether to auto-fix:

1. **`ballNum` mismatch** — update `ballNum` to `ballIdMappings` length
2. **non-contiguous `ballId`** — renumber to `0, 1, 2, ...` (and sync BID in `DomainDecoder.scala`)
3. **missing cases in `busRegister.scala`** — list missing Balls and provide required imports and `match case` entries
4. **BID mismatch in `DomainDecoder.scala`** — update BID values to match `default.json`

For non-auto-fixable issues (for example, `funct7` conflicts), provide root-cause analysis and manual fix guidance.
116 changes: 116 additions & 0 deletions .claude/skills/debug/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
---
name: debug
description: Systematically debug Buckyball simulation failures. Use this skill when simulation returns FAILED, CTest fails, Chisel compilation errors appear, or users report abnormal Ball behavior. It covers log analysis, waveform analysis, and common failure pattern matching.
---

**Important: build and simulation operations must be called through MCP tools. Do not use bbdev CLI or nix develop directly.**

## Step 1 - Locate Logs

1. Find the log directory:
- MCP tool JSON output includes `log_dir`
- If absent, use `ls -t arch/log/ | head -5` to find recent log dirs
2. Confirm key log files exist:
- `stdout.log` - program stdout (`PASSED`/`FAILED`, `printf`)
- `disasm.log` - disassembled instruction stream
- `bdb.log` - Buckyball hardware debug log (most important)
- `bbdev/server.log` - bbdev server log (compilation errors usually appear here)

## Step 2 - Layered Analysis

Analyze from high level to low level, ruling out simple issues first.

### Level 1: Compilation errors (`bbdev/server.log`)

If MCP tools return HTTP 500 or `returncode=1`, inspect `server.log` first:
- Chisel compile errors (type mismatch, missing registration, etc.)
- mill build errors (dependency issues)
- CTest compile errors (C syntax/link errors)

### Level 2: Program output (`stdout.log`)

- Search for `PASSED` / `FAILED` to confirm test results
- Search for `printf` outputs and compare actual vs expected values
- Search for `panic` / `abort` / `trap` to detect exceptions

### Level 3: Instruction stream (`disasm.log`)

- Confirm custom Ball instructions were executed (search `custom3`)
- Check instruction order (`mvin -> ball_op -> mvout -> fence`)
- Check for traps or exceptions

### Level 4: Hardware tracing (`bdb.log`)

This is the most important log for Ball logic bugs. It contains three traces:

**[ITRACE] instruction trace:**
- `ISSUE rob_id=X domain=Y funct=0xZZ` - instruction issued
- `COMPLETE rob_id=X` - instruction completed
- Check: issued? completed? completion order correct?

**[MTRACE] memory trace:**
- `READ ch=X vbank=Y group=Z addr=0xAA` - SRAM read
- `WRITE ch=X vbank=Y group=Z addr=0xAA data=0x...` - SRAM write
- Check: addresses correct? data correct? `bank_id` matches?

**[PMCTRACE] performance trace:**
- `BALL ball_id=X rob_id=Y elapsed=Z` - Ball operation latency
- `LOAD/STORE rob_id=X elapsed=Y` - memory operation latency
- Check: elapsed reasonable? any unusually long operations?

### Level 5: Waveform analysis (`waveform-mcp`)

If logs are not enough, use waveform-mcp for cycle-level analysis. See `/waveform` skill.

## Step 3 - Common Failure Patterns

### 1. Ball not responding (`cmdResp` never fires)
**Symptoms:** timeout or deadlock; `bdb.log` has `ISSUE` but no `COMPLETE`
**Causes:**
- FSM stuck in a state (check transition conditions)
- `SRAM resp.valid` not consumed (for example, missing `resp.ready := true.B`)
- `cmdResp.valid` never asserted

### 2. All-zero output data
**Symptoms:** CTest FAILED; output matrix is all zeros
**Causes:**
- write address bug (`waddr` not incremented)
- write mask all zero (for example, forgot `mask := 1`)
- wrong `bank_id` (writes into wrong bank)

### 3. Output unchanged (`output == input`)
**Symptoms:** CTest FAILED; output equals input
**Causes:**
- compute logic not executed (compute state skipped)
- read data written back without processing

### 4. Partial data errors
**Symptoms:** CTest FAILED; some rows correct, others wrong
**Causes:**
- `iter` count miscalculated (missing reads/writes for some rows)
- address offset bug (row stride error)
- boundary condition bug

### 5. SRAM timing error
**Symptoms:** data appears shifted by one row
**Causes:**
- SRAM read latency is 1 cycle, but code reads `resp.bits.data` in the same cycle as `req.fire`
- Correct behavior: wait one cycle and read when `resp.valid` is high

### 6. `bank_id` conflict
**Symptoms:** assertion failure or corrupted data
**Causes:**
- `op1_bank` and `wr_bank` use the same bank (read/write conflict)
- multiple Balls access the same bank concurrently

### 7. `rob_id` mismatch
**Symptoms:** completion order looks incorrect
**Causes:**
- `cmdResp.bits.rob_id` is wrong
- `rob_id` was not latched on `cmdReq.fire`

## Step 4 - Fix and Verify

1. Modify Chisel source code based on issues found in logs/waveforms
2. Rebuild and rerun simulation through MCP tools to verify fixes
3. If new failures appear, return to Step 2 and reanalyze
Loading