https://mp.weixin.qq.com/s/03BvgTNQtD75Guco6gUGQg

 
简单介绍BusWrapper的实现。
 
1. HasTLBusParams
 
定义SoC的挂载点相关的宽度信息:
a. beatBytes:一个时钟周期最大能请求的字节数;
b. blockBytes:(推测)一次请求(可以包含多个beat)最大能请求的字节数;
 
其他的通过这两个参数生成:
a. beatBits:把beatBytes换算成位数;
b. blockBits:把blockBytes换算成位数;
c. blockBeats:最大的请求包含多少个beat;
d. blockOffset:为block中的每个字节编址所需要的位数;
 
限制条件:
a. beatBytes需要是2的幂;
b. blockBytes需要是2的幂;
 
2. TLBusWrapper
 
对总线(Bus)进行包装,是一个LazyModule:
 
1) 类参数
 
a. params:HasTLBusParams类型,传入基本宽度信息;
b. busName:总线名称;
 
2) 基本宽度信息
 
 
3) inwardNode/outwardNode/Edge
 
 
4) unifyManagers
 
合并能力一致的manager的地址集合:
 
5) crossHelper
 
生成跨越时钟域的Helper:
 
6) to/from
 
 
a. to是指outwardNode在body中使用输出边连接到某个节点;
 
b. from是指inwardNode在body中使用输入边连接到某个节点;
 
7) coupleTo/coupleFrom
 
 
coupleTo/coupleFrom与to/from类似,只是把outwardNode作为参数传入。
 
这样避免了与TLBusWrapper的继承关系:
a. 使用to/from方法的类,需要继承TLBusWrapper类,才能访问到outwardNode/inwardNode;
b. 使用coupleTo/coupleFrom的类,则不需要继承TLBusWrapper类,因为outwardNode/inwardNode作为参数传入;
 
8) crossToBus/crossFromBus
 
a. crossToBus:outwardNode跨时钟域输出连接到参数中指定的bus;
b. crossFromBus:inwardNode跨时钟域输入连接到参数中指定的bus;
 
3. CanAttachTLSlaves
 
可以连接下游节点。使用该trait的类需要继承自TLBusWrapper:
 
1) toSlave
 
outwardNode输出到gen生成的slave:
 
2) toVariableWidthSlaveNodeOption
 
outwardNode输出到参数传入的node:
 
3) toVariableWidthSlaveNode
 
 
4) toVariableWidthSlave
 
可变宽度(VariableWidth)是指与不同下游节点连接边的数据总线宽度可以不同,所以这里使用TLFragmenter为Bus处理不同数据宽度的下游连接。(TLFragmenter向上传递下游节点参数的时候,并不改变其beatBytes参数,所以Bus看到的是下游节点的原始的数据总线宽度,可能是不相同的。)
 
5) toFixedWidthSlaveNode
 
固定宽度(FixedWidth)是指与不同下游节点连接边的数据总线宽度都相同,所以这里使用TLWidthWidget为Bus提供统一的数据总线宽度(beatBytes)。(TLWidthWidget改变项上传递的参数中的beatBytes参数,告诉Bus所有与之连接的下游节点的数据总线宽度都是beatBytes。)
 
6) toFixedWidthSlave
 
这里gen是一个call-by-name参数:
 
7) toFixedWidthSingleBeatSlaveNode
 
略,未使用。
 
8) toFixedWidthSingleBeatSlave
 
略,未使用。
 
9) toLargeBurstSlave
 
略,未使用。
 
10) toFixedWidthPort
 
输出到一个Port:
 
4. CanAttachTLMasters
 
可以连接上游节点。使用该trait的类需要继承自TLBusWrapper:
 
1) fromMasterNode
 
gen是一个TLOutwardNode:
 
2) fromMaster
 
gen是一个call-by-name参数,用于生成TLOutwardNode:
 
3) fromPort
 
gen生成的是一个port:
 
4) fromCoherentMaster
 
gen生成的是一个Coherent Master:
 
5. HasTLXbarPhy
 
使用该特征引入一个Xbar对象:
 

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

  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 - Xbar

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

  9. Rocket - tilelink - WidthWidget

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

随机推荐

  1. react中dangerouslySetInnerHTML使用

    在react中,通过富文本编辑器进行操作后的内容,会保留原有的标签样式,并不能正确展示. 在显示时,将内容写入__html对象中即可.具体如下: <div dangerouslySetInner ...

  2. Python Web自动化测试入门与实战,从入门到入行

    Python Web自动化测试入门与实战 购买地址 · 京东:https://item.jd.com/69239480564.html   天猫:https://detail.tmall.com/it ...

  3. 【系列】Python编程思想(1):Python简介与开发环境搭建

    李宁老师的 开始学习.   本系列文章深入介绍了Python的各种技术,堪称是目前最全的Python教程.主要目的是让读者可以了解Python的各种核心技术,包括各种Python函数库.本教程使用Py ...

  4. C++内存管理学习笔记(3)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  5. DVWA-反射型XSS

    0x01 XSS介绍 XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器 ...

  6. layui select下拉菜单联动

    做的比较简单,先从后台直接把第一级菜单输出,然后点击二级菜单的时候再动态展示 <div class="layui-inline"> <label class=&q ...

  7. 【蓝桥杯C组】备赛基础篇之前缀和算法

    算法介绍: 设a为数组,a[i]中储存的是前i 个数(包括自己)的总和,相当于我们中学学过的前N项和,那么,弄成这样的好处是什么呢?假如我们要多次访问一段区间的总和,难道每次都加一次进行重复运算吗?? ...

  8. percona 5.6的安装

    yum 安装, 1 如果已经安装过mysql 的东西,先卸载了.yum remove mysql* 包括 /etc/my.cnf 这个东西卸载的时候不会删除. mv /etc/my.cnf /etc/ ...

  9. spark机器学习从0到1基本的统计工具之(三)

      给定一个数据集,数据分析师一般会先观察一下数据集的基本情况,称之为汇总统计或者概要性统计.一般的概要性统计用于概括一系列观测值,包括位置或集中趋势(比如算术平均值.中位数.众数和四分位均值),展型 ...

  10. day05:数组与字典常识(20170217)

    #1:数组功能的使用:print ("a4A".isdecimal()) #print ("18".isdigit()) #判断是否是数字print (&quo ...