https://mp.weixin.qq.com/s/THo5Mw0099ummLsbXjLutw
简单介绍RocketSubsystem的实现。
  
1. Params
定义Rocket tile相关的master port/slave port/crossing参数:
  
2. Keys
定义RocketTileParams和RocketCrossingParams参数使用的Key:
  
3. HasRocketTiles
HasRocketTiles被BaseSubsystem引入,用于添加RocketTile模块。
1) 其module为HasRocketTilesModuleImp类型的实例;
  
2) rocketTileParams
rocketTileParams是从配置中取出的RocketTileParams参数:
  
3) crossings
crossing是全局一致或者每个核心一个的跨域参数。
4) rocketTiles
  
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模块:
  
这里主要是连接各个tile的时钟和复位信号:
  
其中:
a. i是从hartIdList中逐个取出的hartId;
b. global_reset_vector是HasRocketTilesModuleImp中引入的全局复位向量:
  
7. 附录
略
Rocket - subsystem - RocketSubsystem
原文:https://www.cnblogs.com/wjcdx/p/13168509.html