Rocket - debug - TLDebugModuleInner - Drive Custom Access
https://mp.weixin.qq.com/s/1bIqzDYXM36MIfSsjvvYIw
简单介绍TLDebugModuleInner中的针对Custom的访问。
1. customNode
customNode定义为DebugCustomSink类型的节点:
根据DebugCustomSink的定义,customNode所属的模块为调试模块:
这与customNode所属的模块为TLDebugModuleInner相符。
Custom相关节点到连接图如下,供参考:
2. needCustom
needCustom标志着是否需要生成Custom逻辑:
其中到两个条件为:
a. 包含一个以上的输入边;
b. 包含一个以上的地址可供访问;
customNode代表调试模块,customNode.in代表与被调试模块到连接。这两个条件到意义也就是存在被调试模块,被调试模块存在可被访问到地址。
3. accessRegIsCustom
accessRegIsCustom表示抽象命令访问到寄存器是否属于Custom节点:
其中:
a. 如果customNode没有输入边,也就是没有被调试模块,则直接返回假;
b. 如果存在输入边,则把访问到寄存器地址与输入边中的地址相比较;
这里只比较了customNode.in.head的地址,也就是第一个输入边相对应到模块到地址。难道不能有多个被调试模块吗?
可以有,他们都通过DebugCustomXbar与调试模块相连,所以与调试模块相连到也就只有DebugCustomXbar这一个模块了:
DebugCustomXbar也限定了只有一个输出边连接一个Sink节点:
也就是只有一个调试模块与之相连。
4. goCustom
在检测生成的命令阶段,如果访问到寄存器地址在Custom源节点,那么会进入Custom状态:
否则,进入命令执行状态。也就是命令由Custom相关节点执行。
在Custom状态,设置goCustom为真:
如果custom.ready和custom.valid同时为真,也就是命令执行结束(数据从Custom源节点返回),就进入下一个状态(Waiting)。
5. Drive Custom Access
抽象命令中的寄存器编号就是要访问的地址(custom.addr):
根据地址是否属于Custom源节点(goCustom)确定custom.valid是否为真。
6. abstractDataMem
当数据从Custom源节点返回时,将其存入abstractDataMem中:
参考注释:
Rocket - debug - TLDebugModuleInner - Drive Custom Access的更多相关文章
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - TLDebugModuleInner - Program Buffer Access
https://mp.weixin.qq.com/s/EJVqw7JPjjaib68tENl5AQ 简单介绍TLDebugModuleInner中的Program Buffer Access. 1. ...
- Rocket - debug - TLDebugModuleInner
https://mp.weixin.qq.com/s/jkiHceU0HaJbHGvHiU-QOA 简单介绍TLDebugModuleInner的实现. 1. 引入全局配置 1) cfg 引入Debu ...
- Rocket - debug - TLDebugModuleInner - Abstract Command State Machine
https://mp.weixin.qq.com/s/RcXI8uEHvZHGCvX3DoVR4Q 简单介绍TLDebugModuleInner中处理抽象命令时的状态机. 1. CtrlState 定 ...
- Rocket - debug - TLDebugModuleInner - DMI Register Control and Status
https://mp.weixin.qq.com/s/tI41wu0xaIQ5PRq6F82tNw 简单介绍TLDebugModuleInner中生成DMI控制和状态寄存器使用到的状态. 1. abs ...
- Rocket - debug - TLDebugModuleInner - ROM Generation
https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...
- Rocket - debug - TLDebugModuleInner - Abstract Data
https://mp.weixin.qq.com/s/DOLkEi-_qQt6lWOhJ2hxVQ 简单介绍TLDebugModuleInner中抽象数据寄存器的实现. 1. abstractData ...
- Rocket - debug - TLDebugModuleInner - Abstract Command Decoding & Generation
https://mp.weixin.qq.com/s/0zKSTktxgzo5uCUphqaWSQ 介绍抽象命令的解码和生成. 1. accessRegisterCommandReg accessRe ...
- Rocket - debug - TLDebugModuleInner - Program Buffer
https://mp.weixin.qq.com/s/kjhJJ3moRQzxHt6pJOXEgg 简单介绍TLDebugModuleInner中Program Buffer寄存器的实现. 1. pr ...
随机推荐
- dp cf 20190615
A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...
- G - Island Transport 网络流
题目: In the vast waters far far away, there are many islands. People are living on the islands, and a ...
- 使用 if elseif else 指定条件
nrows = 4; ncols = 6; A = ones(nrows,ncols); 遍历矩阵并为每个元素指定一个新值.对主对角线赋值 2,对相邻对角线赋值 -1,对其他位置赋值 0. for c ...
- Coursera课程笔记----Write Professional Emails in English----Week 1
Get to Know Basic Email Writing Structures(Week 1) Introduction to Course Email and Editing Basics S ...
- 【Hadoop离线基础总结】linux基础增强
linux基础增强 查找命令 grep命令 (print lines matching a pattern) 概述: grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打 ...
- chrom浏览器总是将http请求强制转换成https请求
chrome://net-internals/#hsts 中 Delete domain security policies 输入该站点,将将该站点删除一下就OK. 其他浏览器: Chrome 浏览器 ...
- search(14)- elastic4s-统计范围:global, filter,post-filter bucket
聚合一般作用在query范围内.不带query的aggregation请求实际上是在match_all{}查询范围内进行统计的: GET /cartxns/_search { "aggs&q ...
- 实现es6中的set和map
转载自: https://www.cnblogs.com/hui-fly/p/9459152.html https://blog.csdn.net/roamingcode/article/detail ...
- Kappa(cappa)系数只需要看这一篇就够了,算法到python实现
1 定义 百度百科的定义: 它是通过把所有地表真实分类中的像元总数(N)乘以混淆矩阵对角线(Xkk)的和,再减去某一类地表真实像元总数与被误分成该类像元总数之积对所有类别求和的结果,再除以总像元数的平 ...
- 判断割是否唯一zoj2587
Unique Attack Time Limit: 5 Seconds Memory Limit: 32768 KB N supercomputers in the United State ...