关于SpinalHDL的介绍,网上的介绍有很多,在这里就不多赘述了。最近看了网上很多SpinalHDL的环境搭建教程,但是在这个过程中踩了很多坑,记录在后面,如果有遇到相同情况的小伙伴,希望看了我的文章之后有所帮助。
SpinalHDL的安装有两种方式,一种是sbt工具,另一种是利用IDE。在本文中介绍IDE下SpinalHDL的安装。
首先,安装JDK17并设置环境变量。
环境变量设置教程:https://blog.csdn.net/qq_19689967/article/details/119965488
第二步,下载并安装IDE,这里用的是Intellij IDEA Community版本。IntelliJ IDEA下载链接:https://www.jetbrains.com/idea/download/#section=windows
按照下图步骤,安装Scala与sbt工具。
第三步:创建scala工程
这里注意一下,按照官方文档的说法,必须是2.11.x版本的Scala才能使用SpinalHDL
第四步:将工程下的build.sbt文件的内容替换如下:
// build.sbt
name := "spinalhdl"
version := "1.7"
scalaVersion := "2.11.12"
libraryDependencies ++= Seq(
"com.github.spinalhdl" % "spinalhdl-core_2.11" % "1.7.0b",
"com.github.spinalhdl" % "spinalhdl-lib_2.11" % "1.7.0b",
compilerPlugin("com.github.spinalhdl" % "spinalhdl-idsl-plugin_2.11" % "1.7.0b"),
"org.scalatest" %% "scalatest" % "3.2.5",
"org.yaml" % "snakeyaml" % "1.8"
)
第五步:右键文件build.sbt,并选择build Module ‘[project name]’(这里project name 是你的项目名称),然后IDEA将会下载SpinalHDL的包了,此时需要等待一段时间(可能有点久)。
接下来开始安装verilator
这里需要用到msys2作为shell,利用pacman工具下载verilator。各位下载完MSYS2,进行换源和环境变量的设置,链接如下,这里就不赘述了。
MSYS2下载:https://www.msys2.org
MSYS2换源:https://blog.csdn.net/justidle/article/details/103025966
MSYS2环境变量:https://blog.csdn.net/a2824256/article/details/118599404
除了上面链接中,需要MSYS2继承系统的环境变量后,还需要在系统变量的PATH环境变量中添加以下两个路径:
C:\msys64\usr\bin
C:\msys64\mingw64\bin
按照如下指令步骤进行verilator的安装
pacman -Syuu //第一次同步完后,会要求关闭MSYS2。关闭后重新打开
pacman -Syuu //重启MSYS2后再次运行该指令
pacman -S --needed base-devel mingw-w64-x86_64-toolchain //安装gcc,make等工具,我这里直接enter全部安装了
pacman -S mingw-w64-x86_64-verilator //安装verilator
安装完成后,可以输入以下指令进行验证:
make -v
gcc -v
which verilator
至此,SpinalHDL的环境已经搭建完成。
2.1 使用MSYS2下载速度慢 / 连接超时(time out):
2.2 在MSYS2中验证gcc与verilator是否安装成功时,提示gcc command not found
或者no verilator in ...
的问题,原因是在MSYS2中下载的gcc与verilator存在于MSYS2的目录中,需要将MSYS2的路径加入环境变量中
在系统变量中的PATH变量中添加以下两个路径即可:
C:\msys64\usr\bin
C:\msys64\mingw64\bin
原因是MSYS2该shell中的环境变量是没有继承自系统的,在MSYS2下输入
echo $PATH
可以查看到MSYS2的环境变量与cmd下的不同,需要手动设置。MSYS2环境变量设置:https://blog.csdn.net/a2824256/article/details/118599404
2.3
Exception in thread "main" java.lang.AssertionError: assertion failed: Verilator C++ model compilation failed
at scala.Predef$.assert(Predef.scala:223)
at spinal.sim.VerilatorBackend.$anonfun$compileVerilator$19(VerilatorBackend.scala:635)
at spinal.sim.VerilatorBackend.cacheSynchronized(VerilatorBackend.scala:74)
at spinal.sim.VerilatorBackend.compileVerilator(VerilatorBackend.scala:600)
at spinal.sim.VerilatorBackend.<init>(VerilatorBackend.scala:717)
at spinal.core.sim.SpinalVerilatorBackend$.apply(SimBootstraps.scala:139)
at spinal.core.sim.SpinalSimConfig.compile(SimBootstraps.scala:896)
at spinal.core.sim.SpinalSimConfig.compileCloned(SimBootstraps.scala:830)
at spinal.core.sim.SpinalSimConfig.compile(SimBootstraps.scala:807)
at spinal.core.sim.SpinalSimConfig.doSim(SimBootstraps.scala:798)
at mylib.MyTopLevelSim$.main(MyTopLevelSim.scala:13)
at mylib.MyTopLevelSim.main(MyTopLevelSim.scala)
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
该条指令安装时,gcc/g++版本的问题。可以通过在MSYS2中输入gcc --version
来查看gcc的版本号。对gcc降版本之后解决了这个问题。2.4 type mismatch
原因:SpinalHDL库版本对应不上
解决:
在build.sbt文件中,可能有些地方build.sbt的spinal版本号使用的是"latest.release",即最新版本,在这里对版本号进行降低即可。