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. Queue-PriorityQueue源码解析

    Queue队列通常是先进先出(FIFO),但也有特殊的非FIFO,如本文也分析的PriorityQueue. Queue接口 Queue接口定义的方法: 添加元素接口: add(E e) -> ...

  2. [codeforces-543B]bfs求最短路

    题意:给一个边长为1的无向图,求删去最多的边使得从a到b距离<=f,从c到d距离<=g,a,b,c,d,f,g都是给定的,求最多删去的边数. 思路:反过来思考,用最少的边构造两条从a到b, ...

  3. 使用IDEA远程向伪分布式搭建的Hadoop提交MapReduce作业

    环境 VirtualBox 6.1 IntelliJ IDEA 2020.1.1 Ubuntu-18.04.4-live-server-amd64 jdk-8u251-linux-x64 hadoop ...

  4. Python --函数学习1

    函数 -函数是代码的一种组织形式 -函数应该能完成一项特定的工作,而且一般一个函数完成一项工作 -函数的使用: 函数使用需要先定义 使用函数,俗称调用 pps:1.只是定义的话不会执行 2.def关键 ...

  5. 2018-08-27 jq筛选选择器

    筛选选择器:为了辅助选择器更简便.快速的找到元素: 1.过滤 eq(n) -> 第n个元素(从零开始) $('h1').eq(2) // 第三个h1 first() -> 第一个元素 la ...

  6. 未联网下,在eclipse中编辑xml文件如何自动提示设置

    断网情况下,用eclipse编辑xml文件如何自动提示? 以编辑hibernate中的xml为例: 首先,我们都知道xml提示是引用.dtd文件的. 1.复制这个dtd路径,设置eclipse属性,搜 ...

  7. SpringMVC底层执行原理

    一个简单的HelloSpringMVC程序 先在web,xml中注册一个前端控制器(DispatcherServlet) <?xml version="1.0" encodi ...

  8. flask之CBV模式

    flask_cbv.py ''' flask中的CBV模式: (1)导入views模块: from flask import views (2)定义类,继承views.MethodView类: cla ...

  9. redis主从同步及手动处理故障

    redis主从同步 redis主库机器故障,手动切换主从库

  10. Hbase-二级索引 Hbase+Hbase-indexer+solr (CDH)

    最近一段时间工作涉及到hbase sql查询和可视化展示的工作,hbase作为列存储,数据单一为二进制数组,本身就不擅长sql查询:而且有hive来作为补充作为sql查询和存储,但是皮皮虾需要低延迟的 ...