Rocket - debug - TLDebugModuleOuterAsync
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的更多相关文章
- Rocket - debug - TLDebugModule
https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA 简单介绍TLDebugModule中的实现. 1. device device是一个设备描述符,包含 ...
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - Periphery
https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw 简单介绍Periphery的实现. 1. ExportDebugDMI/ExportDebugJTA ...
- Rocket - debug - DebugTransport
https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...
- Rocket - debug - TLDebugModuleInner - ROM Generation
https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...
- Rocket - debug - Example: DMI
https://mp.weixin.qq.com/s/7suuJ7m2BKCpsHk1K2FzJQ 介绍riscv-debug的使用实例:如何使用DMI. 1. dm Debug Module实现了调 ...
- Rocket - debug - Example: Triggers
https://mp.weixin.qq.com/s/zPNyrBOhsytkRrZTDTEvpw 介绍riscv-debug的使用实例:配置Triggers功能. 1. Trigger Trigge ...
- Rocket - debug - Example: Accessing Registers Using Program Buffer
https://mp.weixin.qq.com/s/8yYLVg-RXX3XX0T431lxeA 介绍riscv debug接口的使用实例:使用Program Buffer读取寄存器. 1. Wri ...
- Rocket - debug - Example: Accessing Registers Using Abstract Command
https://mp.weixin.qq.com/s/RdJzE06mMkh2x__vVj_fEA 介绍riscv debug接口的使用实例:使用抽象命令读取寄存器. 1. Read s0 using ...
随机推荐
- SpringBoot系列(十四)集成邮件发送服务及邮件发送的几种方式
往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静 ...
- 一分钟html页面倒计时可精确到秒
<!doctype html> <html> <head> <meta charset="utf-8"> </head> ...
- 配置类为什么要添加@Configuration注解呢?
配置类为什么要添加@Configuration注解呢? 本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 推荐阅读: Spring官网阅读 | 总结篇 Spring ...
- 20184302 2019-2020-2 《Python程序设计》实验一报告
20184302 2019-2020-2 <Python程序设计>实验一报告 课程:<Python程序设计> 班级: 1843 姓名: 李新锐 学号:20184302 实验教师 ...
- lrzsz-神一样的上传下载工具
yum list lrzsz rz sz filename
- ip变动时 wordpress 需要修改一个东西。
搞了大半天,还把mysql 重装了一遍,装的过程中还有这样那样的问题.直到今天总算把网页搞正常了. 主机从6楼搬下来以后,ip就变了.但是很奇怪,用新ip 去访问,能访问,但总觉得很卡的样子.然后会跳 ...
- Django操作cookie实例
cookie项目文件: templates模板: login.html {% load static %} <!DOCTYPE html> <html lang="en& ...
- python3.x 基础一
1.python 格式化print #/usr/bin/env python #-*- coding: utf-8 -*- #Author:jenvid.yang # 连接符号+,可以连接多个变量或者 ...
- Hbase-二级索引 Hbase+Hbase-indexer+solr (CDH)
最近一段时间工作涉及到hbase sql查询和可视化展示的工作,hbase作为列存储,数据单一为二进制数组,本身就不擅长sql查询:而且有hive来作为补充作为sql查询和存储,但是皮皮虾需要低延迟的 ...
- WARN: Establishing SSL connection without server’s identity verification is not recommended
问题 使用Spring JDBC 连接 MySQL时,出现如下警告: WARN: Establishing SSL connection without server's identity verif ...