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. 网络流最小割 H - Internship I - Friendship

    我觉得这两个最小割都还比较难. 第一个题目大意是给你一个网络,这个网络是由城市和中转站组成,终点是0,给你每一条边的流量, 问,从城市到终点最大流流完之后,是否可以增加一条路上的一条边的容量,使得最大 ...

  2. 如何优雅的使用Fegin去构造通用的服务调用的API

    第一步: 创建一个公共的API服务:命名为api(根据自己实际情况进行命名) <?xml version="1.0" encoding="UTF-8"?& ...

  3. 07_CSS入门和高级技巧(5)

    超级链接美化 1.伪类 同一个超级链接,根据用户的点击情况,有自己样式: 超级链接根据用户点选情况,有4种状态: a:link 没有访问的超级链接 a:visited 已经访问的超级链接 a:hove ...

  4. 【Hadoop离线基础总结】完全分布式环境搭建

    完全分布式环境搭建 服务规划 适用于工作当中正式环境搭建 安装步骤 第一步:安装包解压 停止之前的Hadoop集群的所有服务,并删除所有机器的Hadoop安装包,然后重新解压Hadoop压缩包 三台机 ...

  5. Istio的流量管理(概念)(istio 系列二)

    Istio的流量管理(概念) 目录 Istio的流量管理(概念) 概述 Virtual services 为什么使用virtual service Virtual services举例 hosts字段 ...

  6. Linux Charger IC 驱动移植总结

    Linux Charger IC 驱动移植总结 文章目录 Linux Charger IC 驱动移植总结 1 设备树的基本知识 设备树的概念 设备树的基本结构 compatible属性 举个栗子 2 ...

  7. [zoj3593]扩展欧几里得+三分

    题意:给一个数A,有6种操作,+a,-a,+b,-b,+(a+b),-(a+b),每次选择一种,用最少的次数变成B. 思路:由于不同的操作先后顺序对最后的结果没有影响,并且加一个数与减一个相同的数不能 ...

  8. docker build报错

    docker build 遇到问题 "can  not stat ... APPData\Local\Application Data" 解决方法:

  9. Spring Boot 之 Spring Batch 批处理实践

    实践内容 从 MariaDB 一张表内读 10 万条记录,经处理后写到 MongoDB . 具体实现 1.新建 Spring Boot 应用,依赖如下: <!-- Web 应用 --> & ...

  10. java ->Servlet接口

    JavaWeb核心之Servlet Servlet简介 什么是Servlet(控制器的作用) Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给 ...