History log of /XiangShan/src/main/scala/xiangshan/backend/Backend.scala (Results 26 – 50 of 358)
Revision Date Author Comments
# bd3e32c1 15-Oct-2024 sinsanction <[email protected]>

fix(Backend, Mem): add `isFromLoadUnit` to avoid other units polluting RegCache (#3731)


# e43bb916 20-Sep-2024 Xuan Hu <[email protected]>

feat(VecLoad): add VecLoadExcp module to handle merging old/new data

* When NF not 0, the register indices are arranged group by group. But in exception handle progress, all registers needed to merg

feat(VecLoad): add VecLoadExcp module to handle merging old/new data

* When NF not 0, the register indices are arranged group by group. But in exception handle progress, all registers needed to merge will be handled first, and then the registers needed to move will be handled later.
* The need merge vdIdx can be until 8, so 4 bits reg is needed.
* If the instruction is indexed, the eew of vd is sew from vtype. Otherwise, the eew of vd is encoded in instruction.
* Use ivemulNoLessThanM1 and dvemulNoLessThanM1 to produce vemul_i_d to avoid either demul or iemul is less than M1.
* For whole register load, need handle NF(nf + 1) dest regs.
* Use data EMUL to calculate number of dest reg.
* GetE8OffsetInVreg will return the n-th 8bit which idx mapped to.
* Since xs will flush pipe, when vstart is not 0 and execute vector mem inst, the value of vstart in CSR is the
first element of this vector instruction. When exception occurs, the vstart in writeback bundle is the new one,
So writebacked vstart should never be used as the beginning of vector mem operation.
* Non-seg indexed load use non-sequential vd.
* When "index emul" / "data emul" equals 2,
the old vd is located in vuopidx 0, 2, 4, 6,
the new vd is located in vuopidx 1, 3, 5, 7.
* Make rename's input not ready until VecExcpMod not busy.
* Delay trap passed to difftest until VecExcpMod not busy.
* Rab commit to VecExcpMod as it commit to Rat, and select real load reg maps in VecExcpMod.
* Use isDstMask to distinguish vlm and other vle.
* When isWhole, vd regs are sequential.

show more ...


# 91970642 26-Sep-2024 Tang Haojin <[email protected]>

fix(Backend): connect missing `cpuHalted` signal (#3650)


# d88d4328 25-Sep-2024 Ziyue Zhang <[email protected]>

fix(vlwakeup): fix vl write back wakeup from intExu or vfExu (#3643)


# 44f2941b 24-Sep-2024 Jiru Sun <[email protected]>

refactor(HPM): move HPMs from utils to utility repo (#3631)

Because HPMs will be used in Coupled L2 as well, delete
`PerfCounterUtils.scala` in Xiangshan and create
`HardwarePerfMonitor.scala` in

refactor(HPM): move HPMs from utils to utility repo (#3631)

Because HPMs will be used in Coupled L2 as well, delete
`PerfCounterUtils.scala` in Xiangshan and create
`HardwarePerfMonitor.scala` in Utility.
See also [Pull Request in
CoupledL2](https://github.com/OpenXiangShan/CoupledL2/pull/251#discussion_r1770738535).

show more ...


# ad415ae0 21-Sep-2024 Xiaokun-Pei <[email protected]>

feat(trap): support m/htinst for specific G-stage translation (#3604)

According to RISC-V priv spec, mtinst/htinst could be always written
zero on trap into M/HS-mode, except for Guest-Page-Fault t

feat(trap): support m/htinst for specific G-stage translation (#3604)

According to RISC-V priv spec, mtinst/htinst could be always written
zero on trap into M/HS-mode, except for Guest-Page-Fault traps that meet
both of the following conditions:
- the trap is caused by a G-stage translation which supports VS-stage
translation
- a nonzero value is written to mtval2/htval

"isForVSnonLeafPTE" is used only in exceptional circumstances that gpf
happens in the G-stage translation which supports VS-stage translation,
such as searching the non-leaf pte of VS-stage.

This patch adds support for writing proper value to mtinst/htinst when
specific trap occurs. And bump the nemu.

show more ...


# 233f2ad0 20-Sep-2024 zhanglinjuan <[email protected]>

feat: implement a new version of reset tree (#3546)

This commit uses `LazyRawModuleImp` to implement L2Top, MemBlock,
Backend and frontend so that when `--reset-gen` option is enabled, reset
input

feat: implement a new version of reset tree (#3546)

This commit uses `LazyRawModuleImp` to implement L2Top, MemBlock,
Backend and frontend so that when `--reset-gen` option is enabled, reset
input of these modules will go through `ResetGen` and then drives the
reset of the registers inside the module.

<img
src="https://github.com/user-attachments/assets/1f544afe-4644-4604-ba6f-d14d31909f78"
width="50%">

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

show more ...


# db6cfb5a 19-Sep-2024 Haoyuan Feng <[email protected]>

fix(exception): check high address bits of lsu (#3596)

In previous implementation, we simply truncated the higher bits of jump
target or load & store address, which made it impossible to raise
exc

fix(exception): check high address bits of lsu (#3596)

In previous implementation, we simply truncated the higher bits of jump
target or load & store address, which made it impossible to raise
exceptions in such cases.

Commit
https://github.com/OpenXiangShan/XiangShan/commit/c1b28b66879239a5b3a44741376f3b002e8ac834
has already fixed high address bits checking of jump target. This commit
fixes lsu part, checking full address in tlb and passing full address
directly to csr.

show more ...


# b4d41c12 10-Sep-2024 xiaofeibao <[email protected]>

timing(LsqEnqCtrl): fix timing of lqAllocNumber and sqAllocNumber


# 63d67ef3 14-Sep-2024 Tang Haojin <[email protected]>

build: enable always-basic-diff for make verilog (#3574)

This commit turns on basic difftest features again, no matter it's for
simulation or physical design. This commit aims at allowing designs f

build: enable always-basic-diff for make verilog (#3574)

This commit turns on basic difftest features again, no matter it's for
simulation or physical design. This commit aims at allowing designs for
physical design to be verified.

show more ...


# c1b28b66 09-Sep-2024 Tang Haojin <[email protected]>

fix(exception): check high address bits of jump target (#3003)

This commit contains high address bits checking of jump target. In
previous implementation, we simply truncated the higher bits of jump

fix(exception): check high address bits of jump target (#3003)

This commit contains high address bits checking of jump target. In
previous implementation, we simply truncated the higher bits of jump
target address, which made it impossible to raise exceptions in such
cases.

To resolve this problem, we detect the invalid jump target in
jump/branch/CSR and, this information to frontend and store the complete
invalid target in a single register in backend. The frontend will then
raise an exception to backend and backend will also use the invalid
target in the register to write xtval and mepc.

---------

Co-authored-by: Muzi <[email protected]>
Co-authored-by: ngc7331 <[email protected]>

show more ...


# 42b6cdf9 05-Sep-2024 sinsanction <[email protected]>

timing(Backend): add OG2 stage for vector mem (#3482)


# 92c61038 16-Aug-2024 Xuan Hu <[email protected]>

Frontend,Backend: add xxtvala support

* utils
* Add checkInputWidth function in NamedUInt to check if the UInt arg passed in has the same width as it defined.
* Frontend
* Pass the unexpanded in

Frontend,Backend: add xxtvala support

* utils
* Add checkInputWidth function in NamedUInt to check if the UInt arg passed in has the same width as it defined.
* Frontend
* Pass the unexpanded instruciton to IBuffer if the C extension 16 bits instruction is illegal.
* No need to use bypass illBuf, since the origin 16 bits instruction will be passed in the ctrlflow bundle.
* IBuffer
* Merge exceptionType and crossPageIPFFix into 3bit field, which type is IBufferExceptionType.
* IBufferExceptionType can hold illegal instruction exception.
* Backend
* CSROpType.ro is removed, since we can use rs1 and rd passed in imm field to distinguish CSRR and CSRW in CSR module.
* Create TrapInstMod to store the trap instruction and handle its update.

show more ...


# fa16cf81 15-Aug-2024 lewislzh <[email protected]>

Backend: support Shvstvala and Sstvala extension


# ada4760f 19-Aug-2024 Xuan Hu <[email protected]>

XSCore,Backend,MemBlock: let Top-to-Backend bundles bypass MemBlock (#3398)

* All Top-to-Backend bundles are in class TopToBackendBundle.
* Including hartId, externalInterrupt, msiInfo, clintTime

XSCore,Backend,MemBlock: let Top-to-Backend bundles bypass MemBlock (#3398)

* All Top-to-Backend bundles are in class TopToBackendBundle.
* Including hartId, externalInterrupt, msiInfo, clintTime
* All Backend-to-Top bundles are in class BackendToTopBundle.
* Only cpuHalted included
* Use := instead of <> for non-Bidirectional bundles in XSCore.

show more ...


# f55cdaab 05-Aug-2024 zhanglinjuan <[email protected]>

L2Top, MemBlock, Backend: reconstruct reset tree (#3333)

Modules in XSTile are reset in the order of L2, MemBlock, Backend and
Frontend.

<img
src="https://github.com/user-attachments/assets/ae9

L2Top, MemBlock, Backend: reconstruct reset tree (#3333)

Modules in XSTile are reset in the order of L2, MemBlock, Backend and
Frontend.

<img
src="https://github.com/user-attachments/assets/ae927496-9d4d-45fc-a924-78be181d4fa7"
width="40%">

show more ...


# fe37d702 22-Jul-2024 sinsanction <[email protected]>

Backend: Check that instruction is load when load exus write back to the reg cache. Some atomic instructions also write back through the load exus


# 102ba843 10-Jul-2024 sinsanction <[email protected]>

BypassNetwork: add source data from RegCache


# f8b278aa 05-Jul-2024 sinsanction <[email protected]>

Backend: add reg cache data writing back path


# 710b9efa 28-Jun-2024 sinsanction <[email protected]>

DataPath: add RegCache


# 75487d02 24-Jul-2024 xiaofeibao <[email protected]>

CSR: remove useless distributedUpdate


# 54c6d89d 24-Jul-2024 xiaofeibao-xjtu <[email protected]>

Redirect fix timing (#3209)


# 5f705224 23-Jul-2024 xiaofeibao-xjtu <[email protected]>

Backend: pipe fromTop's clintTime and msiInfo for fix timing (#3262)


# be9ff987 19-Jul-2024 sinsanction <[email protected]>

Backend: optimize og0 cancel signals (#3235)

* use Vec[Bool] instead of UInt for og0Cancel
* only wakeup source Exus containing 0-latency function unit should send
og0Cancel


# 37080bd8 17-Jul-2024 sinsanction <[email protected]>

DataPath, BusyTable: remove unnecessary cancel signals (#3218)

* only non-load wakeup sources exu should send og0cancel
* og0cancel only works on the wakeup of 0 latency instructions


12345678910>>...15