【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 逻辑分析仪
相关推荐
懒大王爱吃狼32 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
深度学习lover3 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
API快乐传递者4 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
阡之尘埃6 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
丕羽9 小时前
【Pytorch】基本语法
人工智能·pytorch·python
bryant_meng9 小时前
【python】Distribution
开发语言·python·分布函数·常用分布
m0_5945263010 小时前
Python批量合并多个PDF
java·python·pdf
工业互联网专业10 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
vue.js·hadoop·python·flask·毕业设计·源码·课程设计
钱钱钱端11 小时前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·python·职场和发展·压力测试·postman