Rocket - debug - TLDebugModuleInner - innerCtrl

Rocket - debug - TLDebugModuleInner - innerCtrl

 

简单介绍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. 附录

猜你喜欢

转载自www.cnblogs.com/wjcdx/p/12433061.html