[Libre-soc-dev] daily kan-ban update 29jan2022

Luke Kenneth Casson Leighton lkcl at lkcl.net
Sat Jan 29 10:15:20 GMT 2022

i think i finally at long last found the bug, which occurs *only*
if there are two stores one after the other in quick succession:
the wishbone address gets corrupted (partly shifted down)

one of the conditions under which two stores occur one
after the other is, of course, a mis-aligned ST.

+++ b/src/soc/experiment/dcache.py
@@ -1639,7 +1639,7 @@ class DCache(Elaboratable):
                     # See if there is another store waiting
                     # to be done which is in the same real page.
                     with m.If(req.valid):
-                        _ra = req.real_addr[ROW_LINE_BITS:SET_SIZE_BITS]
+                        _ra = req.real_addr[0:SET_SIZE_BITS]
                         sync += r1.wb.adr[0:SET_SIZE_BITS].eq(_ra)
                         sync += r1.wb.dat.eq(req.data)
                         sync += r1.wb.sel.eq(req.byte_sel)

crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68

More information about the Libre-soc-dev mailing list