0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

chisel(一)初识

学FPGA,慢慢来 2019-08-16 16:08 次阅读

这个夏天,一个很奇妙的机会,突然触碰到一个全新的东西,那就是Chisel。首先感谢 _iChthyosaur的博客 https://blog.csdn.net/qq_34291505/article/details/86744581给予的平台让我第一次接触到这个新鲜的东西,我决定继续开始自己的学习之旅,这个系列的博客也不会是简单的转述,还是有自己的思考,初次接触一定还是会有很多理解上的问题,希望大家共同讨论共同进步。


初次接触Chisel,自然先去了解一下这个东西是什么东西


Chisel是什么?


Chisel(读作[ˈtʃi:zɔːl]),全名ConstructingHardwarein aScalaEmbeddedLanguage,是由伯克利开发的硬件构建语言,开源。


官网:https://chisel.eecs.berkeley.edu/index.html


下面是官网上列出的一些特性:


硬件构造语言(非HLS)


嵌入在Scala编程语言中


抽象的数据类型和接口


层次化+面向对象+功能化构造


用Scala中的标记来高度参数


多时钟域


大量的标准库,包括浮点单元


针对ASICFPGA产生低层次的Verilog代码


github开源,BSD License


什么叫硬件构建语言?是来代替Verilog/SystemVerilog的吗?


Chisel可以简单的理解成高度抽象的、高度参数化的Verilog生成器,利用Scala语言的语法糖,来快速高效的开发硬件设计。设计完成后,自动生成Verilog,再经由传统的数字IC设计方法(逻辑综合、APR)变成芯片


我们注意几点:


Chisel是基于Scala,也可以说Chisel是用Scala语言写的针对硬件开发的库。用Chisel语言做设计就是在写Scala语言的程序。有点类似UVM是SystemVerilog语言的验证框架库。


Chisel的应用专注在前端设计,提高设计的效率。


生成的Verilog是低层次的,也就是类似门级的。


目前仍然通过DC或者Genus来综合。


与HLS有明显区别,不能直接变成工艺相关的门级电路。也许以后会增加这种功能,得看相关EDA的发展。


那Chisel相比Verilog有什么优势?


抽象程度高、高度参数化


前端设计周期缩短


可以走敏捷开发流程


除了可以生成Verilog,还可以生成C/CPP。


都说Chisel开发快,那具体有哪些语法特性?


各种变量类型可以转换


位宽可以自动推断


与Verilog一样可以方便的取位和拼接


加减法可以防溢出


可以检查敏感信号列表,防止生成latch


可以以黑盒子的方式调用Verilog,或者以in-line的方式嵌入Verilog


灵活高效的接口定义,再也不需要AUTOARG


可以定义多套不同的实现,比如FPGA和ASIC定义不同的RAM


可以处理多时钟域,处理异步信号的同步


而这样介绍Chisel:


Chisel (Constructing Hardware In a Scala Embedded Language) is a hardware construction language embedded in the high-level programming language Scala. At some point we will provide a proper reference manual, in addition to more tutorial examples. In the meantime, this document along with a lot of trial and error should set you on your way to using Chisel. Chisel is really only a set of special class definitions, predefined objects, and usage conventions within Scala, so when you write Chisel you are actually writing a Scala program that constructs a hardware graph. However, for the tutorial we don't presume that you understand how to program in Scala. We will point out necessary Scala features through the Chisel examples we give, and significant hardware designs can be completed using only the material contained herein. But as you gain experience and want to make your code simpler or more reusable, you will find it important to leverage the underlying power of the Scala language. We recommend you consult one of the excellent Scala books to become more expert in Scala programming.


首先Chisel是含于高级语言Scala之中,而且 Chisel实际上只是Scala中的一组特殊类定义,预定义对象和使用约定,因此当您编写Chisel时,您实际上正在编写构建硬件图的Scala程序


Through the tutorial, we format commentary on our design choices as in this paragraph. You should be able to skip the commentary sections and still fully understand how to use Chisel, but we hope you'll find them interesting.


We were motivated to develop a new hardware language by years of struggle with existing hardware description languages in our research projects and hardware design courses. Verilog and VHDL were developed as hardware simulation languages, and only later did they become a basis for hardware synthesis. Much of the semantics of these languages are not appropriate for hardware synthesis and, in fact, many constructs are simply not synthesizable. Other constructs are non-intuitive in how they map to hardware implementations, or their use can accidently lead to highly inefficient hardware structures. While it is possible to use a subset of these languages and still get acceptable results, they nonetheless present a cluttered and confusing specification model, particularly in an instructional setting.


However, our strongest motivation for developing a new hardware language is our desire to change the way that electronic system design takes place. We believe that it is important to not only teach students how to design circuits, but also to teach them how to design circuit generators ---programs that automatically generate designs from a high-level set of design parameters and constraints. Through circuit generators, we hope to leverage the hard work of design experts and raise the level of design abstraction for everyone. To express flexible and scalable circuit construction, circuit generators must employ sophisticated programming techniques to make decisions concerning how to best customize their output circuits according to high-level parameter values and constraints. While Verilog and VHDL include some primitive constructs for programmatic circuit generation, they lack the powerful facilities present in modern programming languages, such as object-oriented programming, type inference, support for functional programming, and reflection.


Instead of building a new hardware design language from scratch, we chose to embed hardware construction primitives within an existing language. We picked Scala not only because it includes the programming features we feel are important for building circuit generators, but because it was specifically developed as a base for domain-specific languages.


对于如何使用Chisel表达


While Chisel focuses on binary logic, Chisel can support analog and tri-state wires with the Analog type - see Datatypes in Chisel.


We focus on binary logic designs as they constitute the vast majority of designs in practice. Tri-state logic are poorly supported standard industry flows and require special/controlled hard macros in order to be done.



在说Chisel之前首先说Scala语言,Scala是一门基于JVM运行的语言,他与JAVA语言相互兼容,Scala也是一门面向对象的函数式语言。


而现在对于主流的硬件描述语言还是Verilog,而Verilog一直以来也是有开发效率低下的弊病。后来对于这个的问题的讨论结果是对Verilog进行改良,也就出现了Verilog的后续标准——SystemVerilog,但是由于它只是用于验证。但是当时除了改良还有一部分人主张把语言转移到软件语言,(C++、Java),支持C++的诞生了SystemC,而对于Chisel就是支持Java的那部分人创造出的


是由加州大学伯克利分校的研究团队发布的一种新型硬件语言。据团队成员之一Krste Asanovic教授介绍,早在30多年前还没有硬件描述语言的时候,他们就已经开始构想这样一种语言了。最开始Chisel是基于Ruby的,但是后来发现Scala更适合构建Chisel。因为Scala有诸多特性适合描述电路,比如它是静态语言,以编译期为主,适合转换成Verilog/VHDL。再比如它的操作符即方法、柯里化、纯粹的面向对象、强大的模式匹配、便捷的泛型编写、特质混入、函数式编程等特性,使得用Scala开发DSL语言很方便。通过firrtl编译器可以把Chisel文件转换成firrtl文件,这是一种标准的中间交换格式,也就是让各种高级语言方便地转换到Verilog/VHDL的媒介,但它其实和verilog/VHDL属于同一层次。在这里,Chisel选择了妥协,没有直接生成电路,而是借助Verilog,主要是因为没有EDA工具支持,因此,它并不等同于HLS(High Level Synthesis)。将来也许会有EDA工具直接支持Chisel。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Chisel
    +关注

    关注

    0

    文章

    7

    浏览量

    416
收藏 人收藏

    评论

    相关推荐

    初识FPGA需要关注的注意事项!

    1.基础问题 FPGA的基础就是数字电路和HDL语言,想学好FPGA的人,建议床头都有本数字电路的书,不管是哪个版本的,这个是基础,多了解也有助于形成硬件设计的思想。在语言方面,建议初学者学习
    发表于 02-22 10:57

    #2024,立Flag了嘛? # 开年之疑问重重

    选择SpinalHDL、chisel还是verilog HDL作为开发语言,上周FPGA大佬跟几个在IC设计公司的同学吃饭后,聊了下发现对应的行业标杆的公司导入了spinalHDL作为开发语言
    发表于 01-13 09:18

    《深入理解FFmpeg阅读体验》初识有感

    恰好有这么好的机会,当然也有缘份让我有幸成为试读者,特此感谢电子发烧友论坛。 【初识有感】 我今天刚拿到的书,认真的阅读了推荐语、序、前言这几篇,让我深有感触。 第,通过这几篇我得知刘歧老师,是
    发表于 01-07 19:48

    初识电阻与电阻器

    初识电阻与电阻器
    的头像 发表于 12-08 17:24 278次阅读
    <b class='flag-5'>初识</b>电阻与电阻器

    零基础开发安信可小安派-Eyes-S1【入门篇】——初识小安派-Eyes-S1

    初识小安派-Eyes-S1 前言:本教程针对零基础人员可以快速上手小安派-Eyes-S1实现些简单的应用开发,仅供参考学习,本人也在学习的过程中,感谢大家支持。 小安派S1全套开发板清单如下
    发表于 09-08 11:06

    【Milk-V Duo 开发板免费体验】初体验()---- 初识GPIO外挂点灯

    1、初识milk-v duo GPIO milk-v duo将GPIO分为了五组,每组32个端口。下为五个分组的基础地址标号 gpioe基地址352 gpiod基地址384 gpioc基地址416
    发表于 08-16 08:04

    【昉·星光 2 高性能RISC-V单板计算机体验】1初识赛昉科技StarFive

    初识赛昉科技StarFive 接下来为大家做些小东西,玩玩。 板子的做工整体来看是非常不错的!值得入手。 谢谢!
    发表于 08-07 20:47

    一文初识C++

    无论你使用命令行界面或者IDE,大多数编译器都要求程序源码存储在一个或多个文件中。程序文件通常被称为源文件(source file)。在大多数系统中,源文件的名字以一个后缀为结尾,后缀是由一个句点后接-一个或多个字符组成的。后缀告诉系统这个文件是一个C++程序。不同编译器使用不同的后缀命名约定,最常见的包括. cc、.cxx、.cpp、.cp及.C。
    发表于 07-17 15:14 136次阅读
    一文<b class='flag-5'>初识</b>C++

    初识IBIS模型

    半导体LSI的EDA模型之一是"IBIS模型",完整称为Input/OutputBuffer Information Specification,是一个描述数字IC输入端和输出端电气特性的文本文件,在电路仿真中被广泛使用。IBIS模型由封装模型部分和缓冲器模型部分组成。
    的头像 发表于 07-14 10:10 1086次阅读

    初识MBD及MBD模型管理

    基于模型的设计( **Model-Based Design,MBD** )是一种围绕模型搭建展开的一种项目开发方法。
    的头像 发表于 07-13 09:16 1047次阅读
    <b class='flag-5'>初识</b>MBD及MBD模型管理

    HPLC通信技术初识

    随着人工智能、物联网、通信技术的高速发展,电网形态随之发生变化,建设能源互联网成为顺应能源革命和数字革命融合发展趋势的根本途径。电力线载波(PLC)通信技术因覆盖面广和无需要额外布线的优势,是能源互联网建设过程中最理想的信息传输载体。   用电信息采集系统利用电力线载波通信技术实现用电数据采集,伴随着能源互联网建设的进程,由仅为营销系统提供数据转向为多系统、多专业提供应用支撑,采集的数据类型不
    的头像 发表于 07-11 08:40 7151次阅读
    HPLC通信技术<b class='flag-5'>初识</b>

    中科院计算所等机构推出了世界首个完全由AI设计的CPU芯片

    这通常需要由工程师团队编写代码(如Verilog、Chisel或C/C++等),然后在电子设计自动化(EDA)工具(如逻辑综合或高层次综合工具)的辅助下生成电路逻辑。
    的头像 发表于 07-03 11:16 823次阅读
    中科院计算所等机构推出了世界首个完全由AI设计的CPU芯片

    OpenMV初识

    OpenMV是由美国克里斯团队基于MicroPython发起的开源机器视觉项目,目的是创建低成本,可扩展,使用python驱动的机器视觉模块。OpenMV搭载了MicroPython解释器,使其可以在嵌入式端进行python开发。OpenMV基于32位,ARM Cortex-M7内核的OpenMV-H7, 并结合各种摄像头,可以进行多种机器视觉应用的实现,比如人脸检测,物体分类等。
    的头像 发表于 06-12 11:23 1671次阅读
    OpenMV<b class='flag-5'>初识</b>

    初识自动驾驶系统

    近几年自动驾驶技术越来越火,前沿的人工智能、机器学习、大数据等技术也被应用到自动驾驶领域中,各大主机厂、自动驾驶解决方案提供商在不断加入和努力,行业在将自动驾驶技术由学术探索向商业化落地的方向持续推进。因此可以预见,未来自动驾驶方向将会吸引更多的企业和人才加入。本篇文章对于自动驾驶及相关技术进行初步介绍,适用于入门或科普。 自动驾驶(auto pilot)是指车辆能够依据自身设备对周围环境进行感知
    发表于 06-06 11:21 0次下载
    <b class='flag-5'>初识</b>自动驾驶系统

    国产第二代“香山”RISC-V 开源处理器计划 6 月流片:基于中芯国际 14nm 工艺,性能超 Arm A76

    提供高性能 CPU IP 核。“香山”处理器核的开发的重要决策之,是选择了敏捷设计语言 Chisel,原因是开发效率远高于 Verilog,实现相同的功能,Chisel 代码量仅为 Verilog 的 1/5。
    发表于 06-05 11:51