【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 逻辑分析仪
相关推荐
小二·1 小时前
java基础面试题笔记(基础篇)
java·笔记·python
小喵要摸鱼3 小时前
Python 神经网络项目常用语法
python
一念之坤4 小时前
零基础学Python之数据结构 -- 01篇
数据结构·python
wxl7812274 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器
NoneCoder4 小时前
Python入门(12)--数据处理
开发语言·python
LKID体5 小时前
Python操作neo4j库py2neo使用(一)
python·oracle·neo4j
小尤笔记5 小时前
利用Python编写简单登录系统
开发语言·python·数据分析·python基础
FreedomLeo16 小时前
Python数据分析NumPy和pandas(四十、Python 中的建模库statsmodels 和 scikit-learn)
python·机器学习·数据分析·scikit-learn·statsmodels·numpy和pandas
007php0076 小时前
GoZero 上传文件File到阿里云 OSS 报错及优化方案
服务器·开发语言·数据库·python·阿里云·架构·golang
Tech Synapse6 小时前
Python网络爬虫实践案例:爬取猫眼电影Top100
开发语言·爬虫·python