Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
0ccdef88
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
0ccdef88
编写于
8月 16, 2020
作者:
L
linjiawei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Rewrite SimMMIO
上级
226300c2
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
70 addition
and
35 deletion
+70
-35
src/main/scala/utils/DebugIdentityNode.scala
src/main/scala/utils/DebugIdentityNode.scala
+7
-0
src/test/scala/top/SimMMIO.scala
src/test/scala/top/SimMMIO.scala
+63
-35
未找到文件。
src/main/scala/utils/DebugIdentityNode.scala
浏览文件 @
0ccdef88
...
...
@@ -29,3 +29,10 @@ class DebugIdentityNode()(implicit p: Parameters) extends LazyModule {
}
}
}
object
DebugIdentityNode
{
def
apply
()(
implicit
p
:
Parameters
)
:
TLIdentityNode
=
{
val
identityNode
=
LazyModule
(
new
DebugIdentityNode
())
identityNode
.
node
}
}
\ No newline at end of file
src/test/scala/top/SimMMIO.scala
浏览文件 @
0ccdef88
package
top
import
bus.axi4.AXI4ToAXI4Lite
import
chisel3._
import
chisel3.util._
import
bus.simplebus._
import
bus.tilelink.
{
NaiveTL1toN
,
MMIOTLToAXI4
,
TLCached
,
TLParameters
}
import
chipsalliance.rocketchip.config
import
device._
import
freechips.rocketchip.amba.axi4.
{
AXI4MasterParameters
,
AXI4MasterPortParameters
,
AXI4SlaveNode
,
AXI4SlavePortParameters
,
AXI4Xbar
}
import
freechips.rocketchip.diplomacy.
{
AddressSet
,
LazyModule
,
LazyModuleImp
}
import
freechips.rocketchip.tilelink.
{
TLMasterParameters
,
TLXbar
}
class
SimMMIO
()(
implicit
p
:
config.Parameters
)
extends
LazyModule
{
val
uart
=
LazyModule
(
new
AXI4UART
(
AddressSet
(
0x40600000
L
,
0xf
)))
val
vga
=
LazyModule
(
new
AXI4VGA
(
sim
=
false
,
fbAddress
=
AddressSet
(
0x50000000
L
,
0x3fffff
L
),
ctrlAddress
=
AddressSet
(
0x40001000
L
,
0x7
L
)
))
val
flash
=
LazyModule
(
new
AXI4Flash
(
AddressSet
(
0x40000000
L
,
0xfff
)))
val
sd
=
LazyModule
(
new
AXI4DummySD
(
AddressSet
(
0x40002000
L
,
0xfff
)))
val
axiBus
=
AXI4Xbar
()
uart
.
node
:=
axiBus
vga
.
node
:*=
axiBus
flash
.
node
:=
axiBus
sd
.
node
:=
axiBus
lazy
val
module
=
new
LazyModuleImp
(
this
){
val
io
=
IO
(
new
Bundle
()
{
val
uart
=
new
UARTIO
})
io
.
uart
<>
uart
.
module
.
io
.
extra
.
get
}
class
SimMMIO
(
para
:
TLParameters
)
extends
Module
{
val
io
=
IO
(
new
Bundle
{
val
rw
=
Flipped
(
TLCached
(
para
))
val
uart
=
new
UARTIO
})
val
devAddrSpace
=
List
(
(
0x40600000
L
,
0x10
L
),
// uart
(
0x50000000
L
,
0x400000
L
),
// vmem
(
0x40001000
L
,
0x8
L
),
// vga ctrl
(
0x40000000
L
,
0x1000
L
),
// flash
(
0x40002000
L
,
0x1000
L
)
// dummy sdcard
)
val
xbar
=
Module
(
new
NaiveTL1toN
(
devAddrSpace
,
io
.
rw
.
params
))
xbar
.
io
.
in
<>
io
.
rw
val
axiOut
=
xbar
.
io
.
out
.
map
(
tl
=>
AXI4ToAXI4Lite
(
MMIOTLToAXI4
(
tl
)))
val
uart
=
Module
(
new
AXI4UART
)
val
vga
=
Module
(
new
AXI4VGA
(
sim
=
true
))
val
flash
=
Module
(
new
AXI4Flash
)
val
sd
=
Module
(
new
AXI4DummySD
)
uart
.
io
.
in
<>
axiOut
(
0
)
vga
.
io
.
in
.
fb
<>
axiOut
(
1
)
vga
.
io
.
in
.
ctrl
<>
axiOut
(
2
)
flash
.
io
.
in
<>
axiOut
(
3
)
sd
.
io
.
in
<>
axiOut
(
4
)
vga
.
io
.
vga
:=
DontCare
io
.
uart
<>
uart
.
io
.
extra
.
get
}
//class SimMMIO(para: TLParameters) extends Module {
// val io = IO(new Bundle {
// val rw = Flipped(TLCached(para))
// val uart = new UARTIO
// })
//
// val devAddrSpace = List(
// (0x40600000L, 0x10L), // uart
// (0x50000000L, 0x400000L), // vmem
// (0x40001000L, 0x8L), // vga ctrl
// (0x40000000L, 0x1000L), // flash
// (0x40002000L, 0x1000L) // dummy sdcard
// )
//
// val xbar = Module(new NaiveTL1toN(devAddrSpace, io.rw.params))
// xbar.io.in <> io.rw
//
// val axiOut = xbar.io.out.map(tl => AXI4ToAXI4Lite(MMIOTLToAXI4(tl)))
//
// val uart = Module(new AXI4UART)
// val vga = Module(new AXI4VGA(sim = true))
// val flash = Module(new AXI4Flash)
// val sd = Module(new AXI4DummySD)
//
// uart.io.in <> axiOut(0)
// vga.io.in.fb <> axiOut(1)
// vga.io.in.ctrl <> axiOut(2)
// flash.io.in <> axiOut(3)
// sd.io.in <> axiOut(4)
// vga.io.vga := DontCare
// io.uart <> uart.io.extra.get
//}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录