使用FPGA测试的一些有效方法(05-100)
引言
本文引用地址:http://www.amcfsurvey.com/article/91577.htm随着芯片设计技术越来越成熟,越来越多的产品选择使用SoC的技术实现。然而,每一次流片不一定都能达到预期的效果。根据Synopsys公司统计,有超过60%的公司需要重新流片。在这个过程中浪费了大量的金钱,一次修正平均的花费就超过100万美元。如果一旦错过了商品推出的最佳时机,那么错过市场机会的代价则以数千万美元计,甚至更高。据统计,在需要respin的芯片中有43%是在前端的设计和实现的时候产生的逻辑功能错误。如何避免或减小如此高的风险是每一个设计单位思考的问题。
现在行业内有两种解决此问题的方案,第一种方案是利用越来越先进的EDA仿真工具仿真测试。业界产品的两大巨头Synopsys和Cadance都推出了自己的解决方案。然而,EDA工具非常昂贵,却不一定能满足每一个项目的要求。另外,EDA工具的仿真时间很长。以一套无线通信系统举例,初始化的过程就需要半天的时间,每收发一帧都需要3-4个小时,因此在有限的时间内不可能完成比较全面的测试(测试时采取的都是并行运算的方式,工作站都是Sun Blade2000的配置)。最后,仿真软件再完善也不是实际的硬件操作,因此某些只可能在硬件上发生的问题,无法通过仿真来获得。比如某些时序问题和功耗问题。另外,硬件的“脾气”比较古怪,经常会出现一些意想不到的状态,这些都是仿真软件无法模拟出来的。第二种解决方案是采用FPGA进行真实的硬件测试。比如Xilinx公司的EasyPath解决方案。然而使用这种方案也面临着一些需要解决的问题,比如如何使设计的产品可以既在ASIC上工作,又在FPGA上正常工作,如何保证FPGA与ASIC的一致性。针对这些问题的解决方法是本文重点讨论的内容。
本文的测试实例和测试方法均来源于北京市嵌入式重点实验室的无线局域网芯片项目,本项目的产品目前已经成功流片。这些测试方法的应用对项目的顺利进展起到了关键性的作用,起到了良好的效果。
时序问题的解决
FPGA可以接受的时钟和所允许的时序远远低于ASIC。但作为ASIC产品而言,在设计的时候又往往采取较高的时钟速率。由于ASIC时钟树与布线相对自由,故对于高速率设计解决起来相对容易。对于Xilinx FPGA而言,尽管采用了90nm工艺的Virtex-4可以支持的性能高达500MHz,但是其时钟树和布线资源相对固定,因此一旦在编译和布局布线的时候处理不当,就会产生时序冲突(timing violation)。产生时序冲突的结果,轻则使设计的逻辑与实际布局布线后的网表不一致,重则导致布局布线根本无法通过,从而致使验证无法进行。
我们在解决时序问题的时候采取了五种不同的方法。其中一种方法是应在设计中就加以注意,两种在综合的时候进行,还有两种在布局布线时采用。
设计过程中注意时序问题
若希望设计的产品能够在FPGA验证平台上顺利的完成验证,在设计过程中就需要注意尽量多的使用FPGA的内部资源,如DSP48,乘法器,RAM,DCM等。
在我们的设计中有不少滤波器,这些滤波器正好可以使用DSP48这个模块。该模块如图1所示,为乘加结构。滤波器若不使用这种模块,则需进行大量的乘、加运算。这样不但浪费资源,而且很容易导致时序无法满足要求。而如果使用这样的模块,则基本上所有的滤波器都不再处于“最差路径”上。
对于乘法器,如果使用slice搭建不仅浪费资源,而且性能差,位宽一旦比较宽就会导致时序出现问题。Xilinx的ISE中配有Core Generator这个工具。通过该工具可以生成需要的乘法器。使用这些乘法器来代替普通的乘法器,可以达到满意的效果。除了乘法器,还可以使用该工具产生RAM和DCM等。
图 1 DSP48示意图
评论