Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
af01a97f
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
af01a97f
编写于
2月 25, 2019
作者:
Z
Zihao Yu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
noop,CSR: add instruction type counters
上级
ae5455cc
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
28 addition
and
7 deletion
+28
-7
src/main/scala/noop/CSR.scala
src/main/scala/noop/CSR.scala
+5
-0
src/main/scala/noop/Decode.scala
src/main/scala/noop/Decode.scala
+1
-1
src/main/scala/noop/EXU.scala
src/main/scala/noop/EXU.scala
+16
-5
src/main/scala/noop/NOOP.scala
src/main/scala/noop/NOOP.scala
+6
-1
未找到文件。
src/main/scala/noop/CSR.scala
浏览文件 @
af01a97f
...
...
@@ -40,6 +40,11 @@ trait HasCSRConst {
val
Minstreth
=
0xb82
val
MImemStall
=
0xb03
val
MALUInstr
=
0xb04
val
MBRUInstr
=
0xb05
val
MLSUInstr
=
0xb06
val
MMDUInstr
=
0xb07
val
MCSRInstr
=
0xb08
def
privEcall
=
0x000
.
U
def
privMret
=
0x302
.
U
...
...
src/main/scala/noop/Decode.scala
浏览文件 @
af01a97f
...
...
@@ -37,7 +37,7 @@ trait HasFuType
with
HasLSUOpType
with
HasMDUOpType
with
HasCSROpType
{
private
val
FuTypeNum
=
5
val
FuTypeNum
=
5
def
FuAlu
=
"b000"
.
U
def
FuBru
=
"b001"
.
U
def
FuLsu
=
"b010"
.
U
...
...
src/main/scala/noop/EXU.scala
浏览文件 @
af01a97f
...
...
@@ -15,35 +15,39 @@ class EXU extends Module with HasFuType {
val
csr
=
new
Bundle
{
val
isCsr
=
Output
(
Bool
())
val
in
=
Flipped
(
Decoupled
(
UInt
(
32.
W
)))
val
instrType
=
Vec
(
FuTypeNum
,
Output
(
Bool
()))
}
})
val
(
src1
,
src2
,
fuType
,
fuOpType
)
=
(
io
.
in
.
bits
.
data
.
src1
,
io
.
in
.
bits
.
data
.
src2
,
io
.
in
.
bits
.
ctrl
.
fuType
,
io
.
in
.
bits
.
ctrl
.
fuOpType
)
val
fuValids
=
Wire
(
Vec
(
FuTypeNum
,
Bool
()))
(
0
until
FuTypeNum
).
map
(
i
=>
fuValids
(
i
)
:=
(
fuType
===
i
.
U
)
&&
io
.
in
.
valid
)
val
alu
=
Module
(
new
ALU
)
val
aluOut
=
alu
.
access
(
valid
=
(
fuType
===
FuAlu
),
src1
=
src1
,
src2
=
src2
,
func
=
fuOpType
)
val
aluOut
=
alu
.
access
(
valid
=
fuValids
(
FuAlu
),
src1
=
src1
,
src2
=
src2
,
func
=
fuOpType
)
alu
.
io
.
out
.
ready
:=
true
.
B
val
bru
=
Module
(
new
BRU
)
val
bruOut
=
bru
.
access
(
valid
=
(
fuType
===
FuBru
),
src1
=
src1
,
src2
=
io
.
in
.
bits
.
data
.
dest
,
func
=
fuOpType
)
val
bruOut
=
bru
.
access
(
valid
=
fuValids
(
FuBru
),
src1
=
src1
,
src2
=
io
.
in
.
bits
.
data
.
dest
,
func
=
fuOpType
)
bru
.
io
.
pc
:=
io
.
in
.
bits
.
pc
bru
.
io
.
offset
:=
src2
io
.
br
<>
bru
.
io
.
branch
bru
.
io
.
out
.
ready
:=
true
.
B
val
lsu
=
Module
(
new
LSU
)
val
lsuOut
=
lsu
.
access
(
valid
=
(
fuType
===
FuLsu
),
src1
=
src1
,
src2
=
src2
,
func
=
fuOpType
)
val
lsuOut
=
lsu
.
access
(
valid
=
fuValids
(
FuLsu
),
src1
=
src1
,
src2
=
src2
,
func
=
fuOpType
)
lsu
.
io
.
wdata
:=
io
.
in
.
bits
.
data
.
dest
io
.
dmem
<>
lsu
.
io
.
dmem
lsu
.
io
.
out
.
ready
:=
true
.
B
val
mdu
=
Module
(
new
MDU
)
val
mduOut
=
mdu
.
access
(
valid
=
(
fuType
===
FuMdu
),
src1
=
src1
,
src2
=
src2
,
func
=
fuOpType
)
val
mduOut
=
mdu
.
access
(
valid
=
fuValids
(
FuMdu
),
src1
=
src1
,
src2
=
src2
,
func
=
fuOpType
)
mdu
.
io
.
out
.
ready
:=
true
.
B
// CSR is instantiated under NOOP
io
.
csr
.
isCsr
:=
fu
Type
===
FuCsr
io
.
csr
.
isCsr
:=
fu
Valids
(
FuCsr
)
io
.
csr
.
in
.
ready
:=
true
.
B
io
.
out
.
bits
.
data
:=
DontCare
...
...
@@ -65,4 +69,11 @@ class EXU extends Module with HasFuType {
FuLsu
->
lsu
.
io
.
out
.
valid
,
FuMdu
->
mdu
.
io
.
out
.
valid
))
// perfcnt
io
.
csr
.
instrType
(
FuAlu
)
:=
alu
.
io
.
out
.
fire
()
io
.
csr
.
instrType
(
FuBru
)
:=
bru
.
io
.
out
.
fire
()
io
.
csr
.
instrType
(
FuLsu
)
:=
lsu
.
io
.
out
.
fire
()
io
.
csr
.
instrType
(
FuMdu
)
:=
mdu
.
io
.
out
.
fire
()
io
.
csr
.
instrType
(
FuCsr
)
:=
io
.
csr
.
isCsr
&&
io
.
csr
.
in
.
ready
}
src/main/scala/noop/NOOP.scala
浏览文件 @
af01a97f
...
...
@@ -10,7 +10,7 @@ trait NOOPConfig {
val
HasMExtension
=
true
}
class
NOOP
extends
Module
with
NOOPConfig
with
HasCSRConst
{
class
NOOP
extends
Module
with
NOOPConfig
with
HasCSRConst
with
HasFuType
{
val
io
=
IO
(
new
Bundle
{
val
imem
=
new
MemIO
val
dmem
=
new
MemIO
...
...
@@ -64,6 +64,11 @@ class NOOP extends Module with NOOPConfig with HasCSRConst {
csr
.
setPerfCnt
(
Mcycle
,
true
.
B
)
csr
.
setPerfCnt
(
Minstret
,
wbu
.
io
.
writeback
)
csr
.
setPerfCnt
(
MImemStall
,
ifu
.
io
.
imemStall
)
csr
.
setPerfCnt
(
MALUInstr
,
exu
.
io
.
csr
.
instrType
(
FuAlu
))
csr
.
setPerfCnt
(
MBRUInstr
,
exu
.
io
.
csr
.
instrType
(
FuBru
))
csr
.
setPerfCnt
(
MLSUInstr
,
exu
.
io
.
csr
.
instrType
(
FuLsu
))
csr
.
setPerfCnt
(
MMDUInstr
,
exu
.
io
.
csr
.
instrType
(
FuMdu
))
csr
.
setPerfCnt
(
MCSRInstr
,
exu
.
io
.
csr
.
instrType
(
FuCsr
))
io
.
trap
:=
isu
.
io
.
trap
io
.
sim
<>
csr
.
io
.
sim
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录