FPGA算是芯片产业的一颗明珠,广泛用于通信、计算、控制等领域。由于其内部电路可重构的特点,几乎可以完全映射芯片的逻辑设计,被当作一种性价比优越的芯片验证基础设施,不管是芯片设计、硬件设计还是驱动开发的同学多多少少都参与过FPGA原型验证工作,对FPGA应该都不陌生。
本系列博文将结合自己在FPGA原型验证方面的工作经验,先从总体上探讨FPGA原型验证的优势和挑战,然后介绍市面常见的FPGA原型平台并分析各自的优缺点,随后重点介绍平头哥高性能SoC使用的FPGA原型平台,后续还会就FPGA原型中的关键技术进一步展开讨论,并给出自己的一些经验和技巧总结,希望通过系列博文能带给读者关于FPGA原型验证一个系统的认识。当然,我更希望参与FPGA原型平台工作的同学能够一起切磋技艺,为平台建设出谋划策,快速迭代我们的平台,让我们一起打造更加Smart的FPGA原型平台!
什么是FPGA原型?
FPGA原型验证是一种成熟芯片验证技术,通过将RTL移植到现场可编程门阵列(FPGA)来验证ASIC的功能,并在芯片的基本功能验证通过后就可以开始驱动的开发,一直到芯片Tape Out并回片后都可以进行驱动和应用的开发,当芯片回片后,可以直接基于FPGA版本的驱动驱动和应用程序,进行简单的适配,就可以应用到SoC芯片上,将SoC芯片Time-to-Market的时间控制的很完美。
除了可以提前进行软件开发外,从成本上来说,FPGA原型验证是一个性价比很高的验证手段。相对于动辄几百万甚至上千万RMB的Emulator(硬件仿真加速器,例如Mentor的Veloce,Synopsy的ZeBu,Candance的Palladium),FPGA在价格上可以说非常的亲民。
更重要的FPGA原型在运行速度上也有绝对的优势,相对于EDA验证,在速度上当然是高了好几个数量级,即使是和Emulator相对,性能上也是碾压,所以FPGA原型验证被几乎所有的芯片设计公司使用,是使用最为广泛的验证技术之一。而对于软件的开发,只有FPGA是最能接近ASIC的验证平台,提早基于FPGA原型验证平台进行软件驱动开发和应用开发,对于缩短最终芯片Time-to-Market周期意义重大。在软硬件深度定制化,要求芯片到应用的一站式交付的今天,FPGA原型平台的重要性进一步提升。甚至一些硬件产品早期就是以FPGA的形态面世,经过几轮的迭代,在有出货量保证的前提下,基于成本功耗考虑,才会推出SoC芯片。
针对FPGA原型验证的旺盛需求,很多公司都推出了自己的FPGA原型验证平台,并且跟随着Xilinx和Altera(现在是Intel)推出新节点的FPGA芯片而不断升级自己的FPGA原型验证平台。市面上典型的产品有Synopsys的HAPS系列,Cadence公司的ProTIum,S2C公司的Prodigy系列,国内的公司如亚科宏宇的VeriTiger系列等。目前市面上在售的原型平台使用的最大容量FPGA是Xilinx的VU440(Virtex UltraScal 440,20nm工艺),单颗FPGA芯片可以容纳的芯片门数是26~30Million,一般为了容纳更大的SoC芯片设计,会采用多颗芯片级联。
FPGA原型的优势
性能
相比Emulator,FPGA在速度上有50-100倍的优势。这就决定了在FPGA原型上可以进行实际的应用开发。FPGA原型验证平台典型的运行速度是50MHz左右,而Emulator典型的运行频率是1MHz左右,两者之间巨大的性能差异决定了FPGA可以运行更加复杂接近真实场景的应用程序,而Emulator更适合于运行针对速度进行优化的程序,两者的侧重点有所不同。
成本
相比硬件仿真加速器 (比如Veloce),FPGA在成本上具有5-10倍的优势。对于中小型的芯片公司,FPGA如果比作日常快餐,而Emulator就是米其林星级大餐。两者之间巨大的成本差让许多公司青睐于FPGA原型。
移植性
软件工程师可以直接在FPGA原型平台上进driver/app的开发,当芯片回来后,只需要数周的时间就可以bring up软硬件,从而加速产品的发布,这一点对于当前DSSoC(Domain Specific SoC)意义重大。定制化芯片意味着定制化的软件应用,如何提前进行软件开发,等芯片回来后应用已经ready可能是每个芯片公司的期望。从现有的技术上来说,唯有FPGA原型平台具备承载软件驱动和应用开发的能力,所以单从这个点上来讲,FPGA原型平台不可替代。
FPGA原型的挑战
可观测性
FPGA也是芯片产品,所以内部的信号无法直接观测。通常需要借助于FPGA的debug工具在生成bit文件前选取要观察的信号,当bit文件加载运行时,通过配套的debug工具观察指定的信号波形,受限于Block RAM的容量以及信号优化等原因,调试效率比较低。
迭代速度
由于SoC芯片的设计频率很高,为了让原型验证平台尽可能和SoC芯片性能接近,用户期望让FPGA原型平台运行在尽可能高的频率上,但是由于SoC的RTL代码是为芯片实现设计,大量深层次组合逻辑的存在(这样可以节省芯片面积),导致了SoC RTL代码在FPGA上实现时时序收敛困难,往往只能达到几MHz。对于大型的SoC,内部的CPU/GPU/CODEC/NPU等计算和编解码模块逻辑复杂,往往成为整个设计的timing wall,导致时序优化过程会占据FPGA Implementation过程30-40%的时间。根据个人的经验,在timing critical的情况下,1千万门规模的ASIC设计,在FPGA上实现需要10小时以上,导致每个工作日只能进行一次迭代。
高速接口
外部子板和FPGA IO之间的高速同步接口是FPGA的痛点和难点:一方面,相比于ASIC,FPGA在IO时序方面可以调整的空间有限,它不能像ASIC一样可以通过时序约束来灵活调整FPGA IO信号之间的skew,导致并行信号接口之间的path skew很难控制在一个比较理想的范围内,最终会导致数据采样失败,降低频率往往时一种有效的办法,但是有些控制器和PHY之间的接口是需要满足标准规范的,不能无限制的降低,对于这种情况有时只能想尽办法尝试修复时序,甚至需要修改代码。
另一方面,原型验证使用的子板用量小,市场上往往没有销售,很多时候需要自行设计,进一步给调试带来了不确定性,也延长了调试周期。
高速接口的调试往往消耗了大量的人力资源,很多时候都是靠调试的经验和灵感解决问题,总结起来就是费时费力,而且效果不佳。
平台兼容性
市面上的FPGA原型验证平台有很多,但是缺乏统一的接口标准,引脚的排布也不统一,导致子板不兼容,工程师在setup硬件平台和调试子板的时候常常举步维艰,不得不重新设计子板,或者通过跳线等方式临时满足要求,效率和稳定性上都得不到保证。如果想切换到其他平台,也会消耗很多人力资源,并且维护多套平台的成本也是不容小觑的。
容量限制
对于大型的设计(大于2千万等效ASIC门),一块FPGA往往容纳不下,此时必须将多块FPGA互联才能容纳整个设计。在这种情况下,就需要对大型的设计进行Partition即分区。Partition引入了新的问题,而这些问题其实在芯片中并不存在,很多时候耗费很多人力去实现一个可用的Partition方案,仅仅是受限于FPGA的容量而不得已为之,不是服务于SoC芯片原型验证的本身。
Partition引入的最大问题是对IO的需求激增,虽然FPGA有超过1000个IO可用,但是一个完整的SoC如果被拆分成规模相当的两部分时,两部分之间的互联信号数量往往会远超1000个,所以通常情况下受限于IO的数量,必须采用TDM(Time Division Multiplex),即FPGA内部的多个并行信号转为高速串行信号,通过FPGA IO传输到另一块FPGA,然后再解复用,转换成并行信号,实现信号从一个FPGA到另一块FPGA的传递。引入了TDM虽然解决了IO瓶颈,但是Mux和De-Mux引入了额外的延时,导致cross-FPGA的path成为critical path,进一步降低了FPGA的可运行频率,可以说Partition是不得已而为之的方案,最终的结果就是得到一个可用的方案而不是一个理想的方案,是不得不妥协的结果。
另一个方面,由于在SoC原型验证中模块常常会增减,导致需要频繁的改动Partition的方案,如果手动去处理,往往需要花费很多精力才能得到一个上文提到还算可用的方案。此外,处理大量的cross FPGA信号非常容易出错,所以对于大型的SoC FPGA原型验证,更为可行的方案是采用自动化的工具去完成Partition,这对EDA工具都提出了全新的挑战。
市面常见的平台
我们在前期FPGA平台选型中评估了市面常见的几种FPGA原型平台,本章节将对这几个平台进行介绍,并分析各家平台的优劣势。
- 亚科鸿宇 VeriTiger-H4000T
- S2C Single VU440
- Synopsys HAPS-80
亚科鸿宇VeriTiger-H4000T
优势
1.性价比上有一定优势;
不足
1.调试手段比较单一,不支持RTL Debug;
2.无自动化Partition工具,需要手动Partition,手动插入TDM(Time Domain Multiplexing)模块,可靠性和效率难保证;
S2C Single VU440
使用1颗Virtex UltraScale VU440芯片,平台的结构跟我们用实验室使用的V7 Single-E平台(用V7 2000T芯片)类似。
优势
1.平台结构和我们正在使用的V7 Single-E类似,有一定的兼容性和继承性,上手比较快;
2.子板丰富并且价格便宜。
不足
1.有高级的调试工具和Partition工具,但是这些EDA工具的性能和易用性待检验;
2.可扩展性待检验。
Synopsy HAPS-80
图中展示的是HAPS-80 S26平台,使用1颗Virtex UltraScale VU440。
优势
1.Synopsys的工具(Synplify、Identity和Protocompiler)对HAPS-80平台原生支持,EDA易用,生态好;
2.Synopsys IP的FPGA验证环境一般都是针对HAPS平台设计,有配套的IP开发套件(IPK,IP Prototyping Package),能有效缩短接口类IP的调试周期;
3.调试手段多样,抓取波形也很方便;
4.有自动化的Partition工具,多板级联方案成熟。
不足
子板和主板价格相对较高。
综合评估下来,我们选用了Synopsys平台,最关键的一点是HAPS平台的Partition工具和多板的级联方案很成熟,这一点对于我们高性能的SoC FPGA原型验证最为关键。
由于时间有限,博主今天就介绍到这里,关于HAPS平台更详细的介绍将在下一篇博文中呈现,希望能抽出更多时间与大家分享,读者有关于FPGA的任何问题都欢迎留言探讨,让我为平头哥的基础平台建设建言献策,打造如丝般顺滑的用户体验!
原文作者:友飞
点击查看原文