【LiteX】使用Python实现FPGA SoC构建的开源工具

目录

简介

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
Name Description
LiteX 用于在构建FPGA IP Core及SoC的框架
Litex Cores Ecosystem LiteX生态,包含了多种常用的IP Cores
Migen 一个用于HDL开发的Python工具包
FPGA toolchains 包括了FPGA的综合布线工具、下载软件等
board file 包含了非常多类型的开发板,其中包含了硬件约束信息
target file 通过参数化配置和调用board file,实现SoC的构建

LiteX生态

Name Description
LiteX-Boards Boards support
LiteDRAM DRAM
LiteEth Ethernet
LitePCIe PCIe
LiteSATA SATA
LiteSDCard SD card
LiteICLink Inter-Chip communication
LiteJESD204B JESD204B
LiteSPI SPI/SPI-Flash
LiteScope Logic analyzer

环境安装

操作系统

推荐使用Ubuntu,原因(踩过的坑):

  • 相比Windows下MinGW环境下的编译集成工具,Linux系统中运行速度会快很多
  • Windows版本LiteX脚本有概率将安装过的Vivado软件破坏,导致Vivado无法使用(原因未知)
  • LiteX的一些工具、脚本无法在Windows中运行(有的根本无法运行,有的库依赖较多)

Anaconda3

推荐使用conda虚拟环境,原因:

  • Ubuntu默认版本的一些软件、工具和库无法满足要求或有冲突
  • 便于环境的分发
  • LiteX git仓库的submodule过多且更新频繁,偶尔会出现版本不匹配导致的Bug,自身也有可能多个项目使用不同版本的LiteX

依赖库

bash 复制代码
# 进入虚拟环境
conda activate <your conda env name>

# 编译工具
pip install meson ninja

litex_setup

LiteX提供了脚本,下载后直接运行即可实现LiteX开发环境的快速构建

bash 复制代码
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:跳转

常用工具

Name Description
litex_term 使用串口连接SoC进行调试的工具,可以配合BIOS实现bootloader
litex_server
litex_cli
litexscope_cli 逻辑分析仪
相关推荐
hakesashou5 分钟前
python怎么写csv文件
开发语言·python
欧阳枫落10 分钟前
pip 换源
开发语言·python·pip
学步_技术1 小时前
Python编码系列—Python组合模式:构建灵活的对象组合
开发语言·python·组合模式
ac-er88881 小时前
在Flask中处理后台任务
后端·python·flask
ac-er88881 小时前
Flask中的钩子函数
后端·python·flask
Book_熬夜!1 小时前
Python基础(六)——PyEcharts数据可视化初级版
开发语言·python·信息可视化·echarts·数据可视化
我的运维人生2 小时前
利用Python与Ansible实现高效网络配置管理
网络·python·ansible·运维开发·技术共享
毕设木哥2 小时前
计算机专业毕业设计推荐-基于python的汽车汽修保养服务平台
大数据·python·计算机·django·汽车·毕业设计·课程设计
m0_638971343 小时前
ARM概念
python