可编程逻辑
Intel和AMD都斥巨资收购了领先的FPGA公司。撇开相对较小的嵌入式计算和通信/互联网市场,这些基本上是对FPGA作为数据中心服务器CPU的关键组合的未来的赌注。但除非克服了在软件程序员工作的难题和设备管理方面的主要挑战,否则这种组合将是个未知数。理解为什么AMD对FPGA供应商Xilinx如此感兴趣,或者说Intel多年前为何对Altera感兴趣,有助于了解FPGA到底是什么,以及这些设备在目前芯片行业中发挥什么作用。人们的想法很简单,不幸的是,事实正是被这种简单的想法和许多复杂的技术所掩盖。首先是名字。FPGA是Filed-Programmable Gate Array的缩写,这个市场化的术语其实非常不合适,因为这些设备既不是可编程的,也不是门阵列。它们是工程师设计和构建集成电路的方式中一些困难问题的解决方案。
与主流芯片(CPU、GPU、ASIC)的对比,优势何在?
今天几乎所有复杂的数字IC都是通过单一任务链来构建的,即曾经被称为ASIC(Application-Specific IC)的设计流程。确定了对芯片要求的精确表述后,设计者收集一系列的功能块:处理器、内存模块、加速器功能和专用控制器,它们共同满足了要求。这些模块中的大多数都采用的IP,并从供应商库中提取。少数没有这种形式的,设计者将用HDL(Hardware Description Language)来描述,但不要与C++或Python等编程语言混淆。编程语言描述了一个处理器应该执行的一系列步骤,以执行一个算法。HDL描述的是一块硬件的结构,而不是一连串的事件。然后,设计工具将这些IP模块和HDL描述组合成一个逻辑元素、寄存器和连接它们的线段的列表,即一个SoC的基本部分。然后,设计团队详尽地测试这个所谓的网表。随后的工具通过几个曲折的步骤将网表转换为代表即将在SoC上制造的实际晶体管和导线的形式,然后转换为在芯片上打印这些特征的图案。
大量的数据要经过更多的测试,然后被送到掩膜车间和制造实际集成电路的工厂。这个过程可以制造出相当接近底层芯片工艺的潜在最大密度、速度和能效的集成电路。但它需要大量的时间,从需求到第一块芯片诞生需要9个月的时间,这并不罕见,如果有设计错误、需求变化或工厂的延误,从开始到结束的链条很容易达到一年或更长时间。而且还有大量的初始成本,不仅包括设计团队的工作,还有一套掩模和最初运行芯片的昂贵的成本。
在许多情况下,例如不确定的设计要求,在快速发展的市场或小批量的生产,ASIC方法并不理想。FPGA来救场FPGA正是为了解决这个问题而出现的。但FPGA的密度和速度会降低,功耗也大幅增加,FPGA让设计团队实际上跳过了网表开发后的所有步骤。相反,设计者直接将网表实施在现成的FPGA芯片中。这可以节省几个月的后端芯片设计时间和掩膜车间及制造时间,以及数万美元的前期费用。FPGA集成电路的单价会大大高于同类ASIC芯片的量产单价。但通常,如果设计发生变化或产量较低,ASIC摊销后的单位成本实际上可能高于FPGA。全球FPGA 市场规模不断扩大,中国市场增速更是快于全球。FPGA下游应用市场广泛,随着5G技术的提升、AI的推进以及汽车自动化趋势的演进,全球FPGA市场规模将稳步增长。Frost&Sullivan,预计全球 FPGA需求将从2021年 68.6 亿美元增长为2025年125.8亿美元,年均复合增长率约为 16.4%。
全球 FPGA 市场规模 中国市场增速更是快于全球。随着国产替代进程的进一步加速,近年来,中国 FPGA 芯片市场规模持续上升,从2016 年的 65.5 亿元增长至 2020 年的 150.3 亿元,年复合增长率达 23.1%。据预测,至 2025 年中国 FPGA 市场规模将进一步提升至 332.2 亿元,2021-2025 年的复合增长率为 17.1%,高于全球 FPGA 市场的 10.85%。
中国 FPGA 市场规模FPGA 芯片国外起步较早,技术积累深厚,高度垄断市场。在全球FPGA 市场中,主要被Xilinx(已被AMD收购)和Intel两家海外企业双寡头垄断,在2019年,两家合计占据了全球市场份额的85%以上。由于技术壁垒高、更新换代速度快,全球 FPGA 市场高度集中,国内厂商占比较低。
2019 年全球 FPGA 市场竞争格局 国内 FPGA 市场起步较晚,技术层面仍存在较大差距。目前Xilinx、Intel、Lattice三家供应商占据中国约80%FPGA市场份额。尽管国外厂商占比仍然较高,在国产化趋势下,但国内厂商有所突破,中国FPGA市场的成长将助力国内企业占据市场份额。国内FPGA市场起步较晚,相关技术人员匮乏,主要面向低密度市场扩展自身份额,逐步实现国产替代。
虽然国内FPGA厂商有百家争鸣之势,但基本分布在中低端市场,大多是一些1000万门级左右的FPGA,少数达到2000万门级的FPGA虽然也有自主研发的,有一些是逆向工程的产物,或商业收购的结果。从技术水平上看,国内厂商与国际龙头仍存在较大差距。但随着国内企业加大研发布局,其设计能力已有较大提升,如复旦微 28nm 制程亿门级 FPGA 芯片已实现量产出货;安路科技 28nm产品已正式量产,FinFET 工艺产品已开展预研。随着国内企业的进一步研发,有望逐步缩小与国际先进水平的差距,在国产化趋势下扩大国内市场份额。
FPGA 芯片最大的特点是可编程性,可通过改变芯片内部连接结构,实现任何逻辑功能。其应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及人工智能、数据中心、医疗、通讯、5G、安防、汽车电子、工业等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以ASIC转向FPGA,FPGA正以各种电子产品的形式进入我们日常生活的各个角落。随着应用场景对FPGA的需求持续提升,再加上5G、人工智能、大数据、自动驾驶、物联网的发展推动中国FPGA市场扩张,刺激增量需求释放,从行业发展趋势来看,FPGA潜力被严重低估,未来大有可为。对于人工智能而言,算法正处于快速迭代中。虽然ASIC芯片可以获得最优的性能,即面积利用率高、速度快、功耗低;但是AISC开发风险极大,需要有足够大的市场来保证成本价格,而且从研发到市场的周期很长,不适合例如深度学习、CNN等算法正在快速迭代的领域。FPGA正好能适用于人工智能领域,满足高速并行计算的需求,基于全球人工智能市场大热,这也刺激了FPGA的市场,有利于FPGA产业的发展。
FPGA工程师核心竞争力是什么?
对于FPGA工程师的核心竞争力,其实FPGA工程师在真正工业界还是有细分的,大致可以分为两部分,做IC原型验证的(包括design和verification),用FPGA开发产品的。做IC原型验证大多不需要了解算法,只是根据设计人员的设计框图实现逻辑(大公司);做产品开发的可能离具体的应用和算法更近一些,相当于将特定应用和算法做硬件实现。我这里讲的更加侧重的是做FPGA实现这类的工程师(包括IC原型验证的design和产品设计的design)。我将更细致的给出一些我认为重要的能力。
1、 RTL设计实现能力。
关于FPGA工程师的核心竞争力,很多人会提到算法实现能力,我将这归结为RTL设计实现能力的一部分,RTL实现是FPGA工程师或者说HDL开发人员的入门首先接触到的东西,我将其总结为如下几点:
a、 硬件的实现思路HDL设计实现和软件实现的思路不同,HDL作为一种描述语言,侧重的是对硬件的映射和连接关系的描述,当然也有逻辑、处理的实现,但归根揭底所有的逻辑都是在硬件上实现的,最终都会映射为加法器,乘法器,状态机,计数器,编码器(优先),解码器等等一些列硬件资源,对于逻辑拆解和抽象能力将直接关系到最终编码的效率。简单的来说,好的HDL编码人员编写的代码更容易被编译器综合,对于初学者来讲,编译器的综合(包括后续Map布局布线)时间以及warning数量以及最后综合出来资源和你预先设计的吻合程度可以做为考量HDL代码好坏的一种方式。
b、 资源和时序的优化能力资源和时序的优化能力是作为FPGA(ASIC)开发人员进阶的能力,这里就需要大量的经验和反复的迭代,不断对硬件(FPGA底层结构)深入理解才能够达到。对于FPGA来讲和ASIC设计有所不同,ASIC的硬件实现很多是由综合器决定的(比如用什么样的乘法器),但是对于FPGA来讲,资源全部是固定的,FPGA资源可以分为三块,运算逻辑(LUT DSP carry chain等),存储单元(REG SRL BRAM DRAM),IO(各种高速低速接口),相同的算法应用可以用不同的资源,不同资源的组合方式来实现。那么如何用更少的资源,更快的主频实现某一算法,这就需要有很强的资源和时序优化能力,通常这种优化是经过多次迭代的,当然通常顶层的设计人员会对系统层次的资源和时序有着较为准确的把握,也会给出各个模块的设计指标和边界,但是不同开发人员水平和能力最终设计的结果是不一样的,好的资源和时序优化能力是FPGA工程师的重要竞争力。再反过头来说软件开发,其实从优化上来讲和RTL设计或者说HDL开发没什么不同,好的软件设计人员更了解计算机底层,对于资源(时间,空间)的使用,对于算法的效率的分析也更加深刻,因此也能写出更好的软件代码,我觉得在这一层面上无论软件还是硬件开发都是对于逻辑的抽象能力(当然术有所不同)。
2、 硬件调试能力。
调试能力,也是作为FPGA开发人员和所有从事硬件开发人员都一直认可的能力或者说核心竞争力。举个例子,在找工作的时候如果你能向别人展示出你无与伦比的调试能力,别人没有理由不要你。调试能力需要大量的现场经验作为积累,同时也需要人的逻辑分析能力,当然还需要耐心,细致等等人的高尚品质 ,这里我也做一个小小的总结。
a、 FPGA本身调试工具的使用
我想这里又可以分为两个阶段,仿真和上板调试,仿真我想作为FPGA工程师都不陌生,大型的开发,通常有多个不同层次的模型,基本算法原理的模型,硬件仿真模型(通过C或matlab做定点仿真),然后再试HDL仿真模型(通过modelsim仿真最后的实现),仿真是一门很大的学问,现在都有专门的verification人员做。但是对于普通FPGA开发人员来京,如何利用仿真这个工具来高效率的调试是一个值得思考的问题,一些异步的输入情况如何用仿真来排除问题,上板调试发现问题,根据问题输入情况仿真排除问题,这些都是利用FPGA仿真工具来调试的手段。对于上板调试,主要就是利用chipsocpe添加调试信号,这里又涉及到如何利用有限资源(chipsocpe信号数量和深度)来排除问题,通常在上板调试发现问题后,仿真又无法定位解决(仿真是有和硬件不一致的情况的,比如一些RAM冲突的问题)。经过分析加入合适的调试信号,设置合适的触发条件,然后定位排除问题。这些说起来容易,实际还是需要大量的上板经验,特别是大型系统的调试经历不断磨练提升。此外还有一些应用需要配合外部仪器来获取更多信息帮助定位问题,包括示波器,谱分析仪,网络分析仪等常用实验室仪器。
b、问题定位分析能力上面讲的是都是利用工具来进行调试,但是硬件比软件难得地方就在于其调试的复杂性,很多时候无法利用工具进行问题的定位,比如现象无法复现,输入条件随机或者过于复杂,涉及模块逻辑很多等等情况,这时候去定位问题大多靠想,就是逻辑分析来排出问题。我认为这是FPGA工程师真正的核心竞争力,因为这不仅仅需要经验的积累,同时还需要很好的逻辑思维和分析能力。
c、系统调试能力系统调试能力是更加难得一项能力,通常做到系统层次的人员不会再具体的写代码或者上手调了,当然对于小团队小公司还是得自己上手。系统层面的调试能力一方面是对FPGA顶层的调试能力,各个模块构成的片上系统的问题分析定位能力。通常各个模块在系统联调之前都是经过验证的,但是在联调的时候还是会出现各种各样的问题,这时候的问题反馈的信息更加少,设计的逻辑模块更加多,如何一步步抽丝拨茧定位到问题所在,并且采用什么样的方式去解决(这时候通常不是单独解决一个内部模块就行的),都需要很深厚的功力。另外一方面是整个硬件软件系统层次的调试能力,要看得懂原理图PCB,懂硬件,了解软件接口,现在FPGA越来越讲究Hardware Software Co-design,软件硬件这个系统层次的调试能力对人的要求更加高,当然这通常已经远离了通常FPGA工程师的职责,但是我认为这是作为FPGA工程师上升通道中的重要能力。
3、更加高层次的更加高层次的东西,我个人的理解,还是系统层次的东西,算法和架构。怎样将一系列数学公式,转换为算法,再最终形成系统硬件的实现;整个系统采用什么样的架构,纯FPGA,arm FPGA,DSP FPGA,SOC FPGA;FPGA顶层采用什么架构,通用总线还是自定义总线,如何考虑通用性和可扩展性等等。再大至什么样的应用适合用FPGA实现,什么样的问题适合软件实现,怎样的组合能更加低成本高效率的解决问题,这一些列问题涉及的东西就很多了,我讲的都是以FPGA为核心做开发要面临的问题,其实其他平台的硬件、软件产品都是类似,系统层面的问题都是复杂的问题,同时我也认为,从系统层面去优化,解决问题才是最高效率的方式。归根结底,一个FPGA工程师的核心竞争力来源于深厚的技术功底,但是技术功底也并非通过一天练成的,最重要的是时间的积累,不断的钻研以及真正的兴趣。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !