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. 王颖奇 20171010129《面向对象程序设计(java)》第十六周学习总结

    实验十六  线程技术 实验时间 2018-12-8 理论部分: 并发⚫ 线程的概念⚫ 中断线程⚫ 线程状态⚫ 多线程调度⚫ 线程同步 1.线程的概念 程序是一段静态的代码,它是应用程序执行的蓝本. 进 ...

  2. Java for 嵌套循环

    嵌套循环 可以是for循环 while循环也可以是do-while循环  这三着进行组合嵌套 循环思路:先执行外层循环,内层循环作为外层循环的循环体,直到内层循环执行完毕,再次计算外层循环,根据条件决 ...

  3. 【matlab 基础篇 01】快速开始第一个程序(详细图文+文末资源)

    快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 文章目录 1 软件安装 2 打开软件 3 编写程序 3.1 基础步骤 3.2 添加PATH 3.3 命令行模式 4 ...

  4. [codeforces 200 E Tractor College]枚举,扩展欧几里得,三分

    题目出自 Codeforces Round #126 (Div. 2) 的E. 题意大致如下:给定a,b,c,s,求三个非负整数x,y,z,满足0<=x<=y<=z,ax+by+cz ...

  5. 【基准测试】BenchmarkDotNet介绍

    BenchmarkDotNet 概述 BenchmarkDotNet helps you to transform methods into benchmarks, track their perfo ...

  6. 微信小程序中,如何阻止多次点击单击事件

    在微信小程序中,有自制对话框用于提交数据,但是会出现用户连续点击,多次提交数据的情况. //.wxml <view class="acertain" bindtap=&quo ...

  7. SQL拦截器

    一.拦截SQL 1.slow log 2.general log 3.mycat sql拦截器 二.mycat sql拦截器 1.配置server.xml # 1.5可用 <system> ...

  8. mysql基础1:yum安装mysql

    1.下载yum源并安装http://dev.mysql.com/downloads/repo/yum/.wget https://dev.mysql.com/get/mysql57-community ...

  9. elment新增el-select的全选功能

    不废话,效果如图 代码实现 平生不爱啰嗦,功能如上已实现.

  10. MySQL(7)— 索引

    七.索引 MySQL官方对索引的定义为:索引(Index)是帮助 MySQL 高效 获取数据的数据结构. 7-1.索引的分类 主键索引 (primary key) 唯一的标识,主键不可重复,只能有一个 ...