简介
LiteX的主要应用是对FPGA SoC进行自动化构建,可以通过一条指令完成所有构建步骤,使用的是Python脚本
在构建过程中会作做很多事情:
调用各种子模块
将各个模块互联,形成一个整体的SoC
每个模块都被封装成Python Class,像搭积木一样将所有模块连接起来
对于已有的Verilog IP,将其接口封装成Python Class,即可进行使用
生成BIOS(当SoC中包含CPU时)
BIOS本身是一个CPU运行的程序
集成了模块初始化驱动(如SDRAM、SPI Flash、SD Card等模块)
集成了命令行(可以实现内存读写、模块配置、设备重启等功能)
集成了Bootloader功能(借助串口、网口、PCIe等实现二阶段启动)
同步生成寄存器表或设备树等文件(以供其他调试工具、操作系统使用)
生成Verilog、约束文件
借助Migen工具,将Python代码转换成Verilog代码
将BIOS固件初始化到指定的RAM/ROM中
将Python中所有的约束进行整合并生成约束文件(包括IO管脚配置、时钟频率等)
综合、布局、布线
可以调用FPGA厂商的Vivado、Quartus等
可以调用开源的yosys、nextpnr等
生成FPGA bitstream
构建完成后,可以直接进行上板测试,会用到LiteX提供的一些调试工具(跳转查看工具介绍TODO):
litex_term
litex_server
litex_cli
litexscope_cli
典型设计流程
+---------------+
|FPGA toolchains|
+----^-----+----+
| |
+--+-----v--+
+-------+ | |
| Migen +--------> |
+-------+ | | Your design
| LiteX +---> ready to be used!
| |
+----------------------+ | |
|LiteX Cores Ecosystem +--> |
+----------------------+ +-^-------^-+
(Eth, SATA, DRAM, USB, | |
PCIe, Video, etc...) + +
board target
file file
LiteX生态
环境安装
操作系统
推荐使用Ubuntu,原因(踩过的坑):
相比Windows下MinGW环境下的编译集成工具,Linux系统中运行速度会快很多
Windows版本LiteX脚本有概率将安装过的Vivado软件破坏,导致Vivado无法使用(原因未知)
LiteX的一些工具、脚本无法在Windows中运行(有的根本无法运行,有的库依赖较多)
Anaconda3
推荐使用conda虚拟环境,原因:
Ubuntu默认版本的一些软件、工具和库无法满足要求或有冲突
便于环境的分发
LiteX git仓库的submodule过多且更新频繁,偶尔会出现版本不匹配导致的Bug,自身也有可能多个项目使用不同版本的LiteX
依赖库
# 进入虚拟环境
conda activate <your conda env name>
# 编译工具
pip install meson ninja
litex_setup
LiteX提供了脚本,下载后直接运行即可实现LiteX开发环境的快速构建
cd <you work path>
mkdir litex_env
cd litex_env
wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
chmod +x litex_setup.py
./litex_setup.py --init --install --user --dev --tag 2024.04
仿真测试
TODO:跳转
硬件测试
TODO:跳转
常用工具
没有回复内容