【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 逻辑分析仪
相关推荐
汪洪墩17 分钟前
【Mars3d】设置backgroundImage、map.scene.skyBox、backgroundImage来回切换
开发语言·javascript·python·ecmascript·webgl·cesium
程序员shen1616111 小时前
抖音短视频saas矩阵源码系统开发所需掌握的技术
java·前端·数据库·python·算法
人人人人一样一样2 小时前
作业Python
python
四口鲸鱼爱吃盐2 小时前
Pytorch | 利用VMI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python
四口鲸鱼爱吃盐2 小时前
Pytorch | 利用PI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python
小陈phd2 小时前
深度学习之超分辨率算法——SRCNN
python·深度学习·tensorflow·卷积
CodeClimb3 小时前
【华为OD-E卷-简单的自动曝光 100分(python、java、c++、js、c)】
java·python·华为od
数据小小爬虫3 小时前
如何利用Python爬虫获取商品历史价格信息
开发语言·爬虫·python
NiNg_1_2343 小时前
Python的sklearn中的RandomForestRegressor使用详解
开发语言·python·sklearn