Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
8ecf6396
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,发现更多精彩内容 >>
提交
8ecf6396
编写于
11月 20, 2019
作者:
Z
zhangzifei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bug: add ready signal in tlb module. when tlb is at reset-state, stall
上级
35ddf935
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
10 addition
and
7 deletion
+10
-7
src/main/scala/noop/Cache.scala
src/main/scala/noop/Cache.scala
+3
-3
src/main/scala/noop/TLB.scala
src/main/scala/noop/TLB.scala
+6
-3
src/main/scala/utils/Debug.scala
src/main/scala/utils/Debug.scala
+1
-1
未找到文件。
src/main/scala/noop/Cache.scala
浏览文件 @
8ecf6396
...
...
@@ -39,7 +39,7 @@ sealed trait HasCacheConst {
val
WordIndexBits
=
log2Up
(
LineBeats
)
val
TagBits
=
AddrBits
-
OffsetBits
-
IndexBits
val
debug
=
true
&&
cacheName
==
"d
cache"
val
debug
=
true
//&& cacheName == "i
cache"
def
addrBundle
=
new
Bundle
{
val
tag
=
UInt
(
TagBits
.
W
)
...
...
@@ -369,8 +369,8 @@ sealed class CacheStage3(implicit val cacheConfig: CacheConfig) extends CacheMod
Debug
()
{
if
(
debug
)
{
when
(
true
.
B
)
{
printf
(
"%d: ["
+
cacheName
+
" S3]: out.valid:%d rdata:%x cmd:%d user:%x \n"
,
GTimer
(),
io
.
out
.
valid
,
io
.
out
.
bits
.
rdata
,
io
.
out
.
bits
.
cmd
,
io
.
out
.
bits
.
user
.
getOrElse
(
0.
U
))
when
(
io
.
in
.
valid
)
{
printf
(
"%d: ["
+
cacheName
+
" S3]: out.valid:%d rdata:%x cmd:%d user:%x \n"
,
GTimer
(),
io
.
out
.
valid
,
io
.
out
.
bits
.
rdata
,
io
.
out
.
bits
.
cmd
,
io
.
out
.
bits
.
user
.
getOrElse
(
0.
U
))
}
//printf("%d: [" + cacheName + " S3]: DHW: (%d, %d), data:%x MHW:(%d, %d)\n",
//GTimer(), dataHitWriteBus.req.valid, dataHitWriteBus.req.ready, dataHitWriteBus.req.bits.data.asUInt, metaHitWriteBus.req.valid, metaHitWriteBus.req.ready)
//printf("%d: [" + cacheName + " S3]: useFD:%d isFD:%d FD:%x DreadArray:%x dataRead:%x inwaymask:%x FDwaymask:%x \n",
...
...
src/main/scala/noop/TLB.scala
浏览文件 @
8ecf6396
...
...
@@ -146,7 +146,7 @@ sealed trait HasTlbConst extends Sv39Const{
val
metaLen
=
vpnLen
+
asidLen
+
maskLen
+
flagLen
// 27 + 16 + 18 + 8 = 69
val
dataLen
=
ppnLen
+
AddrBits
// 44 + 64 = 108
val
debug
=
true
&&
tlbname
==
"
d
tlb"
val
debug
=
true
&&
tlbname
==
"
i
tlb"
def
metaBundle
=
new
Bundle
{
val
vpn
=
UInt
(
vpnLen
.
W
)
...
...
@@ -177,6 +177,8 @@ class TLBMeta(implicit val tlbConfig: TLBConfig) extends TlbModule { //TODO: ano
val
mask
=
Input
(
UInt
(
maskLen
.
W
))
val
flag
=
Input
(
UInt
(
flagLen
.
W
))
}
val
ready
=
Output
(
Bool
())
})
val
metas
=
Reg
(
Vec
(
NTLB
,
UInt
(
metaLen
.
W
)))
...
...
@@ -202,6 +204,7 @@ class TLBMeta(implicit val tlbConfig: TLBConfig) extends TlbModule { //TODO: ano
when
(
wen
)
{
metas
(
dest
)
:=
data
}
io
.
ready
:=
!
resetState
def
rready
()
=
!
resetState
def
wready
()
=
!
resetState
}
...
...
@@ -297,7 +300,7 @@ class TLB(implicit val tlbConfig: TLBConfig) extends TlbModule{
io
.
in
.
resp
.
valid
:=
true
.
B
io
.
in
.
resp
.
bits
.
rdata
:=
0.
U
io
.
in
.
resp
.
bits
.
cmd
:=
SimpleBusCmd
.
readLast
io
.
in
.
resp
.
bits
.
user
.
map
(
_
:=
io
.
in
.
req
.
bits
.
user
.
getOrElse
(
0.
U
))
io
.
in
.
resp
.
bits
.
user
.
map
(
_
:=
tlbExec
.
io
.
in
.
bits
.
user
.
getOrElse
(
0.
U
))
io
.
ipf
:=
tlbExec
.
io
.
ipf
}
}
...
...
@@ -543,7 +546,7 @@ class TLBExec(implicit val tlbConfig: TLBConfig) extends TlbModule{
io
.
out
.
bits
.
addr
:=
Mux
(
hit
,
maskPaddr
(
hitData
.
ppn
,
req
.
addr
,
hitMask
),
maskPaddr
(
memRespStore
.
asTypeOf
(
pteBundle
).
ppn
,
req
.
addr
,
missMaskStore
))
io
.
out
.
valid
:=
io
.
in
.
valid
&&
Mux
(
hit
&&
!
hitWB
,
true
.
B
,
state
===
s_wait_resp
)
// && !alreadyOutFire
io
.
in
.
ready
:=
io
.
out
.
ready
&&
(
state
===
s_idle
)
&&
!
miss
&&
!
hitWB
//maybe be optimized
io
.
in
.
ready
:=
io
.
out
.
ready
&&
(
state
===
s_idle
)
&&
!
miss
&&
!
hitWB
&&
metasTLB
.
io
.
ready
//maybe be optimized
io
.
ipf
:=
Mux
(
hit
,
hitinstrPF
,
missIPF
)
io
.
isFinish
:=
io
.
out
.
fire
()
||
io
.
pf
.
isPF
()
...
...
src/main/scala/utils/Debug.scala
浏览文件 @
8ecf6396
...
...
@@ -7,7 +7,7 @@ import noop.NOOPConfig
object
Debug
{
def
apply
(
flag
:
Boolean
=
NOOPConfig
().
EnableDebug
,
cond
:
Bool
=
true
.
B
)(
body
:
=>
Unit
)
:
Any
=
if
(
flag
)
{
when
(
cond
&&
GTimer
()
>
322030
0.
U
)
{
body
}
}
if
(
flag
)
{
when
(
cond
&&
GTimer
()
>
11138125
0.
U
)
{
body
}
}
}
object
ShowType
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录