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中调试模块部分的总体结构图如下(可以单独打开图片查看):

参考链接:https://docs.qq.com/pdf/DUXVXcG54S3RHZExV

最新文章

  1. C# Redis Server分布式缓存编程 --网络转载
  2. Codeforces Round #163 (Div. 2)
  3. PIC32MZ tutorial -- Change Notification
  4. JMeter简介
  5. 深入浅出ES6(八):Symbols
  6. css改变谷歌浏览器的滚动条样式
  7. OC与Swift的区别二(常量、变量、运算符)
  8. SQL语句の循环添加数据
  9. UIPickerView 地区解析 -- 全国省、市、区 plist 解析 -- 读取UIPickerView 当前显示内容
  10. Netty笔记--ByteBuf释放
  11. Yii中常用路径(转)
  12. 怎么样eclipse发达国家多重聚合关系maven项目和使用git管理
  13. Spring in Action --- 第二章 装配Bean
  14. Nginx负载均衡反向代理 后端Nginx获取客户端真实IP
  15. Strut、Spring、Hibernate如何实现资源整合(SSH)呢?
  16. 在 Mac 中安装 MySQLdb (Python mysql )
  17. 高级DirectDraw
  18. 使用location.href跳转页面在火狐浏览器中报错404
  19. codeforces29A
  20. Spring boot多模块(moudle)中的一个注入错误(Unable to start embedded container; nested exception is org)

热门文章

  1. Constant Palindrome Sum(贪心*RMQ)
  2. 你知道Spring是怎么解析配置类的吗?
  3. python学习之循环语句的使用
  4. 【Spark】一张图看懂Spark的运行架构,以standAlone模式为例
  5. X-CTF(REVERSE高级) 666
  6. JSP+Servlet+JDBC+mysql实现的学生成绩管理系统
  7. 笨办法学习python-ex51自我理解笔记
  8. mysql安装之后需要调的参数
  9. Bootstrap组件的使用
  10. 查找算法----二分查找与hash查找