https://mp.weixin.qq.com/s/7UY99gEJ8QpVBJIohdqKhA
简单介绍TLDebugModuleInner中innerCtrl相关的寄存器。
1. innerCtrl
接下来用到的innerCtrl来自于io中:
io.innerCtrl从整体上看方向是输入,信号经过TLDebugModuleInnerAsync中转,来自Outer:
io.innerCtrl一直处于ready状态:
2. selectedHartReg
selectedHartReg是一个10位宽的寄存器,接收输入的hartsel值:
3. hamaskFull
hamaskFull是一个掩码数组,每个核心一位:
1) selectedHart对应的位为真:
2) 如果supportHartArray,则根据hasel的值,使用从Outer接收的hamask的值:
如果hartsel为假,就使用0值。
4. hamaskWrSel
根据io.innerCtrl.bits.hartsel/io.innerCtrl.bits.hasel/io.innerCtrl.bits.hamask的值,为每一个核心生成一个掩码,选中的为真,未选中的为假:
与hamaskFull的区别在于这里不需要io.innerCtrl.fire(),可以直接取值。
5. resumereq
resumereq接收从Outer输入的resumereq值:
这段代码混在DMSTATUS代码中,但又与之没有关联,提到这里来。
6. 附录
略