|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 goco 于 2020-6-23 11:21 编辑
在Verilog/VHDL出生到现在,其他HDL一直层出不穷,更多的是玩票或者试验性质的,有的也只是在很小的范围内局部应用,并没有根本上解决Verilog的问题。SpinalHDL是基于SCALA语言上的DSL(还有一个兄弟叫Chisel),更准确的说是一个基于Scala的HDL开发框架,不同于以前的那些HDL,它解决了Verilog的痛点,并且和传统的IC-flow和谐共存,适合大规模的Soc系统的开发。
可以总结为八个字:高效可靠,方便复用
SpinalHDL相比Verilog/VHDL
1:彻底的参数化能力,自定义组件,自定义Lib,真正实现可重用
2:位宽推导,类型推导,写出的HDL简洁可靠3:内置Lint静态检查(位宽,端口,CDC),生成的代码不会有静态错误
4:大量高效的基础组件和可重用Lib,还在持续发展
5:至少一个Soc框架和RISCV处理器
6:自带仿真框架(后台基于Verilator),非常方便并且灵活强大,在此之上发展出一个UVM也不难
7:开源,跨平台开发SpinalHDL + Verilator(仿真) + GtkWave(波形),对于个人或者小团队再也不必上Linux装盗版全家桶
8:不光适合HDL,参考平台,测试激励都可以用Scala完成,一个平台全部搞定
SpinalHDL相比MyHDL
1: MyHDL的硬件代码更像python,而基于Scala的SpinalHDL代码更像HDL,硬件工程师阅读书写转变成本低
2: MyHDL测试基于Python,对于稍大规模仿真很难胜任,SpinalHDL仿真测试基于verilator,毫不逊色商业软件VCS
3: Scala比Python更简洁跟安全,Scala非常适合DSL,对于满眼钉子的你,Scala就是手握各种锤子
SpinalHDL相比HLS
1:SpinalHDL的代码是基于RTL,思考过程跟verilog开发完全一致,并不会产生冗余逻辑,只会参数化生成,时序问题完全取决于设计者
2:HLSL的效率逻辑冗余一致被人诟病,对于低成本低功耗的消费级IC,面积功耗是一道过不去的门槛,需要精细化的设计。
SpinalHDL相比Chisel
1:chisel源于学校,缺乏工程经验,不管是chisel源码还是生成的Verilog可读性较差,有大量的争议设计
2:SpinalHDL对硬件工程师更为友好,对于有IC开发背景的工程师,阅读SpinalHDL源码几乎没有太大障碍。
3:SpinalHDL有完整的文档, 清晰的软硬件概念,生成的verilog代码非常接近工程师手工书写风格,适合团队混合开发。
SpinalHDL并不替代现有IC开发Flow,它是一个高效的生成器,对传统IC团队较为友好,对于混合开发(部分人SpinalHDL, 部分人Verilog)也完全没有阻碍,不做强制。
缺点:
算不上缺点的缺点,Scala是基于JVM上的一门面向对象函数式编程语言,对于传统的IC工程师需要一些学习成本。
但是如果有python或者C,java使用经验,学习Scala花不了多久,另外Scala也是一门非常值得学习的语言,有很多先进的元素。
如果之前你认为python是一门最简洁方便的语言,那么用了Scala你可能会改变主意 : )
担心:
回到之初的那个问题,会不会是一个玩具,值得花时间去学习吗? 对于IC工程师,我在自己公司会不会用不了?
是否需要花时间学习一门新的语言,因人而异,看自己的兴趣和需求,但是SpinalHDL确实具备生产力,能开发大型系统,而且更适合开发大型系统,所以它不是玩具。
SpinalHDL跟现有团队以及Flow不冲突,可以自由组合,平滑过渡。
SpinalHDL2015左右出现的,还算比较新,但是已经在IC图像处理,通信基带,神经网络,以及SOC有实实在在的应用,并没有遇到严重的缺点。另外SpinalHDL是开源的,对于不满意的地方,或者自己有好的lib或者组件,每个人都可以不断的完善,而且也不难。
资料:
1 官方文档:https://spinalhdl.github.io/SpinalDoc-RTD/index.html
2 社区讨论:https://gitter.im/SpinalHDL/SpinalHDL
3 新手教程:https://github.com/jijingg/Spinal-bootcamp
4 知乎专栏:https://zhuanlan.zhihu.com/c_1172895565598920704
|
|