SpinalHDL环境搭建及部分报错及解决方案

关于SpinalHDL的介绍,网上的介绍有很多,在这里就不多赘述了。最近看了网上很多SpinalHDL的环境搭建教程,但是在这个过程中踩了很多坑,记录在后面,如果有遇到相同情况的小伙伴,希望看了我的文章之后有所帮助。

1. 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. 部分报错信息及解决方案

2.1 使用MSYS2下载速度慢 / 连接超时(time out):

对MSYS2源进行更换即可:https://blog.csdn.net/justidle/article/details/103025966 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.(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)

这个坑是困扰了我很久的一个坑,产生这个报错原因是底层C++库版本的不兼容,这个是在MSYS2中pacman -S --needed base-devel mingw-w64-x86_64-toolchain该条指令安装时,gcc/g++版本的问题。可以通过在MSYS2中输入gcc --version来查看gcc的版本号。对gcc降版本之后解决了这个问题。我原本的版本号是gcc 13.0版本,但在MSYS2中是不允许直接降低版本的,但通过上述MSYS2换源之后,默认下载版本为gcc 12.2.0版本,这个问题就解决了。第二种方法我是在stackoverflow中发现的,可以在msys2仓库中,找到对应版本的安装包,下载并用msys2的shell手动安装,以此手段来完成版本降低。 2.4 type mismatch

原因:SpinalHDL库版本对应不上 解决: 在build.sbt文件中,可能有些地方build.sbt的spinal版本号使用的是"latest.release",即最新版本,在这里对版本号进行降低即可。

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: