这里有两个概念
基于Scala的硬件构筑语言(Constructing Hardware In Scala Embedded
Language)

包括chisel和SpinalHDL, 所以标题中为什么需要CHISEL是指为什么需要一个基于Scala的HDL语言,实际上chisel和SpinalHDL称为HDL框架更为合适,因为除了一些电路语法外,绝大多数都是在运用Scala的语言功能,一切强大都源于Scala语法。
伯克利大学发布的Chisel硬件开发语言
我们文章中大CHISEL为泛指, 小Chisel为特指。
Verilog不够用吗?
需要一门新的语言吗?
VHDL诞生于1982年 ,Verilog诞生于1981年, 起初是用来电路存档描述,
都是硬件描述语言, 是用来描述数字电路的结构,行为,功能和接口的语言。
虽然Verilog/VHDL简单易用,在一定的历史时期确实是一个效率的巨大提升,
但是目前来看,槽点依然很多,
已经有点落伍时代。即便是SystermVerilog一定程度上改善了它 存在的问题,
并没有完全解决Verilog的问题,况且EDA工具对SV的支持并不是很积极,所以依然是尴尬的存在。
- 例化不方便 - 有人会说,有辅助插件帮你完成 (确实有很多好的插件,emacs verilog-mode
 , vim 的autoinst) 即便这样,但是对带参数的模块例化,
 一对多例化同样需要手动处理,非常不方便
 
- 大量的重复声明 - 无休止的变量声明,无休止的位宽声明,容易出错,
 作为一门上古时期的语言,对编译器不能要求太高
 
- 函数不能带参数 - verilog中函数的使用只能是零零星星,哪怕是一个位宽的变化都要重写函数,
 作为一门语言函数不能广泛使用,实为鸡肋
 
- 参数化实在是笨拙 - 虽然支持参数化,parameter 也只能做一些简单的加减左移操作,
 没有基本math包。
 - 利用宏做参数化,对于变量比较多的设计,非常复杂,并且也不好维护
 目前我也看到
 
- 错误检测很弱 - 编译工具对错误的处理比较保守,
 这种保守可能也源于语言本身,以及编译器的能力不及。
 - 
- 位宽不匹配,
- input/output端口写反
- 饱和截位弄错,
- 跨时钟域问题
- 锁存器检查
- 组合逻辑环自己查
- ….
 - 基于前仿的编译,还会遗漏大量的错误,必须要Lint, 综合检查,
 费时费力又费钱。
 
- 重构、增减信号,Bist/DFT逻辑插入麻烦 - 需要手动插入, 编写脚本, 即便是脚本也不通用 
等等…