Rocket - debug - Custom
https://mp.weixin.qq.com/s/jkBP6ZjEbgm-SVDpLUMjlA
简单介绍Custom的实现。
1. DebugCustomParams
包含两个参数:
a. addrs: 地址;
b. width: 数据宽度;
2. DebugCustomNull
定义向上游传递的空参数:
3. DebugCustomBundle
定义DebugCustom节点连接所需要的Bundle:
从一个节点的角度看,其定义如下:
其中:
a. 相连节点发送输入地址(addr),以及地址是否合法的标志(valid);
b. DebugCustomBundle所属节点输出是否准备好接收地址的信号(ready);
c. DebugCustomBundle所属节点输出地址对应的数据(data);
4. DebugCustomImp
DebugCustom节点实现:
DUEB参数分别为:DebugCustomParams, DebugCustomNull, DebugCustomParams, DebugCustomBundle。
5. DebugCustomSink
定义下游节点,根据注释,下游节点是调试模块:
6. DebugCustomSource
定义上游节点,根据注释,上游节点是数据源:
7. DebugCustomNexusNode
定义用于连接多个数据源的联系节点:
8. DebugCustomXbar
实现联系节点的LazyModule:
1) diplomacy node
LazyModule DebugCustomXbar中的节点是一个DebugCustomNexusNode:
A. sourceFn:用于把上游参数向下游传递的函数:
a. 若没有上游节点,则返回一个特殊的参数:地址为空,数据宽度为0;
b. 否则,返回去重后的地址,以及最大数据宽度;
B. sinkFn:用于把下游参数向上传递的函数:
这里不需要向上传递任何参数;因为调试模块需要被调试模块的信息,而被调试模块则不需要知道调试模块的信息。
C. 连接图:
2) lazy module
lazy module用于根据输入边和输出边实现Xbar的功能:
A. 输出边只有一个,即一个Xbar上可以连接多个被调试模块,但只连接一个调试模块:
B. 取出上下游连接边:
C. 把sources的地址逐个与sink.addr相比较,并根据前一个比较的结果,输出比对结果:
D. 根据addr选择的source,把地址和地址是否合法的信号输出到对应的source中:
E. 根据选择结果,以及source是否ready来向下游输出ready信号;只有选择的source输出的ready信号为真,才会向sink.ready输出真;
F. 根据选择结果,向调试模块返回数据:
这里应该有点问题:
在Mux(i.ready, i.data, 0.U)中只判断i.ready是不够的,需要判断d & i.ready。因为i.ready是source输出,而多个source的ready可以同时为真,此时返回的result就是多个source的data或在一起,是错误的。
Rocket - debug - Custom的更多相关文章
- Rocket - debug - TLDebugModuleInner - Drive Custom Access
https://mp.weixin.qq.com/s/1bIqzDYXM36MIfSsjvvYIw 简单介绍TLDebugModuleInner中的针对Custom的访问. 1. customNode ...
- How to debug Custom Action DLL
在MSI工程中,经常会遇到这样的情况: MSI 工程需要调用DLL(C++)中的一个函数实现某些特殊或者复杂的功能,通常的做法是在Custom Action 中调用该DLL . 那么在安装过程中,该C ...
- Rocket - debug - Periphery
https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw 简单介绍Periphery的实现. 1. ExportDebugDMI/ExportDebugJTA ...
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - TLDebugModuleInner - ROM Generation
https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...
- 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 - DMI Register Control and Status
https://mp.weixin.qq.com/s/tI41wu0xaIQ5PRq6F82tNw 简单介绍TLDebugModuleInner中生成DMI控制和状态寄存器使用到的状态. 1. abs ...
- Rocket - debug - TLDebugModuleInner - Abstract Command State Machine
https://mp.weixin.qq.com/s/RcXI8uEHvZHGCvX3DoVR4Q 简单介绍TLDebugModuleInner中处理抽象命令时的状态机. 1. CtrlState 定 ...
随机推荐
- 网络流最小割 H - Internship I - Friendship
我觉得这两个最小割都还比较难. 第一个题目大意是给你一个网络,这个网络是由城市和中转站组成,终点是0,给你每一条边的流量, 问,从城市到终点最大流流完之后,是否可以增加一条路上的一条边的容量,使得最大 ...
- 如何优雅的使用Fegin去构造通用的服务调用的API
第一步: 创建一个公共的API服务:命名为api(根据自己实际情况进行命名) <?xml version="1.0" encoding="UTF-8"?& ...
- 07_CSS入门和高级技巧(5)
超级链接美化 1.伪类 同一个超级链接,根据用户的点击情况,有自己样式: 超级链接根据用户点选情况,有4种状态: a:link 没有访问的超级链接 a:visited 已经访问的超级链接 a:hove ...
- 【Hadoop离线基础总结】完全分布式环境搭建
完全分布式环境搭建 服务规划 适用于工作当中正式环境搭建 安装步骤 第一步:安装包解压 停止之前的Hadoop集群的所有服务,并删除所有机器的Hadoop安装包,然后重新解压Hadoop压缩包 三台机 ...
- Istio的流量管理(概念)(istio 系列二)
Istio的流量管理(概念) 目录 Istio的流量管理(概念) 概述 Virtual services 为什么使用virtual service Virtual services举例 hosts字段 ...
- Linux Charger IC 驱动移植总结
Linux Charger IC 驱动移植总结 文章目录 Linux Charger IC 驱动移植总结 1 设备树的基本知识 设备树的概念 设备树的基本结构 compatible属性 举个栗子 2 ...
- [zoj3593]扩展欧几里得+三分
题意:给一个数A,有6种操作,+a,-a,+b,-b,+(a+b),-(a+b),每次选择一种,用最少的次数变成B. 思路:由于不同的操作先后顺序对最后的结果没有影响,并且加一个数与减一个相同的数不能 ...
- docker build报错
docker build 遇到问题 "can not stat ... APPData\Local\Application Data" 解决方法:
- Spring Boot 之 Spring Batch 批处理实践
实践内容 从 MariaDB 一张表内读 10 万条记录,经处理后写到 MongoDB . 具体实现 1.新建 Spring Boot 应用,依赖如下: <!-- Web 应用 --> & ...
- java ->Servlet接口
JavaWeb核心之Servlet Servlet简介 什么是Servlet(控制器的作用) Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给 ...