SpinalHDL学习

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

为什么迁移到SpinalHDL

  • verilog的学习曲线过于陡峭,而且verilog自身演进太慢,即使systemverilog也有很多不如人意的地方。本身水平太菜,至今未成为一个资深的verilog 开发人员,对于自己来说,要么继续啃Verilog,要么拥抱新工具。
  • 与HLS不同的是,SpinalHDL本身仍然是一种硬件描述语言,据称是“The overhead (of SpinalHDL generated RTL compared to human written VHDL/Verilog) is null”。HLS适合快速开发验证,但一个熟练的HLS写手和刚入门级的差别也是很大的,而且上限就在HDL。依据自己的学习经验来说,相比verilog,HLS自由度太差,这样的灰盒开发老是让自己有种“心有余而力不足”的感觉。从成熟度来讲,Jason Cong的组一直有关于HLS的文章在发表,也从侧面说明了HLS本身还存在许多待优化完善的地方。HLS有其自己的优势使用场景,在这点上,我更愿将其与python的myhdl包相比较,myhdl在写tb时也有优势。总之,我并不想固守于某一工具,“君子生非异也,善假于物也”,拥抱新的工具,优势互补,乃吾之愿也。世界那么大,我想去看看(:dog
  • SpinalHDL本身是基于Scala的一个库,像python的numpy一样。既然python能够在软件领域大放异彩,scala也很令人期待。
  • 与chipsel相比,可能更像tensorflow和pytorch之争吧

几个需要越过的gap

Scala自身语法层面

  • 数据类型

SpinalHDL自身设计

  • 如何使用verilog IP: 借助SpinalHDL的库,or生成的verilog之后再和IP进行交互,or将IP打包一层后直接交互?

一些surprise

  • =/=: 在不等于的表示形式中,这是最直接形象不过的了吧,哈哈。不过“===”就不太优雅了吧,不过这样可能方便对齐

Sometimes you just want to try a usage of a Spinal or Scala, but you don’t want to create a new project.
Practice is important for learning a new skill. So we did a lot of examples for you to try run.

Ref 2中的马車大佬参与了基于jupyter的一个学习教程,上面的这段话深得吾心,强烈推荐!

与verilog的对应映射上:

目前刚接触,还不能完成一个中型项目的实现,接下来打算边学习边整理出几项笔记来,毕竟verilog真是诸多缺点!

Ref.

  1. SpinalHDL Doc.
  2. 知乎马車用户的个人博客
  3. 在jupyter中使用scala
  4. Spinal-bootcamp
SpinalHDL 学习笔记 SpinalHDL是一种基于Scala的硬件构筑语言(Constructing Hardware In Scala Embedded Language),通过比Verilog/VHDL更好层次的行为级描述,拥有更加高层次视角以及抽象编码能力,作为一种Verilog/VHDL代码的生成器,在Verilog/VHDL绝对统治芯片设计语言的情况下,宛如一泓清泉带来不一样的清新体验,又似一匹黑马从一堆新芯片设计语言中杀将出来。4.请文明交流,做这行的都算高层次人才,希望你有对应的高素质;3.可以潜水,不能灌水; 阅读详情

相关推荐

2020一次转变:从Verilog到SpinalHDL

学习SpinalHDL已有近半年,其诚然小众,但“小家碧玉”未尝不是绝代佳人。 出坑Verilog 遥想当年本科之时画过电路PCB、玩儿过单片机、PLC,亦学过C#(给我那数块板子的毕设做个上位机),Python。直到研究生之时方才选择FPGA这条道路,除了对数字电路本身的兴趣之外(对于做软件感觉一直找不到自己的优势所在,虽然最终还是进了互联网行业,也算是冥冥之中自有天意吧),重要的便是Verilog语法简单,可以令我很快专注于电路硬件的设计而非语法本身。 “成也萧何,败也萧何”,Verilog语法确实

莽野孤狼的博客 6191

SpinalHDL教程:Scala简单入门及后端开发

SpinalHDL是一种基于Scala语言的硬件描述语言(HDL),它提供了一种高级抽象的方式来描述数字电路。本教程将带您从Scala的基础开始,逐步介绍SpinalHDL的概念和用法,以及如何使用它进行后端开发。SpinalHDL的设计目标是提供一种高级抽象的方式来描述数字电路,并且具有强大的硬件生成能力。在学习SpinalHDL之前,了解Scala的基本语法和概念是非常重要的。请注意,本教程仅提供了对SpinalHDL的简要介绍,您可以进一步深入学习和探索SpinalHDL的其他特性和用法。

BbflNim的博客 657

SpinalHDL之实用工具(上篇)

本文作为SpinalHDL学习笔记第十三篇,记录使用SpinalHDL的一些实用性语法工具。然后,通过使用这些功能可以定义数字硬件,并构建强大的库和抽象。这也是 SpinalHDL 相对于其他常用 HDL 的主要优势之一,因为无需了解编译器内部原理即可扩展该语言。一个很好的例子是SpinalHDL lib,它添加了许多实用程序、工具、总线和方法。许多工具和实用程序都存在于spinal.lib 中,但有些工具和实用程序已经存在于 SpinalHDL Core 中。语法返回类型描述Int。

m0_59092412的博客 2035

SpinalHDL】Windows10系统搭建SpinalHDL 开发环境

本文主要记载如何从零开始在win平台搭建SpinalHDL开发环境并跑通第一个spinal project demo。

kissdragan的博客 6366

SpinalHDL快速入门】5.1、SpinalHDL组织结构之Component和hierarchy

SpinalHDL快速入门】5.1、SpinalHDL组织结构之Component和hierarchy

悟已往之不谏 知来者之可追 1647

SpinalHDL资料汇总

本文就学习SpinalHDL历程中所使用的资料进行汇总,有感兴趣的小伙伴欢迎学习交流。Scala入门SpinalHDL是基于Scala来实现的,因此在学习SpinalHD...

weixin_42905573的博客 5188

SpinalHDL学习(1)--环境搭建与工程创建

sd

m0_37662571的博客 1960

SpinalHDL中的Clock domains时钟域学习

SpinalHDL中的ClockDomain时钟域

weixin_42506418的博客 1066

入坑 spinalHDL

入坑 spinalHDL学习第3天,各种懵,为什么我的就是编译不成功。。。。。

weixin_39291453的博客 430

Spinal HDL学习资源

最近开始接触SpinalHDL,所以收集了一些不错的学习资源,可供大家参考。 SpinalHDL是基于Scala语言开发的设计语言,使用SpinalHDL需要对Scala有一定了解。下面的两篇博文非常全面而又简洁的介绍了Scala,对上手非常有帮助。 https://vvviy.github.io/2018/12/01/Learning-Chisel-and-Scala-Part-I/ https://vvviy.github.io/2018/12/12/Learning-Chisel-and-Sca

yinyeyy的专栏 3099

SpinalHDL学习笔记(1)——Scala和sbt安装

本文主要讲解Linux平台(Ubuntu)中Scala的安装,由于sbt资源下载速度较慢,建议使用科学上网方法,如果没有也可以尝试一下方法。Spinal是一个Scala库(使用Java VM的编程语言),因此需要设置Scala环境;有很多方法可以做到这一点。此外,它还生成 VHDL、Verilog 或 SystemVerilog,可供许多不同的工具使用。本节介绍支持的 SpinalHDL 描述到仿真 流程的安装方法,但可能还有其他方法。

qq_45362336的博客 2499

verilog 任意比例分频电路的实现_从Verilog到SpinalHDL

不点蓝字,何来故事?  学习SpinalHDL已有近半年,其诚然小众,但“小家碧玉”未尝不是绝代佳人。出坑Verilog遥想当年本科之时画过电路PCB、玩儿过单片机、PLC,亦学过C#(给我那数块板子的毕设做个上位机),Python。直到研究生之时方才选择FPGA这条道路,除了对数字电路本身的兴趣之外(对于做软件感觉一直找不到自己的优势所在,虽然最终还是进了互联网行业,也算是冥冥...

weixin_39783149的博客 199

SpinalHDL之IIC(三)

为例,介绍一下SpinalHDL实际描述。本文作为SpinalHDL学习笔记第。本篇介绍IIC顶层模块。

m0_59092412的博客 620

SpinalHDL之结构(三)

⼀、简介(Introduction)⽤Scala函数产⽣硬件的⽅式与VHDL/Verilog中非常不同, 原因如下:

m0_59092412的博客 800

SpinalHDL之时序逻辑(Sequential logic)(一)

⼀、简介(Introduction)在SpinalHDL中创建寄存器与VHDL和Verilog中区别很⼤。在SpinalHDL中, 没有process/always块, 寄存器在声明的时候就清晰地定义出来。

m0_59092412的博客 1882

SpinalHDL之结构(四)

⼀、简介(Introduction)在SpinalHDL中, 时钟和复位信号能结合起来构成时钟域(clock domain)。时钟域可以应⽤于设计的某些区域中, 例化在这些区域中的所有同步单元都会隐式地使⽤这些时钟域。时钟域的应⽤的⼯作模式类似于堆栈, 这意味着你在⼀个给定的时钟域中仍然可以在本地施加另⼀个时钟域。需要注意的是, ⼀个寄存器在它被创建的时候捕捉时钟域, ⽽非它被赋值的时候。所以请确保在你所希望的ClockingArea中创建寄存器。⼆、例化(Instantiation)

m0_59092412的博客 1291

介绍一下 SpinalHDL

还有用户可能关心它和Chisel的区别,参考内容里提到SpinalHDL直接生成Verilog,而Chisel需要经过Firrtl转换,生成的代码可读性不如Spinal。需要结构清晰,分点说明核心特性、优势、设计流程、应用场景和与Chisel的对比,避免使用技术术语过多,让读者容易理解。作为 Scala 的库,SpinalHDL 继承了 Scala 强大的函数式编程、类型系统和元编程能力,支持复杂的参数化设计和高层次抽象(如总线封装、流水线自动生成)。:模块例化时自动完成信号连接,减少手动连线的错误。

luoganttcc的博客 1814

精彩回顾 l SpinalHDL应用前景探索线上研讨会

2022年12月16日,达坦科技联合SpinalHDL社区,举办了SpinalHDL Webinar 2022。在题为《SpinalHDL应用前景探索》的线上研讨会上,九位分享人在三个讨论分主题下做了各自领域内应用Spinal HDL的实践、挑战和经验的分享。

DatenLord的博客 1017

SpinalHDL之结构(一)

⼀、简介(Introduction)正如VHDL和Verilog, 你可以在SpinalHDL中定义模块来进⾏层次化设计。然⽽, 在SpinalHDL中, 你不需要在例化的时候分配他们的端⼝。

m0_59092412的博客 1403
上一篇: 读HLS Bluebook(二)
下一篇: 读HLS Bluebook(三)之 IO and Memories
高纳德
博客等级 码龄9年 11粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值