• Rocket


    https://mp.weixin.qq.com/s/HgUpTCh0D94Uymj5qQk-ag

     
    介绍NodeImp相关基础类的实现。
     
     
    1. 类图
     
     
    节点实现(NodeImp)的基础类主要有:
    a. InwardNodeImp:内向节点实现;
    b. OutwardNodeImp: 外向节点实现;
    c. NodeImp:节点实现,同时混入了InwardNodeImp和OutwardNodeImp;
    d. SimpleNodeImp:简单节点实现;
     
     
    2. InwardNodeImp
     
    内向节点实现,其定义如下:
     
    a. edgeI: 把DI和UI参数转变为一个EI,即Edge的类型;
    b. bundleI:把Edge(EI)转变为一个Bundle类型(BI);
    c. monitor:目前没有使用;
    d. render:定义如何渲染Edge(EI)的逻辑,比如确定颜色(colour);
    e. mixI:从UI到UI,把node的信息加入到UI参数中;
     
     
    3. OutwardNodeImp
     
    外向节点实现,其定义如下:
    a. edgeO:把DO和UO参数转变为一个EO,即Edge类型;
    b. bundleO:把Edge(EO)转变为一个与下游节点连接的实际Bundle类型(BO);
    c. mixO:从DO到DO,把node的信息加入到DO参数中;
    d. getI:目前没有使用;
     
     
    4. NodeImp
     
    节点实现,其定义如下:
    a. 同时混入InwardNodeImp和OutwardNodeImp,意味着既是内向节点实现,也是外向节点实现;
    b. 把DI/DO, UI/UO, BI/BO统一为D,U,B类型;
    c. EI/EO仍然是分开的;
     
     
    5. SimpleNodeImp
     
    简单节点实现,其定义如下:
     
    相较于NodeImp,这里把EI/EO也统一为E。
     
    并且提供了初步的实现:
    a. 把edgeI/edgeO都通过调用edge()实现,因为EI/EO都是E;
    b. 把bundleI/bundleO都通过bundle()实现,因为BI/BO都是B;
     
     
    6. 实例:AXI4Imp
     
     
    1) AXI4Imp继承自SimpleNodeImp,所以只有一组D/U/E/B参数,没有再进一步对其做I/O区分;即:
     
    D: AXI4MasterPortParameters
    U: AXI4SlavePortParameters
    E: AXI4EdgeParameters
    B: AXI4Bundle
     
    2) edge()实现:根据D/U和参数p,生成一个Edge:
    其中包含一个bundle成员变量;
     
    3) bundle()实现:根据Edge的信息,返回一个AXIBundle:
     
    4) 实现mixI()/mixO():把node加入到nodePath中;
  • 相关阅读:
    ::before和::after伪元素的用法
    JS中map、some、every、filter方法
    C++多线程,互斥,同步
    RAII
    Proxy 代理
    Decorator 装饰
    TCP和UDP的9个区别是什么
    谈谈自己对面向对象的理解
    C++11多线程
    std::move
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10440504.html
Copyright © 2020-2023  润新知