Chisel数据类型(Data)与Module的绑定关系,根据Data的使用方式不同,而有多种绑定类型。
 
参考链接:
 
1. Binding
 
类型继承图如下:
其中:
a. interface指代traint;
b. 箭头意思为继承(extends);
 
可以看到这些绑定中,有:
a. 受控(constrained)和不受控的绑定;
b. 只读绑定;
c. 顶层绑定、子绑定;
d. 直连(Wire)绑定和寄存器(Reg)绑定;
e. 字面量(Literal)绑定,操作绑定;
f. 还有不关心(DontCare)的绑定;
 
2. 绑定相关的异常
 
分别为:
a. ExpectedChiselTypeException: A function expected a Chisel type but got a hardware object
b. ExpectedHardwareException: A function expected a hardware object but got a Chisel type
c. MixedDirectionAggregateException: An aggregate had a mix of specified and unspecified directionality children
d. RebindingException: Attempted to re-bind an already bound (directionality or hardware) object
 
 
3. requireIsHardware vs. requireIsChiselType
 
Hardware跟Chisel type并不是互斥的。事实上,两者都是针对类Data而言的。差别只在于是否绑定。
 
Data是Chisel中的基本数据类型,Bits/SInt/UInt/Bool/Aggregate都是其子类。这些数据变量(variable)的容器只有两种:线和寄存器。如果把数据变量放到容器中,连接到hardware graph中,这个数据变量就是hardware的一部分,requireIsHardware(dataVariable)就是真。反之,如果Data类型的数据变量只是一个变量,而没有连接到hardware graph中,则就只是一个孤立的chisel type的数据变量,而非hardware的一部分。
 
所以,这两个命名实际上并不贴切,反而注释里面就很好,requireIsBound/requireIsUnBound,或者更详细一点,requireIsBoundIntoHardwareGraph/requireIsNotBoundIntoHardwareGraph。
 
 
 

Chisel3 - bind - Binding的更多相关文章

  1. Chisel3 - bind - Wire, Reg, MemPort

    https://mp.weixin.qq.com/s/AxYlRtAXjd55eoGX5l1W-A   模块(Module)从输入端口(input ports)接收输入,经过内部实现的转换逻辑,从输出 ...

  2. Chisel3 - bind - PortBinding

    https://mp.weixin.qq.com/s/NaInHsJgOwG03BLNF-wlxQ   介绍Module输入输出端口如何进行绑定.   ​​     1. IO()   在定义一个模块 ...

  3. Chisel3 - bind - Data

    https://mp.weixin.qq.com/s/ENJVkz88sGgyODRNCu9jhQ   介绍Data类中的binding的定义和用法.   Binding stores informa ...

  4. Chisel3 - bind - Op, ReadOnly, 左值

    https://mp.weixin.qq.com/s/F_08jKFMoX9Gf_J_YpsDpg   两个数据变量进行某个操作(op),产生一个输出,这个输出存在一个匿名变量中.这个匿名变量就是以O ...

  5. UWP开发之Mvvmlight实践四:{x:bind}和{Binding}区别详解

    {x:bind}是随着UWP被推出而被添加的,可以说是Win10 UWP开发专有扩展.虽然 {x:Bind} 缺少{Binding} 中的一些功能,但它运行时所花费的时间和使用的内存量均比 {Bind ...

  6. Data Binding in WPF

    http://msdn.microsoft.com/en-us/magazine/cc163299.aspx#S1   Data Binding in WPF John Papa Code downl ...

  7. 小程序 之eval替代方案(Binding.js)

    一.下载 链接:https://pan.baidu.com/s/1D6vNSSBZI22_K1BzLEXpbg提取码:of6g 修改binding.js中的window.bind=binding为如下 ...

  8. 关于vue指令(directive)

    1.指令的注册 指令跟组件一样需要注册才能使用,同样有两种方式,一种是全局注册: Vue.directive('dirName',function(){ //定义指令 }); 另外一种是局部注册: n ...

  9. KendoUI 用下来的小总结

    Kendoui Aspnetmvc * 引用jquery.1.10以上 * 1.项目引用 Kendo.Mvc.dll 2.页面引用 @using Kendo.Mvc.UI; 3.Name和 HtmlA ...

随机推荐

  1. 你真的会用Flutter日期类组件吗

    Flutter系统提供了一些日期选择类组件,比如DayPicker.MonthPicker.YearPicker.showDatePicker.CupertinoDatePicker等,其中前4个为M ...

  2. C# 数据操作系列 - 0. 序言

    0. 前言 在上一个系列中,我们初步浏览了一下C#的基础知识.这句话的意思就是C#基础知识系列完结了,撒花.当然,并不是因为C#已经讲完了.正是因为我们轻轻地叩开了那扇门,才能看到门后面那瑰丽的世界. ...

  3. apache反向代理和负载均衡

    正向代理:正如我们用的游戏加速代理,大多的个人PC把请求发给正向代理服务器,代理服务器通常配置高端的带宽,替我们请求相应的服务 负载均衡中的反向代理:通常意义上,是一个请求转发的代理.类似一个收发室的 ...

  4. NDK clang编译器的一个bug

    NDK clang编译器的一个bug 问题代码 float32_t Sum_float(float32_t *data, const int count) { float32x4_t res = vd ...

  5. 【Java基础总结】Java基础语法篇(上)

    Java基础语法 思维导图 一.Java语言介绍 1.Java应用平台 JavaSE(Java Platform Standard Edition):开发普通桌面和商务应用程序,是另外两类的基础 Ja ...

  6. Java三大特征:封装 继承 多态

    内部类:成员内部类.静态内部类.方法内部类.匿名内部类. 内部类:定义在另外一个类里面的类,与之对应,包含内部类的外部类被称为外部类. 内部类的作用:(1)内部类提供了更好的封装,可以把内部类隐藏在外 ...

  7. Docker知识点整理

    目录 1. Docker简介 1.1 Docker是什么 1.2 在隔离的容器中运行软件 1.3 分发容器 2. Docker镜像 2.1 Docker镜像简介 2.2 Docker镜像常见操作 2. ...

  8. indexDB解决过的难题

    我第一次使用indexDB是1年前(2018年10月),运用这个黑科技,解决过3个异常棘手的问题(如果不是indexDB 几乎找不到其他解决方案)所以我经常强调,前端一定要学indexDB! 难题一: ...

  9. PHP中面向对象特性实现

    PHP近些年来成为全球最流行的网页编程语言,该语言以弱类型.易兼容.门槛低.开发快.功能强著称,且听别人这么说,我在有了c和c#基础后学习PHP过程中也并不是很顺利,该语言的一些特殊的语法规则又是让我 ...

  10. 死磕synchronized底层实现

    点赞再看,养成习惯,微信搜索[三太子敖丙]第一时间阅读. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. 前言 ...