SpinalHDL是一个开源HDL项目,它是一种基于Scala语言构建的现代硬件描述语言(HDL),旨在通过高级编程范式和强类型系统提升数字电路设计的效率与可靠性。与传统HDL(如Verilog或VHDL)相比,SpinalHDL利用Scala的面向对象、函数式编程及元编程特性,允许开发者以更简洁、可复用的方式描述硬件结构,同时通过类型安全和编译时检查减少设计错误。其核心功能包括自动生成高质量、可读性强的Verilog/VHDL代码,支持参数化硬件模块、领域特定语言(DSL)以及复杂的电路生成逻辑,适用于FPGA和ASIC开发。此外,SpinalHDL提供丰富的生态系统,集成形式验证、仿真测试工具及第三方库,简化验证流程并加速迭代。作为开源项目,它通过抽象底层细节和强调代码可维护性,成为复杂数字系统设计的高效解决方案,尤其在需要高可靠性和大规模模块化设计的场景中展现显著优势。
本文将带领您在本地安装和配置SpinalHDL的开发环境,并使用一个简单的样例让用户快速熟悉SpinalHDL的工作流程。如果您对于SpinalHDL非常感兴趣,您可以阅读SpinalHDL提供的文档
准备安装依赖软件,配置环境变量。
下载并安装以下所有软件:
在VSCode中安装Metals插件用于开发Scala工程,安装 Open in External App 插件用于更方便查看波形文件。
在MSYS2 MinGW64中安装Verilator用于仿真,GTKWave用于查看仿真波形。
pacman -Syuu
# You may be asked to restart MSYS2 shell
pacman -Syuu
pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-verilator
pacman -S mingw-w64-x86_64-gtkwave
使用"终端"工具安装下列软件。
sudo apt update
sudo apt install build-essential
sudo apt install git make default-jdk zlib1g-dev verilator gtkwave
sudo snap install code --classic
在VSCode中安装Metals插件用于开发Scala工程,安装 Open in External App 插件用于更方便查看波形文件。
在环境变量中添加"PATH"变量:
PATH = C:\msys64\usr\bin; C:\msys64\mingw64\bin
在环境变量中添加"VERILATOR_ROOT"变量:/c/msys64/mingw64/share/verilator
VERILATOR_ROOT = /c/msys64/mingw64/share/verilator
这一步对于Ubuntu应该不需要额外操作,所有的环境变量已经默认添加。
在目标目录下右键单击并使用"Open Git Bash here",在打开Git的命令行工具后,使用以下命令下载远程仓库至本地。
git clone https://git.15zk.net/Public/Adaptive_Direct_Digital_Synthesis.git
使用"终端"工具下载远程仓库至本地。
git clone https://git.15zk.net/Public/Adaptive_Direct_Digital_Synthesis.git
验证搭建的环境已可以正常运行。
使用VSCode打开刚刚下载的工程文件夹,等待左下角"Starting Metals server..."提示消失后,点击左侧插件栏的"Metals"插件标签页,然后点击"Import build",确保网络畅通并等待一段时间,直到如下图所示在"PACKAGES"标签页中显示出"Projects"选项。
在VSCode左侧的资源管理器标签页中依次打开"Adaptive_Direct_Digital_Synthesis" > "src" > "adds" > "Adds.scala",定位到文件末尾的"object GenAdds"。如下图所示,等待VSCode左下角的"Indexing..."等操作执行结束后可以看到对象上方出现"run | debug"选项。
点击上方的"run"选项,等待程序运行结束,如图所示,在"output"文件夹下可以看到"Adds.v"和"Adds_toplevel_sinROM.bin"文件,即为工程生成的输出文件。
在VSCode左侧的资源管理器标签页中依次打开"Adaptive_Direct_Digital_Synthesis" > "src" > "adds" > "sim" > "AddsSim.scala",定位到文件开头的"object AddsSim"。如下图所示,等待VSCode左下角的"Indexing..."等操作执行结束后可以看到对象上方出现"run | debug"选项,点击"run"选项,等待程序运行结束。
右键点击"simWorkspace" > "Adds" > "test" > "wave.fst"选择"Open in External App"。在"在这台电脑上查找其他应用",定位到"C:\msys64\mingw64\bin\gtkwave.exe",在"GTKWave"的"SST"标签页中的"TOP"选项,将"Sim[15:0]"信号加入到波形窗口,将数据格式设置为"Data Format" > "Signed Decimal",然后再设置"Data Format" > "Analog" > "Step",可以查看如下图所示的波形。
右键点击"simWorkspace" > "Adds" > "test" > "wave.fst"选择"Open in External App"。在"GTKWave"的"SST"标签页中的"TOP"选项,将"Sim[15:0]"信号加入到波形窗口,将数据格式设置为"Data Format" > "Signed Decimal",然后再设置"Data Format" > "Analog" > "Step",可以查看如下图所示的波形。