https://mp.weixin.qq.com/s/7h9Bdb0x4_clyigMU_0B7Q

讨论DebugCustomXbar中的几个问题。

1. sources/sourceParams

node.in.unzip解出来输入边中的BI, EI参数,分别是sources和sourceParams:

其中,sourceParams的类型为Seq[DebugCustomParams],其中包含了每一条输入边的地址列表(addrs:List[Int])和数据宽度;

2. decoded

decoded是对sourceParams中的每一个元素做map操作:

而sourceParams中的每一个元素代表了一个输入边的参数,这个输入边的参数中包含了多个地址,每一个地址都与sink.addr进行比较,最后输出一个结果(Bool)。

sourceParams中的所有元素,亦即所有边的比较结果(Bool)集合在一起,成为decoded(Seq[Bool])。也就是说,decoded中的每一个掩码表示了sink.addr与相应输入边中地址参数比对的结果,即sink.addr是否选择输入边连接的source。

3. sourceParams与dSeq

diplomacy node的sourceFn中的dSeq也是Seq[DebugCustomParams]:

这里的dSeq与sourceParams是什么关系?相同吗?

sourceFn是把当前节点即DebugCustomXbar节点看到的上游节点的参数,转换为下游节点看到的DebugCustomXbar节点的参数。

即dSeq是DebugCustomXbar节点看到的上游节点的参数,DebugCustomXbar节点根据这组参数生成lazy module。所以lazy module中的sourceParams,其实就是这sourceFn中的dSeq。

sourceFn把dSeq中全部的地址集合到一起进行了去重操作,然后传递给下游节点(调试模块)。所以这里默认dSeq中不同的source节点可能包含重复的地址。

综合这两点:decoded中可能存在两个或更多个为真的值。从这个结论出发,会导致很多问题。

4. source.addr & source.valid

可能存在多个source.valid为真,进而sink.addr输入到source.addr中被认为合法:

5. sink.ready

可能存在多个d & i.ready为真,进而向sink.ready中输入真:

6. sink.data

即便把i.ready更改为d & i.ready,也可能存在多个i.data输出相或在一起,从而导致sink.data错误:

7. 总结

这里存在两种情况:

a. 存在一个假设,即上游节点的地址不互相重复,那么sourceFn中去重的代码多余;

b. 上游节点的地址可以互相重复,那么decoded需要使用带优先级的掩码(参考仲裁器的实现);

8. 勘误及补充:

sourceFn中有限制各个source节点的地址不重复:require(all_addrs.size == all_addrs.distinct.size, "Different Custom sources can't use the same addresses.")。

Rocket - debug - DebugCustomXbar的更多相关文章

  1. Rocket - debug - DebugCustomXbar再讨论

    https://mp.weixin.qq.com/s/YPFa6kE6I_Ud_MJGvzmS-g 简单讨论输入边/输出边Bundle的方向. 1. 上游节点的地址不重复 仔细看了一下sourceFn ...

  2. Rocket - debug - Periphery

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

  3. Rocket - debug - TLDebugModuleInner - Hart Bus Access

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

  4. Rocket - debug - DebugTransport

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

  5. Rocket - debug - TLDebugModule

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

  6. Rocket - debug - TLDebugModuleInner - Drive Custom Access

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

  7. Rocket - debug - TLDebugModuleInner - ROM Generation

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

  8. Rocket - debug - Custom

    https://mp.weixin.qq.com/s/jkBP6ZjEbgm-SVDpLUMjlA 简单介绍Custom的实现. 1. DebugCustomParams 包含两个参数: a. add ...

  9. Rocket - debug - Example: DMI

    https://mp.weixin.qq.com/s/7suuJ7m2BKCpsHk1K2FzJQ 介绍riscv-debug的使用实例:如何使用DMI. 1. dm Debug Module实现了调 ...

随机推荐

  1. 从零开始学习docker之在docker中搭建redis(集群)

    docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...

  2. 【FPGA篇章三】FPGA常用语句:Verilog基本语法要素

    欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 Verilog中总共有十九种数据类型,我们先介绍四个最基本的数据类型,他们是: reg型.wire型.integer型.parameter型 ...

  3. JPA---Spring-data-JPA---Hibernate

    Spring Data JPA--搭建环境 版本---maven  3.6.3 <properties> <spring.version>5.2.5.RELEASE</s ...

  4. Python求差集

    本月月初在职员工表(20来列,身份证.银行卡号等),本月离职员工表(10来列,计时.计件等),不考虑本月入职员工表,求下月月初在职员工表. Python,import pandas as pd,两个p ...

  5. 浅析Spring中AOP的实现原理——动态代理

    一.前言   最近在复习Spring的相关内容,刚刚大致研究了一下Spring中,AOP的实现原理.这篇博客就来简单地聊一聊Spring的AOP是如何实现的,并通过一个简单的测试用例来验证一下.废话不 ...

  6. 第一行Kotlin系列(二)Intent隐式显式跳转及向下传值

    1.Intent显式跳转页面 val button5 = findViewById<Button>(R.id.mButton5) button5.setOnClickListener { ...

  7. [hdu5351]找规律,大整数模板

    题意:f(1)="a",f(2)="b",f(i)=f(i-1)+f(i-2),"+"表示连接符.给定n,m,求f(n)的前m个字符的“ne ...

  8. [hdu2594]kmp水题

    题意:求最长的a的前缀同时满足是b的后缀,把a,b连在一起,kmp跑一下,迭代next直到长度小于等于a,b长度的最小值为止,即为答案. #pragma comment(linker, "/ ...

  9. 微信浏览器中禁止下拉出现网页由xxx.xxxxx.com提供,QQ浏览器X5内核提供技术支持这个

    直接上代码 window.onload = function(){ document.body.addEventListener('touchmove', function (e) { e.preve ...

  10. Angular知识点复习

    Angular第三方UI组件库(github搜“awesome angular ")-----lonic 概述:是一个第三方的适用于移动端App的UI组件库,可以与Angular/React ...