Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
e2e2e3f1
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,发现更多精彩内容 >>
提交
e2e2e3f1
编写于
9月 22, 2019
作者:
Z
Zihao Yu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
noop,Cache: fix wrong wmask for MMIO by shifting it in Cache instead of LSU
上级
b891fb3a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
3 addition
and
10 deletion
+3
-10
src/main/scala/noop/Cache.scala
src/main/scala/noop/Cache.scala
+1
-1
src/main/scala/noop/fu/LSU.scala
src/main/scala/noop/fu/LSU.scala
+2
-9
未找到文件。
src/main/scala/noop/Cache.scala
浏览文件 @
e2e2e3f1
...
...
@@ -156,7 +156,7 @@ sealed class CacheStage3(ro: Boolean, name: String, userBits: Int = 0) extends C
val
dataBlockIdx
=
Wire
(
UInt
(
WordIndexBits
.
W
))
val
dataRead
=
io
.
dataBlock
(
dataBlockIdx
).
data
val
wordMask
=
Mux
(
req
.
isWrite
(),
MaskExpand
(
req
.
wmask
),
0.
U
(
DataBits
.
W
))
val
wordMask
=
Mux
(
req
.
isWrite
(),
MaskExpand
(
req
.
wmask
<<
req
.
addr
(
2
,
0
)
),
0.
U
(
DataBits
.
W
))
val
dataHitWriteBus
=
WireInit
(
0.
U
.
asTypeOf
(
CacheDataArrayWriteBus
()))
val
metaHitWriteBus
=
WireInit
(
0.
U
.
asTypeOf
(
CacheMetaArrayWriteBus
()))
...
...
src/main/scala/noop/fu/LSU.scala
浏览文件 @
e2e2e3f1
...
...
@@ -42,14 +42,7 @@ class LSU extends NOOPModule {
io
.
out
.
bits
}
def
genWmask
(
addr
:
UInt
,
sizeEncode
:
UInt
)
:
UInt
=
{
LookupTree
(
sizeEncode
,
List
(
"b00"
.
U
->
0x1
.
U
,
//0001 << addr(2:0)
"b01"
.
U
->
0x3
.
U
,
//0011
"b10"
.
U
->
0xf
.
U
,
//1111
"b11"
.
U
->
0xff
.
U
//11111111
))
<<
addr
(
2
,
0
)
}
def
genWmask
(
sizeEncode
:
UInt
)
=
VecInit
((
0
to
3
).
map
((
i
:
Int
)
=>
Fill
((
1
<<
i
),
1.
U
)))(
sizeEncode
)
def
genWdata
(
data
:
UInt
,
sizeEncode
:
UInt
)
:
UInt
=
{
LookupTree
(
sizeEncode
,
List
(
"b00"
.
U
->
Fill
(
8
,
data
(
7
,
0
)),
...
...
@@ -85,7 +78,7 @@ class LSU extends NOOPModule {
dmem
.
req
.
valid
:=
valid
&&
(
state
===
s_idle
)
&&
!
mmio
dmem
.
req
.
bits
.
cmd
:=
Mux
(
isStore
,
SimpleBusCmd
.
write
,
SimpleBusCmd
.
read
)
dmem
.
req
.
bits
.
wdata
:=
genWdata
(
io
.
wdata
,
func
(
1
,
0
))
dmem
.
req
.
bits
.
wmask
:=
genWmask
(
addr
,
func
(
1
,
0
))
dmem
.
req
.
bits
.
wmask
:=
genWmask
(
func
(
1
,
0
))
dmem
.
req
.
bits
.
user
:=
0.
U
dmem
.
resp
.
ready
:=
true
.
B
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录