高性能SoC FPGA原型验证系列——综述

简介: 本系列博文将结合自己在FPGA原型验证方面的工作经验,先从总体上探讨FPGA原型验证的优势和挑战,然后介绍市面常见的FPGA原型平台并分析各自的优缺点,随后重点介绍平头哥高性能SoC使用的FPGA原型平台,后续还会就FPGA原型中的关键技术进一步展开讨论,并给出自己的一些经验和技巧总结,希望通过系列博文能带给读者关于FPGA原型验证一个系统的认识。当然,我更希望参与FPGA原型平台工作的同学能够一起切磋技艺,为平台建设出谋划策,快速迭代我们的平台,让我们一起打造更加Smart的FPGA原型平台.

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

image.png

优势

1.性价比上有一定优势;

不足

1.调试手段比较单一,不支持RTL Debug; 2.无自动化Partition工具,需要手动Partition,手动插入TDM(Time Domain Multiplexing)模块,可靠性和效率难保证;

S2C Single VU440

image.png

使用1颗Virtex UltraScale VU440芯片,平台的结构跟我们用实验室使用的V7 Single-E平台(用V7 2000T芯片)类似。

优势

1.平台结构和我们正在使用的V7 Single-E类似,有一定的兼容性和继承性,上手比较快; 2.子板丰富并且价格便宜。

不足

1.有高级的调试工具和Partition工具,但是这些EDA工具的性能和易用性待检验; 2.可扩展性待检验。

Synopsy HAPS-80

image.png
图中展示的是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的任何问题都欢迎留言探讨,让我为平头哥的基础平台建设建言献策,打造如丝般顺滑的用户体验!

文章来源:芯片开放社区
文章链接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.1b87180fKD1nhm&id=641027119421325312

相关文章
|
8月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。
|
3月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
4月前
|
监控 算法 安全
基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
本项目展示了基于FPGA的火焰识别算法,可在多种应用场景中实时检测火焰。通过颜色模型与边缘检测技术,结合HSV和YCbCr颜色空间,高效提取火焰特征。使用Vivado 2019.2和Matlab 2022a实现算法,并提供仿真结果与测试样本。FPGA平台充分发挥并行处理优势,实现低延迟高吞吐量的火焰检测。项目包含完整代码及操作视频说明。
|
7月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
7月前
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
6月前
|
异构计算
FPGA进阶(3):SDRAM读写控制器的设计与验证(二)
FPGA进阶(3):SDRAM读写控制器的设计与验证(二)
52 0
|
6月前
|
异构计算 内存技术
FPGA进阶(3):SDRAM读写控制器的设计与验证(一)
FPGA进阶(3):SDRAM读写控制器的设计与验证
148 0
|
8月前
|
算法 计算机视觉 异构计算
基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于肤色检测算法的摘要:使用MATLAB 2022a和Vivado 2019.2进行测试和仿真,涉及图像预处理、RGB到YCbCr转换、肤色模型(基于阈值或概率)以及人脸检测。核心程序展示了如何读取图像数据并输入到FPGA处理,通过`tops`模块进行中值滤波、颜色空间转换及人脸检测,最终结果输出到"face.txt"。
|
8月前
|
算法 异构计算
基于直方图的图像曝光量分析FPGA实现,包含tb测试文件和MATLAB辅助验证
该内容包括了算法的运行效果展示、软件版本信息、理论概述和核心程序代码。在正常图像中,`checkb`位于`f192b`和`f250b`之间,而多度曝光图像中`checkb`超出此范围,判断为曝光过度。使用的软件为Vivado 2019.2和MATLAB 2022a。理论依据未详细给出,但提及主要方法。提供的Verilog代码段用于处理图像数据,包括读取文件、时钟控制及图像histogram计算等,其中模块`im_hist`似乎是关键部分。
|
8月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。

热门文章

最新文章