验证中的FPGA原型验证

 什么是FPGA原型? 

 FPGA原型设计是一种成熟的技术,用于通过将RTL移植到现场可编程门阵列(FPGA)来验证专门应用的集成电路(ASIC),专用标准产品(ASSP)和片上系统(SoC)的功能和性能。 

 由于硬件复杂性不断增加,需要验证的相关软件数量不断增加,因此它今天的使用范围更加广泛。 

 为什么公司使用FPGA原型? 

 FPGA已经被用于验证相对成熟的RTL,因为它们可以代表一个近乎精确的以高速运行的设计的复制品。这些复制品通常也足够便携,可用于现场测试。在纯硬件方面,由于FPGA供应商尽快转向最先进的制造工艺节点,FPGA原型设计变得更加简单和强大。  

 由于该软件通常占设计工作量的一半以上,所以SoC RTL的FPGA实现也可以用作软件开发,硬件/软件协同验证和软件验证的基础 - 所有这些都在最终硅芯片可用之前完成。  

 所有这些因素都有助于降低设计成本并缩短上市时间,降低重新调整的风险。例如,已经在FPGA原型上得到广泛验证的软件应该更容易与来自晶圆厂的第一块硅相结合。 FPGA原型也可用于设置任何可能的硅后调试路径。  

 一个可用的FPGA原型也可以用于产品演示和现场试验。   

 还有哪些其他原型方法可用吗? 

 FPGA原型不是SoC或ASIC开发人员唯一的原型设计选项。  

 虚拟原型可在电子系统级(ESL)上使用。它可用于定义和验证设计的某些部分,如处理器架构,电源管理方案和一些软件代码。   

 RTL仿真可以提供设计代码工作方式的大量可视性,尽管速度远远低于真实设备的运行速度。   

 硬件模拟器是预封装的原型FPGA阵列,可提供比仿真器更高的调试可视性和运行速度。   

 硬件加速器介于仿真和模拟之间,提供了每种仿真的一些优点。 

 这些方法不直接与FPGA原型竞争,因为今天的设计通常非常复杂,工程团队会在设计流程的不同阶段使用部分或全部。   

 鉴于在等待第一颗硅片期间越来越多地使用FPGA作为开发平台,随着设计的RTL映射到FPGA原型时,它通常会达到高级阶段。 

 FPGA原型设计的好处是什么? 

  •  性能 
 FPGA通常建立在最新的制造流程上,以实现最高的密度和运行速度。即使是采用主流工艺构建的FPGA,也可以提供高门限等效计数(FPGA通常以可容纳多少个标准查找表来衡量)。根据现成的主板厂商Polaris的说法,两款Xilinx的Virtex-7器件可以提供相当于48M的门电路 - 足以承载目前近85%的SoC设计。 
  

 超过最大FPGA功能的设计有时在多个FPGA上进行原型设计。这使得将源RTL映射到FPGA原型环境变得更加困难,并且可能会降低原型的性能。 

  •  成本 

 FPGA是批量生产的芯片,具有竞争力的价格。许多公司 - 特别是The Dini Group, S2C, Polaris Design Systems和Synopsys(HAPS) - 将它们集成到现成(OTS)原型板上,尽管一些公司更喜欢建立自己的原型印刷电路板(PCB) 。这个所谓的“构建vs购买”辩论将在下面进一步讨论。 

  •  基础设施 

 两家主要FPGA供应商(原型设计市场领导者Xilinx及其竞争对手Altera)都提供了广泛的工具来支持他们的产品。他们还与主要的EDA供应商建立了联盟,这些供应商为软件套件提供了增强的FPGA原型设计。 

 Cadence Design Systems提供Allegro FPGA系统规划器。 Mentor Graphics将其Precision Precision工具与Veridae Systems提供的Certus和Corus验证和调试工具联系起来。 Synopsys提供OTS板卡以及Synplify Pro和Premier综合工具(在2012年4月发布的版本中增加了重要功能)。  

 其他OTS主板供应商也与这些和其他工具供应商以及他们自己的软件有合作关系。 
  
 2011年,Synopsys和Xilinx发布了基于FPGA的原型方法手册。这本由Synopsys出版社出版的书籍不可避免地通过两家公司自己的产品解决了具体的案例研究项目,但是更一般地说,它旨在描述一种用可编程逻辑来构建原型项目的供应商中立方法。您可以阅读本指南中讨论的许多高层次问题的示例章节,或者阅读本手册的更多详细信息,并在此处下载电子书版本。 
  
  •  可移植性 
 FPGA板可以在与最终SoC相同的嘈杂环境中进行测试。这对于打算用于便携式消费设备以及工业,通信基础设施,医疗和军事/航空航天市场的产品有益。 
  
  •  可用性 
 FPGA原型的成本相对较低意味着公司通常可以构建其中的几个,这加速了硬件验证,软件开发,硬件/软件协同验证和软件验证。每个团队都可以有自己的原型,可能有几个。 
  

 FPGA原型设计面临的挑战是什么? 

 FPGA原型设计面临技术和商业挑战。 

  •  技术挑战 
 分区 

 大型设计可能需要在多个FPGA之间进行分离(分区)以实现所需的门控容量。这项任务通常被认为是FPGA原型设计的最大挑战。 

 分区包括估计持有该设计所需的FPGA数量,以及购买OTS板卡(可提供各种配置)或者构建一个用于容纳大量FPGA的OTS板卡。通过将设计中的每个主要功能块分配给一个器件,或者根据结果预先综合设计和工作,您可以估算要使用多少个FPGA。您还可以利用由硅和OTS主板供应商提供的标准第三方IP模块,为您的设计中使用的每个模块分配一个FPGA。同样,您需要决定哪些配件,如子板,您将需要:这些配件的“经过验证”版本。 

 分区过程本身很可能是一个棘手的迭代过程,涉及将设计映射到设备的众多判断调用,以及从RTL或软件中的实际错误中过滤出并纠正映射错误。每个FPGA的利用率是最优的?内存要求如何?那么I / O和互连呢? 

 手动干预 

 FPGA原型设计可能需要几种类型的手动干预。 

 由于原始设计RTL被转换为FPGA综合和布局工具所需的硬件描述语言(HDL),因此即使工具已经实现了大部分翻译的自动化,也可能需要一些手动编码才能使原型工作。很可能起源于设计的工程师不熟悉FPGA的HDL编码风格。因此这可能是一个漫长而容易出错的过程。   

 映射的各个方面都面临着挑战。 FPGA上的时钟树路由(特别是原始设计具有门控时钟的地方)非常困难。如果允许关键路径通过缓慢的芯片到芯片到芯片路径运行,原型性能将会受到影响。原创中的内存和加密块也会带来重大困难。   

 对于设计的许多方面,一对一映射是不可能的。确保您有足够的资源和专业知识来处理过渡中较为困难的部分 - 也可能是您设计中最敏感的部分,因为它们具有差异性。   

 调试可见性 

 上述两个挑战所代表的工作量说明了为什么FPGA原型设计最好采用成熟的RTL代码来提供,而这种代码几乎没有什么意外。确保调试ram的可见性成为难题。   

 从第一个单FPGA原型开始就有足够的设计可视性来进行有效的调试存在一个问题。可用的可见性往往局限于单个FPGA,这使得跨多个FPGA映射的设计使调试可见性变得更加困难。   

 编译时间 

 从历史上看,工程师们编译了一个FPGA原型,直到错误停止了这个过程。他们会修复这个错误,然后从头开始重新编译。这里的潜在延误很明显。在Synplify Premier的最新版本中,Synopsys已经加入了“继续出错”功能,旨在缓解这个问题。编译将不会停止,并会在最后生成一个整理错误列表。 (这不像RTL仿真,在这种仿真中,您可能会遇到错误,请修复并从此处继续。)   

  •  商业挑战 
 时间对原型 

 一些FPGA原型在他们原本应该进行原型设计的第一块硅片抵达时未完成。这是生活中的事实。 

 设计经理担心将重要的工程资源投入到一个有失败风险的原型项目中。现实情况是,大多数失败是在原型开始工作之前没有进行彻底的风险评估的结果。什么是适当的资源,它们是可用的(内部还是外部)?正在采用哪种方法(有几种可用并在下面讨论)?   

 FPGA原型设计过程变得更加自动化,但假设设计团队不需要进行任何手动干预,除了涉及修复令人满意的原型所发现的错误之外的其他手动干预。相反,在可用时间内对所需内容进行研究和保守估计。 

 建设vs购买 

 关于FPGA原型设计最激烈的辩论之一是您是否应该自己购买FPGA并构建PCB,或购买OTS板并根据您的要求量身定制。答案是,“这取决于项目。”   

 争论的“构建”方面表示OTS板卡太不灵活,无法应对日益复杂的项目日新月异的需求。它继续说,尽管开发自己的PCB确实花费了大量的时间和精力,但与支付可能无法满足您的要求的OTS等效品相比,有一些工具可以以更具成本效益的方式来协助此过程。论证的“构建”一面也指出了OTS板卡的总线宽度和工作频率有限。   

 争论的“购买”方面表明,关于不灵活的说法被夸大了,构建先进FPGA原型所需的PCBs会进一步增加设计过程的复杂性。它还表示,构建自己的板卡可能会影响到时间原型,甚至可能会缩短上市时间。此外,OTS板在其上的芯片和互连,其他本地特征和附件的可用性(如子板)连接到与最终硅芯片可能连接的外部系统方面“已证实”。 '购买'支持者也指出,电路板也被设计为与当今FPGA的性能相匹配。 

 那么,它值得吗? 

 FPGA原型设计是一个有价值的策略,特别是对于嵌入式软件内容高的项目,可以满足对时间敏感或要求很高的市场的需求。  

 最近的一项调查发现,一半的嵌入式软件项目错过了最后期限,其中44%未达到最初设想的功能。如果没有其他,FPGA原型使软件团队能够在最终的系统集成中尽早开始工作。   

 FPGA原型提供了执行全面的硬件 - 软件协同验证的最有效方法,特别是在降低堆栈的关键阶段,以及在与最终芯片结合的软件代码之前的最终验证。 

 是否采用FPGA原型的问题很大程度上取决于您的团队是否可以平衡执行复杂且通常非常困难的任务所需的风险和资源。 

你可能感兴趣的:(IC验证)