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

  1. Rocket - debug - TLDebugModuleInner - Drive Custom Access

    https://mp.weixin.qq.com/s/1bIqzDYXM36MIfSsjvvYIw 简单介绍TLDebugModuleInner中的针对Custom的访问. 1. customNode ...

  2. How to debug Custom Action DLL

    在MSI工程中,经常会遇到这样的情况: MSI 工程需要调用DLL(C++)中的一个函数实现某些特殊或者复杂的功能,通常的做法是在Custom Action 中调用该DLL . 那么在安装过程中,该C ...

  3. Rocket - debug - Periphery

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

  4. Rocket - debug - TLDebugModuleInner - Hart Bus Access

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

  5. Rocket - debug - TLDebugModuleInner - ROM Generation

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

  6. Rocket - debug - DebugTransport

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

  7. Rocket - debug - TLDebugModule

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

  8. Rocket - debug - TLDebugModuleInner - DMI Register Control and Status

    https://mp.weixin.qq.com/s/tI41wu0xaIQ5PRq6F82tNw 简单介绍TLDebugModuleInner中生成DMI控制和状态寄存器使用到的状态. 1. abs ...

  9. Rocket - debug - TLDebugModuleInner - Abstract Command State Machine

    https://mp.weixin.qq.com/s/RcXI8uEHvZHGCvX3DoVR4Q 简单介绍TLDebugModuleInner中处理抽象命令时的状态机. 1. CtrlState 定 ...

随机推荐

  1. dp D. Caesar's Legions

    https://codeforces.com/problemset/problem/118/D 这个题目有点思路,转移方程写错了. 这个题目看到数据范围之后发现很好dp, dp[i][j][k1][k ...

  2. 使用JDBC连接oracle数据库

    需要jar包:ojdbc6.jar

  3. 网站主机技术+linux教程

    一.Linux 云服务器 自己安装服务器还是麻烦了些,现在一般都推荐大家使用云服务器,比较方便,价格也不贵. 目前市场上的云服务器很多,这边比较下腾讯云跟阿里云的服务器优惠活动,现在看来腾讯云性价比会 ...

  4. Python:日薪工资计算

    劳动者离职,当天要结清工资,实际操作是当天算清,三日内结清.有的公司省人力和吃利息,统一计算,统一下月月底发放. 有时要验算下离职工资,用Python操作一番,输入计时天数.请假小时.加班小时.基本工 ...

  5. ApplicationInsights迁移国内躺的坑

    由于之前有段时间访问国际版的Application Insights实在是慢,而且又不是每个人都有梯子,然后国内版大概在去年(2019)六七月左右已经上线,想着也有一段时日了,要么就迁了吧. 然后实际 ...

  6. [hdu5521 Meeting]最短路

    题意:有N个点,给定M个集合,集合Si里面的点两两之间的距离都为Ti,集合里面的所有点数之和<=1e6.有两个人分别在1和N处,求1个点使得两个人到这一点距离的最大值最小 思路:这题是裸的最短路 ...

  7. 配置类为什么要添加@Configuration注解呢?

    配置类为什么要添加@Configuration注解呢? 本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 推荐阅读: Spring官网阅读 | 总结篇 Spring ...

  8. mysql批量导入删除

    批量导入 <insert id="extractOrderBaseHis">INSERT INTO `odr_order_base_his`(`order_base_i ...

  9. 使用ultraISO制作U盘制作系统盘提醒:设备忙,请退出所有在运行的应用。

    U盘很久没用,今天重装系统用ultraISO做系统盘提示如下: 本人解决方法如下:打开设备管理器,磁盘.看看磁盘是不是有200M的EFI没有格掉 因为磁盘管理没有权限格U盘,网上找个工具,我随手找个d ...

  10. JMeter基于HTML测试报告的生成

    1第一步: 下载ant,搭建ant环境(path的环境变量) 在path中添加ANT_HOME\bin 验证是否搭建成功Lcmd中输入ant 提示这个说明搭建成功. 第二步: 1.jmerer的目录C ...