码迷,mamicode.com
首页 > 其他好文 > 详细

Rocket - debug - TLDebugModule

时间:2020-04-06 00:21:21      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:round   width   bdd   def   查看   包含   sys   ice   lazy   

https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA

 

简单介绍TLDebugModule中的实现。

 

技术图片

 

1. device

 

device是一个设备描述符,包含了设备的各种信息:

技术图片

 

2. dmOuter

 

dmOuter是一个TLDebugModuleOuterAsync模块:

技术图片

 

其结构示意图如下:

技术图片

 

3. dmInner

 

dmInner是一个TLDebugModuleInnerAsync模块:

技术图片

 

其结构示意图如下:

技术图片

 

4. node

 

node是dmInner.tlNode的别名:

技术图片

 

5. intnode

 

intnode是dmOuter.intnode的别名:

技术图片

 

6. 连接DMI同步接口

 

连接dmOuter的dmi同步接口(source)和dmInner的dmi同步接口(sink):

技术图片

 

7. lazy val module

 

lazy val module实现了TLDebugModule的内部逻辑。

 

1) io

 

lazy val module定义了一组IO接口:

技术图片

 

其示意图如下:

技术图片

 

2) 为dmOuter指定时钟和复位信号

 

dmOuter模块使用外部供入的时钟和复位信号:

技术图片

 

从目前的实现看,这里的外部是指TestHarness:

技术图片

 

TestHarness是顶层模块,其reset信号是最外层的复位信号:

a. dut也就是RocketSystem的复位信号来自于TestHarness.reset和调试模块的ndreset;

b. TestHarness的复位信号和时钟信号同时也输出给dut.debug模块:

技术图片

技术图片

 

如果是不需要调试模块,则不需要驱动时钟信号,同时一直保持复位信号即可:

技术图片

 

3) 内部连接

 

将io与dmOuter/dmInner相连,将dmOuter与dmInner相连:

技术图片

 

8. 总结

 

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

技术图片

其中:

a. TLDebugModuleOuterAsync使用外部供入的时钟和复位信号;

b. TLDebugModuleOuterAsync的io.innerCtrl连接到TLDebugModuleInnerAsync的io.innerCtrl,中间有时钟同步逻辑。io.innerCtrl中包含了调试器通过写DMCONTROL寄存器传递的控制信息;

c. io.ctrl.debugUnavail同时传递给TLDebugModuleOuterAsync和TLDebugModuleInnerAsync;只是TLDebugModuleOuterAsync中不使用;

d. dmOuter.intnode用于对核心发起中断请求,这里暂时没有连接;

e. dmInner.tlNode中包含了调试模式下核心要执行的代码,需要连接到核心的总线,并入核心的地址空间;

 

Rocket - debug - TLDebugModule

标签:round   width   bdd   def   查看   包含   sys   ice   lazy   

原文地址:https://www.cnblogs.com/wjcdx/p/12639837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!