This repository provides modules to implement cache coherence SoC's.
| Name | Description | Doc |
|---|---|---|
ace_ccu_top |
ACE interconnector, broadcasts snooping messages to the cache controllers and AXI transactions to the slave | Doc |
Generate the initial cache and memory states, as well as the transaction streams, with the following command:
make init_mem
You can control simulation parameters, such as the memory and cache sizes and structures, number of caches, and number of transactions, in Makefile.
You can simulate the top level design with
make -B sim-ace_ccu_top.log
To run coherency check, run
make init_mem CHECK=1
It will generate the initial cache and memory states, and stall until given a prompt.
Next, open another terminal and simulate the top level design with
make -B sim-ace_ccu_top.log
Once the simulation finishes, press enter on the coherency check prompt. A coherency check will be run. A log file is generated called cache_python.log. Search with keyword ERROR to find whether coherency was broken during the simulation. When run with DEBUG=1 (the default option), a pdb session is opened the moment a coherency problem is found.
The ACE repository is released under Solderpad v0.51 (SHL-0.51) see LICENSE
If you use ACE/Culsans in your work, you can cite us:
@article{tedeschi2024culsans,
title={Culsans: An Efficient Snoop-based Coherency Unit
for the CVA6 Open Source RISC-V application processor},
volume={10},
number={2},
journal={WiPiEC Journal - Works in Progress in Embedded Computing Journal},
author={Tedeschi, Riccardo and Valente, Luca and Ottavi, Gianmarco and
Zelioli, Enrico and Wistoff, Nils and
Giacometti, Massimiliano and Basit Sajjad, Abdul and
Benini, Luca and Rossi, Davide},
year={2024},
month={Aug.}
}