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

(148) 2024-05-21 08:01:01

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工具。
    SpinalHDL环境搭建及部分报错及解决方案 (https://mushiming.com/)  第1张
    SpinalHDL环境搭建及部分报错及解决方案 (https://mushiming.com/)  第2张

  • 第三步:创建scala工程SpinalHDL环境搭建及部分报错及解决方案 (https://mushiming.com/)  第3张

这里注意一下,按照官方文档的说法,必须是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.<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)
    
    • 这个坑是困扰了我很久的一个坑,产生这个报错原因是底层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手动安装,以此手段来完成版本降低。
      SpinalHDL环境搭建及部分报错及解决方案 (https://mushiming.com/)  第4张
  • 2.4 type mismatch

SpinalHDL环境搭建及部分报错及解决方案 (https://mushiming.com/)  第5张

  • 原因:SpinalHDL库版本对应不上

  • 解决:

    在build.sbt文件中,可能有些地方build.sbt的spinal版本号使用的是"latest.release",即最新版本,在这里对版本号进行降低即可。

THE END

发表回复