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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 22906|回复: 23

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

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

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

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

×
本帖最后由 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-7-7 14:34:05 | 显示全部楼层


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


SpinalHDL的文档已经算是相当全面了,另外源码可读性很高。对硬件工程比较友好很容易上手
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-13 17:51:15 | 显示全部楼层


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


SpinalHDL有官方文档,你能遇到的80%的文档都能在文档上找到。其余的问题可以在社区https://gitter.im/SpinalHDL/SpinalHDL中提问,社区对新人比较友好,不管是比较简单或者复杂的问题都会有人及时解答
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-13 17:53:57 | 显示全部楼层


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


SpinalHDL是一个高效的Verilog生成器,它的输出是verilog,对验证,后端是透明的,后续FLOW完全跟原来的开发流程一致。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-13 18:19:08 | 显示全部楼层


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


你说的关于环境或者语言的复杂度对于新手确实有,但是我觉的这个并不是一个很大的障碍。
1. 环境和平台我认为恰恰是这套开发方法的优势,SpinalHDL + verilator + IDEA + gtkwave, 都是跨平台开源免费软件,
在windows上,在mac上都能无障碍开发。环境的安装不应该是一个很困难的事情,好歹我们也自称工程师,这个不应该是问题。

2. scala 语言复杂,绝大多数是人云亦云。就像很多人说python简单一样, python简单吗,python 作为工具使用可能会比较方便,但作为一门开发语言,我并不认为它简单。反而Scala学起来并没有什么秘密,一切都能追根溯源。由于Scala强大的表达能力,类型推断,模式匹配,函数式编程特性,写出来的代码往往比python要简洁漂亮的多。一开始可能给人感觉有点复杂,有点像VIM,花点时间会用了基本上回不去了。所以不妨尝试花一点点时间系统的学习一下,相信你会爱上它。

3. 可读性差,chisel、SpinalHDL 都有这样的问题,不过最新版本的SpinalHDL生成代码已经非常接近手工写的,spinalHDL会原封不动的保留所有的信号名,并不会擅自优化修改信号,目前SpinalHDL对于可读性唯一的不足的地方是匿名变量,匿名变量是个历史问题,是偷懒比较安全的做法。将来的版本里面会把匿名变量也拿掉,重复信号会有后缀index替代,这样可读性基本上就基本上没什么值得诟病的地方。

4. 这个目前我还没发现,如果你有例子可以提供上来,原则上SpinalHDL一定会保持后向兼容,即便个别的API有变动会在提前n个版本之前就有过期警告,一般你编译的时候就能看到这样的信息,不会突然废弃API。

5. 出现问题不知道怎么解决,欢迎到社区https://gitter.im/SpinalHDL/SpinalHDL提问,这里有最耐心的Dolu1990帮你解答。



回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-13 18:39:34 | 显示全部楼层
本帖最后由 goco 于 2020-8-13 18:49 编辑


   
要你命3000 发表于 2020-7-30 22:20
最近想从Verilog入坑SpinalHDL,有几点问题想请教下:
1、环境问题:习惯了Windows+VSCode,这个环境能支持 ...


1. 首先对于前段开发用到的工具SpinalHDL +verilator +gtkwave 是全平台开源免费软件,所以在Windows上完全没问题,我本人有一半时间就是在windows上开发,VScode我没用过,如果它能支持Java开发的话,原则上是没有问题,不过IDEA确实很不错,不妨试试

2. 仿真调试以前我比较习惯Verdi来追踪波形,不过现在用gtkwave习惯了也还好没什么障碍,由于spinalHDL生成的verilog原封不动的保留了信号名,所以一般我都很少看Verilog代码,直接拉信号对着SpinalHDL代码debug,没有任何问题。另外verilator 跟VCS是个仿真器,对debug来说完全透明的,不用关心它。

3. 没有, 我也劝你千万不要这么干。 你觉的那些Chisel上有SpinalHDL没有的,请留言,不管是feature 或者库。 rocket-chip就不要提了,有点代码洁癖的都不能接受这样的屎山。Spinal也有漂亮的SOC框架,虽然可能比较小,但是很简洁,非常容易上手扩展。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-7 11:00:41 | 显示全部楼层


   
adan313 发表于 2020-8-26 15:41
楼主,想请教一下你关于sbt环境的问题。我是在虚拟机ubuntu18.04上运行的。
由于sbt从中心仓库下载依赖过于 ...


由于坑爹的GFW,国内访问速度确实很慢。有两个途径:1. 设置阿里云的镜像试试https://www.jianshu.com/p/3427c702d443, 有些较新的库阿里云没有,就到https://search.maven.org/搜索链接手动迅雷下载,覆盖本地.ivy(确保覆盖的位置没有错,一般哪个文件下载很慢挂死的时候都会有个同名的临时文件,windows上我用everything 搜索,Linux上可以用find命令在.ivy搜索)
2. 使用V皮N,方法自己网上找
一般也就是第一次下载慢一些,后面基本上不太会遇到环境的问题。


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-10-22 04:01 , Processed in 0.016842 second(s), 4 queries , Gzip On, Redis On.

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