https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg

 
讨论tilelink中使用MaskGen生成mask的用法。
 
1. tilelink中的mask
 
1) channel a/b包含一个mask信号:
 
Byte lane select for messages with data:
这里并没有显示mask信号。可以看到传输数据使用的byte lane与地址是对应的。按照mask的定义,如果整理出来,应该如下表:
 
 
a. The mask is also used for messages without a data payload. Get消息的data域是被忽略的,但是mask仍然要按照address/size去生成。
 
b. When the operation size is smaller than the data bus, the mask should be generated identically to an operation which does carry a data payload.
 
c. For operations which are larger than the data bus, all bits of the mask should be HIGH, although the message remains a single-beat.
 
d. PutPartialData比较特殊,mask中的HIGH比特不需要连续:0xa。
但是size=2^3=8字节,但是却只写了3个字节。a_size定义如下:
可以看到:
- a_size表示的是操作对象的范围(range),也就是说要写的数据从这个里面选;
- 这个写是不是一定写,而是有可能写(possibly write);
 
从以上两点可以看出,PutPartialData写的数据是在a_address/a_size范围内的mask任意为一的位对应的字节。
 
2) mask的实现
 
a. Get
 
使用MaskGen实现:
注意两点:
- address需要跟size对齐,也就是address%size=0;
- mask中为1的比特要连续;
 
实现mask的MaskGen()需要满足这两点。
 
b. PutFullData
 
同样包含Get中的两点:
- address需要跟size对齐,也就是address%size=0;
- mask中为1的比特要连续;
 
所以可以使用MaskGen()实现:
 
a_size表示要写的数据的总字节数;
 
c. PutPartialData
 
- address需要跟size对齐,也就是address%size=0;
- mask中为1的比特不需要连续;
 
其实现没有使用MaskGen(),需要外部实现后传入:
这里也可以看出MaskGen的特点。
 
a_size的意义在上面也分析过了:
- a_size表示的是操作对象的范围(range),也就是说要写的数据从这个里面选;
- 这个写是不是一定写,而是有可能写(possibly write);
 
2. MaskGen
 
从上面的分析可以看出,MaskGen()生成的mask的特点如下:
- address需要跟size对齐,也就是address%size=0;
- mask中为1的比特要连续;
 
在之前对MaskGen(链接:https://mp.weixin.qq.com/s/_aJqf1cFJDK5RVRBhxTWOw)的介绍中,与预期不一致的行,都是因为地址和size不对齐:
 
而注释中地址和大小并没有对齐:
 
这个例子似乎有点问题。
 
 

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

  1. Rocket - tilelink - RegisterRouter

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

  2. Rocket - tilelink - Xbar

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

  3. Rocket - tilelink - WidthWidget

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

  4. Rocket - tilelink - SRAM

    https://mp.weixin.qq.com/s/-z9n6SHyAiK2OE7mOSvC2Q   简单介绍SRAM的实现.   ​​   1. 基本介绍   实现一个支持读写的静态存储器.存取的 ...

  5. Rocket - tilelink - RegionReplicator

    https://mp.weixin.qq.com/s/XZVCdt50tM6lavchGm9GRg   简单介绍RegionReplicator的实现.   ​​   1. 基本介绍   根据mask ...

  6. Rocket - tilelink - RAMModel

    https://mp.weixin.qq.com/s/9ccDTm6HytvfGN5R2CPoAQ   简单介绍RAMModel的实现.   ​​   1. 基本介绍   RAMModel用于定义内存 ...

  7. Rocket - tilelink - HintHandler

    https://mp.weixin.qq.com/s/MHW_aBSL72YNee9bVWWeaw   简单介绍HintHandler的实现.   ​​   1. 基本功能   实现Hint请求的处理 ...

  8. Rocket - tilelink - Fragmenter

    https://mp.weixin.qq.com/s/kNQrhlf33AErK7IzalnUDw   简单介绍Fragmenter的实现.   ​​   1. 基本介绍   用于把上游节点地址空间范 ...

  9. Rocket - tilelink - BankBinder

    https://mp.weixin.qq.com/s/oZCYBdy5glxJQmYKVWvpvA   简单介绍BankBinder的实现.   ​​   1. 基本介绍   A BankBinder ...

随机推荐

  1. Spring官网阅读(十八)Spring中的AOP

    文章目录 什么是AOP AOP中的核心概念 切面 连接点 通知 切点 引入 目标对象 代理对象 织入 Spring中如何使用AOP 1.开启AOP 2.申明切面 3.申明切点 切点表达式 excecu ...

  2. 读CSV文件并写arcgis shp文件

    一.在这里我用到的csv文件是包含x,y坐标及高程.降雨量数据的文件.如下图所示. 二.SF简介 简单要素模型(Simple Feature,SF),是 OGC 国际组织定义的面向对象的矢量数据模型. ...

  3. 【FPGA技巧篇一】FPGA设计的四种常用思想与技巧之一 :乒乓操作

    本文篇章将讨论一下的四种常用 FPGA 设计思想与技巧: 乒乓操作. 串并转换. 流水线操作. 数据接口同步化, 都是 FPGA 逻辑设计的内在规律的体现, 合理地采用这些设计思想能在FPGA设计工作 ...

  4. Day_13【IO流】扩展案例1_读取项目文件内容并去重

    分析以下需求,并用代码实现: 需求: 读取当前项目下的info1.txt 文件内容如下 : aaaaaaaaaaabbbbbbbbbbbbccdefg 要求将数据去重后写回最终效果 : fgdebca ...

  5. RabbitMQ的发布订阅模式(Publish/Subscribe)

    一.发布/订阅(Publish/Subscribe)模式 发布订阅是我们经常会用到的一种模式,生产者生产消息后,所有订阅者都可以收到.RabbitMQ的发布/订阅模型图如下: 1.该模式下生产者并不是 ...

  6. [hdu5375 Gray code]DP

    题意:给一个二进制码,其中有一些位上为'?',对每个问号确定是'0'还是'1',最后以它对应的格雷码来取数,第i位为1则取第i个数,求取得的数的和的最大值. 思路:二进制码B转换成格雷码G的方法是,G ...

  7. AndroidStudio3.6升级后的坑-apk打包

    前段时间尝试了最新版的AndroidStudio3.6,整体来说gradle调试和自带的虚拟机相比较历史版本有了更香的体验. 刚好有个新项目,就直接使用最新版了,这次新版的升级除了保持原有的界面风格, ...

  8. 初识Page Object

    PageObject是UI自动化测试项目开发实践的最佳设计模式之一,它的主要特点体现在对界面交互细节的封装上,使测试用例更加专注于业务的操作,从而提高测试用例的可维护性. 1.认识Page Objec ...

  9. React:JSX 深入

    React入门的的时候,我们(我自己啦)喜欢都跟着例子来,用标签的语法写JSX,比如:<Mycomponent  key={this.props.id}  onClick={this.props ...

  10. 有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13....求出这个数列的第M到N项之和(M>2,N>2,N>M)

    package bianchengti; /* * 有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13.... * 求出这个数列的第M到N项之和(M>2,N>2, ...