Rocket - debug - TLDebugModuleInnerAsync

https://mp.weixin.qq.com/s/Xf4VFTHIDFh1NHmfwlTX3w

 

简单介绍TLDebugModuleInnerAsync的实现。

 

 

1. dmInner

 

dmInner是TLDebugModuleInnerAsync内部的一个子模块。其中又包含多个子节点。

 

1) dmiNode

 

dmiNode是一个寄存器节点:

 

2) tlNode

 

tlNode也是一个寄存器节点:

 

3) sb2tlOpt

 

sb2tlOpt是一个把系统总线转换为tilelink总线的转换模块:

 

4) customNode

 

customNode是一个自定义节点:

 

5) io

 

 

6) 结构图

 

总体结构图如下:

 

2. dmiXing

 

dmiXing是一个TLAsyncCrossingSink节点,用于实现跨域逻辑:

 

3. dmiNode

 

dmiNode是dmiXing.node的别名:

 

4. tlNode

 

tlNode是dmInner.tlNode的别名。

 

5. 连接跨域逻辑

 

 

6. lazy val module

 

lazy val module用于实现TLDebugModuleInnerAsync的内部逻辑。

 

1) io

 

模块定义了单独的IO:

 

结构示意图如下:

 

2) dmactive_synced

 

使用io.dmactive和io.psd生成的同步之后的dmactive信号:

 

PS.这里有机会再细究。

 

3) gated_clock

 

根据dmactive_synced生成的一个门控时钟:

如果配置参数中clockGate为假,则不使用门控。

 

PS.这里有机会再细究。

 

4) 指定时钟

 

使用withClock指定使用gated_clock为时钟,生成一段连接逻辑:

 

PS.这里有机会再细究。

 

7. 总体结构

 

TLDebugModuleInnerAsync的总体结构示意图(可以单独打开图片查看)如下:

 

             

 

 

 

posted @ 2020-04-05 23:07  wjcdx  阅读(279)  评论(0编辑  收藏  举报