https://mp.weixin.qq.com/s/03mqAmLiaA1JwOePR5IDyQ
简单介绍Configs的实现。
1. BaseSubsystemConfig
BaseSubsystemConfig包含基本子系统的配置定义。
1) 核心参数
a. PgLevels:页表层次:
b. XLen:核心数据总线宽度:
c. MaxHartIdBits:根据核心的个数确定:
2) 连接参数
包括系统总线、控制总线、外设总线、存储总线、前端总线的基本配置参数:
3) (基本上)必备的设备参数
包含BootROM/Debug/CLINT/PLIC等模块的配置参数:
2. WithNBigCores
引入n个大核的配置:
其中:
a. RocketTilesKey用于查找和定义核心参数;
b. big为模板配置,然后根据复制n份作为n个核心的配置;
c. RocketTileParams定义单个核心的配置参数:
3. WithNSmallCores
引入n各小核的配置:
其中:
a. RocketTilesKey用于查找和定义核心参数;
b. small为模板配置,然后根据复制n份作为n个核心的配置;
c. 与大核相比,比较明显的差异是小核不支持VM;
4. With1TinyCore
引入一个超小核的配置:
因为大核、小核、超小核使用同样的RocketTilesKey,所以WithNBigCores/WithNSmallCores/With1TinyCore不能同时存在。
5. WithNBanks
用于修改L2 Memory的bank数量:
6. WithNTrackersPerBank
用于修改BroadcastKey中的nTrackers参数,进而影响生成的TLBroadcast节点:
7. WithL1ICacheSets
用于配置L1 instruction/data cache的参数:
8. WithL1DCacheSets
同上。
9. WithL1ICacheWays
同上。
10. WithL1DCacheWays
同上。
11. WithCacheBlockBytes
配置cache line的长度:
12. WithBufferlessBroadcastHub
用于配置TLBroadcast节点的bufferless参数:
13. WithIncoherentTiles
配置缓存不一致的tiles:
14. WithRV32
使用32位的核:
15. WithNonblockingL1
修改核心的nMSHRs参数:
16. WithNBreakpoints
修改核心支持的断点数量:
17. WithRoccExample
定义生成ROCC样例的方法:
18. WithDefaultBtb
修改BTB参数为默认值:
19. WithFastMulDiv
支持快速乘除运算:
20. WithoutMulDiv
不支持乘除运算:
21. WithoutFPU
修改fpu参数:
22. WithFPUWithoutDivSqrt
同上。
23. WithBootROMFile
修改bootrom镜像文件的名称:
24. WithSynchronousRocketTiles
修改rocket crossing type:
25. WithAsynchronousRocketTiles
同上。
26. WithRationalRocketTiles
同上。
27. WithEdgeDataBits
修改数据位宽:
28. WithJtagDTM
使用JTAG调试接口:
29. WithDebugSBA
包含一个系统总线访问模块:
30. WithNBitPeripheryBus
定义外设总线宽度:
31. WithoutTLMonitors
禁用Monitor:
32. WithNExtTopInterrupts
支持n个外部中断:
33. WithNMemoryChannels
定义支持的内存通道数:
34. WithExtMemSize
定义外部存储的大小。
35. WithDTS
定义DTS相关参数:
36. WithTimebase
定义时间基准:
37. WithDefaultMemPort
定义内存端口的参数:
38. WithNoMemPort
同上。
39. WithDefaultMMIOPort
定义MMIO端口参数:
40. WithNoMMIOPort
同上。
41. WithDefaultSlavePort
定义SlavePort的参数:
42. WithNoSlavePort
同上。
43. WithScratchpadsOnly
定义scrach参数: