第一章:硬件开发环境搭建

大家好,我是老李。做硬件量化策略这些年,踩过的坑比吃过的盐还多。今天咱们聊聊开发环境搭建——这一步要是没弄好,后面全白搭。

说实话,很多人一上来就急着写代码、跑仿真。我见过太多人卡在环境配置上,一卡就是好几天。所以,咱们先把地基打牢。

1.1 Linux开发环境配置(Ubuntu 22.04)

为什么选Ubuntu 22.04?我个人习惯用LTS版本,稳定。你想想看,做硬件开发最怕什么?最怕系统突然抽风。Ubuntu 22.04的软件源成熟,驱动支持也好。

安装步骤其实不复杂,但有几个细节要注意:

  • 分区建议:/boot分2GB,/分50GB,剩下的全给/home。我在项目中遇到过/home空间不够,编译到一半报错,那叫一个尴尬。
  • 换源:装完系统第一件事,换国内源。清华、中科大、阿里都行。不然apt update能等到你怀疑人生。
  • 必备工具包
sudo apt update
sudo apt install build-essential git cmake
sudo apt install libboost-all-dev libeigen3-dev
sudo apt install python3-pip python3-venv
小技巧:装完系统后,先跑一遍 sudo apt upgrade。我每次装新机器都这么干,能避免很多奇奇怪怪的依赖问题。

嗯,这里要注意:如果你用的是虚拟机,记得给CPU分配至少4核,内存8GB起步。别问我怎么知道的——我第一次用2核4GB跑Vivado,编译到一半直接卡死。

1.2 Vivado/Vitis HLS安装与许可

Vivado这玩意儿,说白了就是Xilinx家的IDE。做FPGA开发绕不开它。Vitis HLS则是用C/C++写硬件逻辑的工具,对量化策略来说特别实用。

安装流程

  1. 去Xilinx官网下载Vivado ML Edition(现在叫这个名字)。选Linux版本。
  2. 下载完是个.bin文件,给执行权限:chmod +x *.bin
  3. 运行安装:./xsetup
  4. 安装路径建议别用默认的,我习惯放 /opt/Xilinx
警告:安装路径不要有中文!不要有空格!我曾经因为路径里带了个空格,折腾了一整天。

许可配置

许可这块,说简单也简单,说坑也坑。我建议用浮动许可(Floating License),方便多台机器共用。

# 设置环境变量
export XILINXD_LICENSE_FILE=2100@license-server-ip
# 或者用本地文件
export XILINXD_LICENSE_FILE=/opt/Xilinx/Xilinx.lic

记得把这两行加到 ~/.bashrc 里,不然每次开终端都要重新设。

核心要点:Vivado 2022.2及以上版本对Ubuntu 22.04支持最好。别问我为什么推荐这个版本——我试过2021.1,编译时各种库不兼容,头都大了。

1.3 硬件仿真工具入门(Verilator & Icarus Verilog)

仿真工具,说白了就是让你在电脑上跑硬件代码,不用真的烧到板子上。这对量化策略回测来说太重要了——你总不想每次改个参数都重新综合一次吧?

Verilator

Verilator是我最常用的工具。它把Verilog代码转成C++,然后编译成可执行文件。速度比传统仿真器快一个数量级。

安装

sudo apt install verilator
# 或者从源码编译(推荐)
git clone https://github.com/verilator/verilator
cd verilator
autoconf
./configure
make -j$(nproc)
sudo make install
个人经验:从源码编译虽然麻烦点,但能拿到最新特性。我去年遇到一个时序问题,用apt装的旧版死活查不出来,换成新版一下就定位到了。

基本用法

# 编译Verilog文件
verilator --cc top.v --exe sim_main.cpp
# 生成的可执行文件在 obj_dir 目录下
make -C obj_dir -f Vtop.mk
# 运行仿真
./obj_dir/Vtop

Icarus Verilog(iverilog)

Icarus Verilog是另一个选择。它比Verilator更接近标准仿真器,支持SystemVerilog的大部分特性。

安装

sudo apt install iverilog gtkwave

基本用法

# 编译
iverilog -o testbench.vvp testbench.v top.v
# 运行
vvp testbench.vvp
# 查看波形
gtkwave dump.vcd
避坑指南:我曾经用iverilog仿真一个带PLL的模块,结果死活不锁相。后来发现是iverilog对某些Xilinx原语支持不好。遇到这种情况,建议换Verilator或者直接用Vivado自带的仿真器。

1.4 知识体系总览

说了这么多,咱们用一张图来总结一下整个开发环境的结构:

硬件量化策略开发环境架构 Ubuntu 22.04 LTS 开发工具链:Git · CMake · Boost · Eigen3 · Python3 Vivado / Vitis HLS 仿真工具:Verilator · Icarus 输出:比特流 · 仿真波形 · 回测结果

这张图把整个环境分成了四层。底层是操作系统,上面是开发工具,再往上是FPGA专用工具和仿真工具,最顶层是输出产物。每一层都依赖下一层,缺一不可。

1.5 环境验证

装完所有东西后,我建议跑一个简单的测试,确保环境没问题:

# 测试Verilator
verilator --version

# 测试iverilog
iverilog -V

# 测试Vivado
source /opt/Xilinx/Vivado/2022.2/settings64.sh
vivado -version

# 测试Vitis HLS
source /opt/Xilinx/Vitis_HLS/2022.2/settings64.sh
vitis_hls -version

如果所有命令都能正常输出版本号,恭喜你,环境搭建成功了。

最后说一句:环境搭建这事儿,急不得。我当年第一次配Vivado,从下载到跑通第一个例子,整整花了三天。现在回想起来,大部分时间都花在解决依赖问题上。所以,耐心点,一步一步来。

公众号:蓝海资料掘金营,微信deep3321