Rocket - subsystem - RocketSubsystem

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

 

简单介绍RocketSubsystem的实现。

 

Rocket - subsystem - RocketSubsystem_第1张图片

 

1. Params

 

定义Rocket tile相关的master port/slave port/crossing参数:

Rocket - subsystem - RocketSubsystem_第2张图片

 

2. Keys

 

定义RocketTileParams和RocketCrossingParams参数使用的Key:

 

3. HasRocketTiles

 

HasRocketTiles被BaseSubsystem引入,用于添加RocketTile模块。

 

1) 其module为HasRocketTilesModuleImp类型的实例;

 

 

2) rocketTileParams

 

rocketTileParams是从配置中取出的RocketTileParams参数:

 

3) crossings

 

crossing是全局一致或者每个核心一个的跨域参数。

 

4) rocketTiles

 

Rocket - subsystem - RocketSubsystem_第3张图片

a. 根据rocketTileParams和crossing参数生成一组RocketTile:

b. 将rocketTile连接到各个总线上:

 

5) getOMRocketCores

 

用于生成rocket核心的对象模型:

 

4. HasRocketTilesModuleImp

 

HasRocketTilesModuleImp与HasRocketTiles配对使用:

这里并没有什么要实现的。

 

5. RocketSubsystem

 

RocketSubsystem继承自BaseSubsystem,并且引入了HasRocketTiles特征:

 

实现HasTiles中的抽象成员tiles:

 

lazy val module是一个RocketSubsystemModuleImp实例:

 

6. RocketSubsystemModuleImp

 

RocketSubsystemModuleImp实现RocketSubsystem模块:

Rocket - subsystem - RocketSubsystem_第4张图片

 

这里主要是连接各个tile的时钟和复位信号:

Rocket - subsystem - RocketSubsystem_第5张图片

其中:

a. i是从hartIdList中逐个取出的hartId;

b. global_reset_vector是HasRocketTilesModuleImp中引入的全局复位向量:

 

7. 附录

你可能感兴趣的:(Rocket - subsystem - RocketSubsystem)