您的位置 首页 五金机械设备

fpga测试

fpga测试 【?摘要】 对于芯片前端设计而言,在流片前的测试是保证芯片正常工作的重要环节。本文针对FPGA验…

fpga测试

【?摘要】
对于芯片前端设计而言,在流片前的测试是保证芯片正常工作的重要环节。本文针对FPGA验证∨方法中遇到的一些棘手问题,提出了自己的解决方案并在实际工程中加◎以使用,取得了良好的效?果。

【关键词】
FPGA测试时序代码一致性

引言

随着芯片设计技术越来越成熟,越来越多的产品选择使用SoC(SystemonChip)的∫技术实现。然而,每一次流片不一定都能达到预期的效果。根据Sy?nopsys公司统计,有超过60%的公司需要重新流片(respin)。在这个过程中浪费了大量的金钱,一次修正平均的花费就超过100万美元。如果一旦错过了商品推出的最佳时机,那么错过市场机会的代价则以数千万美元计,甚至更高。据≯统计,在需要respin的芯片中有43%是在前端的设?计和?实现的时℡候产生的逻辑功能错误。如何避免或减小如±此高的风险是每一个设计单位思考的问题。

现在?行业内有两种解?决此问题的方案,第一∽种方?案是利用越来?越先进的EDA=仿真工具仿真测试3。业界产品的两大巨头Synopsys和Cadan﹥c1e都推出了自己的?解决方案。然而,EDA工具非常昂贵,却不一定能满足?每一个项目的要求。另外,?EDA工具的仿真时间很长。用一套无线通信系?统举例,初始化的过程就需要半天的时间,每收发一帧都需要?3-4个小时,因此在有限的时间内不可能完∟成比较全面的测试(测试时采取的都是并行运算的方式,工作站都是S≦unBlade2000∑的配置)。最后?,仿真软件再完善也不是实际的硬件操作,因此某些只可能在?硬件上发生的问题,无法通过仿真来获得。比如某些时序问题和功耗问题。另外,硬件的“脾气”比较古怪,经常会出现?一些意想﹣不到的⊿状态£,这些都是仿真软件无法模拟出来的⌒。第二种解 ?决方案是采用FPGA进行真实的硬件测试。比如Xili∈nx公司的EasyPat≒h解决方?案。然而使用这μ种方案也面临着一些需要解决的问题,比如如何使设计的产㎝品可以既在ASIC?上工作,又在FPGA上正常﹢工作″,如何·保证FPGA与ASIC?的?一致性。针对这些问?题的解决方法是本文重点讨论的内容。

本文的测试实例和测试方法均来源于北京市嵌入式重点实验室的无线局域网芯片项目¢,本项目的产品目前已经成功流片。这∝些测试方法的应用对项目〒的顺利进展起到了关键性≌的作用,起到了-良好的效⊥果。

时序问题的解决

我们知道FPGA可以接受的时钟和所允许的时序远远低于ASIC。但作为ASIC产品而言,我们在设£计的时候又往往采取较高的时钟速率﹤。由于ASIC时钟树?与布线?相对自由,故对于高速率设计解决起来相对容易。对于?XilinxFPGA而言,尽管采用了90√nm工艺的Vir∵tex-4可♂以支持的性能高达500M[1],但是其时钟树和布线资源相对固定,因此一旦在编译和布局布线∞的时候处理不?当,就会产?生时序∣*冲㏄突(?timingviol㈱ation)。产生时㎡序冲突的结果,轻则使设计的逻辑与实际布局布线后的网表不o一致,重则导致布∏局布线根本?无法通过,从而致使验证无法进行。 fpga测试

我们在?解决时序问题的时候采取¥了五种不同的方法。其中一种方法是应在设计中就加以注意,两种在综合的时候进行,还有两种≠在布局布线时采用。

设计过程中?注意时序问%题

若希望设计的产品能够在∮FPGA验证平台上顺利的完?成验证,在设计过程中就需要注意尽量多的使用FPGA的内部资源??,如DSP48,乘法器,R?A@M,DCM﹣等。 ≥

在我们的设计中有不少滤波器,这些滤波器正好可以使用DSP48[2]这个?模块。该模块如图-1所示,为乘加结构。滤波器若不使用这种模块,则需进行大量的乘、加运算。这样不但浪费资源,而且很容易?导致≤时?序无法满足要求。而如果使用这样的模块,则基本上所有的滤波器都不再处于“最差路径”上。



图1DSP48示?意图

对于乘法器,如果使用slice搭建不仅浪?费资源,而且性能差,位?宽一旦比较宽就会导致时序出?现问题。Xilinx的ISE中配有CoreGenerator这个?工具。通过该工具可以生成需要的乘法器。使用?这些乘法器?来代替普?通的乘法器,㏑可以达到满意的效果。除了乘法器/,还可以使用该工具产生RAM和DCM等,在此不再赘述。

℅综合过程解决时序问§题

我们使用Synplicity公司的Synp?lify工具进行综合,ml这是业界通常使用的综合工具之一。选择该工具最主要的原因在于它与Xilinx的FPGA配合的很好。我们做过实验,通过mol该工具综合产生结果报表,再通过ISE产生真实布局布线后的报表。对这两个报表的时序估计部分进行对比,我们发现两者之?间惊人的∷相似,最差路径之间的差别不超过1ns。

我们知道?,综合的时候需要?设置约束,最重要?的是时钟约束。这个约束限制m了?℃系统工作的频率。为了降低系统对于时钟抖动的敏感性?,我们采取的第一个方法是在设置时钟约束的时候将此约束值设的略高于实际的时钟频率。这样≈?做有一个前提,那?就是在综合后不得∠有负的时钟余度(timeslack)出现。当没有负的时?钟余度出现的时候,提高时钟约束可以有?效避免因时钟抖动而引入的时序问≮题,※但是如果因为提高了约束中时钟频率,而导致负的时钟余度的出现,那么有可能导致在布局布线过程中产生时序冲突而无法正常布局布线。在?这种情形下,就不宜提高约束中的时钟频率。

在综合中采﹢取的第二个方法是使用综合工具提供的pipeline和retiming功能[3]。这些功能可以调整寄存器的位置,使之在不改变逻辑的前提下,将寄存器的位置调′整的更加合理,如图-2所示。这个功能主要用于组合逻辑过长且不合理?的情况下。当∴然,如果某些乘法器‖位数过宽而结果没有寄?存?的时候也会导致组合逻辑时序紧张。当发生这种?情况而retiming功能又无法纠正时,就需要设计者在做设计?的时候=对乘法器的输出结果做一拍寄存,同时其余°的?控制逻辑也要做相应的调整。



∷图2retiming示意图

布局布线阶段解决时序问题

当综合工?作完成,进入布局布线的阶段后,仍然有两种方法可以改善逻辑时序问题。

第一种是手动增加并调整?BUFG(GlobalCl?№ock?Buffer)。BUFG是Xilinx的全局时钟资?源,所有时钟树的起点都是*BUF?G,位于FPGA的北极和南极。当布线后2仍有负的slack时,有可能是某些当作时钟∪使用的信号没?有被放上时钟树,此时就要手动将这些信号放上BUF?G。若遇到门控?时钟3,还应该使用BUFGMU㎞X资源。?另外,‰在Virtex-4中,北边的BUFG主要负责北部的时钟?,南部的BUFG负责南部的时钟。在我们的项目中,共%?有十余个时钟,因此,BUFG位置的选择也很?关键。有些时候,工?具不?能解决一切问题,只?有手动调整BUFG的位置,或将BUFG的位置信息写入用户约束文件才可以取得较满意的效果。

?在Vi?rte>x-4中共有1÷6个BU<FG,若都被?使用且经手动优化后仍不满足要?求,那么还可以使用ISE提供的Flo×orplanner工具,对设计的各个模块手动进行位置摆放,使各个模块尽×量靠近自己所使用的时钟树。

代码一致性

对于经过?FPGA验证的代码而言?,最担心的是经过验∧证?的代码和进行流片的?代码不一致。导致这个现象产生的㎜原因是多种的?,其中版本控制和由于FPGA、ASIC专用器件不一致而引起的问题是最常见的两个问题。前者不在本文的讨论范围,故在此略过。
?
对于经过FPG㏕A验证的代码,为了能够使被测代码可以顺?利的在F$PGA进行验证,?根据2?.1节?所述,一般都采取了FPGA专用的器件。这些FPGA专用器件在ASIC中是不?存在的。为了解决这个问题,我们m通常?采取“假代码”≡(FakeCode)解决≧。

顾名思义,“假?代码”就是在代码中保留FPGA专用?器件的名称和接口,但是在FPGA和ASI¬C中使用不同的器件内¤核。该器件若在FPG?A下使用则使用FPGA专用器件,若在ASIC下使用?,则使用自己编写的代码。尽管这种做法仍然无?℉法保证代码的完全一致,但是却最大限度的避免了代码的差㏒别。

结论

究竟使用EDA仿真工具还是使用FPGA∩进行流片前的功能验证一直是业内讨论的热点话题,?不同的设计、测试人㎎员也有自己的观点。本文针对使用FPGA∶进行验证测试所遇到的一些问题提出了相?应的解决方法,对于使用FPGA进行?验证测试的工程师有一定的参考意义。

【参考♀文献⊙】
1《Virtex-4UserGuide》XilinxCorp. ∥
2《XtremeDSPforVirtex?-4FPG+AsUserGuide》X?ilinxCorp.
3《SynplifyProUserGuid㎏e》Synpli?¥city,Inc.


关于更多fpga测试内容,可以收藏本网页。周琦选秀 使用FPGA测试的一些有效方法

fpga测试fpga测试
本文来自网络,不代表天津五金网立场,转载请注明出处:http://www.mgnqyz.com/mgnqyz/1114.html

作者: mgnqyz

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部