Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
10fe9778
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
9 个月 前同步成功
通知
1183
Star
3914
Fork
526
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
XiangShan
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
10fe9778
编写于
7月 20, 2023
作者:
X
Xuan Hu
提交者:
bugGenerator
7月 22, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
backend: remove IssueQueueCancelBundle
上级
10434c39
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
16 addition
and
36 deletion
+16
-36
src/main/scala/xiangshan/backend/Backend.scala
src/main/scala/xiangshan/backend/Backend.scala
+2
-2
src/main/scala/xiangshan/backend/Bundles.scala
src/main/scala/xiangshan/backend/Bundles.scala
+0
-12
src/main/scala/xiangshan/backend/datapath/DataPath.scala
src/main/scala/xiangshan/backend/datapath/DataPath.scala
+10
-9
src/main/scala/xiangshan/backend/issue/IssueBlockParams.scala
...main/scala/xiangshan/backend/issue/IssueBlockParams.scala
+0
-4
src/main/scala/xiangshan/backend/issue/SchdBlockParams.scala
src/main/scala/xiangshan/backend/issue/SchdBlockParams.scala
+1
-5
src/main/scala/xiangshan/backend/issue/Scheduler.scala
src/main/scala/xiangshan/backend/issue/Scheduler.scala
+3
-4
未找到文件。
src/main/scala/xiangshan/backend/Backend.scala
浏览文件 @
10fe9778
...
@@ -125,8 +125,8 @@ class BackendImp(override val wrapper: Backend)(implicit p: Parameters) extends
...
@@ -125,8 +125,8 @@ class BackendImp(override val wrapper: Backend)(implicit p: Parameters) extends
wbDataPath
.
io
.
fromIntExu
.
flatten
.
filter
(
x
=>
x
.
bits
.
params
.
writeIntRf
)
wbDataPath
.
io
.
fromIntExu
.
flatten
.
filter
(
x
=>
x
.
bits
.
params
.
writeIntRf
)
private
val
vconfig
=
dataPath
.
io
.
vconfigReadPort
.
data
private
val
vconfig
=
dataPath
.
io
.
vconfigReadPort
.
data
private
val
og1CancelVec
:
Vec
[
Bool
]
=
VecInit
(
dataPath
.
io
.
toIQCancelVec
.
map
(
_
(
"OG1"
)))
private
val
og1CancelVec
:
Vec
[
Bool
]
=
dataPath
.
io
.
og1CancelVec
private
val
og0CancelVecFromDataPath
:
Vec
[
Bool
]
=
VecInit
(
dataPath
.
io
.
toIQCancelVec
.
map
(
_
(
"OG0"
)))
private
val
og0CancelVecFromDataPath
:
Vec
[
Bool
]
=
dataPath
.
io
.
og0CancelVec
private
val
og0CancelVecFromCancelNet
:
Vec
[
Bool
]
=
cancelNetwork
.
io
.
out
.
og0CancelVec
private
val
og0CancelVecFromCancelNet
:
Vec
[
Bool
]
=
cancelNetwork
.
io
.
out
.
og0CancelVec
private
val
og0CancelVec
:
Vec
[
Bool
]
=
VecInit
(
og0CancelVecFromDataPath
.
zip
(
og0CancelVecFromCancelNet
).
map
(
x
=>
x
.
_1
|
x
.
_2
))
private
val
og0CancelVec
:
Vec
[
Bool
]
=
VecInit
(
og0CancelVecFromDataPath
.
zip
(
og0CancelVecFromCancelNet
).
map
(
x
=>
x
.
_1
|
x
.
_2
))
dontTouch
(
og0CancelVecFromDataPath
)
dontTouch
(
og0CancelVecFromDataPath
)
...
...
src/main/scala/xiangshan/backend/Bundles.scala
浏览文件 @
10fe9778
...
@@ -270,18 +270,6 @@ object Bundles {
...
@@ -270,18 +270,6 @@ object Bundles {
}
}
}
}
/**
* This bundle is used to set srcState as NotReady.
* @param cancelSeq cancel stage seq
*/
class
IssueQueueCancelBundle
(
val
exuIdx
:
Int
,
cancelSeq
:
Seq
[
String
])
extends
Bundle
{
val
cancelVec
:
Vec
[
Bool
]
=
Vec
(
cancelSeq
.
size
,
Bool
())
def
apply
(
cancelStage
:
String
)
:
Bool
=
{
this
.
cancelVec
(
cancelSeq
.
indexOf
(
cancelStage
.
toUpperCase
))
}
}
class
VPUCtrlSignals
(
implicit
p
:
Parameters
)
extends
XSBundle
{
class
VPUCtrlSignals
(
implicit
p
:
Parameters
)
extends
XSBundle
{
// vtype
// vtype
val
vill
=
Bool
()
val
vill
=
Bool
()
...
...
src/main/scala/xiangshan/backend/datapath/DataPath.scala
浏览文件 @
10fe9778
...
@@ -159,13 +159,15 @@ class DataPathImp(override val wrapper: DataPath)(implicit p: Parameters, params
...
@@ -159,13 +159,15 @@ class DataPathImp(override val wrapper: DataPath)(implicit p: Parameters, params
private
val
fromExus
=
fromIntExus
++
fromVfExus
private
val
fromExus
=
fromIntExus
++
fromVfExus
private
val
fromFlattenIQ
:
Seq
[
DecoupledIO
[
IssueQueueIssueBundle
]]
=
fromIQ
.
flatten
private
val
toFlattenExu
:
Seq
[
DecoupledIO
[
ExuInput
]]
=
toExu
.
flatten
private
val
intWbBusyArbiter
=
Module
(
new
WbBusyArbiter
(
true
))
private
val
intWbBusyArbiter
=
Module
(
new
WbBusyArbiter
(
true
))
private
val
vfWbBusyArbiter
=
Module
(
new
WbBusyArbiter
(
false
))
private
val
vfWbBusyArbiter
=
Module
(
new
WbBusyArbiter
(
false
))
private
val
intRFReadArbiter
=
Module
(
new
RFReadArbiter
(
true
))
private
val
intRFReadArbiter
=
Module
(
new
RFReadArbiter
(
true
))
private
val
vfRFReadArbiter
=
Module
(
new
RFReadArbiter
(
false
))
private
val
vfRFReadArbiter
=
Module
(
new
RFReadArbiter
(
false
))
private
val
og0FailedVec
:
Vec
[
Bool
]
=
Wire
(
Vec
(
backendParams
.
numExu
,
Bool
()))
private
val
og1FailedVec
:
Vec
[
Bool
]
=
Wire
(
Vec
(
backendParams
.
numExu
,
Bool
()))
private
val
og0FailedVec2
:
MixedVec
[
Vec
[
Bool
]]
=
Wire
(
MixedVec
(
fromIQ
.
map
(
x
=>
Vec
(
x
.
size
,
Bool
()))))
private
val
og0FailedVec2
:
MixedVec
[
Vec
[
Bool
]]
=
Wire
(
MixedVec
(
fromIQ
.
map
(
x
=>
Vec
(
x
.
size
,
Bool
()))))
private
val
og1FailedVec2
:
MixedVec
[
Vec
[
Bool
]]
=
Wire
(
MixedVec
(
fromIQ
.
map
(
x
=>
Vec
(
x
.
size
,
Bool
()))))
private
val
og1FailedVec2
:
MixedVec
[
Vec
[
Bool
]]
=
Wire
(
MixedVec
(
fromIQ
.
map
(
x
=>
Vec
(
x
.
size
,
Bool
()))))
...
@@ -491,12 +493,9 @@ class DataPathImp(override val wrapper: DataPath)(implicit p: Parameters, params
...
@@ -491,12 +493,9 @@ class DataPathImp(override val wrapper: DataPath)(implicit p: Parameters, params
}
}
}
}
io
.
toIQCancelVec
.
zipWithIndex
.
foreach
{
case
(
cancelBundle
:
IssueQueueCancelBundle
,
i
)
=>
io
.
og0CancelVec
.
zip
(
io
.
og1CancelVec
).
zipWithIndex
.
foreach
{
case
((
og0Cancel
,
og1Cancel
),
i
)
=>
og0FailedVec
(
i
)
:=
(
fromIQ
.
flatten
.
find
(
_
.
bits
.
exuIdx
==
cancelBundle
.
exuIdx
).
get
match
{
case
x
=>
x
.
valid
&&
!
x
.
fire
})
og0Cancel
:=
fromFlattenIQ
(
i
).
valid
&&
!
fromFlattenIQ
(
i
).
fire
og1FailedVec
(
i
)
:=
(
toExu
.
flatten
.
find
(
_
.
bits
.
exuIdx
==
cancelBundle
.
exuIdx
).
get
match
{
case
x
=>
x
.
valid
&&
!
x
.
fire
})
og1Cancel
:=
toFlattenExu
(
i
).
valid
&&
!
toFlattenExu
(
i
).
fire
cancelBundle
(
"OG0"
)
:=
og0FailedVec
(
i
)
cancelBundle
(
"OG1"
)
:=
og1FailedVec
(
i
)
cancelBundle
(
"IS"
)
:=
false
.
B
}
}
for
(
i
<-
toExu
.
indices
)
{
for
(
i
<-
toExu
.
indices
)
{
...
@@ -595,7 +594,9 @@ class DataPathIO()(implicit p: Parameters, params: BackendParams) extends XSBund
...
@@ -595,7 +594,9 @@ class DataPathIO()(implicit p: Parameters, params: BackendParams) extends XSBund
val
toVfIQ
=
MixedVec
(
vfSchdParams
.
issueBlockParams
.
map
(
_
.
genOGRespBundle
))
val
toVfIQ
=
MixedVec
(
vfSchdParams
.
issueBlockParams
.
map
(
_
.
genOGRespBundle
))
val
toIQCancelVec
=
Output
(
MixedVec
(
exuParams
.
map
(
x
=>
new
IssueQueueCancelBundle
(
x
.
exuIdx
,
cancelStages
))))
val
og0CancelVec
=
Output
(
ExuVec
(
backendParams
.
numExu
))
val
og1CancelVec
=
Output
(
ExuVec
(
backendParams
.
numExu
))
val
toIntExu
:
MixedVec
[
MixedVec
[
DecoupledIO
[
ExuInput
]]]
=
intSchdParams
.
genExuInputBundle
val
toIntExu
:
MixedVec
[
MixedVec
[
DecoupledIO
[
ExuInput
]]]
=
intSchdParams
.
genExuInputBundle
...
...
src/main/scala/xiangshan/backend/issue/IssueBlockParams.scala
浏览文件 @
10fe9778
...
@@ -242,10 +242,6 @@ case class IssueBlockParams(
...
@@ -242,10 +242,6 @@ case class IssueBlockParams(
MixedVec
(
this
.
wakeUpInExuSources
.
map
(
x
=>
ValidIO
(
new
IssueQueueIQWakeUpBundle
(
backendParam
.
getExuIdx
(
x
.
name
),
backendParam
))))
MixedVec
(
this
.
wakeUpInExuSources
.
map
(
x
=>
ValidIO
(
new
IssueQueueIQWakeUpBundle
(
backendParam
.
getExuIdx
(
x
.
name
),
backendParam
))))
}
}
def
genCancelBundle
(
cancelStages
:
Seq
[
String
])
:
MixedVec
[
IssueQueueCancelBundle
]
=
{
MixedVec
(
backendParam
.
allExuParams
.
map
(
x
=>
new
IssueQueueCancelBundle
(
x
.
exuIdx
,
cancelStages
)))
}
def
genOGRespBundle
(
implicit
p
:
Parameters
)
=
{
def
genOGRespBundle
(
implicit
p
:
Parameters
)
=
{
implicit
val
issueBlockParams
=
this
implicit
val
issueBlockParams
=
this
MixedVec
(
exuBlockParams
.
map
(
_
=>
new
OGRespBundle
))
MixedVec
(
exuBlockParams
.
map
(
_
=>
new
OGRespBundle
))
...
...
src/main/scala/xiangshan/backend/issue/SchdBlockParams.scala
浏览文件 @
10fe9778
...
@@ -4,7 +4,7 @@ import chipsalliance.rocketchip.config.Parameters
...
@@ -4,7 +4,7 @@ import chipsalliance.rocketchip.config.Parameters
import
chisel3.util._
import
chisel3.util._
import
utils.SeqUtils
import
utils.SeqUtils
import
xiangshan.backend.BackendParams
import
xiangshan.backend.BackendParams
import
xiangshan.backend.Bundles.
{
ExuBypassBundle
,
ExuInput
,
ExuOutput
,
IssueQueueCancelBundle
,
IssueQueueIQWakeUpBundle
,
IssueQueueWBWakeUpBundle
}
import
xiangshan.backend.Bundles.
_
import
xiangshan.backend.datapath.WakeUpSource
import
xiangshan.backend.datapath.WakeUpSource
import
xiangshan.backend.datapath.WbConfig.WbConfig
import
xiangshan.backend.datapath.WbConfig.WbConfig
...
@@ -149,10 +149,6 @@ case class SchdBlockParams(
...
@@ -149,10 +149,6 @@ case class SchdBlockParams(
MixedVec
(
this
.
wakeUpOutExuSources
.
map
(
x
=>
ValidIO
(
new
IssueQueueIQWakeUpBundle
(
backendParam
.
getExuIdx
(
x
.
name
),
backendParam
))))
MixedVec
(
this
.
wakeUpOutExuSources
.
map
(
x
=>
ValidIO
(
new
IssueQueueIQWakeUpBundle
(
backendParam
.
getExuIdx
(
x
.
name
),
backendParam
))))
}
}
def
genCancelBundle
(
cancelStages
:
Seq
[
String
])
:
MixedVec
[
IssueQueueCancelBundle
]
=
{
MixedVec
(
backendParam
.
allExuParams
.
map
(
x
=>
new
IssueQueueCancelBundle
(
x
.
exuIdx
,
cancelStages
)))
}
def
genWBWakeUpSinkValidBundle
:
MixedVec
[
ValidIO
[
IssueQueueWBWakeUpBundle
]]
=
{
def
genWBWakeUpSinkValidBundle
:
MixedVec
[
ValidIO
[
IssueQueueWBWakeUpBundle
]]
=
{
val
intBundle
:
Seq
[
ValidIO
[
IssueQueueWBWakeUpBundle
]]
=
schdType
match
{
val
intBundle
:
Seq
[
ValidIO
[
IssueQueueWBWakeUpBundle
]]
=
schdType
match
{
case
IntScheduler
()
|
MemScheduler
()
=>
backendParam
.
getIntWBExeGroup
.
map
(
x
=>
ValidIO
(
new
IssueQueueWBWakeUpBundle
(
x
.
_2
.
map
(
_
.
exuIdx
),
backendParam
))).
toSeq
case
IntScheduler
()
|
MemScheduler
()
=>
backendParam
.
getIntWBExeGroup
.
map
(
x
=>
ValidIO
(
new
IssueQueueWBWakeUpBundle
(
x
.
_2
.
map
(
_
.
exuIdx
),
backendParam
))).
toSeq
...
...
src/main/scala/xiangshan/backend/issue/Scheduler.scala
浏览文件 @
10fe9778
...
@@ -5,12 +5,11 @@ import chisel3._
...
@@ -5,12 +5,11 @@ import chisel3._
import
chisel3.util._
import
chisel3.util._
import
freechips.rocketchip.diplomacy.
{
LazyModule
,
LazyModuleImp
}
import
freechips.rocketchip.diplomacy.
{
LazyModule
,
LazyModuleImp
}
import
xiangshan._
import
xiangshan._
import
xiangshan.backend.Bundles
import
xiangshan.backend.Bundles
._
import
xiangshan.backend.datapath.DataConfig.VAddrData
import
xiangshan.backend.datapath.DataConfig.VAddrData
import
xiangshan.backend.regfile.RfWritePortWithConfig
import
xiangshan.backend.regfile.RfWritePortWithConfig
import
xiangshan.backend.rename.BusyTable
import
xiangshan.backend.rename.BusyTable
import
xiangshan.mem.
{
LsqEnqCtrl
,
LsqEnqIO
,
MemWaitUpdateReq
,
SqPtr
}
import
xiangshan.mem.
{
LsqEnqCtrl
,
LsqEnqIO
,
MemWaitUpdateReq
,
SqPtr
}
import
xiangshan.backend.Bundles.
{
DynInst
,
ExuVec
,
IssueQueueCancelBundle
,
IssueQueueIQWakeUpBundle
,
IssueQueueWBWakeUpBundle
}
sealed
trait
SchedulerType
sealed
trait
SchedulerType
...
@@ -64,7 +63,7 @@ class SchedulerIO()(implicit params: SchdBlockParams, p: Parameters) extends Bun
...
@@ -64,7 +63,7 @@ class SchedulerIO()(implicit params: SchdBlockParams, p: Parameters) extends Bun
new
RfWritePortWithConfig
(
backendParams
.
intPregParams
.
dataCfg
,
backendParams
.
intPregParams
.
addrWidth
)))
new
RfWritePortWithConfig
(
backendParams
.
intPregParams
.
dataCfg
,
backendParams
.
intPregParams
.
addrWidth
)))
val
vfWriteBack
=
MixedVec
(
Vec
(
backendParams
.
vfPregParams
.
numWrite
,
val
vfWriteBack
=
MixedVec
(
Vec
(
backendParams
.
vfPregParams
.
numWrite
,
new
RfWritePortWithConfig
(
backendParams
.
vfPregParams
.
dataCfg
,
backendParams
.
vfPregParams
.
addrWidth
)))
new
RfWritePortWithConfig
(
backendParams
.
vfPregParams
.
dataCfg
,
backendParams
.
vfPregParams
.
addrWidth
)))
val
toDataPath
:
MixedVec
[
MixedVec
[
DecoupledIO
[
Bundles.
IssueQueueIssueBundle
]]]
=
MixedVec
(
params
.
issueBlockParams
.
map
(
_
.
genIssueDecoupledBundle
))
val
toDataPath
:
MixedVec
[
MixedVec
[
DecoupledIO
[
IssueQueueIssueBundle
]]]
=
MixedVec
(
params
.
issueBlockParams
.
map
(
_
.
genIssueDecoupledBundle
))
val
fromSchedulers
=
new
Bundle
{
val
fromSchedulers
=
new
Bundle
{
val
wakeupVec
:
MixedVec
[
ValidIO
[
IssueQueueIQWakeUpBundle
]]
=
Flipped
(
params
.
genIQWakeUpInValidBundle
)
val
wakeupVec
:
MixedVec
[
ValidIO
[
IssueQueueIQWakeUpBundle
]]
=
Flipped
(
params
.
genIQWakeUpInValidBundle
)
...
@@ -75,7 +74,7 @@ class SchedulerIO()(implicit params: SchdBlockParams, p: Parameters) extends Bun
...
@@ -75,7 +74,7 @@ class SchedulerIO()(implicit params: SchdBlockParams, p: Parameters) extends Bun
}
}
val
fromDataPath
=
new
Bundle
{
val
fromDataPath
=
new
Bundle
{
val
resp
:
MixedVec
[
MixedVec
[
Bundles.
OGRespBundle
]]
=
MixedVec
(
params
.
issueBlockParams
.
map
(
x
=>
Flipped
(
x
.
genOGRespBundle
)))
val
resp
:
MixedVec
[
MixedVec
[
OGRespBundle
]]
=
MixedVec
(
params
.
issueBlockParams
.
map
(
x
=>
Flipped
(
x
.
genOGRespBundle
)))
val
og0Cancel
=
Input
(
ExuVec
(
backendParams
.
numExu
))
val
og0Cancel
=
Input
(
ExuVec
(
backendParams
.
numExu
))
// Todo: remove this after no cancel signal from og1
// Todo: remove this after no cancel signal from og1
val
og1Cancel
=
Input
(
ExuVec
(
backendParams
.
numExu
))
val
og1Cancel
=
Input
(
ExuVec
(
backendParams
.
numExu
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录