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

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

  1. Rocket - debug - TLDebugModuleInner - Hart Bus Access

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

  2. Rocket - debug - DebugTransport

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

  3. Rocket - debug - TLDebugModule

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

  4. Rocket - debug - TLDebugModuleInner - ROM Generation

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

  5. Rocket - debug - Example: DMI

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

  6. Rocket - debug - Example: Triggers

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

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

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

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

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

  9. Rocket - debug - TLDebugModuleInnerAsync

    https://mp.weixin.qq.com/s/Xf4VFTHIDFh1NHmfwlTX3w 简单介绍TLDebugModuleInnerAsync的实现. 1. dmInner dmInner ...

随机推荐

  1. 【Hadoop离线基础总结】MapReduce 社交粉丝数据分析 求出哪些人两两之间有共同好友,及他俩的共同好友都有谁?

    MapReduce 社交粉丝数据分析 求出哪些人两两之间有共同好友,及他俩的共同好友都有谁? 用户及好友数据 A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E ...

  2. HMM-前向后向算法与实现

    目录 基本要素 HMM三大问题 概率计算问题 前向算法 后向算法 前向-后向算法 基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,.. ...

  3. 【SPOJ – SUBST1】New Distinct Substrings 后缀数组

    New Distinct Substrings 题意 给出T个字符串,问每个字符串有多少个不同的子串. 思路 字符串所有子串,可以看做由所有后缀的前缀组成. 按照后缀排序,遍历后缀,每次新增的前缀就是 ...

  4. Java元注解@Retention规则

    @Retention是java当中的一个元注解,该元注解通常都是用于对软件的测试 1.适用方式:     @Retention(RetentionPolicy.RUNTIME)     @interf ...

  5. JVM入门--类加载器

    一.基础架构 概览 我们平时说的栈是指的Java栈,native method stack 里面装的都是native方法 细节架构图 二.类加载器 1.类的加载 方法区并不是存放方法的区域,其是存放类 ...

  6. 计算机组成及系统结构-第九章 输入输出(I/O)设备

    输入输出(I/O)设备 一.外部设备概述 二.输入设备 1.键盘 2.光笔.图形板和画笔(或游动标)输入 3.鼠标.跟踪球和操作杆输入 4.触摸屏 5.图像输入设备 6.条形码 7.光学字符识别(OC ...

  7. 弹性式数据集RDD

    弹性式数据集RDD ​ 一.RDD简介二.创建RDD        2.1 由现有集合创建        2.2 引用外部存储系统中的数据集        2.3 textFile & who ...

  8. spark机器学习从0到1聚类算法 (十)

      一.概念 1.1.定义 按照某一个特定的标准(比如距离),把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不再同一个簇内的数据对象的差异性也尽可能的大. 聚类属于典型 ...

  9. mysql小白系列_04 binlog(未完)

    mysql打开.查看.清理binlog 1.开启日志 log_bin=/var/lib/mysql/mysql-bin mysql> show variables like '%log_bin% ...

  10. IDEA提高开发效率的7个插件

    IDEA提高开发效率的7个插件 1. 多行编辑 先来体验一下从xml文件拷贝字段新建实体对象 一般我们为了新建多表连接后映射的 ResultMap ,耗费不少时间,那么我们就来试一试这个多行编辑 表字 ...