13

openwifi · 2021年02月01日

one man army(孤胆英雄)3 - 硬件界的RMS--创造FPGA的gcc!

导读:

上帝说:要有光;RMS(Richard Stallman)说:软件要自由。

RMS构建了自由软件的基石,操作系统内核,gcc,emacs。那么今天就来介绍这个构建了FPGA的gcc — 自由硬件的基石的程序员。他就是Clifford Wolf。当然现在应该说她就是Claire Xen。生于1980年的奥地利程序员。1996年就开始玩UNIX/Linux。

导读结束。

好了,不再歪楼WiFi,回到one man army主题。(关于WiFi芯片探秘,以后另开主题)。

上帝说:要有光;RMS说:软件要自由。

是的,你没看错,欲说FPGA,先说软件。RMS(Richard Stallman)说的是软件要自由(Free),而不是软件要开源(opensource)。这里的Free也不是免费的意思,而是自由的意思。“opensource software for free”这恐怕是人们对自由软件最大的误解和RMS心中最大的痛了。所以近些年来,自由软件组织,比如FSF(Free Software Foundation)已经开始有意的使用Libre software,而不是Free software这个词,以避免误导不明真相的群众觉得Free software就应该是免费的。

RMS所倡导的自由软件指的是人们修改和再次分发软件的自由。而开放源代码(opensource开源)则是达到这个目的的一种手段而已(没有源代码,修改就太难了)。开源不意味着免费。开源不意味着免费。开源不意味着免费。比如,你可以发布一款自由软件,并允许人们修改和再次分发。这不意味着你不能收费,你可以向每一个购买这款软件的人收费。这就好比,你可以建造一个房子,然后通过售卖这个房子赚取利润,并附赠它所有的设计图纸和原材料采购清单给买家,买了这个房子的人可以装修或者改造这个房子,然后再次出售。

但为什么大多数人会觉得买一款自由软件似乎很奇怪,但买一座房子确没什么不妥呢?本质上是因为软件的复制和分发成本几乎为零!而房子的复制对大多数人来说太难了!但其实在本质上,一款软件和一座房子是类似的,都需要开发者付出大量的劳动。所以,对于自由软件,无论是软件需要付费还是开发者接受捐赠,都不要也不应该感到奇怪。

RMS毫无疑问也是one man army级别的人物,以一己之力推动构建了整个自由软件(Libre Software)的基石:GNU hurd操作系统内核(当然现在广泛使用的是GNU Linux),gcc编译器,emacs编辑器,GPL license等。

这其中gcc的重要性不言而喻。因为软件始终需要运行在某种计算机上,但计算机是无法直接执行软件源代码的,需要用gcc将源代码“翻译”为机器能够直接执行的一串命令,即CPU的指令集。

从软件说到硬件。其实近些年来,设计和制造硬件的成本已经大大降低,效率也大大提高。比如各种小型CNC(机床),3D打印项目,还有各种电路板EDA技术,比如开源电路板设计软件KiCAD,以及力创的云端原理图版图设计软件力创EDA以及背后整套的元器件采购、打板贴片一条龙服务,甚至Google和Skywater推出了免费的芯片物理设计PDK和免费流片项目,第一次尝试了开放的芯片制造。但硬件与软件的最大的不同就是,传统意义上的硬件一旦制造完成就固化下来了,想要修改则必须进行新一轮的硬件制造。

但对于数字电路这类硬件,有一种特殊的硬件是可以反复编程的,那就是FPGA(Field-programmable gate array)。举个很粗的例子,刚出厂的FPGA,可以看做是一块空白芯片,什么都做不了。但你可以使用硬件描述语言(VHDL,Verilog)描述一种CPU,并使用FPGA工具链把这个描述转化为FPGA芯片的配置文件(称之为bit stream文件),将这种配置下载(也可以叫编程)进入FPGA,那么这块FPGA就变成了一颗CPU。你可以多次修改你的CPU设计,并下载到FPGA进行测试。你也可以创建其他硬件描述,比如GPU,然后通过FPGA工具链编译、下载到FPGA,那么这块FPGA摇身一变就变成了显卡!

FPGA是怎么做到这么神奇的呢?基本原理就是FPGA里预先做好了许多数字电路的基本单元,比如RAM,查找表(LUT),乘法器(DSP),以及一些连线和连线到各个基本单元的开关。FPGA的这些硬件架构信息就好比CPU的“指令集”。FPGA编程,实际上就是在配置这些基本逻辑单元的参数(比如几个输入输出,位宽,真值表),以及哪些逻辑单元与哪些线相连或者断开。FPGA工具链所要做的事情,就是将HDL源文件,通过“编译”变成FPGA的配置文件。这个编译通常分为两部:综合(Synthesis),布局布线(Place and Route)。综合就是将HDL源文件转化为一种更基本的描述,即如何用基本数字电路,比如与门、非门、寄存器,来描述你需要的逻辑,然后映射为具体的FPGA内可用资源(RAM/LUT/DSP)。不同的FPGA,不同的厂家,可用逻辑资源设计是不同的。布局布线,就是不断尝试最优的FPGA内部资源的布局和连线,以达到你需要的时钟频率要求和确保需要的逻辑资源不超过FPGA容量。

不难想到,针对FPGA的编译器(从HDL源文件到FPGA的bit stream配置文件)一般来说都是FPGA厂家出的,因为FPGA芯片不像CPU那样会出一本厚厚的指令集手册供汇编语言编程人员使用,FPGA芯片的架构信息是不开放的!但是,在几十年的自由软件运动的大背景下,一些人开始思考如何针对FPGA构建开源的工具链(即综合、布局布线工具),不恰当的比喻就是构建FPGA的gcc!这种针对FPGA的开源工具链其实有很大的意义,因为一旦把工具链所用到的具体FPGA硬件架构信息替换为芯片代工厂的硬件架构信息(也叫PDK,Physical Design Kit,即代工厂能制作哪些些基本逻辑单元,片内连线的性能是怎样的),那么这个工具链立刻就会变成ASIC工具链!人们将会第一次拥有彻底的自由设备(自由硬件加自由软件)。

今天要介绍的这位程序员,就是创造了开源FPGA工具链的Clifford Wolf (Claire Wolf),奥地利。生于1980。即图1右。
wof-rms.png

时间线:

1996~2006,一直在UNIX/Linux领域内工作。从系统管理员,培训师咨询师到开发者。从16岁就开始玩UNIX/Linux,一定是那种计算机少年了。

2007~2017,在LIDAR(激光雷达)公司RIEGL Laser Measurement Systems工作,工作内容是数学模型、FPGA、GPGPU以及嵌入式Linux。

从2012年开始,他发布了开源Verilog逻辑综合(Synthesis)工具Yosys(YosysHQ/yosys),可以用于Lattice和Xilinx的FPGA。

从2015年开始,他发布了开源RISC-V核picorv32(https://github.com/cliffordwo...),时至今日已经被几个SoC项目集成和流片!这个核心主要特点是消耗资源少,主频高。当然主频高不意味着性能高,它的CPI(Cycles per Instruction)平均大约是4~5,也就是4~5个时钟周期才完成一条指令,所以比较适合MCU控制领域,而不是高性能。

从2015年开始,他还开始了Icestorm项目(Project IceStorm),不满足于只是用yosys做FPGA综合,而是开始针对Lattice FPGA整合整条开源工具链:从Verilog到bitstream。综合工具是基于之前的yosys,布局布线是基于arachne-pnr(YosysHQ/arachne-pnr),FPGA的硬件架构信息(关于FPGA内部连线、LUT等逻辑单元、RAM、DSP的信息以及他们的配置方法)依靠反向工程。

从2017年开始,Founder & CTO Symbiotic EDA(https://www.symbioticeda.com/),Symbiotic EDA联合创始人和CTO。看起来是和别人一同建立了开源EDA软件公司。最近的公司合影中,后排中间紫红衣服就是她。从公司主页来看,主要是提供FPGA培训、设计和验证商业服务。见图2。
symbolicEDA.jpg

从2018年开始,也许是不满足于Icestorm项目中的arachne-pnr,他发布了另一个开源FPGA布局布线工具nextpnr(YosysHQ/nextpnr),但很快工作主要交由另一个人维护。

时至今日,yosys和nextpnr已经被开源FPGA工具链项目(SymbiFlow)收录其中,作为主力FPGA综合、布局布线工具。SymbiFlow的愿景是打造FPGA的“gcc”工具链。这里gcc只是类比,并不是说直接把C代码编译为FPGA,代码还是各种HDL语言,比如VHDL、Verilog。这个类比也还算贴切。因为gcc本身也是几个工具的集合(编译、链接等)。SymbiFlow主要工作是:

整理和发布FPGA的“指令集”,即硬件架构信息库(关于FPGA内部连线、LUT等逻辑单元、RAM、DSP的信息以及他们的配置方法),目前是针对Lattice和Xilinx。为什么要整理这些架构信息,因为这些架构信息类比CPU指令集。不知道CPU指令集,gcc也就失去了翻译的目标,无从谈起。对于FPGA工具,如果没有这些FPGA硬件架构信息,那些综合、布局布线工具就不知道如何将用户的HDL设计输入对应到最终FPGA资源上。这个架构信息库,必须遵循一定格式,供其他工具链(yosys,nextpnr)调用,这样就很好的分割了硬件架构相关和无关的部分。
整合几个开源FPGA工具(比如yosys,nextpnr),结合FPGA架构信息库,构建针对FPGA的完整开源工具链(“gcc” for FPGA)。
2019年末,他发了一条Twitter:I've made some changes to my twitter profile and my twitter avatar. You are smart, you'll figure it out. ;-)。决定从他变成“她”,名字也从Clifford Wolf 改为Claire Xen,个人主页(https://www.clairexen.net/home),github(clairexen - Overview)等,全部更改。图3左右是他和她。
wolf.png

说起来也许是因为疫情的影响或者随机因素,去年2020年一年中,我所工作的实验室(IDLab - imec)发过两封信,宣告两位同事性别从男变成女,名字邮箱全变了。而在我在这个实验室工作的前三年中,没有过一例,而2020年一年就有了两例。疫情影响?

从2020年开始Claire Xen在她的新github主页中开始重构前面提到的picorv32,新的项目名字叫picorv(clairexen/picorv):Clean rewrite of PicoRV32, with improved flexibility and extensibility, support for RV64, and more.

从2021年开始,Co-Founder & CTO at YosysHQ(YosysHQ),YosysHQ联合创始人和CTO,看起来离开了之前的Symbiotic EDA。这最后的这段信息,是她新主页上给出的。看公司介绍和之前的Symbiotic EDA一模一样。但是看业务范围的话,Symbiotic EDA主要提供FPGA培训、设计和验证商业服务。而YosysHQ目前看,主要涵盖四大FPGA开源项目:

yosys(FPGA综合工具)
nextpnr(FPGA布局布线工具)
icestorm(Lattice iCE40 FPGA架构信息库和完整生成bitstream工具链组合)
trellis(Lattice ECP5 FPGA架构信息库和完整生成bitstream工具链组合)
我想,相比服务于公司的商业目标,她还是喜欢自己当自己创造的世界的国王。

在她的个人简历顶部,有这样一句话:Working on challenging projects that allow me to expand my skill set, at fair compensation and with enough free time to pursue my Open Source projects and academic/scientific work.

他期望能够在正式的工作之余有足够的时间来做开源项目和学术科研。不得不说,在个人简历的开头这么写,是一份率真和勇气。

关于开源的情怀,技术以及生意,这是一个无尽的话题。但有一点是很明确的,崇高的情怀不必然导致伟大的事业,牛b的技术也不必然导致成功的生意。重要的是,要想清楚自己真正想要的是什么,想清楚能否坚持并接受它带来的一切。

最后还是以James Bottomley关于开源项目的一段话结束:

  • It is possible for a great artist to make money (Picasso), but it's equally possible to live their lives in penury (Van Gough).
  • A successful project in no way guarantees a successful business model
  • 伟大的艺术家可以挣钱(毕加索),也可以贫困潦倒(梵高)
  • 成功的项目并不保证成功的商业模式
推荐阅读
关注数
2177
内容数
35
开源Wi-Fi芯片openwifi项目相关技术进展,欢迎加入
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息