在 CLI (命令行)中结合 SBT 使用 Spinal
首先,在 template (提前下载)的根目录中打开一个终端。
可以直接从终端执行命令:
sbt "firstCommand with arguments" "secondCommand with more arguments"
但是 sbt
有一个相当长的启动时间,所以我们建议使用它的交互模式:
sbt
现在 sbt
会显示提示。让我们从 Scala 编译开始。它将获取依赖项,因此第一次运行可能需要一些时间:
compile
实际上,您永远不会仅使用 compile
命令,因为它会在需要时自动完成。与后续的构建相比,第一次构建时间将花费较长时间,因为 sbt 工具需要从冷启动构建整个项目,后续构建则尽可能使用增量构建。 sbt
支持交互式 shell 内的自动补全,以帮助发现和使用可用命令。您可以使用 sbt shell
或者 sbt
(不带参数)命令启动交互式 shell。
要运行特定的 HDL 代码生成或仿真,命令是 runMain
。因此,如果您输入 runMain
、空格和tab,您应该得到以下结果:
sbt:SpinalTemplateSbt> runMain
; projectname.MyTopLevelVerilog
projectname.MyTopLevelFormal projectname.MyTopLevelVhdl
projectname.MyTopLevelSim
自动补全功能会建议所有可以运行的内容。这是一个生成 Verilog 代码的例子:
runMain projectname.MyTopLevelVerilog
查看目录./hw/gen/:有一个新的 MyTopLevel.v
文件!
现在在命令的开头添加一个 ~
:
~ runMain projectname.MyTopLevelVerilog
它打印出这个:
sbt:SpinalTemplateSbt> ~ runMain mylib.MyTopLevelVerilog
[info] running (fork) mylib.MyTopLevelVerilog
[info] [Runtime] SpinalHDL v1.7.3 git head : aeaeece704fe43c766e0d36a93f2ecbb8a9f2003
[info] [Runtime] JVM max memory : 3968,0MiB
[info] [Runtime] Current date : 2022.11.17 21:35:10
[info] running (fork) projectname.MyTopLevelVerilog
[info] [Runtime] SpinalHDL v1.9.3 git head : 029104c77a54c53f1edda327a3bea333f7d65fd9
[info] [Runtime] JVM max memory : 4096.0MiB
[info] [Runtime] Current date : 2023.10.05 19:30:19
[info] [Progress] at 0.000 : Elaborate components
[info] [Progress] at 0.508 : Checks and transforms
[info] [Progress] at 0.560 : Generate Verilog
[info] [Done] at 0.603
[success] Total time: 1 s, completed Oct 5, 2023, 7:30:19 PM
[info] 1. Monitoring source files for projectname/runMain projectname.MyTopLevelVerilog...
[info] Press <enter> to interrupt or '?' for more options.
所以现在,每次保存源文件时,它都会重新生成 MyTopLevel.v
。为此,它会自动编译源文件并执行 lint 检查。这样,当您编辑源文件时,您几乎可以实时在终端上打印错误。
您可以按 Enter 停止自动生成,然后按 Ctrl-D 退出 sbt
。
也可以直接从终端启动它,而不使用 sbt
的交互式提示:
sbt "~ runMain mylib.MyTopLevelVerilog"
现在您可以使用您的环境了,让我们探索一下代码: 一个简单的例子。