关于FPGA设计的验证技术及其应用原则分析和介绍.docx

上传人:lao****ou 文档编号:876275 上传时间:2024-07-09 格式:DOCX 页数:7 大小:79.08KB
下载 相关 举报
关于FPGA设计的验证技术及其应用原则分析和介绍.docx_第1页
第1页 / 共7页
关于FPGA设计的验证技术及其应用原则分析和介绍.docx_第2页
第2页 / 共7页
关于FPGA设计的验证技术及其应用原则分析和介绍.docx_第3页
第3页 / 共7页
关于FPGA设计的验证技术及其应用原则分析和介绍.docx_第4页
第4页 / 共7页
关于FPGA设计的验证技术及其应用原则分析和介绍.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《关于FPGA设计的验证技术及其应用原则分析和介绍.docx》由会员分享,可在线阅读,更多相关《关于FPGA设计的验证技术及其应用原则分析和介绍.docx(7页珍藏版)》请在第一文库网上搜索。

1、关于FPGA设计的验证技术及其应用原则分析和介绍FPGA设计和验证工程师当今面临的最大挑战之一是时间和资源制约。随着FPGA在速度、密度和复杂性方面的增加,完成一个完整时序验证对人力和计算机处理器、存储器提出了更多更高的要求。随着FPGA器件体积和复杂性的不断增加,设计工程师越来越需要有效的验证方。时序位真可以是一种能发现最多问题的验证方法,但对许多设计来说,它常常是最困难和费时的方法之一。过去,采用标准台式计算机的时序仿真是以小时或分钟计算的,但现在对某些项目来说,在要求采用高性能64位服务器的情况下,其测试时间却要几天甚至几周。这样,这种方法首先消弭了采用FPGA带来的上市时间和实施成本方

2、面的好处。FPGA设计和验证工程师当今面临的最大挑战之一是时间和资源制约。随着FPGA在速度、密度和复杂性方面的增加,为完成一个完整时序验证,不仅对人力也对计算机处理器和存储器提出了更多更高的要求。另外,对设计和验证工程师来说(许多情况可能是同一个人),这为在更短的时限内,以更大信心对当今的FPGA设计在第一次就可实施彻底成功验证提出了更艰巨的挑战。时序仿真的重要性为确保设计可以工作及能连续稳定工作,当今的FPGA既需要功能又需要时序仿真。FPGA设计的复杂性在增加,而传统的验证方法论又不再有效。过去,在FPGA设计流中,模拟并非一个重要阶段。但眼下,却成为最关键的步骤之一。当采用类似XiIi

3、nX的VirteX-5FPGAFamiIy等更先进FPGA设计时,时序仿真就变得尤其重要。传统的FPGA验证方法是:1 .功能模拟在验证过程中,功能模拟是个非常重要的部分,但不应是唯一部分。当进行功能模拟时,它只对RT1设计的功能性进行测试。它不包括任何时序信息,它也不考虑由实现和优化对原初设计造成的改变。2 .静态时序分析/形式验证许多工程师认为为校验设计是否满足时序要求,只需进行静态时序分析。将此作为唯一时序分析方法有很多缺陷。静态分析无法发现当设计动态运行时,才能发现的任何问题。静态分析仅能显示该设计作为整体是否可满足设置和保持要求且一般仅达到施加的时序约束的水平。在实际系统中,动态因素

4、可造成FPGA的时序违规。例子之一是块RAM(BIoCkRam)冲突。在FPGA器件中,随着双端口块RAM(DUa1PortB1ockRamS)的引入,应留心避免同时读/写同一个区域,否则,读取的数据会不正确。静态分析工具将永远无法发现该问题。类似,若有被误读的时间规范(Iimespec),静态时序分析也将难以发现此问题。3 .在系统测试实际上,每位工程师都依赖该方法进行最终测试。若设计能在板上工作且通过了各种测试,则该设计就将被发布。这肯定是个非常好的测试,但它也许没能发现全部问题。有时,在一些边界情况(COrne1CaSe)被发现前,设计需运行相当长的时间。诸如时序违约等问题并非在所有的1

5、中都以相同方式显露出来。当发现这些问题时,设计通常己交到用户手中。这意味着为找出此问题所导致的高成本、停工期和挫折感。为能正确完成在系统测试,必须清除全部硬件故障,其中包括与SSO相关的问题、交叉干扰以及其它与板卡关联的问题。若在启动在系统测试前,有需要连接的外部接口,则将延缓产品的上市时问。从上可知,传统的验证方法不足以进行完整的系统验证。有充足理由进行动态时序分析。时序仿真是可在其中进行动态分析的唯一方法。许多工程师有令人信服的理由拒绝进行时序分析。一些主要担心问题是:它很费时;为执行验证,需要大量存储器和处理器资源;为没有办法重复使用取自功能模拟的测试基准,必须创制新测试基准;为因为整个

6、网络表是展开的,所以设计调试成为一件琐事,另外,没办法及时定位问题所在;为时序仿真显示最坏情况的数量,设计本身可能足够超脱,不至于如此兴师动众;为并非所有子模块都是在一个环境下进行编程的;为无法将在各个不同场所编程的部分分开,因为这些部分的设计师应是那些为能进行验证从而对设计有更深刻把握的人。这些都是正当的关注,这也就是为什么下一节将讨论工程师能做些什么以克服其中某些问题的原因。在时序仿真中采用Netgen以获得精准结果Xi1inX提出了一种革命性方法以从Netgen中得到用于动态分析匹配的静态时序分析数和时序数。与-PCf开关一起运行Netgen并指向一个有效PCF文件将确保得自Trce和N

7、etgen的数将互相匹配。在时序计算时,所有新Xi1inX架构都利用了相对最小数(ReiatiVeMinimums)的好处。利用相对最小数意味着在设置计算以及相反的保持计算时,将采用最大时延时和最小数据延时。目前的模拟器不支持使用相同2F文件中分别取自M1N域和MAX域的数。基于该限制,XiIinX需要两个不同的模拟一一个用于设置,另一个用于保持。Netgen编写SDF文件,所以,当运行SDFMAX模拟时,将利用最大时钟延时和最小数据延时。SDFMAX保证设计能满足目标器件的设置要求。当运行SDFMIN模拟时,利用最小时钟延时和最大数据延时。SDFMIN保证设计能满足目标器件的保持要求。改进时

8、序仿真体验当描述时序仿真时,”总体大于部分的总合”这样一句常语几乎可被反过来说成:“部分的总合大于总体。”后一句话总结了本节所要阐释的内容。为缩短时序仿真所用的时间,我们将不得不依靠“分割后各个击破”的方法。对一个大的展开网络表来说,完成任何形式的验证都将是件费时和枯燥的任务。因此,采取的措施是将网络表分割为多个小部分。该方法论并非是数字逻辑领域的一场革命,它是一种渐进的沿革。自从HD1出现后,设计师一直喜欢采用基于部分组件的模拟而非整个大设计。问题是,没办法将此手段引入时序仿真。这与在FPGA实现中,在保持层次中所取得的进展不再一样。其基于的理念很简单。许多设计创生于若干更小模块,而验证在各

9、个子模块层次进行。不久前,推出了一种称为KEEPHIERAReHY的方法。该方案允许设计在经历实现时也能保持层次。它在改进时序仿真方案方面前进了一小步,但它有助于解决的实际问题是在调试阶段。现在,设计不再是一个展开网络表。后标注的HD1文件具有不同的层次部分以匹配原初设计。现在,当在时序仿真中发现问题时,能容易地多地对故障源进行定位并进行调试除错。正如上面提到的,这只是该特性全面能力的一个过度。KEEPHIERARCHY的下一步是生成“多层次文件(MUItiPIeHierarchica1Fi1es),的能力。这一引入到软件工具中的特性能为层次的各部分编写独立的网络表及相应的SDF(标准延时格式

10、)文件。该特性的引入为与时序仿真一起使用的各种方法敞开了大门。一旦能为层次的各部分编写,则每个时序模块看起来与RT1版本一样。这就支持能再利用在进行功能模拟时使用的测试基准。这在时序仿真中是个长足进步。现在,工程师不再需要仅为进行时序仿真编写一个独立的测试基准。若已为功能模拟编写了一个测试基准,则几乎不需任何改动就可将其用于时序仿真。位于顶层的端口名称将总是相同的,这样,测试基准就可被再利用。此类设计的主要优势之一是它可容易地定位问题所在。为能充分了解该特性的真实能力,我们将考察一个实际例子。图1中,子模块A首先由工程团队1生成、子模块B和C由工程团队2生成,另外,IP模块D从第三方买进。这些

11、模块都在不同时间及/或由不同工程师生成,且为了验证每个模块的功能准确性,各模块都用其自己的测试基准进行了验证。一旦成功对各个独立部分进行了验证,它们就被整合进FPGA以进行实现。RT1模拟通常就是这样做的。现在,借助与KEEPHIERAReHY一起使用MHF(多层级文件)的能力,甚至在进行时序仿真时都可能保持相同策略。采用该特性能帮助想进行时序仿真的设计师解决他们面临的两个最大难题:1)各个模块重复使用测试基准的能力;2)定位发生问题的具体模块的能力。可有多种途径进行时序仿真。当采用MHF时,因为所有这些模块的顶层端口都保持一致,所以可容易地重复使用RT1测试基准。以组块形态形成的最终网络表确

12、实可使用户为其RT1等价物选取不同的模块。这样做,用户将可加快模拟的运行时间。RT1几乎永远比结构化网络表等快得多,若有种方法在不影响设计功能的前提下可用RT1替换结构码,则就应尝试这种方法。几乎没一种设计在实现后就尽善尽美。这就是为什么需要进行时序仿真的原因。采用上述同一个例子,我们可考察如何改进整个设计的速度及可观察性。为得到最短的运行时间,理想的情况是在一个模块上一次仅运行时序仿真。此例中,我们可在子模块A运行时序仿真然后使子模块B、C和D处在RT1形式。一旦我们进行时序仿真并发现一切如预期的一样,就可对任何子模块进行切换并以相同的方式进行测试。采用该方法论还意味着,若在一个子模块中发现

13、了问题,则可容易地定位该问题子模块并将它拿给该模块的设计者进行修改。若发现多个子模块存在问题,则该方法带来的额外好处是,两(多)个不同工程团队能同时着手解决发现的问题。在传统流程中,当发现设计的一个部分存在问题时,只有在该部分的问题被解决后,设计师才可能处理设计的其它部分。在采用MHF设计流后将不再受这种限制。时序仿真用户的另一个主要抱怨是:若其它工程团队不在国内,则完成最后的验证会相当困难且需花很长时间。这是因为,它将浪费许多时间以及当采用传统时序仿真方法论时的许多相互关联和依赖问题。借助MHF方法论,去掉了关联因素。利用MHF,不同工程团队可省去许多空闲时间。这将确保发挥团队的最大效率。具

14、有模块结构的网络表也能为验证小组提供帮助。过去,需要由一位验证工程师完成的工作现可由不同小组的多位验证工程师完成。开发小组采用的理念也可同样用于验证小组。除在模拟领域取得持续进展以外,在施加激励的方法方面也有重要进步。过去的设计通常非常小,所以以前的设计激励方法是采用模拟器提示(PromPt)的施力文件(f2icefi1e)或简单刺激以切换每个信号。随着设计变得益发复杂,施加激励也需要更好的方法。这里,VHD1和Veri1Og的能力将有用武之地。随着HD1编码语言的引入,测试基准变得更复杂和紧凑。在该领域,出现了诸如PS1、SyS拴mC和SyStemVeriIOg等技术。这些语言覆盖的范围不在

15、本文讨论之内。这些编程方式的一个不利方面是它要求将一个模拟的输出作为另一个模拟的输入。一些模拟器支持f许用户准确进行这种操控的ExtendedVa1ueChangeDumpFormat格式。不采用这种方法进行时序仿真的用户遇到的主要障碍是:因为当将一切都展开后端口名称将改变,所以没办法将输出作为激励。采用MHF方法会去掉此问题,因为,现在这里有可施以激励的独立模块,另外,现在一个模块的输出可被用作另一个模块进行RT1以及时序仿真的激励。选择层次取得层次模拟成功的一个主要部分是选取层次。没有现成的公式可用于选择正确的层次。这就是为什么没有对或错的层次的原因,虽然在试图选取层次还是有些原则可资借鉴

16、的。确保满足如下这些原则永远是明智之举。1)设计应当是完全同步的。2)所有关键路径应包括在一个逻辑组(可被分别同步的设计的一部分)中。典型情况,每个逻辑组应是在设计顶层例示(instantiated)的Veri1og内的一个模块或VHD1内的一个实体。3)全部I0B(输入/输出块)逻辑应在顶层。器件的任一个输入和输出应在顶层及I/O缓冲器和I/O三态门内进行声明。但,逻辑组内例示的I/O逻辑是可接受的。4)在每个逻辑组的输入和/或输出应放置雷在整。高明的作法是在逻辑组的边界对所有输入信号或输出信号进行寄存处理。它确保逻辑组内的所有关键路径得到保持并免去了当通过逻辑组边界进行逻辑优化时可能导致的问题。在设计中的所有层次组内都应一致遵守该规则。5)顶层应只包含例示的模块或实体、IOB逻辑及时钟逻辑(KM、BUFG等)。6)选择逻辑组时,应不使任一组过小以至对其单独进行验证的价值不大或不太关乎大局,还应不使任一组

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服