Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
a110f955
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
a110f955
编写于
6月 28, 2020
作者:
L
ljw
提交者:
GitHub
6月 28, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #58 from RISCVERS/issuequeue
Issuequeue:change CCU into function
上级
c7c1270b
63ddece4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
32 deletion
+20
-32
src/main/scala/xiangshan/backend/issue/IssueQueue.scala
src/main/scala/xiangshan/backend/issue/IssueQueue.scala
+20
-32
未找到文件。
src/main/scala/xiangshan/backend/issue/IssueQueue.scala
浏览文件 @
a110f955
...
...
@@ -28,38 +28,26 @@ sealed class CmpInputBundle extends IQBundle{
}
sealed
class
CompareCircuitUnit
extends
IQModule
{
val
io
=
IO
(
new
Bundle
(){
val
in1
=
new
CmpInputBundle
val
in2
=
new
CmpInputBundle
val
out
=
Flipped
(
new
CmpInputBundle
)
})
val
roqIdx1
=
io
.
in1
.
roqIdx
val
roqIdx2
=
io
.
in2
.
roqIdx
val
iqIdx1
=
io
.
in1
.
iqIdx
val
iqIdx2
=
io
.
in2
.
iqIdx
val
inst1Rdy
=
io
.
in1
.
instRdy
val
inst2Rdy
=
io
.
in2
.
instRdy
io
.
out
.
instRdy
:=
inst1Rdy
|
inst2Rdy
io
.
out
.
roqIdx
:=
roqIdx2
io
.
out
.
iqIdx
:=
iqIdx2
when
((
inst1Rdy
&&
!
inst2Rdy
)
||
(
inst1Rdy
&&
inst2Rdy
&&
(
roqIdx1
<
roqIdx2
))){
io
.
out
.
roqIdx
:=
roqIdx1
io
.
out
.
iqIdx
:=
iqIdx1
}
}
object
CCU
{
object
CompareCircuitUnit
{
def
apply
(
in1
:
CmpInputBundle
,
in2
:
CmpInputBundle
)
=
{
val
CCU
=
Module
(
new
CompareCircuitUnit
)
CCU
.
io
.
in1
<>
in1
CCU
.
io
.
in2
<>
in2
CCU
.
io
.
out
val
out
=
Wire
(
new
CmpInputBundle
)
val
roqIdx1
=
in1
.
roqIdx
val
roqIdx2
=
in2
.
roqIdx
val
iqIdx1
=
in1
.
iqIdx
val
iqIdx2
=
in2
.
iqIdx
val
inst1Rdy
=
in1
.
instRdy
val
inst2Rdy
=
in2
.
instRdy
out
.
instRdy
:=
inst1Rdy
|
inst2Rdy
out
.
roqIdx
:=
roqIdx2
out
.
iqIdx
:=
iqIdx2
when
((
inst1Rdy
&&
!
inst2Rdy
)
||
(
inst1Rdy
&&
inst2Rdy
&&
(
roqIdx1
<
roqIdx2
))){
out
.
roqIdx
:=
roqIdx1
out
.
iqIdx
:=
iqIdx1
}
out
}
}
...
...
@@ -67,7 +55,7 @@ object ParallelSel {
def
apply
(
iq
:
Seq
[
CmpInputBundle
])
:
CmpInputBundle
=
{
iq
match
{
case
Seq
(
a
)
=>
a
case
Seq
(
a
,
b
)
=>
C
CU
(
a
,
b
)
case
Seq
(
a
,
b
)
=>
C
ompareCircuitUnit
(
a
,
b
)
case
_
=>
apply
(
Seq
(
apply
(
iq
take
iq
.
size
/
2
),
apply
(
iq
drop
iq
.
size
/
2
)))
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录