History log of /XiangShan/src/main/scala/xiangshan/backend/decode/ (Results 401 – 425 of 572)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
88825c5c09-Sep-2021 Yinan Xu <[email protected]>

backend: support instruction fusion cases (#1011)

This commit adds some simple instruction fusion cases in decode stage.
Currently we only implement instruction pairs that can be fused into
RV64GC

backend: support instruction fusion cases (#1011)

This commit adds some simple instruction fusion cases in decode stage.
Currently we only implement instruction pairs that can be fused into
RV64GCB instructions.

Instruction fusions are detected in the decode stage by FusionDecoder.
The decoder checks every two instructions and marks the first
instruction fused if they can be fused into one instruction. The second
instruction is removed by setting the valid field to false.

Simple fusion cases include sh1add, sh2add, sh3add, sexth, zexth, etc.

Currently, ftq in frontend needs every instruction to commit. However,
the second instruction is removed from the pipeline and will not commit.
To solve this issue, we temporarily add more bits to isFused to indicate
the offset diff of the two fused instruction. There are four
possibilities now. This feature may be removed later.

This commit also adds more instruction fusion cases that need changes
in both the decode stage and the funtion units. In this commit, we add
some opcode to the function units and fuse the new instruction pairs
into these new internal uops.

The list of opcodes we add in this commit is shown below:
- szewl1: `slli r1, r0, 32` + `srli r1, r0, 31`
- szewl2: `slli r1, r0, 32` + `srli r1, r0, 30`
- byte2: `srli r1, r0, 8` + `andi r1, r1, 255`
- sh4add: `slli r1, r0, 4` + `add r1, r1, r2`
- sr30add: `srli r1, r0, 30` + `add r1, r1, r2`
- sr31add: `srli r1, r0, 31` + `add r1, r1, r2`
- sr32add: `srli r1, r0, 32` + `add r1, r1, r2`
- oddadd: `andi r1, r0, 1`` + `add r1, r1, r2`
- oddaddw: `andi r1, r0, 1`` + `addw r1, r1, r2`
- orh48: mask off the first 16 bits and or with another operand
(`andi r1, r0, -256`` + `or r1, r1, r2`)

Furthermore, this commit adds some complex instruction fusion cases to
the decode stage and function units. The complex instruction fusion cases
are detected after the instructions are decoded into uop and their
CtrlSignals are used for instruction fusion detection.

We add the following complex instruction fusion cases:
- addwbyte: addw and mask it with 0xff (extract the first byte)
- addwbit: addw and mask it with 0x1 (extract the first bit)
- logiclsb: logic operation and mask it with 0x1 (extract the first bit)
- mulw7: andi 127 and mulw instructions.
Input to mul is AND with 0x7f if mulw7 bit is set to true.

show more ...

0a6fa50e08-Sep-2021 zfw <[email protected]>

alu, decode: fix alu instruction and change instruction name (#1012)

* Alu: fix andn, orn, xnor

* Decode: change instruction name

31ebfb1d06-Sep-2021 YikeZhou <[email protected]>

backend, rename: support elimination of move instruction whose lsrc is 0 + bug fix (#1008)

* backend, rename: support elimination of mv inst whose lsrc=0
[known bug] instr page fault not properly r

backend, rename: support elimination of move instruction whose lsrc is 0 + bug fix (#1008)

* backend, rename: support elimination of mv inst whose lsrc=0
[known bug] instr page fault not properly raised after sfence.vma

* backend, roq: [bug fix] won't label me with exception as writebacked

show more ...


/XiangShan/Makefile
/XiangShan/src/main/scala/device/AXI4DummySD.scala
/XiangShan/src/main/scala/device/AXI4Flash.scala
/XiangShan/src/main/scala/device/AXI4RAM.scala
/XiangShan/src/main/scala/device/AXI4VGA.scala
/XiangShan/src/main/scala/device/RocketDebugWrapper.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/utils/BitUtils.scala
/XiangShan/src/main/scala/utils/Misc.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/XSDts.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
DecodeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/InputBuffer.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Multiplier.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FMA.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPUSubModule.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/DataArray.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/MEFreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/BTLB.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/L2TLBMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUBundle.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUConst.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableCache.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableWalker.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/Repeater.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/TLB.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/TLBStorage.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/mem/MemUtils.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LSQWrapper.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueueData.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
/XiangShan/src/main/scala/xiangshan/package.scala
a260c31a02-Sep-2021 YikeZhou <[email protected]>

Merge pull request #949 from OpenXiangShan/me-opt

backend, rename: configurable free list & `headPtr` bug fix & `dst=0/dst=src` move inst elimination


/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
DecodeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/FreeListBaseIO.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/MEFreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/MEFreeListIO.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/StdFreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/frontend/Composer.scala
/XiangShan/src/main/scala/xiangshan/frontend/FTB.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/FrontendBundle.scala
/XiangShan/src/main/scala/xiangshan/frontend/ICache.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/NewFtq.scala
/XiangShan/src/main/scala/xiangshan/frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/frontend/local.scala
/XiangShan/src/main/scala/xiangshan/frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
c361fb1e01-Sep-2021 Lingrui98 <[email protected]>

Merge remote-tracking branch 'origin/master' into decoupled-frontend


/XiangShan/.gitmodules
/XiangShan/build.sc
/XiangShan/fudian
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
FPDecoder.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/WbArbiter.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FDivSqrt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FMA.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToInt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPU.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPUSubModule.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/IntToFP.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/ICache.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/NewFtq.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/test/scala/top/SimTop.scala
dc59782631-Aug-2021 Jiawei Lin <[email protected]>

fudian: The new floating-point lib to replace hardfloat (#975)

* Add submodule 'fudian'

* IntToFP: use fudian

* FMA: use fudian.CMA

* FPToInt: remove recode format


/XiangShan/.gitmodules
/XiangShan/Makefile
/XiangShan/block-inclusivecache-sifive
/XiangShan/build.sc
/XiangShan/difftest
/XiangShan/fudian
/XiangShan/rocket-chip
/XiangShan/src/main/scala/device/AXI4DummySD.scala
/XiangShan/src/main/scala/device/AXI4Flash.scala
/XiangShan/src/main/scala/device/AXI4RAM.scala
/XiangShan/src/main/scala/device/AXI4VGA.scala
/XiangShan/src/main/scala/device/RocketDebugWrapper.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
FPDecoder.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/WbArbiter.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FDivSqrt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FMA.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToInt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPU.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPUSubModule.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/IntToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/BypassNetwork.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/SelectPolicy.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUBundle.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUConst.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableCache.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableWalker.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/test/scala/top/SimTop.scala
e597d20630-Aug-2021 Lingrui98 <[email protected]>

Merge branch 'master' into dcp-merge-master


/XiangShan/.github/workflows/emu.yml
/XiangShan/Makefile
/XiangShan/block-inclusivecache-sifive
/XiangShan/build.sc
/XiangShan/difftest
/XiangShan/rocket-chip
/XiangShan/scripts/xiangshan.py
/XiangShan/src/main/scala/device/AXI4DummySD.scala
/XiangShan/src/main/scala/device/AXI4Flash.scala
/XiangShan/src/main/scala/device/AXI4RAM.scala
/XiangShan/src/main/scala/device/AXI4VGA.scala
/XiangShan/src/main/scala/device/RocketDebugWrapper.scala
/XiangShan/src/main/scala/top/BusPerfMonitor.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/PMA.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
DecodeUnit.scala
Instructions.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/ExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/WbArbiter.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Bmu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/util/CSRConst.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/BypassNetwork.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/SelectPolicy.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/AlternativeFreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/FreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/MainPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUBundle.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUConst.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableCache.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableWalker.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/TLB.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/FTB.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/FrontendBundle.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/ICache.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/NewFtq.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LSQWrapper.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/test/scala/top/SimTop.scala
0ce36dde30-Aug-2021 YikeZhou <[email protected]>

Merge branch 'master' into me-opt


/XiangShan/Makefile
/XiangShan/block-inclusivecache-sifive
/XiangShan/build.sc
/XiangShan/difftest
/XiangShan/rocket-chip
/XiangShan/src/main/scala/device/AXI4DummySD.scala
/XiangShan/src/main/scala/device/AXI4Flash.scala
/XiangShan/src/main/scala/device/AXI4RAM.scala
/XiangShan/src/main/scala/device/AXI4VGA.scala
/XiangShan/src/main/scala/device/RocketDebugWrapper.scala
/XiangShan/src/main/scala/top/BusPerfMonitor.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
DecodeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/ExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/WbArbiter.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/BypassNetwork.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/SelectPolicy.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/MEFreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/MainPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUBundle.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUConst.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableCache.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableWalker.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/test/scala/top/SimTop.scala
184a195826-Aug-2021 zfw <[email protected]>

Alu: optimize timing for bitmanip (#959)

* separate the Alu instructions by 64bit data instructions and w-suffix instructions
* optimize select logic of instructions result


/XiangShan/.github/workflows/emu.yml
/XiangShan/difftest
/XiangShan/src/main/scala/top/BusPerfMonitor.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
DecodeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/ExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Wb.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/SelectPolicy.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/AlternativeFreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/MainPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUConst.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/TLB.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LSQWrapper.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/package.scala
73c4359e25-Aug-2021 YikeZhou <[email protected]>

rename: handle mv inst with ldest=0 or ldest=lsrc
decode: slightly change def of `isMove`
[TODO] handle mv inst with lsrc=0


/XiangShan/.github/workflows/emu.yml
/XiangShan/difftest
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
DecodeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/ExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/SelectPolicy.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/FreeListBaseIO.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/MEFreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/MEFreeListIO.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/freelist/StdFreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUConst.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/TLB.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LSQWrapper.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/package.scala
8b8e745d21-Aug-2021 YikeZhou <[email protected]>

backend, rename: support move elimination (#920)

* Bundle, Rename: Add some comments
FreeList, RenameTable: Comment out unused variables

* refcnt: Implement AdderTree for reference counter

*

backend, rename: support move elimination (#920)

* Bundle, Rename: Add some comments
FreeList, RenameTable: Comment out unused variables

* refcnt: Implement AdderTree for reference counter

* build.sc: add testOne method for unit test

* AdderTest: add testbench for Adder (passed)

* AdderTree: Add testbench for AdderTree (passed)

* ReferenceCounter: implement a 2-bit counter

* Rename: remove redundant code

* Rename: prepared for move elimination [WIP]

* Roq: add eliminated move bit in roq entry;
label elim move inst as writebacked
AlternativeFreeList: new impl for int free list
Rename: change io of free list
Dispatch1: (todo) not send move to intDq
Bundle: add eliminatedMove bit in roqCommitInfo, uop and debugio
ReferenceCounter: add debug print msg

* Dispatch1: [BUG FIX] not send move inst to IntDq

* DecodeUnit: [BUG FIX] differentiate li from mv

* Bug fix:
1. Dispatch1: should not label pdest of move as busy in busy table
2. Rename: use psrc0 to index bit vec isMax
3. AlternativeFreeList: fix maxVec calculation logic and ref counter
increment logic
Besides, more debug info and assertions were added.

* AlternativeFreeList Bug Fix:
1. add redirect input - shouldn't allocate reg when redirect is
valid
2. handle duplicate preg in roqCommits in int free list

* AlternativeFreeList: Fix value assignment race condition

* Rename: Fix value assignment race condition too

* RenameTable: refactor spec/arch table write process

* Roq: Fix debug_exuData of move(addi) instruction
(it was trash data before because move needn't enter exu)

* Rename: change intFreeList's redirect process
(by setting headPtr back) and flush process

* ME: microbench & coremark & linux-hello passed
1. DecodeUnit: treat `mv x,x` inst as non-move
2. AlternativeFreeList: handle duplicate walk req correctly
3. Roq: fix debug_exuData bug (make sure writeback that updates
debug_exuData happens before ME instruction in program order)

* AlternativeFreeList: License added
build.sc: remove unused config
Others: comments added

* package rename: remove unused modules

* Roq: Replace debug_prf with a cleaner fix method

* Disp1/AltFL/Rename: del unnecessary white spaces

* build.sc: change stack size
AlternativeFreeList: turn off assertions

* build.sc: change stack size for test

show more ...

d4aca96c19-Aug-2021 lqre <[email protected]>

core: add basic debug mode features (#918)

Basic features of debug mode are implemented.

* Rewrite CSR for debug mode
* Peripheral work for implementing debug module
* Added single step support

core: add basic debug mode features (#918)

Basic features of debug mode are implemented.

* Rewrite CSR for debug mode
* Peripheral work for implementing debug module
* Added single step support
* Use difftest with JTAG support

show more ...

d57bda6418-Aug-2021 JinYue <[email protected]>

Merge branch 'decoupled-frontend-ifu' into decoupled-frontend


/XiangShan/.github/workflows/emu.yml
/XiangShan/.gitmodules
/XiangShan/Makefile
/XiangShan/build.sc
/XiangShan/debug/Makefile
/XiangShan/difftest
/XiangShan/ready-to-run
/XiangShan/scripts/xiangshan.py
/XiangShan/src/main/scala/device/AXI4UART.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/utils/DataModuleTemplate.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/PMA.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
isa/predecode/predecode.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/ExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Wb.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Jump.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/ICache.scala
/XiangShan/src/main/scala/xiangshan/cache/ICacheMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/InstrUncache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/TLB.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L1plusPrefetcher.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Composer.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/FTB.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/FrontendBundle.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/ICache.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/NewFtq.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/local.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/frontend/Btb.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopPredictor.scala
/XiangShan/src/main/scala/xiangshan/frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/test/scala/top/SimMMIO.scala
/XiangShan/src/test/scala/top/SimTop.scala
ee8ff15317-Aug-2021 zfw <[email protected]>

Support RISC-V bitmanip extension v1.0 (#919)

* Add bitmanip v1.0 instructions into decede table
* Fix some instructions' name
* Add basic instructions into Alu
* Add clz, ctz, cpop, clmul Instru

Support RISC-V bitmanip extension v1.0 (#919)

* Add bitmanip v1.0 instructions into decede table
* Fix some instructions' name
* Add basic instructions into Alu
* Add clz, ctz, cpop, clmul Instruction into MulDivExeUnit

show more ...


/XiangShan/.github/workflows/emu.yml
/XiangShan/.gitmodules
/XiangShan/Makefile
/XiangShan/build.sc
/XiangShan/debug/Makefile
/XiangShan/difftest
/XiangShan/ready-to-run
/XiangShan/scripts/xiangshan.py
/XiangShan/src/main/scala/device/AXI4UART.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/ExuBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FUBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
DecodeUnit.scala
Instructions.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/ExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Wb.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Bmu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Jump.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/test/scala/top/SimMMIO.scala
/XiangShan/src/test/scala/top/SimTop.scala
35ee668d16-Aug-2021 JinYue <[email protected]>

PreDecode: add exception logic

* set instruction to NOP when exception


/XiangShan/.gitignore
/XiangShan/.gitmodules
/XiangShan/.mill-version
/XiangShan/Makefile
/XiangShan/README.md
/XiangShan/build.sbt
/XiangShan/build.sc
/XiangShan/readme.zh-cn.md
/XiangShan/ready-to-run
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/top/XiangShanStage.scala
/XiangShan/src/main/scala/utils/BitUtils.scala
/XiangShan/src/main/scala/utils/DataModuleTemplate.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/PMA.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FloatBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/IntegerBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
isa/predecode/predecode.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Ls.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/JumpExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Fence.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/SRT4Divider.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/DataArray.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/PayloadArray.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/SelectPolicy.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/ICache.scala
/XiangShan/src/main/scala/xiangshan/cache/ICacheMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/InstrUncache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L1plusPrefetcher.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Composer.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/FTB.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/FrontendBundle.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Ftq.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/ICache.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/NewFtq.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/local.scala
/XiangShan/src/main/scala/xiangshan/decoupled-frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/frontend/Btb.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopPredictor.scala
/XiangShan/src/main/scala/xiangshan/frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xstransforms/PrintControl.scala
/XiangShan/src/test/csrc/common/common.h
/XiangShan/src/test/csrc/difftest/difftest.cpp
/XiangShan/src/test/csrc/difftest/difftest.h
/XiangShan/src/test/csrc/difftest/goldenmem.cpp
/XiangShan/src/test/csrc/difftest/nemuproxy.cpp
/XiangShan/src/test/csrc/vcs/main.cpp
/XiangShan/src/test/csrc/verilator/emu.cpp
/XiangShan/src/test/csrc/verilator/emu.h
/XiangShan/src/test/csrc/verilator/main.cpp
/XiangShan/src/test/vsrc/vcs/top.v
/XiangShan/verilator.mk
/XiangShan/xs-arch-simple.svg
f320e0f024-Jul-2021 Yinan Xu <[email protected]>

misc: update PCL information (#899)

XiangShan is jointly released by ICT and PCL.


/XiangShan/.gitignore
/XiangShan/.gitmodules
/XiangShan/.mill-version
/XiangShan/Makefile
/XiangShan/README.md
/XiangShan/build.sbt
/XiangShan/build.sc
/XiangShan/debug/Makefile
/XiangShan/debug/cputest.sh
/XiangShan/debug/env.sh
/XiangShan/debug/perf_sbuffer.sh
/XiangShan/debug/sc_stat.sh
/XiangShan/readme.zh-cn.md
/XiangShan/ready-to-run
/XiangShan/scripts/autorun/common/local_config.py
/XiangShan/scripts/autorun/common/simulator_task_goback.py
/XiangShan/scripts/autorun/common/task_tree_go_back.py
/XiangShan/scripts/autorun/config.py
/XiangShan/scripts/autorun/run.py
/XiangShan/scripts/coverage/coverage.py
/XiangShan/scripts/coverage/statistics.py
/XiangShan/scripts/statistics.py
/XiangShan/scripts/utils/lock-emu.c
/XiangShan/scripts/xiangshan.py
/XiangShan/src/main/resources/vsrc/regfile_160x64_10w16r_sim.v
/XiangShan/src/main/scala/bus/tilelink/Arbiter.scala
/XiangShan/src/main/scala/bus/tilelink/Metadata.scala
/XiangShan/src/main/scala/bus/tilelink/TLUtilities.scala
/XiangShan/src/main/scala/bus/tilelink/TileLink.scala
/XiangShan/src/main/scala/device/AXI4DummySD.scala
/XiangShan/src/main/scala/device/AXI4Flash.scala
/XiangShan/src/main/scala/device/AXI4IntrGenerator.scala
/XiangShan/src/main/scala/device/AXI4Keyboard.scala
/XiangShan/src/main/scala/device/AXI4Plic.scala
/XiangShan/src/main/scala/device/AXI4RAM.scala
/XiangShan/src/main/scala/device/AXI4SlaveModule.scala
/XiangShan/src/main/scala/device/AXI4Timer.scala
/XiangShan/src/main/scala/device/AXI4UART.scala
/XiangShan/src/main/scala/device/AXI4VGA.scala
/XiangShan/src/main/scala/device/TLTimer.scala
/XiangShan/src/main/scala/difftest/Difftest.scala
/XiangShan/src/main/scala/gpu/GPU.scala
/XiangShan/src/main/scala/system/SoC.scala
/XiangShan/src/main/scala/top/ArgParser.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/top/XiangShanStage.scala
/XiangShan/src/main/scala/utils/BitUtils.scala
/XiangShan/src/main/scala/utils/CircularQueuePtr.scala
/XiangShan/src/main/scala/utils/DataDontCareNode.scala
/XiangShan/src/main/scala/utils/DataModuleTemplate.scala
/XiangShan/src/main/scala/utils/DebugIdentityNode.scala
/XiangShan/src/main/scala/utils/ECC.scala
/XiangShan/src/main/scala/utils/ExcitingUtils.scala
/XiangShan/src/main/scala/utils/ExtractVerilogModules.scala
/XiangShan/src/main/scala/utils/FlushableQueue.scala
/XiangShan/src/main/scala/utils/GTimer.scala
/XiangShan/src/main/scala/utils/Hold.scala
/XiangShan/src/main/scala/utils/LFSR64.scala
/XiangShan/src/main/scala/utils/LatencyPipe.scala
/XiangShan/src/main/scala/utils/LogUtils.scala
/XiangShan/src/main/scala/utils/LookupTree.scala
/XiangShan/src/main/scala/utils/MIMOQueue.scala
/XiangShan/src/main/scala/utils/Misc.scala
/XiangShan/src/main/scala/utils/ParallelMux.scala
/XiangShan/src/main/scala/utils/PerfCounterUtils.scala
/XiangShan/src/main/scala/utils/PipelineConnect.scala
/XiangShan/src/main/scala/utils/PriorityMuxDefault.scala
/XiangShan/src/main/scala/utils/PriorityMuxGen.scala
/XiangShan/src/main/scala/utils/RegMap.scala
/XiangShan/src/main/scala/utils/Replacement.scala
/XiangShan/src/main/scala/utils/ResetGen.scala
/XiangShan/src/main/scala/utils/SRAMTemplate.scala
/XiangShan/src/main/scala/utils/StopWatch.scala
/XiangShan/src/main/scala/utils/TLDump.scala
/XiangShan/src/main/scala/utils/TLIgnoreNode.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/PMA.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/XSDts.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FloatBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/IntegerBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/Scheduler.scala
DecodeStage.scala
DecodeUnit.scala
FPDecoder.scala
Instructions.scala
StoreSet.scala
WaitTable.scala
isa/predecode/predecode.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Ls.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/IndexMapping.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/AluExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/JumpExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Wb.scala
/XiangShan/src/main/scala/xiangshan/backend/ftq/Ftq.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Fence.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Jump.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Multiplier.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Radix2Divider.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/SRT4Divider.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FDivSqrt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FMA.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToInt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPUSubModule.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/IntToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/util/CSA.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/util/CSRConst.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/BypassNetwork.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/DataArray.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/PayloadArray.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/SelectPolicy.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/WakeupQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/BusyTable.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/FreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/RenameTable.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/AMOALU.scala
/XiangShan/src/main/scala/xiangshan/cache/AtomicsReplayUnit.scala
/XiangShan/src/main/scala/xiangshan/cache/DCache.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/ICache.scala
/XiangShan/src/main/scala/xiangshan/cache/ICacheMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/InstrUncache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1Cache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/LoadPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MainPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/Mem.scala
/XiangShan/src/main/scala/xiangshan/cache/MissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/Probe.scala
/XiangShan/src/main/scala/xiangshan/cache/StoreReplayUnit.scala
/XiangShan/src/main/scala/xiangshan/cache/Uncache.scala
/XiangShan/src/main/scala/xiangshan/cache/WritebackQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/L2TLBMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUBundle.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/MMUConst.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableCache.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/PageTableWalker.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/Repeater.scala
/XiangShan/src/main/scala/xiangshan/cache/mmu/TLB.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/BestOffsetPrefetch.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L1plusPrefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L2Prefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/Prefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/StreamPrefetch.scala
/XiangShan/src/main/scala/xiangshan/frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/frontend/Btb.scala
/XiangShan/src/main/scala/xiangshan/frontend/FakeICache.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopBuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopPredictor.scala
/XiangShan/src/main/scala/xiangshan/frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/frontend/jbtac.scala
/XiangShan/src/main/scala/xiangshan/frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/mem/MaskedDataModule.scala
/XiangShan/src/main/scala/xiangshan/mem/MemUtils.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LSQWrapper.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueueData.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueueData.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/AtomicsUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/FakeSbuffer.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/main/scala/xstransforms/PrintControl.scala
/XiangShan/src/main/scala/xstransforms/PrintModuleName.scala
/XiangShan/src/test/csrc/common/axi4.cpp
/XiangShan/src/test/csrc/common/axi4.h
/XiangShan/src/test/csrc/common/common.cpp
/XiangShan/src/test/csrc/common/common.h
/XiangShan/src/test/csrc/common/compress.cpp
/XiangShan/src/test/csrc/common/compress.h
/XiangShan/src/test/csrc/common/device.cpp
/XiangShan/src/test/csrc/common/device.h
/XiangShan/src/test/csrc/common/flash.cpp
/XiangShan/src/test/csrc/common/flash.h
/XiangShan/src/test/csrc/common/keyboard.cpp
/XiangShan/src/test/csrc/common/macro.h
/XiangShan/src/test/csrc/common/ram.cpp
/XiangShan/src/test/csrc/common/ram.h
/XiangShan/src/test/csrc/common/sdcard.cpp
/XiangShan/src/test/csrc/common/sdcard.h
/XiangShan/src/test/csrc/common/uart.cpp
/XiangShan/src/test/csrc/common/vga.cpp
/XiangShan/src/test/csrc/difftest/difftest.cpp
/XiangShan/src/test/csrc/difftest/difftest.h
/XiangShan/src/test/csrc/difftest/goldenmem.cpp
/XiangShan/src/test/csrc/difftest/goldenmem.h
/XiangShan/src/test/csrc/difftest/interface.cpp
/XiangShan/src/test/csrc/difftest/interface.h
/XiangShan/src/test/csrc/difftest/nemuproxy.cpp
/XiangShan/src/test/csrc/difftest/nemuproxy.h
/XiangShan/src/test/csrc/difftest/ref.cpp
/XiangShan/src/test/csrc/difftest/ref.h
/XiangShan/src/test/csrc/vcs/main.cpp
/XiangShan/src/test/csrc/verilator/emu.cpp
/XiangShan/src/test/csrc/verilator/emu.h
/XiangShan/src/test/csrc/verilator/main.cpp
/XiangShan/src/test/csrc/verilator/snapshot.cpp
/XiangShan/src/test/csrc/verilator/snapshot.h
/XiangShan/src/test/scala/cache/CacheTest.scala
/XiangShan/src/test/scala/cache/L1DTest/CoreAgent.scala
/XiangShan/src/test/scala/cache/L1DTest/CoreTransatcion.scala
/XiangShan/src/test/scala/cache/L1DTest/L1DTest.scala
/XiangShan/src/test/scala/cache/L1plusCacheTest.scala
/XiangShan/src/test/scala/cache/L2CacheNonInclusiveGetTest.scala
/XiangShan/src/test/scala/cache/L2CacheTest.scala
/XiangShan/src/test/scala/cache/ReplaceTest.scala
/XiangShan/src/test/scala/cache/TLCTest/BigIntUtil.scala
/XiangShan/src/test/scala/cache/TLCTest/FixedBlockFuzzer.scala
/XiangShan/src/test/scala/cache/TLCTest/TLCAgent.scala
/XiangShan/src/test/scala/cache/TLCTest/TLCTest.scala
/XiangShan/src/test/scala/cache/TLCTest/TLCTransaction.scala
/XiangShan/src/test/scala/cache/TLCTest/TLMasterMMIO.scala
/XiangShan/src/test/scala/cache/TLCTest/TLSlaveMMIO.scala
/XiangShan/src/test/scala/cache/TLCTest/TLULAgent.scala
/XiangShan/src/test/scala/cache/TLCTest/TLULMMIO.scala
/XiangShan/src/test/scala/cache/UnalignedGetTest.scala
/XiangShan/src/test/scala/top/SimMMIO.scala
/XiangShan/src/test/scala/top/SimTop.scala
/XiangShan/src/test/scala/xiangshan/testutils/AddSinks.scala
/XiangShan/src/test/scala/xiangshan/testutils/PartialDecoupledDriver.scala
/XiangShan/src/test/scala/xiangshan/testutils/TestCaseGenerator.scala
/XiangShan/src/test/testcase/Makefile
/XiangShan/src/test/testcase/tests/double-loop.c
/XiangShan/src/test/testcase/tests/nested-loop.c
/XiangShan/src/test/vsrc/common/assert.v
/XiangShan/src/test/vsrc/common/difftest.v
/XiangShan/src/test/vsrc/common/ram.v
/XiangShan/src/test/vsrc/common/ref.v
/XiangShan/src/test/vsrc/vcs/top.v
/XiangShan/tools/readmemh/Makefile
/XiangShan/tools/readmemh/gen-treadle-readmemh.c
/XiangShan/tools/readmemh/groupby-4byte.c
/XiangShan/tools/readmemh/split-readmemh.c
/XiangShan/vcs.mk
/XiangShan/verilator.mk
/XiangShan/xs-arch-simple.svg
c6d4398004-Jun-2021 Lemover <[email protected]>

Add MulanPSL-2.0 License (#824)

In this commit, we add License for XiangShan project.


/XiangShan/.mill-version
/XiangShan/LICENSE
/XiangShan/Makefile
/XiangShan/README.md
/XiangShan/block-inclusivecache-sifive
/XiangShan/build.sc
/XiangShan/debug/Makefile
/XiangShan/debug/cputest.sh
/XiangShan/debug/env.sh
/XiangShan/debug/perf_sbuffer.sh
/XiangShan/debug/sc_stat.sh
/XiangShan/rocket-chip
/XiangShan/scripts/autorun/common/local_config.py
/XiangShan/scripts/autorun/common/simulator_task_goback.py
/XiangShan/scripts/autorun/common/task_tree_go_back.py
/XiangShan/scripts/autorun/config.py
/XiangShan/scripts/autorun/run.py
/XiangShan/scripts/coverage/coverage.py
/XiangShan/scripts/coverage/statistics.py
/XiangShan/scripts/statistics.py
/XiangShan/scripts/utils/lock-emu.c
/XiangShan/scripts/xiangshan.py
/XiangShan/src/main/resources/vsrc/regfile_160x64_10w16r_sim.v
/XiangShan/src/main/scala/bus/tilelink/Arbiter.scala
/XiangShan/src/main/scala/bus/tilelink/Metadata.scala
/XiangShan/src/main/scala/bus/tilelink/TLUtilities.scala
/XiangShan/src/main/scala/bus/tilelink/TileLink.scala
/XiangShan/src/main/scala/device/AXI4DummySD.scala
/XiangShan/src/main/scala/device/AXI4Flash.scala
/XiangShan/src/main/scala/device/AXI4IntrGenerator.scala
/XiangShan/src/main/scala/device/AXI4Keyboard.scala
/XiangShan/src/main/scala/device/AXI4Plic.scala
/XiangShan/src/main/scala/device/AXI4RAM.scala
/XiangShan/src/main/scala/device/AXI4SlaveModule.scala
/XiangShan/src/main/scala/device/AXI4Timer.scala
/XiangShan/src/main/scala/device/AXI4UART.scala
/XiangShan/src/main/scala/device/AXI4VGA.scala
/XiangShan/src/main/scala/device/TLTimer.scala
/XiangShan/src/main/scala/difftest/Difftest.scala
/XiangShan/src/main/scala/gpu/GPU.scala
/XiangShan/src/main/scala/system/SoC.scala
/XiangShan/src/main/scala/top/ArgParser.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/top/XiangShanStage.scala
/XiangShan/src/main/scala/utils/BitUtils.scala
/XiangShan/src/main/scala/utils/CircularQueuePtr.scala
/XiangShan/src/main/scala/utils/DataDontCareNode.scala
/XiangShan/src/main/scala/utils/DataModuleTemplate.scala
/XiangShan/src/main/scala/utils/DebugIdentityNode.scala
/XiangShan/src/main/scala/utils/ECC.scala
/XiangShan/src/main/scala/utils/ExcitingUtils.scala
/XiangShan/src/main/scala/utils/ExtractVerilogModules.scala
/XiangShan/src/main/scala/utils/FlushableQueue.scala
/XiangShan/src/main/scala/utils/GTimer.scala
/XiangShan/src/main/scala/utils/Hold.scala
/XiangShan/src/main/scala/utils/LFSR64.scala
/XiangShan/src/main/scala/utils/LatencyPipe.scala
/XiangShan/src/main/scala/utils/LogUtils.scala
/XiangShan/src/main/scala/utils/LookupTree.scala
/XiangShan/src/main/scala/utils/MIMOQueue.scala
/XiangShan/src/main/scala/utils/Misc.scala
/XiangShan/src/main/scala/utils/ParallelMux.scala
/XiangShan/src/main/scala/utils/PerfCounterUtils.scala
/XiangShan/src/main/scala/utils/PipelineConnect.scala
/XiangShan/src/main/scala/utils/PriorityMuxDefault.scala
/XiangShan/src/main/scala/utils/PriorityMuxGen.scala
/XiangShan/src/main/scala/utils/RegMap.scala
/XiangShan/src/main/scala/utils/Replacement.scala
/XiangShan/src/main/scala/utils/ResetGen.scala
/XiangShan/src/main/scala/utils/SRAMTemplate.scala
/XiangShan/src/main/scala/utils/StopWatch.scala
/XiangShan/src/main/scala/utils/TLDump.scala
/XiangShan/src/main/scala/utils/TLIgnoreNode.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/PMA.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/XSDts.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FloatBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/IntegerBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
DecodeStage.scala
DecodeUnit.scala
FPDecoder.scala
Instructions.scala
StoreSet.scala
WaitTable.scala
isa/predecode/predecode.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Ls.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/IndexMapping.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/AluExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/JumpExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Wb.scala
/XiangShan/src/main/scala/xiangshan/backend/ftq/Ftq.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Fence.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Jump.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Multiplier.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Radix2Divider.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/SRT4Divider.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FDivSqrt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FMA.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToInt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPUSubModule.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/IntToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/util/CSA.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/util/CSRConst.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/BypassNetwork.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/DataArray.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/PayloadArray.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/SelectPolicy.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/StatusArray.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/WakeupQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/BusyTable.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/FreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/RenameTable.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/AMOALU.scala
/XiangShan/src/main/scala/xiangshan/cache/AtomicsReplayUnit.scala
/XiangShan/src/main/scala/xiangshan/cache/DCache.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/ICache.scala
/XiangShan/src/main/scala/xiangshan/cache/ICacheMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/InstrUncache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1Cache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/LoadPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MainPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/Mem.scala
/XiangShan/src/main/scala/xiangshan/cache/MissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/Probe.scala
/XiangShan/src/main/scala/xiangshan/cache/StoreReplayUnit.scala
/XiangShan/src/main/scala/xiangshan/cache/TLB.scala
/XiangShan/src/main/scala/xiangshan/cache/Uncache.scala
/XiangShan/src/main/scala/xiangshan/cache/WritebackQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/BestOffsetPrefetch.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L1plusPrefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L2Prefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/Prefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/StreamPrefetch.scala
/XiangShan/src/main/scala/xiangshan/frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/frontend/Btb.scala
/XiangShan/src/main/scala/xiangshan/frontend/FakeICache.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopBuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopPredictor.scala
/XiangShan/src/main/scala/xiangshan/frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/frontend/jbtac.scala
/XiangShan/src/main/scala/xiangshan/frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/mem/MaskedDataModule.scala
/XiangShan/src/main/scala/xiangshan/mem/MemUtils.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LSQWrapper.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueueData.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueueData.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/AtomicsUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/FakeSbuffer.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/main/scala/xstransforms/PrintModuleName.scala
/XiangShan/src/main/scala/xstransforms/ShowPrintTransform.scala
/XiangShan/src/test/csrc/common/axi4.cpp
/XiangShan/src/test/csrc/common/axi4.h
/XiangShan/src/test/csrc/common/common.cpp
/XiangShan/src/test/csrc/common/common.h
/XiangShan/src/test/csrc/common/compress.cpp
/XiangShan/src/test/csrc/common/compress.h
/XiangShan/src/test/csrc/common/device.cpp
/XiangShan/src/test/csrc/common/device.h
/XiangShan/src/test/csrc/common/flash.cpp
/XiangShan/src/test/csrc/common/flash.h
/XiangShan/src/test/csrc/common/keyboard.cpp
/XiangShan/src/test/csrc/common/macro.h
/XiangShan/src/test/csrc/common/ram.cpp
/XiangShan/src/test/csrc/common/ram.h
/XiangShan/src/test/csrc/common/sdcard.cpp
/XiangShan/src/test/csrc/common/sdcard.h
/XiangShan/src/test/csrc/common/uart.cpp
/XiangShan/src/test/csrc/common/vga.cpp
/XiangShan/src/test/csrc/difftest/difftest.cpp
/XiangShan/src/test/csrc/difftest/difftest.h
/XiangShan/src/test/csrc/difftest/goldenmem.cpp
/XiangShan/src/test/csrc/difftest/goldenmem.h
/XiangShan/src/test/csrc/difftest/interface.cpp
/XiangShan/src/test/csrc/difftest/interface.h
/XiangShan/src/test/csrc/difftest/nemuproxy.cpp
/XiangShan/src/test/csrc/difftest/nemuproxy.h
/XiangShan/src/test/csrc/difftest/ref.cpp
/XiangShan/src/test/csrc/difftest/ref.h
/XiangShan/src/test/csrc/vcs/main.cpp
/XiangShan/src/test/csrc/verilator/emu.cpp
/XiangShan/src/test/csrc/verilator/emu.h
/XiangShan/src/test/csrc/verilator/main.cpp
/XiangShan/src/test/csrc/verilator/snapshot.cpp
/XiangShan/src/test/csrc/verilator/snapshot.h
/XiangShan/src/test/scala/cache/CacheTest.scala
/XiangShan/src/test/scala/cache/L1DTest/CoreAgent.scala
/XiangShan/src/test/scala/cache/L1DTest/CoreTransatcion.scala
/XiangShan/src/test/scala/cache/L1DTest/L1DTest.scala
/XiangShan/src/test/scala/cache/L1plusCacheTest.scala
/XiangShan/src/test/scala/cache/L2CacheNonInclusiveGetTest.scala
/XiangShan/src/test/scala/cache/L2CacheTest.scala
/XiangShan/src/test/scala/cache/ReplaceTest.scala
/XiangShan/src/test/scala/cache/TLCTest/BigIntUtil.scala
/XiangShan/src/test/scala/cache/TLCTest/FixedBlockFuzzer.scala
/XiangShan/src/test/scala/cache/TLCTest/TLCAgent.scala
/XiangShan/src/test/scala/cache/TLCTest/TLCTest.scala
/XiangShan/src/test/scala/cache/TLCTest/TLCTransaction.scala
/XiangShan/src/test/scala/cache/TLCTest/TLMasterMMIO.scala
/XiangShan/src/test/scala/cache/TLCTest/TLSlaveMMIO.scala
/XiangShan/src/test/scala/cache/TLCTest/TLULAgent.scala
/XiangShan/src/test/scala/cache/TLCTest/TLULMMIO.scala
/XiangShan/src/test/scala/cache/UnalignedGetTest.scala
/XiangShan/src/test/scala/top/SimMMIO.scala
/XiangShan/src/test/scala/top/SimTop.scala
/XiangShan/src/test/scala/xiangshan/testutils/AddSinks.scala
/XiangShan/src/test/scala/xiangshan/testutils/PartialDecoupledDriver.scala
/XiangShan/src/test/scala/xiangshan/testutils/TestCaseGenerator.scala
/XiangShan/src/test/testcase/Makefile
/XiangShan/src/test/testcase/tests/double-loop.c
/XiangShan/src/test/testcase/tests/nested-loop.c
/XiangShan/src/test/vsrc/common/assert.v
/XiangShan/src/test/vsrc/common/difftest.v
/XiangShan/src/test/vsrc/common/ram.v
/XiangShan/src/test/vsrc/common/ref.v
/XiangShan/src/test/vsrc/vcs/top.v
/XiangShan/tools/readmemh/Makefile
/XiangShan/tools/readmemh/gen-treadle-readmemh.c
/XiangShan/tools/readmemh/groupby-4byte.c
/XiangShan/tools/readmemh/split-readmemh.c
/XiangShan/vcs.mk
/XiangShan/verilator.mk
de169c6711-May-2021 William Wang <[email protected]>

backend,mem: add Store Sets memory dependence predictor (#796)

* LoadQueue: send stFtqIdx via rollback request

* It will make it possible for setore set to update its SSIT

* StoreSet: setup st

backend,mem: add Store Sets memory dependence predictor (#796)

* LoadQueue: send stFtqIdx via rollback request

* It will make it possible for setore set to update its SSIT

* StoreSet: setup store set update req

* StoreSet: add store set identifier table (SSIT)

* StoreSet: add last fetched store table (LFST)

* StoreSet: put SSIT into decode stage

* StoreSet: put LFST into dispatch1

* Future work: optimize timing

* RS: store rs now supports delayed issue

* StoreSet: add perf counter

* StoreSet: fix SSIT update logic

* StoreSet: delay LFST update input for 1 cycle

* StoreSet: fix LFST update logic

* StoreSet: fix LFST raddr width

* StoreSet: do not force store in ss issue in order

Classic store set requires store in the same store set issue in seq.
However, in current micro-architecture, such restrict will lead to
severe perf lost. We choose to disable it until we find another way
to fix it.

* StoreSet: support ooo store in the same store set

* StoreSet: fix store set merge logic

* StoreSet: check earlier store when read LFST

* If store-load pair is in the same dispatch bundle, loadWaitBit should
also be set for load

* StoreSet: increase default SSIT flush period

* StoreSet: fix LFST read logic

* Fix commit c0e541d14

* StoreSet: add StoreSetEnable parameter

* RSFeedback: add source type

* StoreQueue: split store addr and store data

* StoreQueue: update ls forward logic

* Now it supports splited addr and data

* Chore: force assign name for load/store unit

* RS: add rs'support for store a-d split

* StoreQueue: fix stlf logic

* StoreQueue: fix addr wb sq update logic

* AtomicsUnit: support splited a/d

* Parameters: disable store set by default

* WaitTable: wait table will not cause store delay

* WaitTable: recover default reset period to 2^17

* Fix dev-stad merge conflict

* StoreSet: enable storeset

* RS: disable store rs delay logic

CI perf shows that current delay logic will cause perf loss. Disable
unnecessary delay logic will help.

To be more specific, `io.readyVec` caused the problem. It will be
updated in future commits.

* RS: opt select logic with load delay (ldWait)

* StoreSet: disable 2-bit lwt

Co-authored-by: ZhangZifei <[email protected]>

show more ...


/XiangShan/.github/workflows/emu.yml
/XiangShan/.gitignore
/XiangShan/Makefile
/XiangShan/scripts/xiangshan.py
/XiangShan/src/main/scala/system/SoC.scala
/XiangShan/src/main/scala/top/ArgParser.scala
/XiangShan/src/main/scala/top/Configs.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/IntegerBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
DecodeStage.scala
StoreSet.scala
WaitTable.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Ls.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/AluExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Wb.scala
/XiangShan/src/main/scala/xiangshan/backend/ftq/Ftq.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Jump.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/SRT4Divider.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/AtomicsUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/test/csrc/vcs/main.cpp
/XiangShan/src/test/scala/top/SimTop.scala
/XiangShan/src/test/scala/xiangshan/testutils/TestCaseGenerator.scala
/XiangShan/src/test/vsrc/common/assert.v
/XiangShan/src/test/vsrc/common/difftest.v
/XiangShan/src/test/vsrc/common/ram.v
/XiangShan/src/test/vsrc/common/ref.v
/XiangShan/src/test/vsrc/vcs/top.v
/XiangShan/vcs.mk
/XiangShan/verilator.mk
20e31bd101-May-2021 Yinan Xu <[email protected]>

bundle,uop: use Vec for lsrc, psrc, srcState and srcType (#797)

This commit uses Vec for lsrc, psrc, srcState and srcType in MicroOp bundle.
This makes uop easier to access.


/XiangShan/Makefile
/XiangShan/Makefile.emu
/XiangShan/block-inclusivecache-sifive
/XiangShan/src/main/scala/system/SoC.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/utils/PerfCounterUtils.scala
/XiangShan/src/main/scala/utils/SRAMTemplate.scala
/XiangShan/src/main/scala/utils/TLIgnoreNode.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/FloatBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/IntegerBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
DecodeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Ls.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Fence.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/PTW.scala
/XiangShan/src/main/scala/xiangshan/mem/MemUtils.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LSQWrapper.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueueData.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/AtomicsUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/main/scala/xstransforms/PrintModuleName.scala
/XiangShan/src/test/csrc/common/common.cpp
/XiangShan/src/test/csrc/common/ram.cpp
/XiangShan/src/test/csrc/common/ram.h
/XiangShan/src/test/csrc/difftest/difftest.cpp
/XiangShan/src/test/csrc/difftest/difftest.h
/XiangShan/src/test/csrc/difftest/nemuproxy.cpp
/XiangShan/src/test/csrc/difftest/ref.cpp
/XiangShan/src/test/csrc/difftest/ref.h
/XiangShan/src/test/csrc/verilator/emu.cpp
/XiangShan/src/test/csrc/verilator/emu.h
/XiangShan/src/test/csrc/verilator/main.cpp
/XiangShan/src/test/vsrc/ref.v
2225d46e19-Apr-2021 Jiawei Lin <[email protected]>

Refactor parameters, SimTop and difftest (#753)

* difftest: use DPI-C to refactor difftest

In this commit, difftest is refactored with DPI-C calls.
There're a few reasons:
(1) From Verilator's

Refactor parameters, SimTop and difftest (#753)

* difftest: use DPI-C to refactor difftest

In this commit, difftest is refactored with DPI-C calls.
There're a few reasons:
(1) From Verilator's manual, DPI-C calls should be more efficient than accessing from dut_ptr.
(2) DPI-C is cross-platform (Verilator, VCS, ...)
(3) difftest APIs are splited from emu.cpp to possibly support more backend platforms
(NEMU, Spike, ...)

The performance at this commit is quite slower than the original emu.
Performance issues will be fixed later.

* [WIP] SimTop: try to use 'XSTop' as soc

* CircularQueuePtr: ues F-bounded polymorphis instead implict helper

* Refactor parameters & Clean up code

* difftest: support basic difftest

* Support diffetst in new sim top

* Difftest; convert recode fmt to ieee754 when comparing fp regs

* Difftest: pass sign-ext pc to dpic functions && fix exception pc

* Debug: add int/exc inst wb to debug queue

* Difftest: pass sign-ext pc to dpic functions && fix exception pc

* Difftest: fix naive commit num limit

Co-authored-by: Yinan Xu <[email protected]>
Co-authored-by: William Wang <[email protected]>

show more ...


/XiangShan/.github/workflows/emu.yml
/XiangShan/Makefile
/XiangShan/Makefile.emu
/XiangShan/berkeley-hardfloat
/XiangShan/block-inclusivecache-sifive
/XiangShan/build.sc
/XiangShan/scripts/vlsi_mem_gen
/XiangShan/src/main/scala/device/AXI4Flash.scala
/XiangShan/src/main/scala/device/AXI4Plic.scala
/XiangShan/src/main/scala/device/AXI4RAM.scala
/XiangShan/src/main/scala/device/AXI4SlaveModule.scala
/XiangShan/src/main/scala/device/AXI4UART.scala
/XiangShan/src/main/scala/device/TLTimer.scala
/XiangShan/src/main/scala/difftest/Difftest.scala
/XiangShan/src/main/scala/system/SoC.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/utils/CircularQueuePtr.scala
/XiangShan/src/main/scala/utils/DataDontCareNode.scala
/XiangShan/src/main/scala/utils/DebugIdentityNode.scala
/XiangShan/src/main/scala/utils/LogUtils.scala
/XiangShan/src/main/scala/utils/PerfCounterUtils.scala
/XiangShan/src/main/scala/utils/Replacement.scala
/XiangShan/src/main/scala/utils/ResetGen.scala
/XiangShan/src/main/scala/utils/TLDump.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/PMA.scala
/XiangShan/src/main/scala/xiangshan/Parameters.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FloatBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/IntegerBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
DecodeStage.scala
DecodeUnit.scala
FPDecoder.scala
WaitTable.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Ls.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/IndexMapping.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/AluExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Exu.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmacExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/FmiscExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/JumpExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/MulDivExeUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/exu/Wb.scala
/XiangShan/src/main/scala/xiangshan/backend/ftq/Ftq.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Alu.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Fence.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Jump.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Multiplier.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Radix2Divider.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/SRT4Divider.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FDivSqrt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FMA.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPToInt.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FPUSubModule.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/fpu/IntToFP.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/util/CSRConst.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/BusyTable.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/FreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/RenameTable.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/AtomicsReplayUnit.scala
/XiangShan/src/main/scala/xiangshan/cache/DCache.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/ICache.scala
/XiangShan/src/main/scala/xiangshan/cache/ICacheMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/InstrUncache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1Cache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/LoadPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MainPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/Probe.scala
/XiangShan/src/main/scala/xiangshan/cache/StoreReplayUnit.scala
/XiangShan/src/main/scala/xiangshan/cache/TLB.scala
/XiangShan/src/main/scala/xiangshan/cache/Uncache.scala
/XiangShan/src/main/scala/xiangshan/cache/WritebackQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/BestOffsetPrefetch.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L1plusPrefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L2Prefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/Prefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/StreamPrefetch.scala
/XiangShan/src/main/scala/xiangshan/frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/frontend/Btb.scala
/XiangShan/src/main/scala/xiangshan/frontend/FakeICache.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopPredictor.scala
/XiangShan/src/main/scala/xiangshan/frontend/PreDecode.scala
/XiangShan/src/main/scala/xiangshan/frontend/RAS.scala
/XiangShan/src/main/scala/xiangshan/frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/frontend/jbtac.scala
/XiangShan/src/main/scala/xiangshan/frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/mem/MaskedDataModule.scala
/XiangShan/src/main/scala/xiangshan/mem/MemUtils.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LSQWrapper.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueueData.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueueData.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/AtomicsUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/FakeSbuffer.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
/XiangShan/src/main/scala/xiangshan/package.scala
/XiangShan/src/test/csrc/common/axi4.cpp
/XiangShan/src/test/csrc/common/axi4.h
/XiangShan/src/test/csrc/common/common.cpp
/XiangShan/src/test/csrc/common/common.h
/XiangShan/src/test/csrc/common/compress.cpp
/XiangShan/src/test/csrc/common/compress.h
/XiangShan/src/test/csrc/common/device.cpp
/XiangShan/src/test/csrc/common/device.h
/XiangShan/src/test/csrc/common/flash.cpp
/XiangShan/src/test/csrc/common/flash.h
/XiangShan/src/test/csrc/common/keyboard.cpp
/XiangShan/src/test/csrc/common/macro.h
/XiangShan/src/test/csrc/common/ram.cpp
/XiangShan/src/test/csrc/common/ram.h
/XiangShan/src/test/csrc/common/sdcard.cpp
/XiangShan/src/test/csrc/common/sdcard.h
/XiangShan/src/test/csrc/common/uart.cpp
/XiangShan/src/test/csrc/common/vga.cpp
/XiangShan/src/test/csrc/difftest/difftest.cpp
/XiangShan/src/test/csrc/difftest/difftest.h
/XiangShan/src/test/csrc/difftest/goldenmem.cpp
/XiangShan/src/test/csrc/difftest/goldenmem.h
/XiangShan/src/test/csrc/difftest/interface.cpp
/XiangShan/src/test/csrc/difftest/interface.h
/XiangShan/src/test/csrc/difftest/nemuproxy.cpp
/XiangShan/src/test/csrc/difftest/nemuproxy.h
/XiangShan/src/test/csrc/verilator/emu.cpp
/XiangShan/src/test/csrc/verilator/emu.h
/XiangShan/src/test/csrc/verilator/main.cpp
/XiangShan/src/test/csrc/verilator/snapshot.cpp
/XiangShan/src/test/csrc/verilator/snapshot.h
/XiangShan/src/test/scala/cache/L1DTest/L1DTest.scala
/XiangShan/src/test/scala/cache/L1plusCacheTest.scala
/XiangShan/src/test/scala/cache/L2CacheNonInclusiveGetTest.scala
/XiangShan/src/test/scala/cache/L2CacheTest.scala
/XiangShan/src/test/scala/cache/TLCTest/TLCTest.scala
/XiangShan/src/test/scala/cache/TLCTest/TLMasterMMIO.scala
/XiangShan/src/test/scala/cache/TLCTest/TLSlaveMMIO.scala
/XiangShan/src/test/scala/cache/TLCTest/TLULMMIO.scala
/XiangShan/src/test/scala/cache/UnalignedGetTest.scala
/XiangShan/src/test/scala/top/SimMMIO.scala
/XiangShan/src/test/scala/top/SimTop.scala
/XiangShan/src/test/vsrc/difftest.v
408a32b725-Mar-2021 Allen <[email protected]>

Refactor XSPerf, now we have three XSPerf Functions.
XSPerfAccumulate: sum up performance values.
XSPerfHistogram: count the occurrence of performance values, split them
into bins, so that we can est

Refactor XSPerf, now we have three XSPerf Functions.
XSPerfAccumulate: sum up performance values.
XSPerfHistogram: count the occurrence of performance values, split them
into bins, so that we can estimate their distribution.
XSPerfMax: get max of performance values.

show more ...


/XiangShan/.github/workflows/emu.yml
/XiangShan/Makefile
/XiangShan/src/main/scala/device/TLTimer.scala
/XiangShan/src/main/scala/system/SoC.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/utils/LogUtils.scala
/XiangShan/src/main/scala/utils/PerfCounterUtils.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/PMA.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/FloatBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/IntegerBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
DecodeStage.scala
WaitTable.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Ls.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/ftq/Ftq.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Jump.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/BusyTable.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/FreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/DCache.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/ICache.scala
/XiangShan/src/main/scala/xiangshan/cache/ICacheMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/LoadPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MainPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/Probe.scala
/XiangShan/src/main/scala/xiangshan/cache/StoreReplayUnit.scala
/XiangShan/src/main/scala/xiangshan/cache/TLB.scala
/XiangShan/src/main/scala/xiangshan/cache/WritebackQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L1plusPrefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L2Prefetcher.scala
/XiangShan/src/main/scala/xiangshan/frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/frontend/Btb.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopPredictor.scala
/XiangShan/src/main/scala/xiangshan/frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/AtomicsUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
/XiangShan/src/test/csrc/emu.cpp
/XiangShan/src/test/csrc/emu.h
/XiangShan/src/test/scala/top/XSSim.scala
aac4464e11-Mar-2021 Yinan Xu <[email protected]>

Add support for a simple version of move elimination (#682)

In this commit, we add support for a simpler version of move elimination.

The original instruction sequences are:
move r1, r0
add r2,

Add support for a simple version of move elimination (#682)

In this commit, we add support for a simpler version of move elimination.

The original instruction sequences are:
move r1, r0
add r2, r1, r3

The optimized sequnces are:
move pr1, pr0
add pr2, pr0, pr3 # instead of add pr2, pr1, pr3

In this way, add can be issued once r0 is ready and move seems to be eliminated.

show more ...

e6e4a58d11-Mar-2021 Yinan Xu <[email protected]>

WaitTable: use 2-bit counter and optimize XORFold logic (#681)

41a2831810-Mar-2021 Yinan Xu <[email protected]>

Add performance counters for load violation predictor (#679)

d479a3a808-Mar-2021 Yinan Xu <[email protected]>

Add more performance counters (#662)


/XiangShan/Makefile
/XiangShan/src/main/scala/system/SoC.scala
/XiangShan/src/main/scala/top/Top.scala
/XiangShan/src/main/scala/utils/LogUtils.scala
/XiangShan/src/main/scala/utils/Replacement.scala
/XiangShan/src/main/scala/xiangshan/Bundle.scala
/XiangShan/src/main/scala/xiangshan/XSCore.scala
/XiangShan/src/main/scala/xiangshan/backend/CtrlBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/FloatBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/IntegerBlock.scala
/XiangShan/src/main/scala/xiangshan/backend/MemBlock.scala
DecodeStage.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch1.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Fp.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Int.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/Dispatch2Ls.scala
/XiangShan/src/main/scala/xiangshan/backend/dispatch/DispatchQueue.scala
/XiangShan/src/main/scala/xiangshan/backend/ftq/Ftq.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/CSR.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/Jump.scala
/XiangShan/src/main/scala/xiangshan/backend/fu/util/CSRConst.scala
/XiangShan/src/main/scala/xiangshan/backend/issue/ReservationStation.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/BusyTable.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/FreeList.scala
/XiangShan/src/main/scala/xiangshan/backend/rename/Rename.scala
/XiangShan/src/main/scala/xiangshan/backend/roq/Roq.scala
/XiangShan/src/main/scala/xiangshan/cache/DCache.scala
/XiangShan/src/main/scala/xiangshan/cache/DCacheWrapper.scala
/XiangShan/src/main/scala/xiangshan/cache/ICache.scala
/XiangShan/src/main/scala/xiangshan/cache/ICacheMissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/InstrUncache.scala
/XiangShan/src/main/scala/xiangshan/cache/L1plusCache.scala
/XiangShan/src/main/scala/xiangshan/cache/LoadPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MainPipe.scala
/XiangShan/src/main/scala/xiangshan/cache/MissQueue.scala
/XiangShan/src/main/scala/xiangshan/cache/PTW.scala
/XiangShan/src/main/scala/xiangshan/cache/TLB.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L1plusPrefetcher.scala
/XiangShan/src/main/scala/xiangshan/cache/prefetch/L2Prefetcher.scala
/XiangShan/src/main/scala/xiangshan/frontend/BPU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Bim.scala
/XiangShan/src/main/scala/xiangshan/frontend/Btb.scala
/XiangShan/src/main/scala/xiangshan/frontend/Frontend.scala
/XiangShan/src/main/scala/xiangshan/frontend/IFU.scala
/XiangShan/src/main/scala/xiangshan/frontend/Ibuffer.scala
/XiangShan/src/main/scala/xiangshan/frontend/LoopPredictor.scala
/XiangShan/src/main/scala/xiangshan/frontend/SC.scala
/XiangShan/src/main/scala/xiangshan/frontend/Tage.scala
/XiangShan/src/main/scala/xiangshan/frontend/uBTB.scala
/XiangShan/src/main/scala/xiangshan/mem/MemUtils.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/AtomicsUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
/XiangShan/src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
/XiangShan/src/test/csrc/emu.h
/XiangShan/src/test/csrc/main.cpp
/XiangShan/src/test/csrc/ram.cpp
/XiangShan/src/test/scala/top/SimMMIO.scala
/XiangShan/src/test/scala/xiangshan/memend/SbufferTest.scala

1...<<11121314151617181920>>...23