Rocket - debug - Periphery
https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw
简单介绍Periphery的实现。
1. ExportDebugDMI/ExportDebugJTAG
这是两个参数,用于进行参数查找:
ExportDebugDMI表示导出DMI接口;
ExportDebugJTAG表示导出JTAG接口;
2. DebugIO
定义系统调试模块接口:
其中:clockeddmi和systemjtag只有一个存在:
3. HasPeripheryDebug
HasPeripheryDebug是一个trait,引入该trait,即添加一个调试模块:
1) debug
生成一个调试模块:
将其连接到cbus上:
cbus是外设控制总线:
cbus.coupleTo则是把cbus.outwardNode作为上游节点,连接到TLFragmenter节点上,再连接到debug.node节点上:
debug.node即是dmInner.tlNode:
核心通过这一个连接访问ROMBASE等地址空间,示意图如下:
2) debugCustomXbar
用于连接custom sink/source节点:
示意图如下:
目前debugCustomXbar没有连接上游节点。
3) sb2tl
把sb2tl.node连接到fbus上:
示意图如下:
4) getOMDebugModule
用于获取调试设备的描述信息:
4. HasPeripheryDebugModuleImp
用于实现与调试模块的接口连接逻辑。根据要导出的接口类型,有两种情况:
1) 导出DMI接口
直接导出DMI接口,DTM由外部自行实现:
示意图如下:
2) 导出JTAG接口
引入一个DTM模块,外部直接使用JTAG接口连接:
instantiateJtagDTM中创建一个DTM模块,并与调试模块进行相关连接:
示意图如下:
3) 其他连接
连接ndreset/dmactive/debugUnavail信号:
示意图如下:
5. SimDTM
如果导出的是DMI接口,则使用SimDTM模块仿真一个DTM模块,与DMI接口相连接:
6. SimJTAG
如果导出的是JTAG接口,则使用SimJTAG仿真一个JTAG接口。
1) io
定义SimJTAG模块的IO接口:
其中:jtag是标准的JTAG接口:
2) connect
把SimJTAG的IO接口与系统debug接口相连接:
其中主要的是连接jtag接口,时钟和复位信号:
注:这里tbclock/tbreset中的tb,应该是testbench的意思。
7. Debug
Debug对象用于辅助连接调试模块,或者关闭调试模块:
1) 连接调试模块
根据导出的两种不同的接口,调用不同的连接方法:
在TestHarness中调用:
2) 关闭调试模块
如果不需要调试模块,则可以选择将其关闭:
8. 总体结构图
BaseSubSystem中调试模块部分的总体结构图如下(可以单独打开图片查看):
Rocket - debug - Periphery的更多相关文章
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - DebugTransport
https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...
- Rocket - debug - TLDebugModule
https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA 简单介绍TLDebugModule中的实现. 1. device device是一个设备描述符,包含 ...
- 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 ...
- Rocket - debug - TLDebugModuleInnerAsync
https://mp.weixin.qq.com/s/Xf4VFTHIDFh1NHmfwlTX3w 简单介绍TLDebugModuleInnerAsync的实现. 1. dmInner dmInner ...
随机推荐
- NPM验证邮件,手机接受验证时出现service unavailable
NPM验证邮件,手机接受验证时出现service unavailable 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 问题原 ...
- Matlab矩阵总结
- Spring官网阅读(十三)ApplicationContext详解(下)
文章目录 BeanFactory 接口定义 继承关系 接口功能 1.HierarchicalBeanFactory 2.ListableBeanFactory 3.AutowireCapableBea ...
- java基础 之 从Class.forName()跟.class的区别看类的初始化
代码如下: public class Test { public static void main(String[] args) throws Exception { System.out.print ...
- Spring Cloud 学习 之 Spring Cloud Ribbon(基础知识铺垫)
文章目录 1.负载均衡: 2.RestTemplate详解: xxxForEntity/xxxForObject:主要介绍get跟post exchange: execute源码分析: 1.负载均衡: ...
- 王颖奇 20171010129《面向对象程序设计(java)》第十三周学习总结
实验十三 图形界面事件处理技术 实验时间 2018-11-22 1.实验目的与要求 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作机制: (3) 掌握事件处理的基 ...
- 【Hadoop离线基础总结】MapReduce案例之自定义groupingComparator
MapReduce案例之自定义groupingComparator 求取Top 1的数据 需求 求出每一个订单中成交金额最大的一笔交易 订单id 商品id 成交金额 Order_0000005 Pdt ...
- 带你理解【JavaScript】中的继承机制
前文 总所周知,继承是所有OO语言中都拥有的一个共性.在JavaScript中,它的继承机制与其他OO语言有着很大的不同,尽管ES6为我们提供了像面向对象继承一样的语法糖,但是其底层依然是构造函数,所 ...
- Android广播机制(2)
目录 发送自定义广播 发送标准广播 步骤 跨进程广播 步骤 发送有序广播 使用本地广播 实例 本地广播的优势 发送自定义广播 发送标准广播 步骤 1.定义一个广播接收器来接收此广播,新建MyBroad ...
- Python 简明教程 --- 1,搭建Python 环境
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 人生苦短,我用Python. -- 龟叔T恤 Python 是一门解释型语言,所以要想运行Pytho ...