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 ...
随机推荐
- 解密C语言编译背后的过程
我们大部分程序员可能都是从C语言学起的,写过几万行.几十万行.甚至上百万行的代码,但是大家是否都清楚C语言编译的完整过程呢,如果不清楚的话,我今天就带着大家一起来做个解密吧. C语言相对于汇编语言是一 ...
- Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API 上
一,引言 上一节讲到Azure AD的一些基础概念,以及Azure AD究竟可以用来做什么?本节就接着讲如何在我们的项目中集成Azure AD 包含我们的API资源(其实这里还可以在 SPA单页面应用 ...
- c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind
一.符号修饰与函数签名 1.符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名.GCC的C++符号修饰方法如下: 1)所有符号都以_z开头 2)名字空间的名字 ...
- [hdu4714 Tree2cycle]树形DP
题意:给一棵树,删边和加边的代价都为1,求把树变成一个圈所花的最小代价. 思路:对原树进行删边操作,直到将原树分成若干条链,然后通过在链之间添加边形成圈,由于删边和加边一一对应,且最后需要额外一条边连 ...
- [hdu4301]DP
题意:给一个2*n的矩形块,求把它分成k个连通块的方法数.(有公共边即视为联通) 思路:由于宽度只有2,于是很容易设计状态使问题满足阶段性以及无后效性.具体来说,令dp[i][j][0]和dp[i][ ...
- OpenStack黄金十年:我与OpenStack的故事
导读:从2010年到2020年,OpenStack项目整整走过了十个春夏秋冬.不管是OpenStack基金会,还是积极参与OpenStack社区的厂商.企业乃至开发者,想必都有肺腑之言想对OpenSt ...
- CODING 敏捷实战系列课第三讲:可视化业务分析
业务分析处在开发过程的上游,提高业务分析的质量,可以减少后续开发.测试和集成过程中的反复确认,场景遗漏.采用可视化的业务分析工具箱可以大幅度避免文字版的业务需求描述所带来的不够完整,有误解等问题.CO ...
- Mysql 常用函数(10)- strcmp 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html strcmp 的作用 比较两个字符串的顺序是否完全 ...
- JTextpane 添加行号
最近项目需求,需要在JTextPane上添加行号等信息,网上找了好久只找到JTextArea添加行号信息,copy网上的程序研究了下,发现自己改改就可以让JTextPane显示行号! 代码: pack ...
- python之感知器-从零开始学深度学习
感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...