介绍Chisel与Scala的不同与关联。
 
 
一. 层次高低
 
Chisel是使用Scala语言编写的具体代码。从抽象层次上看,Scala更高。
 
1. 语言与代码
 
Chisel是使用Scala语言编写的代码。
 
2. 语言与代码库
 
Chisel是使用Scala语言编写的代码库。
 
 
二. 范围大小
 
3. 通用语言与领域专用语言
 
Scala是一门通用语言,可用于各个领域编程。
 
Chisel使用Scala实现的领域专用语言(DSL),专门用于硬件建模使用。
 
 
三. 思维方式不同
 
4. 软件编程与硬件建模
 
Scala是一门软件编程语言,其使用基于软件编程思维;
 
Chisel是硬件模型构建语言,其使用基于硬件模型构建思维;
 
软件编程的最小单位为汇编指令;
硬件建模的最小单位为硬件模块;
 
软件编程基于指令执行;
硬件模型基于电磁传播;
 
 
四. Chisel:狭义与广义
 
5. 狭义的Chisel
 
狭义的Chisel是一个使用Scala语言实现的硬件模型构件库,其各个组成部分与硬件模型分别对应。
 
总结如下:
a. Chisel使用的UInt/SInt/Bool/Bits,描述硬件模型中使用的类型,最终落实到Wire/Reg上;
b. Chisel使用PrimOp,对应硬件模型中的各种原子操作,如加减乘除,移位等操作;
c. Chisel使用的":=",对应到硬件模型中的连接,把下游连接到上游,接收上游值的变化(电平变化);
d. Chisel使用when/elsewhen/otherwise,描述硬件模型中的选择逻辑;
 
所有的验证、转换工作都基于硬件模型进行。
 
6. 广义的Chisel
 
广义的Chisel,是一个硬件模型构建方法论(methodology)。
 
包含两个部分:
首先,实现一个硬件模型构件库,用于构建硬件模型;
其次,提高一个层次,使用Scala作为硬件模型生成器;
 
这个层次的提升极大的提高了硬件模型的构建效率。
 
硬件模型在Chisel中的叫法为:Hardware graph;
硬件模型生成器在Chisel中的叫法为电路生成器:Circuit generator;
 
电路生成器源于Verilog的generate。
由于Scala语言的函数式编程方法,而有了极大的提升。
 
 

Chisel3 - Chisel vs. Scala的更多相关文章

  1. Chisel3 - bind - Binding

    https://mp.weixin.qq.com/s/2318e6VJ4wFGpWwBOmTikA   Chisel数据类型(Data)与Module的绑定关系,根据Data的使用方式不同,而有多种绑 ...

  2. Chisel3 - util - Valid

    https://mp.weixin.qq.com/s/L5eAwv--WzZdr-CfW2-XNA   Chisel提供的Valid接口.如果valid为置1,则表明输出的bits有效:反之,则输出无 ...

  3. Chisel3-Intellij IDEA安装Scala插件

    https://mp.weixin.qq.com/s/xTk5ucvSNuwsh8C6E362cg   后续开启RISC-V开发相关内容.   RISC-V开发推荐使用Chisel编程语言.Chise ...

  4. Chisel3 - util - OneHot

    https://mp.weixin.qq.com/s/Jsy8P3m9W2EYKwneGVekiw   独热码相关的电路生成器.   参考链接: https://github.com/freechip ...

  5. Chisel3 - util - MixedVec

    https://mp.weixin.qq.com/s/mO648yx4_ZRedXSWX4Gj2g   可以容纳不同类型的变量的向量.   参考链接: https://github.com/freec ...

  6. Chisel3 - util - Mux

    https://mp.weixin.qq.com/s/TK1mHqvDpG9fbLJyNxJp-Q   Mux相关电路生成器.   参考链接: https://github.com/freechips ...

  7. Chisel3 - util - Lookup

    https://mp.weixin.qq.com/s/g85Si6n37D9PYfR5hEoRQQ     实现一个查找逻辑.   参考链接: https://github.com/freechips ...

  8. Chisel3 - util - Math vs. CircuitMath

    https://mp.weixin.qq.com/s/8lC8vQnBdKW9C39H0QFFkA     对数相关的辅助方法,Math通过软件方法实现,CircuitMath通过硬件方法实现.   ...

  9. Chisel3 - util - LFSR16

    https://mp.weixin.qq.com/s/DSdb4tmRwDTOki7mbyuu9A     实现16位线性反馈移位寄存器.可用于生成简单的伪随机数.     ​​     ​​   参 ...

随机推荐

  1. EChart将timeline图标设置为加号

    一 要实现的效果 二 官方文档 看一下官方文档上,替换symbol的描述: timeline.symbol string [ default: 'emptyCircle' ] timeline标记的图 ...

  2. 一、Spring的控制反转(IOC)学习

    一.控制反转 1.什么是控制反转? 控制反转(Inversion of Control,缩写为IoC),是面向对象中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(D ...

  3. Win32 Sdk 连接Access数据库

    /************************************************************* *** MyWinClass.cpp 创建窗口模板 *** vs2017+ ...

  4. Redux:with React(一)

    作者数次强调,redux和React没有关系(明明当初就是为了管理react的state才弄出来的吧),它可以和其他插件如 Angular, Ember, jQuery一起使用.好啦好啦知道啦.Red ...

  5. mysql小白系列_06 备份与恢复

    1.使用mydumper工具全库备份. 1)源码编译安装 2)全库备份 2.误操作truncate table gyj_t1;利用mysqldump的备份和binlog日志对表gyj_t1做完全恢复. ...

  6. POJ1930

    题目链接:http://poj.org/problem?id=1930 题目大意: 给一个无限循环小数(循环节不知),要求你输出当该小数所化成的最简分数分母最小时所对应的最简分数. AC思路: 完全没 ...

  7. 存储层技术:JDBC、Hibernate、Mybatis三者之间的比较学习

    JDBC     Hibernate Mybatis    (Java  DataBase Connnection) 是通过JAVA访问数据库 对JDBC的轻量封装 像操作对象操作数据库 对SQL的轻 ...

  8. 六、表达式:前缀&&后缀

    count为运算后的值.

  9. SSE系列内置函数中的shuffle函数

    SSE 系列内置函数中的 shuffle 函数 邮箱: quarrying@qq.com 博客: http://www.cnblogs.com/quarryman/ 发布时间: 2017年04月18日 ...

  10. Docker搭建VS Code Server ,设置访问密码随时随地写代码

    今天在N1盒子上安装了 VS Code Server,简单的记录一下. 安装docker Docker一键安装脚本 $ sudo wget -qO- https://get.docker.com/ | ...