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

简单介绍TLDebugModuleOuterAsync的实现。

1. dmi2tl

dmi2tl是TLDebugModuleOuterAsync中的一个子模块,用于把dmi接口转换为tilelink接口。

其结构图如下:

2. dmiXbar

dmiXbar是一个TLXbar模块,用于连接多个TileLink模块:

3. dmOuter

dmOuter也是一个子模块:

4. intnode

intnode是一个别名,dmOuter.intnode经过一个IntSyncCrossingSource生成的结构:

结构示意如下:

5. dmiInnerNode

dmiInnerNode是dmiXbar.node经过TLAsyncCrossingSource之后生成的结构:

结构示意如下:

6. 内部子节点

1) TLDebugModuleOuterAsync各个内部子节点如下:

2) 对内部部分节点进行了连接:

结构示意图如下:

可以看到io.dmi经过dmi2tl转换为tilelink接口,连接到dmiXbar节点。

a. 进而连接到dmOuter节点的dmiNode访问dmOuter中的寄存器;

b. 也经过TLAsyncCrossingSource节点跨域与inner节点连接;

7. lazy val module

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

1) 这里声明了IO接口:

2) 又进行了一定的接口连接:

示意图如下(可以单独打开图片查看):

8. 总结

1) io.dmi

io.dmi用于实现DMI访问。通过DMI接口读写DMI地址空间的寄存器对调试模块进行控制。

在实现中,DMI地址空间被分为了outer和inner两个部分。outer部分对应的是dmiNode:TLRegisterNode;inner部分通过TLAsyncCrossingSource模块跨域进行访问。

2) io.ctrl

io.ctrl的定义如下:

其方向无论是在TLDebugModuleOuter中还是在TLDebugModuleOuterSync中都没有进行转向(flip)。所以这里就是:

a. debugUnavail从outerSync输出到outer

debugUnavail用于从外部控制调试模块是否可用,在outerSync内部并没有被使用。

b. ndreset从outer输出到outerSync

ndreset的值来自于DMCONTROL寄存器的ndmcontrol位:

其意义在于复位系统中除调试模块之外的其他部分:

ndreset最终用于控制系统其他模块复位:

c. dmactive从outer输出到outerSync;

dmactive的值来自于DMCONTROL寄存器的dmactive位:

用于复位调试模块:

3) io.innerCtrl

io.innerCtrl定义如下:

根据注释,用于从outer传递控制信息到inner。因为其定义中没有方向信息,所以整个结构全部信号值传递的方向是一致的:都是从outer到inner。

Rocket - debug - TLDebugModuleOuterAsync的更多相关文章

  1. Rocket - debug - TLDebugModule

    https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA 简单介绍TLDebugModule中的实现. 1. device device是一个设备描述符,包含 ...

  2. Rocket - debug - TLDebugModuleInner - Hart Bus Access

    https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...

  3. Rocket - debug - Periphery

    https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw 简单介绍Periphery的实现. 1. ExportDebugDMI/ExportDebugJTA ...

  4. Rocket - debug - DebugTransport

    https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...

  5. Rocket - debug - TLDebugModuleInner - ROM Generation

    https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...

  6. Rocket - debug - Example: DMI

    https://mp.weixin.qq.com/s/7suuJ7m2BKCpsHk1K2FzJQ 介绍riscv-debug的使用实例:如何使用DMI. 1. dm Debug Module实现了调 ...

  7. Rocket - debug - Example: Triggers

    https://mp.weixin.qq.com/s/zPNyrBOhsytkRrZTDTEvpw 介绍riscv-debug的使用实例:配置Triggers功能. 1. Trigger Trigge ...

  8. Rocket - debug - Example: Accessing Registers Using Program Buffer

    https://mp.weixin.qq.com/s/8yYLVg-RXX3XX0T431lxeA 介绍riscv debug接口的使用实例:使用Program Buffer读取寄存器. 1. Wri ...

  9. Rocket - debug - Example: Accessing Registers Using Abstract Command

    https://mp.weixin.qq.com/s/RdJzE06mMkh2x__vVj_fEA 介绍riscv debug接口的使用实例:使用抽象命令读取寄存器. 1. Read s0 using ...

随机推荐

  1. E - Petya and Exam CodeForces - 832B 字典树+搜索

    E - Petya and Exam CodeForces - 832B 这个题目其实可以不用字典树写,但是因为之前写过poj的一个题目,意思和这个差不多,所以就用字典树写了一遍. 代码还是很好理解的 ...

  2. react中redux的理解

    定义 redux可以看作是flux的进阶版,主要用于react中公共状态(数据)的管理 redux底层原理 redux有一个createStore方法,这个方法用户创建公共存储空间,createSto ...

  3. 【2020Java最新学习路线】写了很久,这是一份最适合普通大众、科班、非科班的路线

    点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...

  4. 单口RAM、双口RAM、FIFO

    单口与双口的区别在于,单口只有一组数据线与地址线,因此读写不能同时进行.而双口有两组数据线与地址线,读写可同时进行.FIFO读写可同时进行,可以看作是双口.    双口RAM分伪双口RAM(Xilin ...

  5. PHP根据抖音的分享链接来抓包抖音视频

    现在抖音是个很火的短视频平台,上面有许多不错的小视频.今天教大家怎么用PHP技术来获取到抖音上的的内容. 1:打开抖音选中你认为好的视频点击分享,复制链接,然后你会获取到如下的内容: #科比 愿你去的 ...

  6. Python --表达式和运算符

    表达式 由一个或者几个数字或者变量和运算符组合成的一行代码 通常会返回一个结果 运算符 由一个以上的值经过变化得到新值的过程就叫做运算 用于运算的符号称为运算符 运算符的分类: 算数运算符 比较或者关 ...

  7. 应用视觉设计——CSS实现线性渐变效果

    在freeCodeCamp中应用视觉设计的课程中,介绍了一种通过使用CSS属性实现线性渐变效果. 1.线性渐变: background:linear-gredient(gradient-directi ...

  8. 搜索引擎优化(SEO)

    一.SEM SEM(Search Engine Marketing)即搜索引擎营销.SEM是一种新的网络营销模式.SEM所做的就是全面有效地利用所搜引擎来进行网络行销推广.SEM追求最高的性价比,以最 ...

  9. java基础一(标识符、数据类型及注释)

    1.标识符 标识符可以由字母.数字(不能以数字开头).下划线(_).美元符($)组成: 标识符不能包含 @.%.空格等其它特殊字符: 标识符区分大小写: 2.数据类型 int->整型->4 ...

  10. Excel 数据导入至Sqlserver 数据库中 ltrim() 、rtrim() 、replace() 函数 依次空格无效问题

    今天导一些数据从Excel中至Sqlserver 数据库中,在做数据合并去重的时候发现,有两条数据一模一样,竟然没有进行合并: 最后发现有一条后面有个“空格”,正是因为这个“空格”让我抓狂许久,因为它 ...