Rocket

https://mp.weixin.qq.com/s/U4GAEogQMwo0PIxeU6n8jg

 

简单介绍ExampleRocketSystem的实现。

 

 

1. ExampleRocketSystem

 

ExampleRocketSystem是一个顶层模块的样例,包含一个Rocket子系统,一系列的外部设备和接口:

 

1) 继承自RocketSubsystem

 

 

2) 包含一系列外部设备和接口

 

配合ExampleRocketSystemModuleImp中引入的特征(trait)进行实现:

 

3) lazy val module是ExampleRocketSystemModuleImp类的实例

 

 

4) 进行必要的内部节点连接

 

A. 连接cbus和sbus

 

这里不需要跨时钟域。

 

B. 连接pbus和cbus

 

这里的跨域类型为同步跨域,外设的时钟可能较慢。

 

C. 连接fbus和sbus

 

 

D. 连接sbus和mbus

 

其中:

a. 根据配置,生成存储总线的一致性管理模块;

b. 系统总线作为上游连接到一致性管理模块的输入;

c. 一致性管理模块再作为上游节点连接到内存总线;

d. 如果内存包括多个bank,则包含一个BankBinder,以对上游提供统一的视图;

 

5) 结构示意图

 

引用自:https://carrv.github.io/2017/papers/cook-diplomacy-carrv2017.pdf

 

2. ExampleRocketSystemModuleImp

 

ExampleRocketSystemModuleImp与ExampleRocketSystem配对使用:

ExampleRocketSystemModuleImp实现ExampleRocketSystem的具体逻辑。不过这个类的层次比较高,具体的实现逻辑都已经在其组成模块中已经实现了,所以这里的定义中不包含类体,而只是继承RocketSubsystemModuleImp和引入一系列外设和接口的实现。

 

3. 附录

 

原文地址:https://www.cnblogs.com/wjcdx/p/13298464.html