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. request中跟路径有关的api的分析

    最近重在研究struts的源码,其中涉及到了request中的几个api,看了文档后还是觉得不清楚,所以在自己原来的工程中 测试了一下各个api的具体效果.在这里跟大家分享一下. 这是我具体测试的代码 ...

  2. python学习之列表的定义以及增删改查

    列表定义: >>> name['lily','lucy','tom'] >>> nums = [11,22,33,'100','lily'] #python中的列表 ...

  3. STM32F767ZI NUCLEO144 基于CubeIDE快速开发入门指南

    刚入手的NUCLEO-F767ZI:整合官网资源,理清思路,便于快速进行快发: 文章目录 1 NUCLEO 系列 2 NUCLEO-F767ZI 3 环境搭建 3.1 Keil/IAR安装 3.2 C ...

  4. 深入理解CSS定位—浮动模型

    前面我们讲到了绝对定位,在这篇文章中,我们将讲到3种定位模型中的浮动模型.主要参考 张鑫旭在慕课网的 深入理解float 那些年我们一起清过的浮动---by 一丝丝凉 精通CSS 注意:第二小节基本参 ...

  5. 设计者模式之GOF23命令模式

    命令模式Command 将一个请求封装为一个对象,从而使我们可用不同的请求对客户参数化:对请求排队或者记录请求日志,以及支持可撤销的操作.也称之为:动作Action模式,事务transaction模式 ...

  6. Golang遍历删除数组

    Golang 做数字切片 package main import "fmt" /*遍历删除数组示例*/ func main() { //定义一个数组 a1 := []int{1, ...

  7. C# 数据操作系列 - 6 EF Core 配置映射关系

    0. 前言 在<C# 数据操作系列 - 5. EF Core 入门>篇中,我们简单的通过两个类演示了一下EF增删改查等功能.细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端 ...

  8. 简单的Java实现Netty进行通信

    使用Java搭建一个简单的Netty通信例子 看过dubbo源码的同学应该都清楚,使用dubbo协议的底层通信是使用的netty进行交互,而最近看了dubbo的Netty部分后,自己写了个简单的Net ...

  9. lb的keepalive问题

    lb的keepalive问题 0. keepalive 大家都很清楚他的用意了,就是为了减少3次握手,设置一个timeout,比如说20s ,在20s内不请求,连接还是保持着,这时候请求过来,不需要重 ...

  10. DRF认证组件

    1.DRF认证组件之视图注册用法(自定义简单使用) settings.py配置 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.a ...