https://mp.weixin.qq.com/s/0nzkV4K1osNEQzrtITYxmw

 
介绍Edges中first/last/done的实现。
 
 
1. firstlastHelper
 
辅助函数,用于确定burst中的第一个、最后一个、是否已完成、第几个beat。
a. beats1 = beats - 1,比如如果需要4个beats,则beats1 = 3;
b. beats是2的幂: beats = 2^size / 2^log2Ceil(beatBytes);
c. first:counter为0时,是burst的第一个beat;
d. last:counter为1或总数为1时,是burst的最后一个beat;
e. done:最后一个beat输出时,标志着burst完成;
f. count:当前beat的编号:count = beats1 & ~counter1
 
下面简单推理一下,并非证明。
可以看到,只有当beats为2的幂,beats1低位全1时,这种算法才成立。
 
2. first
 
判断是否burst的第一个beat:
 
3. last
 
判断是否burst的最后一个beat:
 
4. done
 
判断burst是否传输完成:
 
5. firstlast
 
同时取出first/last/done三个标志:
 
6. count
 
取出当前beat的编号:
 
7. addr_inc
 
把返回的beat编号转换为地址的增加值,方便后续传输:
 
8. inFlight
 
判断总线上是否有消息(message)在传输,以及正在进行传输(请求/响应对)的数目。
 
 
1) flight
 
记录当前传输的数目:
a. client.endSourceId为请求端的数目;
b. 3为能发起请求通道(channel)的数目,即a/c/e三个channel;
c. 所以3*client.endSourceId为可以同时存在的传输的总数目;
 
2) bce
 
判断是否支持bce通道,即是否符合TL-C标准:
 
3) first/last
 
获取burst的beat标志:
 
4) request/response
 
判断是request还是response:
 
5) inc
 
只有请求的第一个beat时,才增加传输数目:
 
6) dec
 
只有响应的最后一个beat时,才减少传输数目:
 
7) next_flight
 
PopCount统计inc/dec中比特值为1的位的个数,与当前值相加减,即为下一个值。
 
8) 返回
 
返回当前值和下一个时钟周期的值:
 

Rocket - tilelink - first的更多相关文章

  1. Rocket - tilelink - RegisterRouter

    https://mp.weixin.qq.com/s/DaJhf7hEoWsEi_AjwSrOfA   简单介绍RegisterRouter的实现.   ​​   1. 基本介绍   实现挂在Tile ...

  2. Rocket - tilelink - Nodes

    https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA   简单介绍tilelink对Diplomacy Nodes的实现.   ​​   1. TLImp ...

  3. Rocket - tilelink - AsyncCrossing

    https://mp.weixin.qq.com/s/v8plWCBD8vZkxykjJe4TCg   介绍AsyncCrossing的实现,主要介绍如何实现diplomacy Node和LazyMo ...

  4. Rocket - tilelink - mask

    https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg   讨论tilelink中使用MaskGen生成mask的用法.   1. tilelink中的ma ...

  5. Rocket - tilelink - Parameters

    https://mp.weixin.qq.com/s/1I6DcONr0Mg7xiX8F1C7SQ   简单介绍TileLink相关的参数实现(具体问题暂时不展开,后续用到时再做分析).   ​​   ...

  6. Rocket - tilelink - Bundles

    https://mp.weixin.qq.com/s/jrqBg2AIpQogBrpwNXjmwg   简单介绍Bundles文件中对TileLink规范(1.7.1)的定义. 参考链接:https: ...

  7. Rocket - tilelink - TLBusWrapper.to

    https://mp.weixin.qq.com/s/jSnhBzU5_ayQCg5fWAcx-g 简单介绍TLBusWrapper.to()的实现.主要介绍确定this{...}对应代码的过程. 1 ...

  8. Rocket - tilelink - BusWrapper

    https://mp.weixin.qq.com/s/03BvgTNQtD75Guco6gUGQg   简单介绍BusWrapper的实现.   1. HasTLBusParams   定义SoC的挂 ...

  9. Rocket - tilelink - Xbar

    https://mp.weixin.qq.com/s/UXFHYEQaYotWNEhshro68Q   简单介绍Xbar的实现.   ​​   1. 基本介绍   用于为Xbar的输入和输出连接生成内 ...

  10. Rocket - tilelink - WidthWidget

    https://mp.weixin.qq.com/s/pmJcsRMviJZjMwlwYw6OgA   简单介绍WidthWidget的实现.   ​​   1. 基本介绍   用于设定与上游节点连接 ...

随机推荐

  1. LateX的简单字体设置(颜色,居中,大小等)

    \(\color{red}{Ⅰ.文本单行居中}\) $$\text{我是蒟蒻}$$ \[\text{我是蒟蒻} \] \(\color{Black}{Ⅱ.设置字体颜色}\) $$\color{Purp ...

  2. 第3章:关系数据库标准语言 SQL

    目录 第3章:关系数据库标准语言 SQL 3.1.SQL概述 3.1.1.历史 3.3.2.SQL语言的功能 3.3.3.SQL的特点 3.3.4.基本概念 3.2.学生-课程数据库 3.3.数据定义 ...

  3. Java模拟UDP通信

    目录 Java基础:模拟UDP通信 1.一次发送,一次接收 1.1.发送方 1.2.接收方 2.多次发送,多次接收 2.1.发送方 2.2.接收方 3.模拟双方通信 3.1.发送方的线程 3.2.接收 ...

  4. 在web项目中使用shiro(认证、授权)

    一.在web项目中实现认证 第一步,在web项目中导入shiro依赖的包 第二步,在web.xml中声明shiro拦截权限的过滤器 <filter> <filter-name> ...

  5. c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind

    一.符号修饰与函数签名 1.符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名.GCC的C++符号修饰方法如下: 1)所有符号都以_z开头 2)名字空间的名字 ...

  6. 什么情况下不能使用 Java 泛型

    1. 前言 Java 1.5 引入了泛型来保证类型安全,防止在运行时发生类型转换异常,让类型参数化,提高了代码的可读性和重用率.但是有些情况下泛型也是不允许使用的,今天就总结一下编码中不能使用泛型的一 ...

  7. 错误 在应用程序级别之外使用注册为 allowDefinition='MachineToApplic

    错误 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的.如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误. 如果 ...

  8. Java并发II

    Java并发 J.U.C图 一.线程的安全性 当多个线程访问某个类的时候,不管运行环境采用何种方式调度或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都可以表现出正确的行 ...

  9. 10大Web漏洞扫描工具

    Web scan tool 推荐10大Web漏洞扫描程序 Nikto 这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目(包括3500个潜在的危险文件/CGI,以及超过900个服务器版 ...

  10. C++语言字符串处理函数

    C++语言提供了比C语言更丰富的字符串处理功能.它可以在字符串上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作.使用这些现成的功能可以大大减少我们的编程的负担. 输入和输出的字符串函数,如p ...