zoukankan      html  css  js  c++  java
  • Rocket

    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对象:
     
  • 相关阅读:
    arcgis要素转json
    GeoJSON.js:221 Uncaught Error: Invalid GeoJSON object.
    深入学习SAP UI5框架代码系列之一:UI5 Module的懒加载机制
    SAP Spartacus简介
    金庸逝世两周年纪念日:一个失意程序员的呓语
    一个用于SAP UI5学习的脚手架应用,没有任何后台API的依赖
    通过最简单的button控件,深入学习SAP UI5框架代码系列之零
    如何使用SAP UI5 SDK网站查询指定控件的属性如何使用
    一行代码将SAP CDS view数据以ALV的方式输出
    演讲预告:一个月的住院经历,我悟到了哪些和程序员职场发展相关的心得
  • 原文地址:https://www.cnblogs.com/wjcdx/p/11478418.html
Copyright © 2011-2022 走看看