使用PyPI来发布FPGA Overlays

现存的问题

现在有很多FPGA应用同时包含了硬件设计和软件驱动,比如PL bitstreams和Python包,用户必须要同时部署这两部分内容才能顺利运行起来。软件包的发布比较容易,但是硬件设计的bitstream往往比较大(>10M在GitHub上属于大文件),发布比较困难,这就导致了FPGA应用的整体部署往往需要先配置硬件环境然后再装软件,显得有些繁琐。

本文贡献

本文将介绍如何用PyPI来打包硬件bitstreams和软件程序,然后一并推送给用户。我们使用的范例是PYNQ,用户可以简单地在不同硬件平台上用pip install pynq来完成整体环境的部署,包含了FPGA overlays、Python软件驱动以及Jupyter notebook。

方案,以PYNQ-HelloWorld为例

Repository结构

  • boards
    包含所有硬件projects。用户可以在里面找到自己对应的硬件平台,然后build
  • pynq_helloworld
    这是主要的python package,里面还包含了jupyter notebook
  • MANIFEST.in
    里面就是需要包含在分发包中的文件,也就是需要把要查找的分发的包的路径写上
  • pyproject.toml
    这里指定了该项目build的最小系统需求
  • setup.py
    主要写需要安装的包的一些配置信息,比如包的版本号、作者、需要处理的包目录等等

如何做到打包对应的overlay

答案是不打包,而是在用户安装的时候再通过项目里的notebook(例子中是PYNQ-HelloWorld/pynq_helloworld/notebooks/*/)中对应的*.link文件来下载,这是PYNQ Utils Module提供的一个工具(build_py,在setup.py中的cmd_class字段指定)自动完成的。当用户安装时会自动读取当前平台并找到对应的*.link来下载。

如何提取合适的notebook

很简单的一个小技巧,在setup.py中定义一个entry_points,该entry_points实际上就是在安装时检测一下当前的硬件平台(是edge还是pcie),然后当用户使用pynq get-notebooks pynq-helloworld -p .命令来提取对应notebook时就会拿取对应平台的文件(命令中的pynq-helloworld实际上已经被替换成了pynq_helloworld.notebook.edge/pcie即项目中的notebook路径)。

打包上传流程

  1. python3 setup.py sdist会将项目打包成*.tar.gz并放在dist目录下,开发者可以用python3 -m pip install dist/*.tar.gz命令来尝试安装一下
  2. 打包安装没问题后只需要上传到PyPI就行了,具体可以参考官方流程,实际上关键步骤只要两步:python3 -m pip install --upgrade twine(更新) & python3 -m twine upload dist/*(上传)。
  3. 上传成功后应该能看到和PyPI上的页面

安装

  1. 现在可以愉快地安装了,只需要一条命令python3 -m pip install pynq-helloworld
  2. 如果需要用jupyter notebook,进入系统的jupyter notebook home目录并运行pynq get-notebooks pynq-helloworld -p .

使用PyPI来发布FPGA Overlays相关推荐

  1. Intel发布FPGA

    Intel发布FPGA FPGA概述 FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑).GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物. ...

  2. 在pypi上发布python包详细教程

    使用Python编程中Python的包安装非常方便,一般都是可以pip来安装搞定:pip install <package name>,我们自己写的python也可以发布在pypi上,很简 ...

  3. 【Python】如何在PyPI上发布自定义软件包

    1. 引言 在Python中我们经常使用pip来安装第三方Python软件包,其实我们每个人都可以免费地将自己写的Python包发布到PyPI上,供他人来通过pip进行安装. 在本文中,我们将从一步一 ...

  4. 在PyPI上发布自己的python包

    最近学习了一下,发布了一个自己的pypi Python包,这里我大致分享如何发布自己的Pypi包一般过程. 参考文章01: https://blog.csdn.net/weixin_37543731/ ...

  5. pypi.python.org_在Pypi上发布自己的Python包

    使用Python编程的都知道,Python的包安装非常的方便,一般都是可以pip来安装搞定: sudo pip install 最近因为项目上的需要,发布了一个自己的pypi Python包,这里我大 ...

  6. 发布你自己的轮子 - PyPI打包上传实践

    文章目录 发布 Python 包 准备 创建用户验证文件 创建项目结构 编写setup.py 编写README.md 编写LICENSE 生成发布包 本地测试(可选) 上传到PyPI 安装测试 常见错 ...

  7. 英特尔第三代 Ice Lake 发布正面与 AMD EPYC PK,结果令人大跌眼镜!

    作者 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 导读:传闻已久的第三代英特尔至强可扩展处理器,终于在北京风光最美的4月份发布了. 北京时间4月7日晚,在著名的网红打卡地,百年老首 ...

  8. kociemba算法c语言,Python kociemba包_程序模块 - PyPI - Python中文网

    科辛巴 这个Python包包含了Herbert Kociemba求解魔方的两阶段算法的两个等价实现(在C和Python中). 原始java实现可以在这里找到:http://kociemba.org/d ...

  9. 投毒者对 PyPi 上的开源包开发者下手了

    简述 OSCS 近期监测到 PyPi 官方发布公告称有攻击者针对 PyPi 上的开源组件开发者进行钓鱼,试图窃取 PyPi 贡献者的凭据.本次攻击是通过贼喊捉贼的假装PyPi官方给恶意包发邮箱进行钓鱼 ...

最新文章

  1. 鸟哥的私房菜 第0章
  2. 10月15日云栖精选夜读 | 阿里巴巴 Apache Dubbo 布道师谈 Service Mesh
  3. iOS----------苹果警告
  4. MySQL基础 (DML)
  5. toad导入数据_利用TOAD实现EXCEL数据在oracle的导入导出
  6. SiameseRPN++分析
  7. mysql 行转列_详解MySQL行列转换4个实现方案及反向行转列实验测试
  8. 使用HslCommunication实现PLC数据的远程客户端监视,以及web端实时监视,远程操作设备示例...
  9. WUSTOJ 1285: Factors(Java)
  10. 如何用 Excel 排查重复的数据
  11. 上海day3 ----
  12. 阿里云技术天团空降CSDN独家在线峰会,揭秘核心竞争力
  13. 百度编辑器ueditor 的 submit 表单提交
  14. 科普一下网络的灵魂 ACL
  15. js中break关键字的用法。
  16. 企鹅够牛,大事不断:腾讯音乐遭“投资者律师代表团”调查、大数据组件TubeMQ宣布开源、1千万美元领投英国AI企业SenSat...
  17. Colorful Image Colorization原理及源码详解
  18. matlab费根鲍曼,matlab 数学实验 迭代 _ 蛛网图(免积分)
  19. 中国知网文献引用导入EndNote9.X,Web of science导入endnote以及谷歌学术导入endnote图文详解,全网最细版本适用EndNote9.x,Endnote20版本
  20. python嗅探m3u8_python爬取m3u8连接的视频

热门文章

  1. Ubuntu14.04+CUDA8.0+TitanX+caffe配置教程
  2. Vue中对表单的增删改查(不含图片)
  3. python 排列组合
  4. chrome插件离线包(未上架插件解压文件)安装步骤
  5. 计算机科学与技术专业研究生分数线,同济大学计算机科学与技术专业考研录取分数线-研究生分数线-历年分数线...
  6. 很久以前用vue全家桶写的一个仿Mac桌面,挺有意思的
  7. VMware 下 Linux 利用虚拟光驱安装 VMware Tools 详解
  8. VS2017更改注释快捷键(Ctrl+/ 添加注释 ,Ctrl + Shift + / 取消注释)
  9. 安卓开发-如何添加横线
  10. 省级面板数据(2000-2019)十二:工业(主要经济指标、产量)(stata版)