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的更多相关文章

  1. Rocket - debug - TLDebugModule

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

  2. Rocket - debug - TLDebugModuleInner - Hart Bus Access

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

  3. Rocket - debug - Periphery

    https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw 简单介绍Periphery的实现. 1. ExportDebugDMI/ExportDebugJTA ...

  4. Rocket - debug - DebugTransport

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

  5. Rocket - debug - TLDebugModuleInner - ROM Generation

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

  6. Rocket - debug - Example: DMI

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

  7. Rocket - debug - Example: Triggers

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

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

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

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

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

随机推荐

  1. (三)Redis &分布式锁

    1 Redis使用中的常见问题和解决办法 1.1 缓存穿透 定义:缓存系统都是按照key去缓存查询,如果不存在对应的value,就应该去DB查找.一些恶意的请求会故意查询不存在的key,请求量很大,就 ...

  2. Spring Cloud学习 之 Spring Cloud Ribbon(执行流程源码分析)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 分析: 总结: 分析: ​ 在上篇文章中,我们着重分析了RestTempla ...

  3. java web程序员微信群

    关注微信公众号"程序员成长日志",回复关键字"java"扫码进群 本群主要为大家解决工作中遇到的问题遇到的问题发到群里大家集思广益平时可以瞎扯不定期红包

  4. web概念简述,HTML学习笔记

    今日内容 1. web概念概述 2. HTML web概念概述 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务 ...

  5. [hdu5400 Arithmetic Sequence]预处理,容斥

    题意:http://acm.hdu.edu.cn/showproblem.php?pid=5400 思路:预处理出每个点向左和向右的最远边界,从左向右枚举中间点,把区间答案加到总答案里面.由与可能与前 ...

  6. Centos 编译带调试信息的libevent

    libevent编译过程 查看libevent文档即可 解决cmake编译出来的可执行文件没有调试信息(该方法未实验,暂时对cmake不熟悉) SET(CMAKE_BUILD_TYPE "D ...

  7. Navicat15 for Mysql激活教程

    1.下载Navicat Premium Navicat15链接:http://www.navicat.com.cn/download/navicat-premium,选择相应版本,这里选择window ...

  8. 开源电影项目源码案例重磅分析,一套代码发布小程序、APP平台多个平台

    uni-app-Video GitHub地址:https://github.com/Tzlibai/uni-app-video 一个优秀的uni-app案例,旨在帮助大家更快的上手uni-app,共同 ...

  9. 「雕爷学编程」Arduino动手做(37)——MQ-3酒精传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  10. 取经四人组SQL

    一.表结构与数据 1.create table user1 (id int not null,user_name varchar(20) not null,over varchar(20) defau ...