![winniewei的头像 winniewei的头像](https://cdn.eetrend.com/files/styles/picture200/public/pictures/picture-709-1583200707.jpg?itok=i2ZF6LPv)
作者:杨一峰,芯华章科技技术市场经理
文章发布于《中国集成电路》,由国家工业和信息化部主管,中国半导体行业协会主办的官方专业期刊。
在阅读本文之前,读者可以对FPGA芯片的基本含义及原理做基本的了解。FPGA 的全称为Field Programmable Gate Array(现场可编程门阵列),属于专用集成电路中的一种半定制电路,是可编程的逻辑阵列。FPGA 的基本结构包括可编程输入输出单元、基本可编程逻辑单元、数字时钟管理模块、嵌入式块RAM、丰富的布线资源、内嵌专用硬核,以及底层内嵌功能单元。
图1 某FPGA的基本逻辑单元
市售常见的基于FPGA的平台产品包括FPGA开发板、FPGA原型验证系统。既然他们同样都是基于FPGA芯片设计的,为什么规模、功能、成本和价格上有非常大的差异?这要从它们应用场景和设计目标的区别说起:
FPGA开发板:
FPGA开发板的主要场景是“开发基于独立FPGA芯片的IP或应用系统”,其设计目标是精简化、高性能、低成本,并自带合适的外设接口,对调试功能的要求限于在单颗FPGA上用原厂软件调试。
因此其搭载的FPGA芯片通常的容量为小到中等规模,实际应用中,往往用于进行中小规模、特定协议功能芯片的开发,比如涉及以太网、MIPI、NVME/M.2 SSD控制、UART/I2C 控制、HDMI/DVI显示控制等。也有直接把一块FPGA开发板放在一个大型系统之中,起到控制板的作用,这样用户可以灵活地对控制信号做各种调整。也有一些应用场景计算算法用较大容量的FPGA实现,达到高性能和算法灵活性的应用目标。同时,由于中低端的开发板售价适中,FPGA开发板也适合初学者进行学习使用。
其次,部分FPGA开发板也被用在IP和小型芯片设计的开发验证场景。这部分开发板配备大容量的FPGA芯片,甚至是单板配备多片FPGA芯片来适应开发验证场景,一般由用户自己负责手工实现从设计到FPGA功能原型的流程。
FPGA原型验证系统:
FPGA原型验证系统的主要应用场景是“芯片设计过程中搭建软硬件一体的系统验证环境”:一是芯片流片回来前为软件团队提供调试驱动软件的平台,加速芯片上市时间;二是作为芯片仿真验证的一个补充,因为FPGA可以接真实的硬件子卡,跟仿真使用的软件模型有一定差别,有一定机会发现隐蔽的bug ;此外FPGA相对软件仿真以及Emulator速度快,比较适合一些耗时较多的大场景case。故在芯片设计越来越大的情况下,其设计目标是能使用多颗FPGA芯片快速实现高性能的全系统验证原型,并支持该场景下的调试需求。
首先,它搭载的往往是较大容量和多片的FPGA芯片,如Xilinx VU440/VU19P, Intel 的Stratix 10等,那么它就非常适合进行复杂算法、CPU/GPU类型芯片的验证和实现:比如人工智能,多核RISC-V处理器IP等开发环境;如果是SoC芯片或大型IP的开发,那么可以将FPGA系统经过互联扩展容量后,进行验证。
其次,FPGA原型验证系统更重要的目标,是从硬件和软件上支持大型芯片功能原型的各项要求。如低延迟并行IO接口、高带宽Serdes接口、自动化设计分割到多片FPGA并优化性能、多片FPGA的信号调试、原型系统规模的任意缩放、各种软硬件接口扩展方案,等等。这些目标决定了原型验证系统需要更专门的设计,特别是配套的自动化工具,因为对两三片FPGA以上的中大型设计,手工实现设计分割和优化的投入太大,设计团队更需要自动化工具。
区分了FPGA开发板和FPGA 原型验证系统平台的应用场景和设计目标,我们就明白它们为什么会有如此大的差异,本质上就是基于设计目标的功能取舍。下面我们分别介绍一下这2种产品和它们的关键点:
FPGA开发板
我们就先从FPGA开发板说起。为了实现基于FPGA芯片的开发、测试、应用,我们需要再为它加上一系列的外围电路及元件,这样FPGA才能够正常地上电、配置、加载运行程序、提供相应的外设接口及长时间保持稳定的工作状态。以目前最简单的实现方式来看,这就是FPGA开发板。前文提到它的主要场景是为FPGA芯片的直接应用而做开发,因此这类产品的设计重点也在于尽量接近目标应用系统。
图2 Xilinx公司出品的Zynq系列FPGA开发板
首先,从外观上看,单颗FPGA开发板尺寸可以做到很小,通常不会超过一张A4纸的大小,方便摆放和移动。上面布局FPGA 主芯片、电源处理芯片、外部接口部件、电容电阻等分立元件。Xilinx、Intel、Lattice等FPGA原厂都推出过各种各样的开发板。其中不光有传统范畴的FPGA功能开发板,也有采取ARM核 + FPGA架构的SoC解决方案,如Xilinx Zynq、Intel Arria10等等。ARM接口资源丰富、功耗低,擅长进行多媒体显示、逻辑控制;而FPGA擅长进行多通道或高速AD采集、接口拓展,以及高速信号传输等。两者相互结合,可满足各种工业现场应用场景。
其次,从硬件架构上,因为一般自带了很多常用外设接口,而且以单颗芯片的应用为主,所以FPGA开发板对互联和扩展的要求不高,有时会在板上有多颗FPGA芯片互连,但通常不考虑多板之间的高速连接需求,毕竟太大规模的逻辑设计要用到多颗FPGA,运行性能和调试能力会受很大影响。
在软件方面,用户主要依靠FPGA厂商提供的一体化软件(如Xilinx公司的Vivado,Intel公司的Quartus,Lattice公司的Diamond等)来实现FPGA工程的综合及布局布线。当然,也有一些实力技术雄厚的第三方厂商提供了不错的综合工具(如Synplify, Precision等),先由设计源代码得到网表,再交由原厂软件进行布局布线。但以上这些工具都不支持多片FPGA场景,因此FPGA开发板用于超过单片FPGA容量的芯片设计或IP验证时,都只能由用户自己手工做设计分割,这需要解决很多时钟、资源、性能、调试的问题,对工程师要求高,投入时间多。
从市面上的FPGA开发板销售情况来看,目前一些国产厂商占有的份额也很高。他们提供的开发板往往配置了中低端的FPGA芯片(包括有国产及进口的),并自行设计/制造PCB板。配套丰富的学习资料,同时在板上集成了常用的接口模块,如Flash、HDMI、DDR4,PCIe等;加之这些开发板的售价并不昂贵,一般从几百元到几千元人民币不等,适合大专院校和自学的人群购买使用。
FPGA原型平台
随着目前集成电路的不断发展,设计规模的大型化,单颗FPGA板在容量上就显得捉襟见肘,已经无法满足设计需求。首先,以目前国内头部的CPU、GPU设计公司的设计规模,单颗IC芯片的设计体量,需要占用到几十颗Xilinx VU440级别FPGA的情况,已屡见不鲜。
在这种背景之下,FPGA系统供应厂商开始着手研究多颗FPGA的系统解决方案。其中就包括在单块的PCB板上装配多颗FPGA及多个FPGA系统之间进行互联。
经过一段时间的发展和探索,FPGA原型验证平台产品应运而生。之所以经常称之为“平台”或“系统”,首先在硬件结构上比单板形式的FPGA开发板复杂很多,其次FPGA芯片厂商提供的软件工具无法支持这么复杂的多片FPGA实现,需要配套专业的FPGA原型实现相关软件工具。
一套优秀的FPGA原型验证系统,应该具有以下产品特性:
基于模块化的设计/可伸缩的验证平台规模
在保证一定的高速仿真性能的前提下提供验证完整性
提供从软件早期开发到系统级验证的解决方案
提供从综合、自动模块分割 、布局布线、FPGA bit产生、下载,以及在线/离线Debug的整套流程
提供丰富的调测手段,帮助用户快速定位问题,易于Bring Up
提供丰富的接口子板和外部真实设备相连
提供软件接口与外部软件通讯
提供丰富的IO接口,以及高速Serdes接口用于partition互连以及外设子卡的互连
如本文开头所述,复杂算法、CPU/GPU类型芯片的验证和实现都是适合在FPGA原型验证系统上进行的。不过,由于芯片规模的日益大型化,单颗的系统往往已经无法容纳下一个大型的IP/SoC了。
这个时候我们需要把多个原型系统进行互联,把分割后的逻辑下载到所有的系统当中,这样来进行整个设计的验证和调试工作。那么以目前的Partition互联技术手段看,主要分为单端IO、差分LVDS IO和高速Serdes IO (如Xilinx的GTH )互联的方式。
Serdes IO互联可以达到很高的带宽(Bandwidth),但根据收发器内部信号宽度和传输协议的不同,加上串并转换和Encoder/Decoder的时间开销,会产生几十到几百ns的额外延迟,可能影响分布于多颗FPGA芯片上的系统原型性能;而单端IO的延迟一般就在ns级别,故其分割后的系统性能会更高,但这对并行单端IO信号连接器的设计提出了很高的要求,目前包括Synopsys以及芯华章少数FPGA原型平台能够达到1.4Gbps的较高速率。
在实际原型系统的核心设计分割中,单端IO连接器用得更多一些,在连接独立的高速外设和接口时,Serdes高速连接器用得更多一些。这类高速互联接口及其线缆的成本都很高,但对于原型系统的设计目的来说是必须的,这也是为什么FPGA原型系统的价格要远远高于FPGA开发板的原因之一。
说完了硬件方面,再看软件方面,如果用到了多颗的FPGA系统,那么对于大设计的分割问题变得十分重要。对于一个大设计,软件可以自动或者手动的把逻辑分割到几片FPGA当中,根据连线资源情况插入TDM(时分复用)的IP,再对分割后的逻辑进行时序优化;软件能够保留顶层的端口信号名称。从调试方面考虑,需要探及设计的内部的信号。
随着设计规模增大,除了软件运行速度之外,综合阶段进行Timing Driven Synthesis优化的动作,以实现冗余逻辑的优化和时序上的提升,因此软件的算法优化显得十分重要。从性能指标上看,主要是分割的功能正确性、逻辑和时序的优化度及Timing-driven减少hop提升编译性能。利用分布式技术,减少设计规模对CPU时间和内存造成的影响。
目前,各大原型验证平台供应商都在软件上加大了投入。一款拥有出色的FPGA原型软件工具应具备以下的特点:
综合时进行专门的时序驱动优化
综合阶段充分利用并行化手段降低设计规模对综合时间造成的影响,尽量优化网表的时序和面积
算法优化、能够实现大数量的FPGA自动分割且配置简便综合工具与分割工具配合保留内部信号名称,并与综合工具配合映射信号名称,支持RTL源代码调试
自动产生时钟并处理时钟的分割,对于数片至数十片FPGA的大型设计实现很重要
最大程度保留原来代码设计层次,提高增量编译度和可调试性,分割前后功能保持一致
服务器软件时内存资源控制得当
保证分割结果正确的情况下,耗时短
这样的配套软件,能够一体化地完成综合及分割步骤,将为整个原型验证系统大大加分。随着设计规模的日益增长,用户对软件的综合/分割功能十分注重;软件功能出色,无疑能对硬件系统的销售产生极大的促进;反之,硬件系统做的很大,软件的功能跟不上,甚至要依赖外部的综合或分割工具,无疑为整套系统拖了后腿,无法实现上述的关键功能。
总 结
综上所述,我们再来看一下FPGA开发板、FPGA原型验证系统之间的对比表格:
图3 FPGA开发板、FPGA原型验证系统之间的对比表格
下面的图例便于读者更容易的理解它们二者之间的关系:
图4 FPGA开发板和原型系统应用上的交集图示
从应用场景上看,我们看到,FPGA开发板适合小型设计的手工验证、特定协议的开发,及在整个系统中起到控制的作用等等;而FPGA原型系统适合中大型设计和复杂算法的自动化验证及连接真实外围硬件的高性能系统验证/调试,软硬件协同调试等等。在IP验证方面,FPGA开发板和原型系统有一定的重合度。
以上就是关于FPGA开发板和原型验证系统这2种不同的数字设计验证平台的对比介绍,谢谢!
来源:芯华章科技