笔者目前西安交通大学微电子硕士在读,研究方向为数字集成电路设计与体系结构。鉴于目前RISC-V的火热程度,笔者参与了课题组的RISC-V项目,并了解、学习了颇受关注的新型硬件构建语言——Chisel,当前参与的神经网络加速器设计便是使用Chisel开发的。这是一门敏捷开发语言,据称要比传统的Verilog语言快很多。在亲身使用过后,笔者发现确实快了不少。这主要得益于Scala作为高级语言的简洁风格和强大的抽象能力。能在硬件语言里引入面向对象属性进行设计,确实不容易。SystemVerilog的面向对象只能用于验证,而SystemC的效果尚不尽人意。
由于目前关于Chisel的详细教程很少,所以笔者打算在博客上推出一系列的相关文章。由于笔者使用Chisel的经验也并不丰富,谈不上信手拈来、融会贯通,因此,这些文章更多地是希望给后来人分享学习过程中的经验、体会。希望帮助读者加速学习的过程,早日能用Chisel开发硬件。鉴于笔者才疏学浅,水平有限,内容有不当之处还望读者指出,一同讨论,共同进步。
因为Chisel是以Scala构建的,所以前面一部分文章都是讲解如何学习Scala,后面才是Chisel的内容。关于Scala进阶的内容,对于只想学习基本的硬件描述功能的读者,可以跳过。文章持续更新,在这里先做一个传送门的汇总。