https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA

 
介绍NodeHandle相关的类。
 
 
 
1. NoHandle
 
顶层类(trait),作为所有NodeHandle的父类型,没有定义特别操作。
 
 
2. InwardNodeHandle
 
 
主要用于实现节点绑定逻辑。
 
1) bind方法
 
委托给InwardNode.bind()实现;
 
2) 与NodeHandle连接
 
 
a. 连接
 
与Chisel3中相同,“:=”的意思为连接,左侧为下游,右侧为上游。上游流出为Outward,下游流入为Inward。
 
b. 多
 
按连接个数和方向,这四个方法分别代表了一对一、一对多、多对一、多对多这四种连接形式。
 
“*”代表连接个数不确定;
 
“*”与“=”的相对位置代表了哪一侧的个数不确定。个数不确定,需要根据实际情况确定(resolve)。
 
一对多是指一个上游节点发出多条连接,连接到下游节点,其形状为星型(star)。最终连接个数由多的一侧,也就是下游节点确定。
 
 
c. 实例
 
引自链接:https://www.lowrisc.org/docs/diplomacy/
 
 
The input crossbar crossbarI has three inwards connections with the three processors. However, there is only one connection with the cache that is set up by :=*. Similarly, the output crossbar has two outwards connections but only one inwards connection with cache set up by :*=. In other words, :=* means the number of connections is defined by the outwards side while :*= means the number of connections is defined by the inwards side.
 
 
d. 级联
 
连接的动作是可以级联的,如:
 
连接方法的返回值为InwardNodeHandle:
 
所以返回值可以作为连接符号的左侧,继续进行级联。
 
以“:=”为例,其方法签名和实现如下:
首先在参数中,把h看做是一个上游节点,要连接到this这一个下游节点;
然后在返回值,把h看做是一个下游节点,供级联时作为下游节点使用;
 
 
e. 类型
 
以“:=”为例,其方法签名如下:
 
InwardNodeHandle本身的参数类型为:
 
“:=”方法又声明了几个方法参数类型:
这些带X的参数类型是h引入的,作为h的DI/UI/EI/BI系列参数使用。
 
h的类型如下:
使用InwardNodeHandle类型的参数类型DI/UI/BI作为NodeHandle定义中的DO/UO/BO,这说明了这个定义使用的是简化模型,也就是上游节点的DO/UO/BO和下游节点的DI/UI/BI是同一个类型。
 
返回值的类型为:
这是h作为inner side的类型。
 
PS. EY为h的输出边,类型可以与this的输入边EI不同。这里不做讨论。
 
 
3) 与OutwardNodeHandle连接
 
上游节点h为OutwardNodeHandle类型,输出为NoHandle,不可级联。
 
 
3. OutwardNodeHandle
 
节点绑定有InwardNodeHandle实现,所以OutwardNodeHandle相对简单。
 
 
4. NodeHandle
 
 
NodeHandle既可以充当InwardNodeHandle也可以充当OutwardNodeHandle。
 
1) 与NodeHandle连接
 
连接后的两个节点组合成为一个整体,以上游节点h的输入为输入,以下游节点this的输出为输出:
 
2) 与OutwardNodeHandle连接
 
因为上游节点是一个OutwardNodeHandle,可以立即为一个只有输出没有输入的节点,所以返回的是一个OutwardNodeHandle,没有输入,以下游节点this的输出为输出:
 
 
5. NodeHandlePair
 
用于组合两个NodeHandle:
 

Rocket - diplomacy - NodeHandle相关类的更多相关文章

  1. Rocket - diplomacy - Node相关类

    https://mp.weixin.qq.com/s/BvK3He3GWon8ywG8Jdmcsg   介绍Node相关的类.   ​​   1. BaseNode   BaseNode是所有节点类的 ...

  2. Android随笔之——Android时间、日期相关类和方法

    今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...

  3. 21 BasicTaskScheduler基本任务调度器(一)——Live555源码阅读(一)任务调度相关类

    21_BasicTaskScheduler基本任务调度器(一)——Live555源码阅读(一)任务调度相关类 BasicTaskScheduler基本任务调度器 BasicTaskScheduler基 ...

  4. 8 延时队列相关类——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...

  5. 4 Handler相关类——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. Handler相关类概述 处理程序相关类一共有三个,其没有派生继承关系,但是其有友元关系和使用关系 ...

  6. MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

    前面讲了模态对话框和非模态对话框,本节来将一种特殊的对话框--属性页对话框. 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面 ...

  7. android 6.0 SDK中删除HttpClient的相关类的解决方法

    一.出现的情况 在eclipse或 android studio开发, 设置android SDK的编译版本为23时,且使用了httpClient相关类的库项目:如android-async-http ...

  8. Android 6.0删除Apache HttpClient相关类的解决方法

    相应的官方文档如下: 上面文档的大致意思是,在Android 6.0(API 23)中,Google已经移除了Apache HttpClient相关的类,推荐使用HttpUrlConnection. ...

  9. List 接口以及实现类和相关类源码分析

    List 接口以及实现类和相关类源码分析 List接口分析 接口描述 用户可以对列表进行随机的读取(get),插入(add),删除(remove),修改(set),也可批量增加(addAll),删除( ...

随机推荐

  1. 12_JavaScript基础入门(2)

    运算符 运算符(Operators,也翻译为操作符),是发起运算的最简单形式. 运算符的分类见仁见智,我们的课程对运算符进行如下分类: 数学运算符(Arithmetic operators)      ...

  2. 构建自己的专用OpenCV----记录一次由applyColorMap()引发的探索

    在编写实际项目的过程中,我需要实现绿色主题的"伪彩色"变换.在目前提供的模板中,只有summer最为接近,但是它的颜色太浅了,看上去不是很清晰.所以我结合ocean和summer两 ...

  3. 设计模式之GOF23原型模式01

    原型模式prototype 原型模式: - 通过new产生一个对象需要非常繁琐的数据准备或者访问权限,则可以使用原型模式,比如如果new对象所需时间过长,可以通过克隆产生相同的副本 - Java中的克 ...

  4. WordPress安装:零基础入门教程

    WordPress安装:零基础入门教程 1主机空间要求要运行 WordPress,主机空间需满足以下条件.不过现在网络上的空间基本都可以,而且还让你随意定制Php和Mysql版本,至于空间和数据库大小 ...

  5. ReactNative报错:Can't find variable: __fbBatchedBridge

    最近开始研究ReactNative,首先根据网上教程 http://www.codeceo.com/article/windows-react-native-android.html 一步一步来.完成 ...

  6. 简单而面试中又常见的知识点:JS执行机制

        在开始讲解之前,我们先来看一段代码: console.log('1'); setTimeout(function() { console.log('2'); process.nextTick( ...

  7. 【比较】粒子群算法PSO 和 遗传算法GA 的相同点和不同点

    目录 PSO和GA的相同点 PSO和GA不同点 粒子群算法(PSO)和遗传算法(GA)都是优化算法,都力图在自然特性的基础上模拟个体种群的适应性,它们都采用一定的变换规则通过搜索空间求解. PSO和G ...

  8. Django数据库表初始化缓存清除

    新建的django项目中没有应用app01??? models中也没有UserInfo表???? 但在migrate是却一直报错!!!!! 产生此种现象的原因: 之前的项目中肯定是用到过应用app01 ...

  9. Java的集合(一)

    转载:https://blog.csdn.net/hacker_zhidian/article/details/80590428 Java集合概况就三个:List.set和map list(Array ...

  10. 实验二、OpenCV图像滤波

    一.题目描述 对下面的图片进行滤波和边缘提取操作,请详细地记录每一步操作的步骤. 滤波操作可以用来过滤噪声,常见噪声有椒盐噪声和高斯噪声,椒盐噪声可以理解为斑点,随机出现在图像中的黑点或白点:高斯噪声 ...