Conversation
src/axi_llc_sram.sv
Outdated
| .d_i (rdata_cmp), | ||
| .d_o (rdata_cmp_q) | ||
| ); | ||
| // shift_reg #( |
There was a problem hiding this comment.
I guess it was originally intended to cut a path. Functionally, it does not seem fundamental as I am able to run the regression tests without it. However, this observation was somewhat "reverse engineered". If @Aquaticfuller can give his opinion it would be better.
There was a problem hiding this comment.
Hi, I think I added this shift reg just because I added a timing cut in the ecc_sram module, so the tag sram read latency is added with 1 more cycle, and I also made some change according to this in the hit_miss_unit module. So in order to make sure it is still functionally correct without ECC, I also added this output register for the sram without ecc. However, I test was mainly focused on the with ecc version, so I'm really curious if it passes the regression tests both with and without this shift register?
There was a problem hiding this comment.
And could you please tell me what kind of regression test you are using? Did you run the axi_llc testbench?
There was a problem hiding this comment.
Ok, for now we have removed the ECC in LLC otherwise Cheshire does not implement on the Genesys. @ricted98 after the current CI finishes without the ECCs, would you reintroduce the ECCs in LLC and repush to verify if such change breaks the CI or not?
There was a problem hiding this comment.
I see that there is some differences between the version with and without ECC in this module. The data split genloop is implemented only for the ECC version. Should it also be replicated for the normal SRAM?
Lines 57 to 158 in c7b27b2
There was a problem hiding this comment.
Great! We also saw that in the CI the Linux boot in Cheshire breaks (probably because LLC is not configured as Cache). Can you help us having a look in what is going wrong?
There was a problem hiding this comment.
Hi, I just pushed a commit, which fixed a bug: when running the axi_llc built-in test, it gets stuck at BIST.
There was a problem hiding this comment.
Great! We also saw that in the CI the Linux boot in Cheshire breaks (probably because LLC is not configured as Cache). Can you help us having a look in what is going wrong?
If I didn't get it wrong, in the cheshire_bootrom.S,
69 li t1, -1
70 sw t1, 0(t0) // llc.CFG_SPM_LOW
71 sw t1, 4(t0) // llc.CFG_SPM_HIGH
72 li t1, 1
73 sw t1, 16(t0) // llc.CFG_COMMIT
this code snippet will config LLC to a SPM, and write 0 to llc.CFG_SPM_LOW and llc.CFG_SPM_HIGH should set the LLC into full cache mode. Or you can do it in your baremetal c program with:
*reg32(&__base_llc, AXI_LLC_CFG_SPM_LOW_OFFSET) = 0;
*reg32(&__base_llc, AXI_LLC_CFG_SPM_HIGH_OFFSET) = 0;
*reg32(&__base_llc, AXI_LLC_COMMIT_CFG_OFFSET) = 1;
to set the LLC into a full cache.
There was a problem hiding this comment.
Hi, I just pushed a commit, which fixed a bug: when running the axi_llc built-in test, it gets stuck at BIST.
Thanks! I am now trying it on Cheshire
Great! We also saw that in the CI the Linux boot in Cheshire breaks (probably because LLC is not configured as Cache). Can you help us having a look in what is going wrong?
If I didn't get it wrong, in the cheshire_bootrom.S,
69 li t1, -1 70 sw t1, 0(t0) // llc.CFG_SPM_LOW 71 sw t1, 4(t0) // llc.CFG_SPM_HIGH 72 li t1, 1 73 sw t1, 16(t0) // llc.CFG_COMMITthis code snippet will config LLC to a SPM, and write 0 to llc.CFG_SPM_LOW and llc.CFG_SPM_HIGH should set the LLC into full cache mode. Or you can do it in your baremetal c program with:
*reg32(&__base_llc, AXI_LLC_CFG_SPM_LOW_OFFSET) = 0; *reg32(&__base_llc, AXI_LLC_CFG_SPM_HIGH_OFFSET) = 0; *reg32(&__base_llc, AXI_LLC_COMMIT_CFG_OFFSET) = 1;to set the LLC into a full cache.
Yes, as far as I know it it set in cache mode by software as you pointed out.
The LLC without ECC had some issues scattered across the design. This PR proposes some fixes.
@Aquaticfuller feel free to push additional commits on this branch if needed.