Rocket - subsystem - RocketSubsystem
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. 附录
略