Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
c84054ca
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
10 个月 前同步成功
通知
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 搜索 >>
提交
c84054ca
编写于
7月 12, 2020
作者:
L
LinJiawei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add CSR
上级
0b2a9073
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
895 addition
and
15 deletion
+895
-15
src/main/scala/xiangshan/Bundle.scala
src/main/scala/xiangshan/Bundle.scala
+1
-0
src/main/scala/xiangshan/XSCore.scala
src/main/scala/xiangshan/XSCore.scala
+6
-0
src/main/scala/xiangshan/backend/exu/JmpExeUnit.scala
src/main/scala/xiangshan/backend/exu/JmpExeUnit.scala
+38
-5
src/main/scala/xiangshan/backend/fu/CSR.scala
src/main/scala/xiangshan/backend/fu/CSR.scala
+835
-0
src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
+14
-0
src/main/scala/xiangshan/backend/roq/Roq.scala
src/main/scala/xiangshan/backend/roq/Roq.scala
+0
-10
src/main/scala/xiangshan/frontend/Ibuffer.scala
src/main/scala/xiangshan/frontend/Ibuffer.scala
+1
-0
未找到文件。
src/main/scala/xiangshan/Bundle.scala
浏览文件 @
c84054ca
...
...
@@ -21,6 +21,7 @@ class CtrlFlow extends XSBundle {
val
intrVec
=
Vec
(
12
,
Bool
())
val
isRVC
=
Bool
()
val
isBr
=
Bool
()
val
crossPageIPFFix
=
Bool
()
}
// Decode DecodeWidth insts at Decode Stage
...
...
src/main/scala/xiangshan/XSCore.scala
浏览文件 @
c84054ca
...
...
@@ -88,6 +88,12 @@ case class XSConfig
EnableDebug
:
Boolean
=
true
)
object
XSCoreConfig
{
val
config
:
XSConfig
=
XSConfig
()
}
class
XSCore
(
implicit
val
p
:
XSConfig
)
extends
XSModule
{
val
io
=
IO
(
new
Bundle
{
val
imem
=
new
SimpleBusC
...
...
src/main/scala/xiangshan/backend/exu/JmpExeUnit.scala
浏览文件 @
c84054ca
package
xiangshan.backend.exu
import
chisel3._
import
xiangshan.backend.fu.Jump
import
xiangshan.
{
ExuOutput
,
FuType
,
XSConfig
}
import
xiangshan.backend.fu.
{
CSR
,
Jump
}
// NOTE: BRUOpType is at backend/package.scala
// TODO: add csr
class
JmpExeUnit
extends
Exu
(
Exu
.
jmpExeUnitCfg
)
{
val
jmp
=
Module
(
new
Jump
)
io
<>
jmp
.
io
jmp
.
io
.
out
.
ready
:=
io
.
out
.
ready
jmp
.
io
.
dmem
<>
DontCare
jmp
.
io
.
scommit
:=
DontCare
jmp
.
io
.
redirect
:=
io
.
redirect
lazy
val
p
=
XSConfig
(
FPGAPlatform
=
false
)
val
csr
=
Module
(
new
CSR
()(
p
))
csr
.
io
.
cfIn
:=
io
.
in
.
bits
.
uop
.
cf
csr
.
io
.
fpu_csr
:=
DontCare
csr
.
io
.
instrValid
:=
DontCare
csr
.
io
.
imemMMU
:=
DontCare
csr
.
io
.
dmemMMU
:=
DontCare
csr
.
io
.
out
.
ready
:=
io
.
out
.
ready
csr
.
io
.
in
.
bits
.
src3
:=
DontCare
val
csrOut
=
csr
.
access
(
valid
=
io
.
in
.
valid
&&
io
.
in
.
bits
.
uop
.
ctrl
.
fuType
===
FuType
.
csr
,
src1
=
io
.
in
.
bits
.
src1
,
src2
=
io
.
in
.
bits
.
src2
,
func
=
io
.
in
.
bits
.
uop
.
ctrl
.
fuOpType
)
val
csrExuOut
=
Wire
(
new
ExuOutput
)
csrExuOut
.
uop
:=
io
.
in
.
bits
.
uop
csrExuOut
.
data
:=
csrOut
csrExuOut
.
redirectValid
:=
false
.
B
csrExuOut
.
redirect
:=
DontCare
csrExuOut
.
debug
:=
DontCare
jmp
.
io
.
in
.
bits
:=
io
.
in
.
bits
jmp
.
io
.
in
.
valid
:=
io
.
in
.
valid
&&
io
.
in
.
bits
.
uop
.
ctrl
.
fuType
===
FuType
.
jmp
io
.
in
.
ready
:=
io
.
out
.
ready
io
.
out
.
bits
:=
Mux
(
jmp
.
io
.
in
.
valid
,
jmp
.
io
.
out
.
bits
,
csrExuOut
)
io
.
out
.
valid
:=
io
.
in
.
valid
}
\ No newline at end of file
src/main/scala/xiangshan/backend/fu/CSR.scala
0 → 100644
浏览文件 @
c84054ca
此差异已折叠。
点击以展开。
src/main/scala/xiangshan/backend/fu/FunctionUnit.scala
浏览文件 @
c84054ca
...
...
@@ -23,9 +23,23 @@ case class FuConfig
hasRedirect
:
Boolean
)
class
FunctionUnitIO
extends
XSBundle
{
val
in
=
Flipped
(
Decoupled
(
new
Bundle
{
val
src1
=
Output
(
UInt
(
XLEN
.
W
))
val
src2
=
Output
(
UInt
(
XLEN
.
W
))
val
src3
=
Output
(
UInt
(
XLEN
.
W
))
val
func
=
Output
(
FuOpType
())
}))
val
out
=
Decoupled
(
Output
(
UInt
(
XLEN
.
W
)))
}
abstract
class
FunctionUnit
(
cfg
:
FuConfig
)
extends
XSModule
object
FunctionUnit
{
val
csrCfg
=
FuConfig
(
FuType
.
csr
,
1
,
0
,
writeIntRf
=
true
,
writeFpRf
=
false
,
hasRedirect
=
false
)
val
jmpCfg
=
FuConfig
(
FuType
.
jmp
,
1
,
0
,
writeIntRf
=
true
,
writeFpRf
=
false
,
hasRedirect
=
true
)
...
...
src/main/scala/xiangshan/backend/roq/Roq.scala
浏览文件 @
c84054ca
...
...
@@ -251,16 +251,6 @@ class Roq(implicit val p: XSConfig) extends XSModule {
BoringUtils
.
addSource
(
RegNext
(
0.
U
),
"difftestIntrNO"
)
//TODO: skip insts that commited in the same cycle ahead of exception
//csr debug signals
val
ModeM
=
WireInit
(
0x3
.
U
)
BoringUtils
.
addSource
(
ModeM
,
"difftestMode"
)
BoringUtils
.
addSource
(
emptyCsr
,
"difftestMstatus"
)
BoringUtils
.
addSource
(
emptyCsr
,
"difftestSstatus"
)
BoringUtils
.
addSource
(
emptyCsr
,
"difftestMepc"
)
BoringUtils
.
addSource
(
emptyCsr
,
"difftestSepc"
)
BoringUtils
.
addSource
(
emptyCsr
,
"difftestMcause"
)
BoringUtils
.
addSource
(
emptyCsr
,
"difftestScause"
)
class
Monitor
extends
BlackBox
{
val
io
=
IO
(
new
Bundle
{
val
clk
=
Input
(
Clock
())
...
...
src/main/scala/xiangshan/frontend/Ibuffer.scala
浏览文件 @
c84054ca
...
...
@@ -18,6 +18,7 @@ class Ibuffer extends XSModule {
io
.
out
(
i
).
bits
.
exceptionVec
:=
DontCare
io
.
out
(
i
).
bits
.
intrVec
:=
DontCare
io
.
out
(
i
).
bits
.
isBr
:=
DontCare
io
.
out
(
i
).
bits
.
crossPageIPFFix
:=
DontCare
}
//mask initial
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录