Skip to content
Open
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
4c73e96
init
Jun 15, 2026
d1dcb95
[HW] init L1 private cache controller
Jun 16, 2026
1471b1a
[HW] init L1 private cache controller
Jun 16, 2026
e9c5785
[HW] init l1 ctrl and comitter overwrite
HHT1228 Jun 16, 2026
94e5c68
unknown reason conflict fix
HHT1228 Jun 16, 2026
b9e916a
private L1 defs and configs
HHT1228 Jun 19, 2026
8ae8f13
[HW] L1 instantiate, upstream wiring, and tile_id handling
HHT1228 Jun 19, 2026
b3f9d58
[HW] tile cache interco collapse, and adjustment at group-level
HHT1228 Jun 22, 2026
b19ab82
[HW] SRAM datawidth matching and noc wrapper adjustments
HHT1228 Jun 22, 2026
79c44e9
Private L1 bender and dep setup and portid_t matching, sim clear
HHT1228 Jun 23, 2026
41a4a29
[Periph] Clean up unused register.
DiyouS Jun 15, 2026
2dbe169
[SW] Remove unused runtime functions
DiyouS Jun 15, 2026
75080d8
[Lint] Fix some small linting issues and adjust L2 ICache size.
DiyouS Jun 16, 2026
79d5281
[MISC] Clean up Makefile and change the test size for load-store test.
DiyouS Jun 16, 2026
c154ed1
[CFG] Add a 4x4 smaller configuration for faster testing
DiyouS Jun 17, 2026
3dd812e
[CFG] tiny config setup
HHT1228 Jun 23, 2026
39dc1dc
[SW] simple kernels to test private L1 functions
HHT1228 Jun 24, 2026
a452ce8
[CFG][SW] init 4x4 mesh build; replacement/refill sw test
HHT1228 Jun 25, 2026
08db94b
[HW] init AMO support impl
HHT1228 Jun 26, 2026
44e36f8
[HW] shared D$ AMO support impl
HHT1228 Jun 29, 2026
77683f1
[SW] amo sanity test
HHT1228 Jun 29, 2026
cbe237a
[HW] hpdcache memIdWidth match with reqid_t
HHT1228 Jun 30, 2026
876a581
[SW] LRSC amo test
HHT1228 Jun 30, 2026
896e748
[HW] peripheral reg, port extension, and FSM for private L1 CMO
HHT1228 Jul 1, 2026
69ee3d1
[SW] private L1 CMO runtime, spin-lock and multi-spin-lock passed
HHT1228 Jul 2, 2026
7ae5cf6
[SW] MCS lock protection for non-coherence L1
HHT1228 Jul 7, 2026
67af6c8
[SW] fdotp reduction protection for private L1
HHT1228 Jul 7, 2026
ef0d64d
[HW] CMO periph reg parameterize (follow total core num)
HHT1228 Jul 8, 2026
8d42ee6
[SW] init FFT coherence protection
HHT1228 Jul 9, 2026
fd06fda
[SW] FFT data generation change from .pdcp_src to .data (DRAM)
HHT1228 Jul 10, 2026
6233342
MATMUL access misalignment fix
HHT1228 Jul 13, 2026
8f87b20
[SW] gemv protection and fix
HHT1228 Jul 14, 2026
3845add
[SW] fmamtul data alignment, def flag clean up for multiple kernels
HHT1228 Jul 15, 2026
3711453
[HW] private L1 byte-enable fix
HHT1228 Jul 17, 2026
546a399
Code clean-up and composed a note
HHT1228 Jul 20, 2026
9de023c
note adjust
HHT1228 Jul 20, 2026
34f053b
[SW HW] re-route private L1 CMOs from peripheral to snitch CSR
HHT1228 Jul 23, 2026
f1890c2
[HW Bender Makefile] Periph-related clean-up and remove bender local …
HHT1228 Jul 24, 2026
324fa10
[Bender] bender.lock local dep replaced
HHT1228 Jul 24, 2026
566dec5
[HW] HW code clean-up and cachepool_hpd_pkg created
HHT1228 Jul 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,9 @@ hardware/bootrom/bootrom.elf
hardware/bootrom/bootrom.sv
# Configuration auto-generated files
config/cachepool.hjson

sim.sh
CLAUDE.md
scratchpad.txt
claude_doc
temp
2 changes: 1 addition & 1 deletion Bender.local
Comment thread
DiyouS marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
overrides:
axi: { git: "https://github.com/pulp-platform/axi.git", version: =0.39.1-beta }
register_interface: { git: "https://github.com/pulp-platform/register_interface.git", version: 0.3.8 }
Insitu-Cache: { git: "https://github.com/pulp-platform/Insitu-Cache.git", rev: zexin/cachepool_dev }


28 changes: 17 additions & 11 deletions Bender.lock
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ packages:
- scm
- tech_cells_generic
common_cells:
revision: 9ca8a7655f741e7dd5736669a20a301325194c28
version: 1.39.0
revision: 1281545696eb3fcba50ec5b4275993476a3c710e

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any reason of switching to a new version?

version: 1.40.0
source:
Git: https://github.com/pulp-platform/common_cells.git
dependencies:
Expand All @@ -56,14 +56,14 @@ packages:
Git: https://github.com/pulp-platform/common_verification.git
dependencies: []
dram_rtl_sim:
revision: fc831811ac0e1b374814f64bb7a53abd8e6171b4
revision: null
Comment thread
DiyouS marked this conversation as resolved.
Outdated
version: null
source:
Git: https://github.com/pulp-platform/dram_rtl_sim.git
Path: hardware/deps/dram_rtl_sim
dependencies:
- axi
floo_noc:
revision: 97306733f33acbb646c7e403c03a674fc1404b44
revision: a7d46c0aed7475a02de94f888a25495ae74d706f
version: null
source:
Git: https://github.com/pulp-platform/FlooNoC.git
Expand Down Expand Up @@ -96,6 +96,12 @@ packages:
Git: https://github.com/pulp-platform/fpu_div_sqrt_mvp.git
dependencies:
- common_cells
hpdcache:
Comment thread
DiyouS marked this conversation as resolved.
revision: null
version: null
source:
Path: ../cv-hpdcache
dependencies: []
idma:
revision: 28a36e5e07705549e59fc33db96ab681bc1ca88e
version: 0.6.5
Expand All @@ -109,10 +115,10 @@ packages:
- obi
- register_interface
insitu-cache:
revision: fa761ddebc946f9b46509d84945bf41ee1a9ec49
revision: null
Comment thread
DiyouS marked this conversation as resolved.
Outdated
version: null
source:
Git: https://github.com/pulp-platform/Insitu-Cache.git
Path: ../Insitu-Cache
dependencies:
- axi
- common_cells
Expand Down Expand Up @@ -150,10 +156,10 @@ packages:
dependencies:
- tech_cells_generic
spatz:
revision: 944e9042379fbe1db69567655cffd7a2e260ff16
revision: null
version: null
source:
Git: https://github.com/pulp-platform/spatz.git
Path: hardware/deps/spatz
dependencies:
- axi
- axi_riscv_atomics
Expand All @@ -165,8 +171,8 @@ packages:
- riscv-dbg
- tech_cells_generic
tech_cells_generic:
revision: 7968dd6e6180df2c644636bc6d2908a49f2190cf
version: 0.2.13
revision: 3a3de73632a06826b1bd9c65a0a2e92b32016845
version: 0.2.14
source:
Git: https://github.com/pulp-platform/tech_cells_generic.git
dependencies:
Expand Down
28 changes: 16 additions & 12 deletions Bender.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,20 @@ package:
name: cachepool

dependencies:
axi: { git: "https://github.com/pulp-platform/axi.git", version: =0.39.1-beta }
axi_riscv_atomics: { git: "https://github.com/pulp-platform/axi_riscv_atomics.git", version: 0.7.0 }
common_cells: { git: "https://github.com/pulp-platform/common_cells.git", version: 1.28.0 }
FPnew: { git: "https://github.com/pulp-platform/cvfpu.git", rev: pulp-v0.1.3 }
register_interface: { git: "https://github.com/pulp-platform/register_interface.git", version: 0.3.8 }
riscv-dbg: { git: "https://github.com/pulp-platform/riscv-dbg.git", version: 0.7.0 }
tech_cells_generic: { git: "https://github.com/pulp-platform/tech_cells_generic.git", version: 0.2.11 }
Insitu-Cache: { git: "https://github.com/pulp-platform/Insitu-Cache.git", rev: zexin/cachepool_dev }
dram_rtl_sim: { git: "https://github.com/pulp-platform/dram_rtl_sim.git", rev: cachepool }
floo_noc: { git: "https://github.com/pulp-platform/FlooNoC.git", rev: main }
cluster_icache: { git: "https://github.com/pulp-platform/cluster_icache.git", rev: main }
spatz: { git: "https://github.com/pulp-platform/spatz.git", rev: cachepool-32b }
axi: { git: "https://github.com/pulp-platform/axi.git", version: =0.39.1-beta }
axi_riscv_atomics: { git: "https://github.com/pulp-platform/axi_riscv_atomics.git", version: 0.7.0 }
common_cells: { git: "https://github.com/pulp-platform/common_cells.git", version: 1.28.0 }
FPnew: { git: "https://github.com/pulp-platform/cvfpu.git", rev: pulp-v0.1.3 }
register_interface: { git: "https://github.com/pulp-platform/register_interface.git", version: 0.3.8 }
riscv-dbg: { git: "https://github.com/pulp-platform/riscv-dbg.git", version: 0.7.0 }
tech_cells_generic: { git: "https://github.com/pulp-platform/tech_cells_generic.git", version: 0.2.11 }
# Insitu-Cache: { git: "https://github.com/pulp-platform/Insitu-Cache.git", rev: zexin/cachepool_dev }
Insitu-Cache: { git: "https://github.com/HHT1228/Insitu-Cache.git", rev: hohung/cachepool/wt-l1 }
hpdcache: { git: "https://github.com/HHT1228/cv-hpdcache.git", rev: cachepool/no_coherence }
dram_rtl_sim: { git: "https://github.com/pulp-platform/dram_rtl_sim.git", rev: cachepool }
floo_noc: { git: "https://github.com/pulp-platform/FlooNoC.git", rev: main }
cluster_icache: { git: "https://github.com/pulp-platform/cluster_icache.git", rev: main }
spatz: { git: "https://github.com/pulp-platform/spatz.git", rev: cachepool-32b }

workspace:
checkout_dir: "./hardware/deps"
Expand All @@ -41,6 +43,8 @@ sources:
# Level 1
- hardware/src/cachepool_pkg.sv
- hardware/src/cachepool_cc.sv
# Private L1 data cache (per-core HPDcache wrapper) — must precede the tile
- hardware/src/cachepool_l1_ctrl.sv
# Barrier
- hardware/src/cachepool_tile_barrier.sv
- hardware/src/cachepool_cluster_barrier.sv
Expand Down
60 changes: 35 additions & 25 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ CACHEPOOL_DIR := $(shell git rev-parse --show-toplevel 2>/dev/null || echo $$CAC
SOFTWARE_DIR ?= ${CACHEPOOL_DIR}/software

# Host compilers (for DPI, simulators, tools)
CXX ?= /usr/pack/gcc-11.2.0-af/linux-x64/bin/g++
CC ?= /usr/pack/gcc-11.2.0-af/linux-x64/bin/gcc
CXX := /usr/pack/gcc-11.2.0-af/linux-x64/bin/g++
CC := /usr/pack/gcc-11.2.0-af/linux-x64/bin/gcc

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keep it ?=. The written path only works in ETH environment

CXX_PATH ?= $(shell realpath -P $(CXX))
CC_PATH ?= $(shell realpath -P $(CC))
GCC_LIB ?= /usr/pack/gcc-11.2.0-af/linux-x64/lib64
Expand Down Expand Up @@ -147,7 +147,7 @@ $(BOOTROM_DIR)/bootdata.cc: $(SCRIPTS_DIR)/generate_bootdata.py $(HJSON_OUT)
${PYTHON} $< -c $(HJSON_OUT) -d $(BOOTROM_DIR) -t bootdata.cc.tpl -o $@

$(BOOTROM_DIR)/bootrom.elf $(BOOTROM_DIR)/bootrom.dump $(BOOTROM_DIR)/bootrom.bin: \
$(BOOTROM_DIR)/bootrom.S $(BOOTROM_DIR)/bootdata_bootrom.cc $(BOOTROM_DIR)/bootrom.ld Makefile
$(BOOTROM_DIR)/bootrom.S $(BOOTROM_DIR)/bootdata_bootrom.cc $(BOOTROM_DIR)/bootrom.ld
riscv -riscv64-gcc-9.5.0 riscv64-unknown-elf-gcc \
-mabi=ilp32 -march=rv32imaf -static -nostartfiles \
-T$(BOOTROM_DIR)/bootrom.ld \
Expand Down Expand Up @@ -187,6 +187,20 @@ $(FLOO_NOC): install-floogen $(FLOO_CFG)
clean-floonoc:
rm -f $(FLOO_NOC)

#########################
# Peripheral registers #
#########################
# The LP1 (private-L1) CMO peripheral has one register slot per core. The slot
# count (NumLp1CmoRegs) is baked into the generated reg_pkg/reg_top/C-header by
# regtool, so it must be regenerated whenever the config's core count changes --
# analogous to update-floonoc for the mesh. We force the regen (-B) because the
# generated .sv/.h are committed and may be newer than the (unchanged) schema.
PERIPH_REG_DIR ?= $(ROOT_DIR)/hardware/cachepool_peripheral

.PHONY: update-periph-reg
update-periph-reg:
$(MAKE) -C $(PERIPH_REG_DIR) -B all NUM_LP1_CMO_REGS=$(num_cores)

###########
# DramSys #
###########
Expand All @@ -195,7 +209,7 @@ VSIM_FLAGS :=
VSIM_BENDER =

.PHONY: dram-build
dram-build: $(DRAMSYS_PATH)/README.md dram-clean dram-config
dram-build: $(DRAMSYS_PATH)/README.md dram-config
cd $(DRAMSYS_PATH) && \
if [ ! -d "build" ]; then \
mkdir build && cd build; \
Expand Down Expand Up @@ -358,34 +372,29 @@ clean.data:
clean.sw:
rm -rf ${SOFTWARE_DIR}/build

# Common CMake flags shared by sw and vsim targets.
# vsim appends -DSNITCH_SIMULATOR to point tests at the compiled binary.
SW_CMAKE_FLAGS = \
-DENABLE_CACHEPOOL_TESTS=${ENABLE_CACHEPOOL_TESTS} \
-DCACHEPOOL_DIR=$(CACHEPOOL_DIR) \
-DRUNTIME_DIR=${SOFTWARE_DIR} \
-DSPATZ_SW_DIR=$(SPATZ_SW_DIR) \
-DLLVM_PATH=${LLVM_INSTALL_DIR} \
-DGCC_PATH=${GCC_INSTALL_DIR} \
-DPYTHON=${PYTHON} \
-DBUILD_TESTS=ON

.PHONY: sw
sw: generate bootrom gen-data clean.sw
echo ${SOFTWARE_DIR}
sw: generate bootrom gen-data
mkdir -p ${SOFTWARE_DIR}/build
cd ${SOFTWARE_DIR}/build && ${CMAKE} \
-DENABLE_CACHEPOOL_TESTS=${ENABLE_CACHEPOOL_TESTS} \
-DCACHEPOOL_DIR=$(CACHEPOOL_DIR) \
-DRUNTIME_DIR=${SOFTWARE_DIR} \
-DSPATZ_SW_DIR=$(SPATZ_SW_DIR) \
-DLLVM_PATH=${LLVM_INSTALL_DIR} \
-DGCC_PATH=${GCC_INSTALL_DIR} \
-DPYTHON=${PYTHON} \
-DBUILD_TESTS=ON .. && $(MAKE)
cd ${SOFTWARE_DIR}/build && ${CMAKE} ${SW_CMAKE_FLAGS} .. && $(MAKE)

.PHONY: vsim
vsim: generate bootrom gen-data dpi ${SIMBIN_DIR}/cachepool_cluster.vsim
echo ${SOFTWARE_DIR}
mkdir -p ${SOFTWARE_DIR}/build
cd ${SOFTWARE_DIR}/build && ${CMAKE} \
-DENABLE_CACHEPOOL_TESTS=${ENABLE_CACHEPOOL_TESTS} \
-DCACHEPOOL_DIR=$(CACHEPOOL_DIR) \
-DRUNTIME_DIR=${SOFTWARE_DIR} \
-DSPATZ_SW_DIR=$(SPATZ_SW_DIR) \
-DLLVM_PATH=${LLVM_INSTALL_DIR} \
-DGCC_PATH=${GCC_INSTALL_DIR} \
-DPYTHON=${PYTHON} \
cd ${SOFTWARE_DIR}/build && ${CMAKE} ${SW_CMAKE_FLAGS} \
-DSNITCH_SIMULATOR=${SIMBIN_DIR}/cachepool_cluster.vsim \
-DBUILD_TESTS=ON .. && $(MAKE)
.. && $(MAKE)

.PHONY: clean
clean: clean.sw clean.vsim clean.data
Expand Down Expand Up @@ -432,6 +441,7 @@ help:
@echo "*cache-init*: source the insitu-cache environment (requires bender checkout)"
@echo "*bootrom*: compile and generate the bootrom SystemVerilog module"
@echo "*update-floonoc*: regenerate FlooNoC package from FLOO_CFG (run after changing group count)"
@echo "*update-periph-reg*: regenerate the peripheral registers with NumLp1CmoRegs=num_cores (run after changing core count)"
@echo "*install-floogen*: install the floogen Python tool (required by update-floonoc)"
@echo "*clean-floonoc*: remove the generated FlooNoC package"
@echo ""
Expand Down
Loading