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中;
原文地址:https://www.cnblogs.com/wjcdx/p/10440504.html