在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 18567|回复: 23

[原创] SpinalHDL一门真正具备生产力的HDL开发框架

[复制链接]
发表于 2020-6-23 11:13:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 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


发表于 2020-6-23 19:49:22 | 显示全部楼层
现在就是文档跟不上,小规模逻辑开放绰绰有余。
 楼主| 发表于 2020-7-7 14:34:05 | 显示全部楼层


abeey 发表于 2020-6-23 19:49
现在就是文档跟不上,小规模逻辑开放绰绰有余。


SpinalHDL的文档已经算是相当全面了,另外源码可读性很高。对硬件工程比较友好很容易上手
发表于 2020-7-7 20:46:27 | 显示全部楼层


goco 发表于 2020-7-7 14:34
SpinalHDL的文档已经算是相当全面了,另外源码可读性很高。对硬件工程比较友好很容易上手
...


library 的使用和接口是没有具体的文档的,全靠自己读。
发表于 2020-7-8 15:58:33 | 显示全部楼层
本帖最后由 xiaojia102003 于 2020-7-8 16:02 编辑

关注下,后端工具对Spinal HDL的支持怎么样?
发表于 2020-7-9 09:45:54 | 显示全部楼层


xiaojia102003 发表于 2020-7-8 15:58
关注下,后端工具对Spinal HDL的支持怎么样?


SpinalHDL 最终生成 verilog 或者 VHDL,所以 EDA 工具没有啥问题。

发表于 2020-7-9 10:14:38 | 显示全部楼层
这种我试过,感觉还是不成熟
1. 环境问题,要配置java,scala 工作环境,不熟悉的人很头疼,没有统一的平台
2. scala语言过于复杂,scala可以说是最复杂的编程语言,即使是计算机专业的也很头疼
3. 生成的verilog代码可读性太差
4. 版本变换快,新的版本不支持旧版本的语句
5. 出现问题没法解决到底是哪里有问题
发表于 2020-7-9 10:35:27 | 显示全部楼层


abeey 发表于 2020-7-9 09:45
SpinalHDL 最终生成 verilog 或者 VHDL,所以 EDA 工具没有啥问题。


谢谢解答。
发表于 2020-7-9 15:22:03 | 显示全部楼层


quanqiutong 发表于 2020-7-9 10:14
这种我试过,感觉还是不成熟
1. 环境问题,要配置java,scala 工作环境,不熟悉的人很头疼,没有统一的平台 ...


如果你不玩复杂的技巧,那么可以把 SpinalHDL 当初纯粹的 verilog/VHDL 的简化版本。

环境非常容易配制,我自己 windows 下配制出了一个便携版本。IDE 工具友好程度不是好一点点。
发表于 2020-7-30 22:20:20 | 显示全部楼层
最近想从Verilog入坑SpinalHDL,有几点问题想请教下:
1、环境问题:习惯了Windows+VSCode,这个环境能支持么?
2、仿真调试问题:貌似需要先将SpinalHDL转成Verilog,再上Verilator,这个调试就可能有些麻烦,要返回去定位错误。不知道有什么经验
3、语言稳定性问题:版本升级,是否会带来不兼容的问题
4、其他:粗略看了一下SpinalHDL、Chisel3,貌似两者还是比较相似的,是否有工具支持把Chisel3转成SpinalHDL代码,这样可能有比较丰富的IP库可以用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-13 19:49 , Processed in 0.022825 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表