Site purpose and structure
This site presents the SpinalHDL language and how to use it on concrete examples.
If you are learning the language from scratch, this presentation is probably a good starting point.
What is SpinalHDL ?
SpinalHDL is a open source high-level hardware description language. It can be used as an alternative to VHDL or Verilog and has several advantages over those.
Also SpinalHDL is not a HLS approch, its goal is not to push something abstract into flip-flop and gates, but by using simple elements (flip-flop, gates, if / case statments) create new abstraction level and help the designer to not rewrite always the same thing.
It also enables mixed designs where SpinalHDL components inter-operate with VHDL or Verilog IPs.
Advantages of using SpinalHDL over VHDL / Verilog
As SpinalHDL is based on a high-level language, it provides several advantages to improve your hardware coding:
- No more endless wiring - Create and connect complex buses like AXI in one single line.
- Evolving capabilities - Create your own buses definition and abstraction layer.
- Reduce code size - by a high factor, especially for wiring. This enables you to have a better overview of your code base, increase your productivity and create fewer headaches.
- Free and user friendly IDE - Thanks to scala world for auto-completion, error highlight, navigation shortcut and many others.
- Powerful and easy type conversions - Bidirectional translation between any data type and bits. Useful to load a complex data structure from a CPU interface.
- Loop detection - Tools check for you that there is no combinatorial loop / latch.
- Clock domains safety - The tools inform you that there is no user unintentional cross clock domain.
- Generic design - There are no restrictions to the genericity of your hardware description by using Scala constructs.
SpinalHDL use two licenses, one for the spinal.core, and one for the spinal.lib.
The spinal.core (the compiler) is under the LGPL license, which could be summarized with following statements :
- You can make money with your SpinalHDL description and its generated RTL.
- You don’t have to share your SpinalHDL description and its generated RTL.
- There is no fees, no royalties.
- If your make improvements on the SpinalHDL core, please, share your modifications to make the tool better for everybody.
The spinal.lib (a general purpose library of components/tools/interfaces) is under the permissive MIT license.
Want to try it for yourself? Then jump to the getting started section and have fun!
SpinalHDL repository :
Presentation of the language :
SBT base project :