#
1eb8dd22 |
| 24-Feb-2025 |
Kunlin You <[email protected]> |
submodule(utility), XSDebug: support collecting missing XSDebug (#4251)
Previous in PR#3982, we support collecting XSLogs to LogPerfEndpoint.
However with --enable-log, we should also collect some
submodule(utility), XSDebug: support collecting missing XSDebug (#4251)
Previous in PR#3982, we support collecting XSLogs to LogPerfEndpoint.
However with --enable-log, we should also collect some missing XSDebug.
This change move these missing XSDebug outside WhenContext, and add
WireInit to LogUtils' apply, to enable probing some subaccessed data,
like a vec elem with dynamic index.
show more ...
|
#
9e12e8ed |
| 08-Feb-2025 |
cz4e <[email protected]> |
style(Bundles): move bundles to Bundles.scala (#4247)
|
#
8b33cd30 |
| 13-Dec-2024 |
klin02 <[email protected]> |
feat(XSLog): move all XSLog outside WhenContext for collection
As data in WhenContext is not acessible in another module. To support XSLog collection, we move all XSLog and related signal outside Wh
feat(XSLog): move all XSLog outside WhenContext for collection
As data in WhenContext is not acessible in another module. To support XSLog collection, we move all XSLog and related signal outside WhenContext. For example, when(cond1){XSDebug(cond2, pable)} to XSDebug(cond1 && cond2, pable)
show more ...
|
#
72dab974 |
| 16-Dec-2024 |
cz4e <[email protected]> |
feat(CtrlUnit, DCache): support L1 DCache RAS (#4009)
# L1 DCache RAS extension support
The L1 DCache supports the part of Reliability, Availability, and Serviceability (RAS) Extension. * L1 DCache
feat(CtrlUnit, DCache): support L1 DCache RAS (#4009)
# L1 DCache RAS extension support
The L1 DCache supports the part of Reliability, Availability, and Serviceability (RAS) Extension. * L1 DCache protection with Single Error Correct Double Error Detect (SECDED) ECC on the RAMs. This includes the L1 DChace tag and data RAMs. Not recovery error tag or data. * Fault Handling Interrupt (Bus Error Unit Interrupt,BEU, 65) * Error inject
## ECC Error Detect An error might be triggered, when access L1 DCache. * **Error Report**: * Tag ECC Error: As long as an ECC error occurs on a certain path, it is judged that an ECC error has occurred. * Data ECC Error: If an ECC error occurs in the hit line, it is considered that an ECC error has occurred. If it does not hit, it will not be processed. * If an instruction access triggers an ECC error, a Hardware error is considered and an exception is reported. * Whenever there is an error in starting, an error message needs to be sent to BEU. * When the hardware detects an error, it reports it to the BEU and triggers the NMI external interrupt(65).
* **Load instruction**: * Only ECC errors of tags or data will be triggered during execution, and the errors will be reported to the BEU and a `Hardware Error` will be reported.
* **Probe/Snoop**: * If a tag ecc error occurs, there is no need to change the cache status, and a `ProbeAck` with `corrupt=1` needs to be returned to l2. * If a data ecc error occurs, change the cache status according to the rules. If data needs to be returned, `ProbeAckData` with `corrupt=1` needs to be returned to l2.
* **Replace/Evict**: * `ReleaseData` with `corrupt=1` needs to be returned to l2.
* **Store to L1 DCache**: * If a tag ecc error occurs, the cacheline is released according to the `Repalce/Evict` process and the data is written to L1 DCache without reporting errors to l2. * If a data ecc error occurs, the data is written directly without reporting the error to l2.
* **Atomics**: * report `Hardware Error`, do not report errors to l2.
## Error Inject Each core's L1 DCache is configured with a memory map register-controlled controller, and each hardware unit that supports ECC is configured with a control bank. After the Bank register configuration is completed, L1 DCache will trigger an ecc error for the first access L1 DCache. <div style="text-align: center;"> <img src="https://github.com/user-attachments/assets/8c4d23c5-0324-4e52-bcf4-29b47a282d72" alt="err_inject" width="200" /> </div>
### Address Space Address space `0x38022000`-`0x3802207F`, a total of 128 bytes of space, this space is the local space of each hart. <div style="text-align: center;"> <img width="292" alt="ctl_bank" src="https://github.com/user-attachments/assets/89f88b24-37a4-4786-a192-401759eb95cf"> </div>
### L1 DCache Control Bank Each Control Bank contains registers: `ECCCTL`, `ECCEID`, `ECCMASK`, each register is 8 bytes. <img width="414" alt="eccctl" src="https://github.com/user-attachments/assets/b22ff437-d05d-4b3c-a353-dbea1afdc156"> * ECCCTL(ECC Control): ECC injection control register. * `ese(error signaling enable)`: Indicates that the injection is valid and is initialized to 0. When the injection is successful and `pst==0`, ese will be clean. * `pst(persist)`: Continuously inject signals. When `pst==1`, the `ECCEID` counter decreases to 0 and after successful injection, the injection timer will be restored to the last set `ECCEID` and re-injected; when `pst==0`, it will be injected only once. * `ede(error delay enable)`: Indicates that counter is valid and initialized to 0. If * `ese==1` and `ede==0`, error injection is effective immediately. * `ese==1` and `ede==1`, you need to wait until `ECCEID` decrements to 0 before the injection is effective. * `cmp(component)`: Injection target, initialized to 0. * 1'b0: The injection object is tag. * 1'b1: The injection object is data. * `bank`: The bank valid signal is initialized to 0. When the bit in the `bank` is set, the corresponding mask is valid. <img width="414" alt="ecceid" src="https://github.com/user-attachments/assets/8cea0d8d-2540-44b1-b1f9-c1ed6ec5341e">
* ECCEID(ECC Error Inject Delay): ECC injection delay controller. * When `ese==1` and `ede==1`, it starts to decrease until it reaches 0. Currently, the same clock as the core frequency is used, which can also be divided. Since ECC injection relies on L1 DCache access, the time of the `EID` and the time when the ECC error is triggered may not be consistent.
<img width="414" alt="eccmask" src="https://github.com/user-attachments/assets/b1be83fd-17a6-4324-8aa6-45858249c476">
* ECCMASK(ECC Mask): ECC injection mask register. * 0 means no inversion, 1 means flip. Tag injection only uses the bits in `ECCMASK0` corresponding to the tag length.
### Error Inject Example ``` 1 # set control bank base address 2 mv x3, $(BASEADDR) 3 4 # set eid 5 mv x5, 500 # delay 500 cycles 6 sd x5, 8(x3) # mmio store 7 8 # set mask 9 mv x5, 0x1 # flip bit 0 10 sd x5, 16(x3) # mmio store 11 12 # set ctl 13 mv x5, 0x7 # comp = 0, ede = 1, pst = 1, ese = 1 14 sd x5, 0(x3) # mmio store ```
show more ...
|
#
123734ad |
| 29-Nov-2024 |
Anzooooo <[email protected]> |
fix(Sbuffer): remove address assert for 'io.dcache.req'
This is a false assertion, and we should not prohibit 0 address requests
|
#
e04c5f64 |
| 19-Nov-2024 |
Yanqin Li <[email protected]> |
feat(outstanding): support nc outstanding and remove mmio st outstanding
|
#
1bf9a598 |
| 13-Nov-2024 |
Anzo <[email protected]> |
feat(difftest): add 'pc' and 'robidx' for store event (#3862)
|
#
16b5cf13 |
| 27-Aug-2024 |
Tang Haojin <[email protected]> |
sbuffer: fix difftest uninitialized bug (#3429)
|
#
3fbc86fc |
| 26-Aug-2024 |
Chen Xi <[email protected]> |
RVA23 CMO (Cache Maintenance Operation) (#3426)
Supports Zicbom Extension (Clean/Flush/Invalid)
- https://github.com/OpenXiangShan/CoupledL2/pull/225
This PR also includes other CPL2 changes:
-
RVA23 CMO (Cache Maintenance Operation) (#3426)
Supports Zicbom Extension (Clean/Flush/Invalid)
- https://github.com/OpenXiangShan/CoupledL2/pull/225
This PR also includes other CPL2 changes:
- bug fixes
- timing fixes
- SRAM-Queue | https://github.com/OpenXiangShan/CoupledL2/pull/228
- data SRAM splitted into 4 |
https://github.com/OpenXiangShan/CoupledL2/pull/229
---------
Co-authored-by: lixin <[email protected]>
show more ...
|
#
c9ae2b14 |
| 05-Aug-2024 |
Xuan Hu <[email protected]> |
Sbuffer: check inputs are both valid when comparing input tag
|
#
e3da8bad |
| 22-Jul-2024 |
Tang Haojin <[email protected]> |
build: purge chisel 3 and add deprecation check (#3250)
|
#
5adc4829 |
| 16-Jun-2024 |
Yanqin Li <[email protected]> |
memblock: add rest clockgate of reg (#3017)
Co-authored-by: cai luoshan <[email protected]> Co-authored-by: Cai Luoshan <[email protected]> Co-authored-by: good-circle <
memblock: add rest clockgate of reg (#3017)
Co-authored-by: cai luoshan <[email protected]> Co-authored-by: Cai Luoshan <[email protected]> Co-authored-by: good-circle <[email protected]> Co-authored-by: Ma-YX <[email protected]> Co-authored-by: Ma-YX <[email protected]> Co-authored-by: CharlieLiu <[email protected]>
show more ...
|
#
3e11bedf |
| 08-May-2024 |
Anzooooo <[email protected]> |
StoreQueue: fix port uninitialized when difftest was unenabled
|
#
a4d1b2d1 |
| 13-May-2024 |
good-circle <[email protected]> |
Merge branch 'master' into vlsu-merge-master-0504
|
#
c686adcd |
| 10-May-2024 |
Yinan Xu <[email protected]> |
Bump utility and disable ConstantIn by default (#2955)
* use BigInt for initValue of Constantin.createRecord
* use WITH_CONSTANTIN=1 to enable the ConstantIn plugin
|
#
25df626e |
| 04-May-2024 |
good-circle <[email protected]> |
Merge branch 'master' into vlsu-tmp-master
|
#
9ae95eda |
| 02-Apr-2024 |
Anzooooo <[email protected]> |
Difftest: add new VLSU difftest support
|
#
b2d6d8e7 |
| 09-Apr-2024 |
good-circle <[email protected]> |
VLSU: Add performance counters and parameters
|
#
315e1323 |
| 05-Apr-2024 |
good-circle <[email protected]> |
VLSU, sbuffer: Fix vector store write to sbuffer logic
|
#
ffd3154d |
| 25-Apr-2024 |
CharlieLiu <[email protected]> |
DCache: New feature evict on refill (#2919)
- Remove module RefillPipe, move DCache replacer access/update to
MainPipe.
- Using l2_hint as an early wake-up signal for MSHR.
---------
Co-auth
DCache: New feature evict on refill (#2919)
- Remove module RefillPipe, move DCache replacer access/update to
MainPipe.
- Using l2_hint as an early wake-up signal for MSHR.
---------
Co-authored-by: YukunXue <[email protected]>
Co-authored-by: Tang Haojin <[email protected]>
Co-authored-by: ssszwic <[email protected]>
Co-authored-by: Kunlin You <[email protected]>
show more ...
|
#
e25e4d90 |
| 11-Apr-2024 |
Xuan Hu <[email protected]> |
Merge remote-tracking branch 'upstream/master' into tmp-master
TODO: add gpaddr data path from frontend to backend
|
#
f57f7f2a |
| 10-Apr-2024 |
Yangyu Chen <[email protected]> |
Configs: correct MaxHartIdBits (#2838)
Currently, many different lengths of HartId in Xiangshan, making it hard to
configure it to scale more than 16 cores since we have set 4bits somewhere.
This
Configs: correct MaxHartIdBits (#2838)
Currently, many different lengths of HartId in Xiangshan, making it hard to
configure it to scale more than 16 cores since we have set 4bits somewhere.
This commit corrects MaxHartIdBits in config and uses MaxHartIDBits where
it needs to get this solved.
Signed-off-by: Yangyu Chen <[email protected]>
show more ...
|
#
202674ae |
| 04-Mar-2024 |
Haojin Tang <[email protected]> |
MemBlock: support 3ld3st
|
#
ec86549e |
| 02-Jan-2024 |
sfencevma <[email protected]> |
MemBlock: enable 3ld3st (#2524)
* enable 3ld3st
* assign enqLsq
* fix IssQueSize
* remove performance regression
* MMU: Fix ptwrepeater when 3ld + 3st
* fix minimal config params
*
MemBlock: enable 3ld3st (#2524)
* enable 3ld3st
* assign enqLsq
* fix IssQueSize
* remove performance regression
* MMU: Fix ptwrepeater when 3ld + 3st
* fix minimal config params
* fix minimal config LoadQueueReplaySize
* add 3ld3st switch
* fix bank conflict valid logic
* fix strict memory ambiguous logic
* fix wakeup logic
* disable 3ld3st by default
* modify minimal config params
---------
Co-authored-by: Lyn <[email protected]>
Co-authored-by: good-circle <[email protected]>
show more ...
|
#
60bd4d3c |
| 04-Dec-2023 |
weiding liu <[email protected]> |
difftest: fix vector element store event
Only Store Queue writeback will transfer store event, for vector store instruction, rtl don't transfer vector element store event to testbench. Therefore, mo
difftest: fix vector element store event
Only Store Queue writeback will transfer store event, for vector store instruction, rtl don't transfer vector element store event to testbench. Therefore, move the transfer of store event to sbuffer
show more ...
|