cva6: D-cache data RAM drops its byte enables, so every cache write corrupts the other way
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 49/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Ambito
- embedded-iot
Direzione di ricerca
Start with flow/designs/src/cva6/core/cache_subsystem/hpdcache/rtl/src/common/hpdcache_sram_wbyteenable.sv and trace how wbyteenable reaches fakeram7_128x64; then check the way packing in cva6_hpdcache_subsystem.sv and write behavior in hpdcache_memctrl.sv. Reproduce the two-way set test described in the issue and confirm both lines read back correctly after the fix, including against the upstream RAM wrapper behavior.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Where: flow/designs/src/cva6/core/cache_subsystem/hpdcache/rtl/src/common/hpdcache_sram_wbyteenable.sv (unchanged
since cb73ed67f; same at 26Q4 ecb3cfdeb), used by designs/asap7/cva6.
What: the wrapper replaces upstream's hpdcache_sram_wbyteenable_1rw with fakeram7_128x64, which has no write
mask, and leaves its wbyteenable input unconnected. cv32a65x packs both ways of a D-cache set into each 64-bit RAM
word (cva6_hpdcache_subsystem.sv: dataWaysPerRamWord = min(2, 128/32) = 2). hpdcache_memctrl.sv replicates the
write data into both 32-bit lanes and selects the way only through the byte enables. With them dropped, every refill and
every store hit, full-word ones included, also overwrites the other way's word at that address. Any program that fills
both ways of a set reads wrong data. The I-cache is not affected (one macro per way, byte enables all ones).
Shown in simulation: upstream cva6 at 3a389af (the commit designs/src/cva6 is based on) with this tree's changed
files, upstream's Verilator testharness, target cv32a65x, Verilator 5.008, behavioural models of the four fakeram7
macros (read on a rising clock with ce_in high, write when we_in, hold otherwise). A 40-line C program writes two
16-byte lines 1 KB apart (one set, both ways), then reads them back alternately and returns the mismatch count:
| RTL | result | cva6 iss_cmp against Spike |
|---|---|---|
upstream's hpdcache_sram_wbyteenable_1rw |
pass, 525 cycles | 100 GPR updates matched |
this hpdcache_sram_wbyteenable.sv |
fail (tohost = 1), 525 cycles | first mismatch at c.lw a2, 8(a5): Spike 0x11110002, RTL 0x22220002 (the other way's word) |
Consequence: the cva6 netlist the flow builds does not compute correctly; its timing and area are not affected, but
any gate-level or activity-based use of it is.
Possible fixes: a data-RAM macro with a byte write mask connected to wbyteenable, or one macro per way.
- Lingua principale
- Verilog
- Stelle
- 777
- Fork
- 549
- Merge medio
- 1g 22h
- PR unite (30g)
- 85
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di The-OpenROAD-Project/OpenROAD-flow-scripts
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 71/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4754 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4726 ·
I maintainer di solito rispondono entro 1 giorno
-
build_openroad.sh: kepler-formal is installed with an absolute RUNPATH, so a moved or re-pointed install loads another build's librariesForse già presa @saikatchatrg l’ha presa 6 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4717 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Make SYNTH_HDL_FRONTEND=slang defaultForse di nuovo libera @jeffng-or l’ha presa 38 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4548 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 1-2 giorni Idoneità per principianti 48/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4764 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di The-OpenROAD-Project/OpenROAD-flow-scripts
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
openhab/openhab-addons#22135 ·
I maintainer di solito rispondono entro 1 giorno
-
followup Prio 📌
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
bot: confirmed bug likely easy fix possible bug Tuya
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
zigpy/zha-device-handlers#5639 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
iamankushpandit/Gume#231 ·
I maintainer di solito rispondono entro 1 giorno