Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/spinalhdl/spinalhdl
Scala based HDL
https://github.com/spinalhdl/spinalhdl
fpga rtl scala verilog vhdl
Last synced: 6 days ago
JSON representation
Scala based HDL
- Host: GitHub
- URL: https://github.com/spinalhdl/spinalhdl
- Owner: SpinalHDL
- License: other
- Created: 2015-01-25T11:42:00.000Z (almost 10 years ago)
- Default Branch: dev
- Last Pushed: 2024-12-17T12:26:34.000Z (8 days ago)
- Last Synced: 2024-12-19T01:04:32.558Z (6 days ago)
- Topics: fpga, rtl, scala, verilog, vhdl
- Language: Scala
- Homepage:
- Size: 64 MB
- Stars: 1,690
- Watchers: 81
- Forks: 336
- Open Issues: 152
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Citation: CITATION.cff
Awesome Lists containing this project
README
## About SpinalHDL
SpinalHDL is:
- A language to describe digital hardware
- Compatible with EDA tools, as it generates VHDL/Verilog files
- Much more powerful than VHDL, Verilog, and SystemVerilog in its syntax and features
- Much less verbose than VHDL, Verilog, and SystemVerilog
- Not an HLS, nor based on the event-driven paradigm
- Only generates what you asked it in a one-to-one way (no black-magic, no black box)
- Not introducing area/performance overheads in your design (versus a hand-written VHDL/Verilog design)
- Based on the RTL description paradigm, but can go much further
- Allowing you to use Object-Oriented Programming and Functional Programming to elaborate your hardware and verify it
- Free and can be used in the industry without any license## Links
- Documentation
https://spinalhdl.github.io/SpinalDoc-RTD/
- Chinese documentation
https://spinalhdl.github.io/SpinalDoc-RTD/zh_CN/
- Chinese documentation (v1.7.2 from thuCGRA)
https://thucgra.github.io/SpinalHDL_Chinese_Doc/
- API reference
https://spinalhdl.github.io/SpinalHDL/dev/spinal/index.html
- Presentation of the language
https://spinalhdl.github.io/SpinalDoc-RTD/master/SpinalHDL/Getting%20Started/presentation.html
- SBT base project
https://github.com/SpinalHDL/SpinalTemplateSbt
- Gradle base project
https://github.com/SpinalHDL/SpinalTemplateGradle
- Jupyter bootcamp
https://github.com/SpinalHDL/Spinal-bootcamp
- Workshop
https://github.com/SpinalHDL/SpinalWorkshop
- Google group
https://groups.google.com/forum/#!forum/spinalhdl-hardware-description-language
- Donation channel
https://opencollective.com/spinalhdlEnglish: [![Join the chat at https://gitter.im/SpinalHDL/SpinalHDL](https://badges.gitter.im/SpinalHDL/SpinalHDL.svg)](https://gitter.im/SpinalHDL/SpinalHDL?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 中文: [![Join the chat at https://gitter.im/SpinalHDL-CN/community](https://badges.gitter.im/SpinalHDL/SpinalHDL.svg)](https://gitter.im/SpinalHDL-CN/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Get it
SpinalHDL is simply a set of Scala libraries. Include them into your project and you're good to go! If you're unsure about what to do, simply clone one of our example projects (see links above).
### SBT (Scala build tool)
```scala
scalaVersion := "2.11.12"libraryDependencies ++= Seq(
"com.github.spinalhdl" % "spinalhdl-core_2.11" % "latest.release",
"com.github.spinalhdl" % "spinalhdl-lib_2.11" % "latest.release",
compilerPlugin("com.github.spinalhdl" % "spinalhdl-idsl-plugin_2.11" % "latest.release")
)
```You can force SBT to pick a specific SpinalHDL version by replacing `latest.release` with a specific version.
See the [SpinalHDL SBT Template project's `build.sbt` file](https://github.com/SpinalHDL/SpinalTemplateSbt/blob/master/build.sbt) for a full SBT example.### Gradle
```kotlin
repositories {
mavenCentral()
}dependencies {
compile group: 'com.github.spinalhdl', name: 'spinalhdl-core_2.11', version: '1.6.4'
compile group: 'com.github.spinalhdl', name: 'spinalhdl-lib_2.11', version: '1.6.4'
}
```### Mill(Build Tool)
```scala
import mill._
import mill.scalalib._object MySpinalModule extends ScalaModule {
def scalaVersion = "2.11.12"def ivyDeps = Agg(
ivy"com.github.spinalhdl::spinalhdl-core:1.6.4",
ivy"com.github.spinalhdl::spinalhdl-lib:1.6.4",
)def scalacPluginIvyDeps = Agg(ivy"com.github.spinalhdl::spinalhdl-idsl-plugin:1.6.4")
}
```### JAR
https://oss.sonatype.org/content/groups/public/com/github/spinalhdl/spinalhdl-core_2.11/
https://oss.sonatype.org/content/groups/public/com/github/spinalhdl/spinalhdl-lib_2.11/The files are available [on Maven](https://mvnrepository.com/artifact/com.github.spinalhdl) as well.
## Change logs
https://github.com/SpinalHDL/SpinalHDL/tags
## License
The SpinalHDL core is using the LGPL3 license while SpinalHDL lib and others are using the MIT license. That's for the formalities. But there are some practical statements implied by those licenses:
Your freedoms are:
- You can use SpinalHDL core and lib in your closed/commercial projects.
- The generated RTL is yours (.vhd/.v files)
- Your hardware description is yours (.scala files)Your obligations (and my wish) are:
- If you modify the SpinalHDL core (the compiler itself), please, share your improvements.
Also, SpinalHDL is provided "as is", without warranty of any kind.