cva6: D-cache data RAM drops its byte enables, so every cache write corrupts the other way
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 49/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- embedded-iot
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Verilog
- Star
- 777
- Fork
- 549
- Merge trung bình
- 1 ngày 22 giờ
- Pull request đã merge (30 ngày)
- 85
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của The-OpenROAD-Project/OpenROAD-flow-scripts
-
gf180: `-split_cuts {Metal3 0.128}` in the platform PDN config makes overlapping, off-grid Via2/Via3 cutsCó thể đã có người làm @bandhambalaji đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 71/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4754 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
pr-head should not vote on PRsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4726 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
build_openroad.sh: kepler-formal is installed with an absolute RUNPATH, so a moved or re-pointed install loads another build's librariesCó thể đã có người làm @saikatchatrg đã nhận 7 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4717 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Make SYNTH_HDL_FRONTEND=slang defaultCó thể làm lại được @jeffng-or đã nhận 38 ngày trước và không có pull request nào đang mở. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4548 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 48/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4764 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của The-OpenROAD-Project/OpenROAD-flow-scripts
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
zephyrproject-rtos/zephyr#124160 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
GalusPeres/HomeTiles#142 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
openhab/openhab-addons#22135 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement platform:ad5x
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
prestonbrown/helixscreen#1974 ·
Maintainer thường phản hồi trong vòng 1 ngày