FPGA原型验证
- 概述
- |
- 原型验证挑战
- |
- 自建 vs 购买
- |
- 解决方案
什么是FPGA原型验证?
FPGA原型验证是一种在FPGA上搭建SoC和ASIC设计原型的方法学,可以方便的进行硬件验证和早期软件开发。此方法学也称为ASIC原型验证或SoC原型验证。
在FPGA上搭建SoC和ASIC设计原型已经成为验证硬件设计和早期软硬件协同设计的主流方法学。
为什么说搭建原型是重要的?
1. 随着SoC设计越来越复杂,设计者们发现由于仿真速度和建模的限制,仅仅依靠软件仿真很难验证硬件设计的正确性。所以在FPGA原型上运行SoC设计是最可靠的方法,可以确保您的设计在功能上是正确的。
2. 而硬件验证已经不再是多数设计者在FPGA上搭建原型最主要的原因。由于很多不能预料的软件缺陷是来自于对操作系统(OS),应用程序和硬件进行整合而带来的复杂性。所以,在FPGA上进行早期的软硬件开发开始变得尤为重要。大多工程都等不及芯片从工厂生产回才进行软件开发与测试。在软硬件集成阶段,高速的FPGA原型样机可以让您拥有额外的几个月的时间从容的进行软件开发和硬件测试。
3. 除了前两个原因,还有一个原因也让FPGA原型变得非常重要。如果您的SoC设计集合了多个IP,那么在FPGA上搭建原型来验证这些IP整合在一起能够很好的协调工作的是非常可靠的方法。
4.FPGA原型也可作为设计参考平台,用来演示SoC功能给芯片客户,激发他们对这个芯片的兴趣,使你能和他们一起在芯片流片前对芯片功能和性能进行改进和增强。
原型验证中遇到的挑战
![]() |
||
复杂的PCB规格
为最新的大FPGA设计PCB板不是很简单的事。比如说,Xilinx的Virtex-5 LX330 FPGA里包含1700个管脚,1300个用户IO,它要求至少18层的PCB。这些FPGA工作时需要多种电压,如果设计中包含不同的IO标准,那么PCB板需要支持到最多5种不同的电压。 而在一个PCB板上实现多颗FPGA的设计, 则更是增加了设计的复杂性。
| 解决方法: | 用具有全面自测试功能的原型验证工具可以迅速的检测和处理硬件本身的问题。 |
调试时间长
由于可能有上千个管脚需要测试,所以设计人员必须在制造前就想好一个清晰的板上测试方案。否则,一旦硬件没有按照指定规范运行,将很难找出问题出在哪里。
在决定建立你自己FPGA原型验证板前必须问一个关键问题,那就是“创建板子和检测数千个IO接口需要多久时间?”很多情况下,FPGA原型需要重做多次才能正常工作,工程可能因此增加多至两个月的时间。
| 解决方法: | 采用具有全面自测试功能的原型验证工具可以迅速的检测和处理硬件本身的问题。 |
性能
为了与最终产品的性能更接近,设计人员总是喜欢以实时或接近实时的速度运行FPGA原型样机。
FPGA 原型的性能不一定可以达到实际SoC/ASIC的性能。一般有FPGA的限制和PCB板的限制两方面的原因。
| 解决方法1. FPGA的限制: | 用不同的综合工具,缩紧时序约束,或者修改你的设计。 |
| 解决方法2. PCB板的限制: | 使用具有等长时钟和IO,电源稳定,能高速适应原型等,经过精心设计的原型样机平台。对于极高性能的IO接口,阻抗匹配也需要,如DDR内存接口。 |
可复用性
再次使用现有或部分的原型可以缩短您的开发时间,降低下一个项目的风险。
随着半导体工艺技术的更新和消费者所期望的功能的增加,SOC设计规模继续增长。相对应的FPGA原型也就需要升级到。许多设计人员喜欢把外围接口和FPGA安放在一块板子上,但这种方法只适用于单个项目,对于设计规格大,外设接口不同的项目,就很难在另一个项目中重用。
| 解决方法: | 把FPGA设计在一块独立板子上,并把接口板设计成一系列的板子,使各个板子模块化,并能相互使用,这样就实现了FPGA高度复用。 |
设计分割
当设计在一颗FPGA放不下的时候,设计的分割就是必要的。
当FPGA管脚数量有限时,分割就容易出现问题,并随着FPGA数量增大将进一步放大。一般有两个主要问题:1. 如何在原型样机上连接IO和多个FPGA? 2. 如何分割设计来适应FPGA原型验证板的架构? 手工分割一个多FPGA的设计即容易出错又浪费时间。如潜在的问题包括:管脚数量不够、时钟同步差、达不到预期性能和外部管脚接入点。
| 解决方法: | 使用包含软件和硬件的原型验证系统, 保证了板级互连的数量和质量(通过硬件),并能自动进行分割(通过软件),因此节约开发的时间。 |
可调试性
确保设计中的故障是可调试的,最大程度减少开发过程中的调试时间。
当你把设计下载到FPGA以后,基本上第一次运行是不会成功的。原因有:1. FPGA原型本身有问题 2. 设计有问题 3. 设计编译时引发更多的错误( 如错误的管角分配)理想情况下,你首先需要一个好的测试方法来确定硬件是否运行正确,所有设计中的管脚功能正常。 那么,就需要外部逻辑分析仪和或内在逻辑分析(如赛灵思的Chipscope)来侦测故障所在。然而,有时候把内部信号引到外部检测的过程是非常的繁琐的。此外,如今大部分内部逻辑分析仪不支持那些映射到多颗FPGA的设计,这使得调试工作更加困难。
| 解决方法: | 选择带有硬件自检功能和支持多颗FPGA检测的逻辑分析仪的原型验证系统。 |
自建 vs. 购买:哪个更合适?
设计人员在开发阶段需要做出的一个最早也与整个架构最相关的决定,是自己搭建原型验证平台还是购买现成的商业原型验证工具。当我们还处在快速原型系统验证市场的初期阶段的时候,两种选择各有其优点。在那个时候,现成的商业工具趋向于作为一个适合所有设计要求的工具,包含各种各样的功能,以满足不同的顾客的不同的要求。正因为如此,项目管理者通常选择在内部自己建立原型验证平台:设立没有过多功能的规格,避免多余的技术消耗,来降低BOM。
随后,商业原型验证系统已变得相当成熟。如今,有越来越多的选择:主要的模块被分别设计成提供核心功能和作为添加功能给需要的人使用的外围设备。此外,随着FPGA容量与速度的攀升,硬件成本的下降(每个逻辑门约只需几美分)。而在用户方面,设计的复杂性已大大增加,也就是说,内部开发团队必须扩大自己的核心竞争力 - 亦或提高系统方面的设计能力 - 为了建立一个可以处理他们的设计要求(与其他设计环境的接口兼容)的原型验证工具。因此,选择自建原型验证系统与更低的BOM不再是个必然关系。
考虑到伴随着时间和成本的限制而带来的设计风险 - 购买经过验证的原型验证系统已经成为一个不得不做的选择。一般来说,验证过程需要花去总开发时间的2/3到4/5。成熟的现成产品提供了确定的时序参数,可以重复用于多个设计,并附带专门的技术支持,所有这些使你能够尽可能减少搭建原型的风险。您不再需要花时间去创建从无到有的原型验证平台,也不再需要花NRE成本来定制这个平台,这些最终都将转化为更快地实现芯片原型,降低了总成本。
FPGA原型验证选项:设计流程比较
现成 vs.自建
现成的原型样机解决方案提供一个稳定的设计环境、通过软件和外设更好的进行控制,在近几年已发展得非常成熟。传统自己开发的模块不仅仅增加了工程时间还导致更多的开发费用。
设计修改的流程比较
SoC设计规格为了符合市场和技术方面的需求要经常进行修改,因此,保持FPGA原型验证环境的灵活性是非常重要的。下图表示了在设计发生改变时不同的流程。
S2C基于FPGA的原型验证解决方案
| 编译软件对设计大小和分割配置进行快速的评估 | S2C的TAI Player软件直观的图形用户界面可以让您输入RTL设计,快速的进行自下向上的综合,分割设计以确定FPGA的原型所需的硬件类型。 |
| 多种现成FPGA原型验证硬件的选择 | S2C快速的FPGA原型验证系统 - TAI逻辑模块– 采用单片或者两片FPGA做成,拥有不同的逻辑容量。当设计发展超过一个FPGA板的容量时,TAI逻辑模块也可堆叠进行逻辑容量扩展,您也可以简单地升级到下一代更大的TAI逻辑模块。 |
| 多种现成外设模块(子板)的选择 | S2C为TAI逻辑模块提供了大量现成配件,进一步加速和简化了搭建系统原型的过程。我们也可以根据客户需要设计和搭建定制的模块。 |
| 早期FPGA原型验证的可用性 | 我们保证在指定的交货时间内提供可用的原型样机,不会让工程因等待FPGA原型样机而延迟。 |
| 最少的无法工作的时间 | 若FPGA原型样机硬件出现问题,S2C可以在很短的时间给客户调配代替的FPGA板。客户不需要浪费大量时间去寻找硬件问题并进行修复。 |
| 节约时间的自动编译流程 | S2C的可选择的TAI Player编译软件通过GUI界面的控制功能,例如RTL级内部信号的探测,设计分割到多个FPGA和自动的IO管脚绑定,可以使您进一步缩短搭建原型的时间。 |
| 通过USB接口进行自测试 | 我们最新的快速原型验证系统V5 TAI逻辑模块,与TAI Player运行控制软件一起让您通过USB 2.0接口对FPGA原型验证模块进行自测试。如果硬件有所损坏,只要几分钟,你就可以找出那些潜在的IO管脚,FPGA之间互连和时钟管脚的错误。 |
| TAI IP库 | 为了配合我们的工具,S2C与那些全球领先的IP供应商合作,根据客户的要求创建了一些列的IP参考设计。(更多信息,请访问S2C IP库)。 |


