Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
d55c11c2
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 搜索 >>
未验证
提交
d55c11c2
编写于
12月 01, 2020
作者:
Y
Yinan Xu
提交者:
GitHub
12月 01, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #286 from RISCVERS/fix-xscore-module
SoC: move l2cache to SoC
上级
5d78b037
5d65f258
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
47 addition
and
61 deletion
+47
-61
src/main/scala/system/SoC.scala
src/main/scala/system/SoC.scala
+46
-31
src/main/scala/xiangshan/XSCore.scala
src/main/scala/xiangshan/XSCore.scala
+1
-30
未找到文件。
src/main/scala/system/SoC.scala
浏览文件 @
d55c11c2
...
...
@@ -44,11 +44,26 @@ class DummyCore()(implicit p: Parameters) extends LazyModule {
class
XSSoc
()(
implicit
p
:
Parameters
)
extends
LazyModule
with
HasSoCParameter
{
private
val
cores
=
Seq
.
fill
(
NumCores
)(
LazyModule
(
new
XSCore
()))
// CPU Cores
private
val
xs_core
=
Seq
.
fill
(
NumCores
)(
LazyModule
(
new
XSCore
()))
// only mem and extDev visible externally
val
dma
=
AXI4IdentityNode
()
val
extDev
=
AXI4IdentityNode
()
// L1 to L2 network
// -------------------------------------------------
private
val
l2_xbar
=
Seq
.
fill
(
NumCores
)(
TLXbar
())
private
val
l2cache
=
Seq
.
fill
(
NumCores
)(
LazyModule
(
new
InclusiveCache
(
CacheParameters
(
level
=
2
,
ways
=
L2NWays
,
sets
=
L2NSets
,
blockBytes
=
L2BlockSize
,
beatBytes
=
L1BusWidth
/
8
,
// beatBytes = l1BusDataWidth / 8
cacheName
=
s
"L2"
),
InclusiveCacheMicroParameters
(
writeBytes
=
8
)
)))
// L2 to L3 network
// -------------------------------------------------
...
...
@@ -69,7 +84,26 @@ class XSSoc()(implicit p: Parameters) extends LazyModule with HasSoCParameter {
)
)))
cores
.
foreach
(
core
=>
l3_xbar
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
core
.
mem
)
// L3 to memory network
// -------------------------------------------------
private
val
memory_xbar
=
TLXbar
()
private
val
mmioXbar
=
TLXbar
()
// only mem, dma and extDev are visible externally
val
mem
=
Seq
.
fill
(
L3NBanks
)(
AXI4IdentityNode
())
val
dma
=
AXI4IdentityNode
()
val
extDev
=
AXI4IdentityNode
()
// connections
// -------------------------------------------------
for
(
i
<-
0
until
NumCores
)
{
l2_xbar
(
i
)
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
xs_core
(
i
).
dcache
.
clientNode
l2_xbar
(
i
)
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
xs_core
(
i
).
l1pluscache
.
clientNode
l2_xbar
(
i
)
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
xs_core
(
i
).
ptw
.
node
mmioXbar
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
xs_core
(
i
).
uncache
.
clientNode
l2cache
(
i
).
node
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
l2_xbar
(
i
)
l3_xbar
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
l2cache
(
i
).
node
}
// DMA should not go to MMIO
val
mmioRange
=
AddressSet
(
base
=
0x0000000000
L
,
mask
=
0x007fffffff
L
)
...
...
@@ -103,12 +137,6 @@ class XSSoc()(implicit p: Parameters) extends LazyModule with HasSoCParameter {
l3_banks
(
i
).
node
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
filter
:=
l3_xbar
}
// L3 to memory network
// -------------------------------------------------
private
val
memory_xbar
=
TLXbar
()
val
mem
=
Seq
.
fill
(
L3NBanks
)(
AXI4IdentityNode
())
for
(
i
<-
0
until
L3NBanks
)
{
mem
(
i
)
:=
AXI4UserYanker
()
:=
...
...
@@ -118,37 +146,24 @@ class XSSoc()(implicit p: Parameters) extends LazyModule with HasSoCParameter {
l3_banks
(
i
).
node
}
private
val
mmioXbar
=
TLXbar
()
private
val
clint
=
LazyModule
(
new
TLTimer
(
Seq
(
AddressSet
(
0x38000000
L
,
0x0000ffff
L
)),
sim
=
!
env
.
FPGAPlatform
))
cores
.
foreach
(
core
=>
mmioXbar
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
core
.
mmio
)
clint
.
node
:=
mmioXbar
extDev
:=
AXI4UserYanker
()
:=
TLToAXI4
()
:=
mmioXbar
clint
.
node
:=
mmioXbar
extDev
:=
AXI4UserYanker
()
:=
TLToAXI4
()
:=
mmioXbar
lazy
val
module
=
new
LazyModuleImp
(
this
){
val
io
=
IO
(
new
Bundle
{
val
meip
=
Input
(
Bool
())
val
ila
=
if
(
env
.
FPGAPlatform
&&
EnableILA
)
Some
(
Output
(
new
ILABundle
))
else
None
})
cores
.
foreach
(
core
=>
{
core
.
module
.
io
.
externalInterrupt
.
mtip
:=
clint
.
module
.
io
.
mtip
core
.
module
.
io
.
externalInterrupt
.
msip
:=
clint
.
module
.
io
.
msip
core
.
module
.
io
.
externalInterrupt
.
meip
:=
RegNext
(
RegNext
(
io
.
meip
))
}
)
for
(
i
<-
0
until
NumCores
)
{
xs_core
(
i
)
.
module
.
io
.
externalInterrupt
.
mtip
:=
clint
.
module
.
io
.
mtip
xs_core
(
i
)
.
module
.
io
.
externalInterrupt
.
msip
:=
clint
.
module
.
io
.
msip
xs_core
(
i
)
.
module
.
io
.
externalInterrupt
.
meip
:=
RegNext
(
RegNext
(
io
.
meip
))
}
// do not let dma AXI signals optimized out
chisel3
.
dontTouch
(
dma
.
out
.
head
.
_1
)
chisel3
.
dontTouch
(
extDev
.
out
.
head
.
_1
)
...
...
src/main/scala/xiangshan/XSCore.scala
浏览文件 @
d55c11c2
...
...
@@ -259,41 +259,12 @@ object AddressSpace extends HasXSParameter {
class
XSCore
()(
implicit
p
:
config.Parameters
)
extends
LazyModule
with
HasXSParameter
{
//
inner
nodes
//
outer facing
nodes
val
dcache
=
LazyModule
(
new
DCache
())
val
uncache
=
LazyModule
(
new
Uncache
())
val
l1pluscache
=
LazyModule
(
new
L1plusCache
())
val
ptw
=
LazyModule
(
new
PTW
())
// out facing nodes
val
mem
=
TLIdentityNode
()
val
mmio
=
uncache
.
clientNode
// L1 to L2 network
// -------------------------------------------------
private
val
l2_xbar
=
TLXbar
()
private
val
l2
=
LazyModule
(
new
InclusiveCache
(
CacheParameters
(
level
=
2
,
ways
=
L2NWays
,
sets
=
L2NSets
,
blockBytes
=
L2BlockSize
,
beatBytes
=
L1BusWidth
/
8
,
// beatBytes = l1BusDataWidth / 8
cacheName
=
s
"L2"
),
InclusiveCacheMicroParameters
(
writeBytes
=
8
)
))
l2_xbar
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
dcache
.
clientNode
l2_xbar
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
l1pluscache
.
clientNode
l2_xbar
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
ptw
.
node
l2
.
node
:=
TLBuffer
()
:=
DebugIdentityNode
()
:=
l2_xbar
mem
:=
l2
.
node
lazy
val
module
=
new
XSCoreImp
(
this
)
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录