【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 逻辑分析仪
相关推荐
断眉的派大星6 小时前
PyTorch 计算图与自动求导机制(超通俗精讲)
人工智能·pytorch·python
梦因you而美6 小时前
Python win32com 复制Excel sheet优化:覆盖替换而非删除重建,彻底解决公式报错
python·excel·win32com·python自动化·批量复制sheet表
SunnyDays10116 小时前
Python 如何实现 Markdown 与 Excel 互转
python·excel转markdown·markdown转excel·markdown转xlsx
我的xiaodoujiao6 小时前
API 接口自动化测试详细图文教程学习系列10--Requests模块2--举例说明
python·学习·测试工具·pytest
嵌入式-小王6 小时前
LangChain框架(二)---- 提示词模板
python·langchain
克里普crirp6 小时前
北斗电离层模型BDGIM广播系数
开发语言·python
深度学习lover6 小时前
<数据集>yolo扑克牌识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·扑克牌识别
迷藏4946 小时前
**发散创新:基于 Rust的模型保护机制设计与实践**在人工智能快速发
java·人工智能·python·rust·neo4j
kcuwu.6 小时前
从Python\+MySQL到Redis:非关系型数据库详解(PyCharm实操版)
redis·python·mysql
小陈工6 小时前
Python Web开发入门(十三):API版本管理与兼容性——让你的接口优雅地“长大”
开发语言·前端·人工智能·python·安全·oracle