您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

FPGA计划的验证技能及应用原则

发布日期:2011-05-17

  FPGA计划和验证工程师当今面对的最大挑衅之一是时间和资源制约。随着FPGA在速率、密度和巨大性方面的增长,完成一个完备时序验证对人力和谋略机处理惩罚器、存储器提出了更多更高的请求。

  随着FPGA器件体积和巨大性的不绝增长,计划工程师越来越必要有效的验证方。时序仿真可以是一种能发明最多题目的验证要领,但对很多计划来说,它通常是最困难和费时的要领之一。已往,采取标准台式谋略机的时序仿真因此小时或分钟谋略的,但如今对某些项目来说,在请求采取高性能64位办事器的环境下,其测试时间却要几天乃至几周。如许,这种要领起首消除了采取FPGA带来的上市时间和实行本钱方面的长处。

  FPGA计划和验证工程师当今面对的最大挑衅之一是时间和资源制约。随着FPGA在速率、密度和巨大性方面的增长,为完成一个完备时序验证,不但对人力也对谋略机处理惩罚器和存储器提出了更多更高的请求。别的,对计划和验证工程师来说(很多环境大概是同一个人私家),这为在更短的时限内,以更大信心对当今的FPGA计划在第一次就可实行彻底告成验证提出了更困难的挑衅。

  时序仿真的紧张性

  为确保计划可以事变及能连续稳固事变,当今的FPGA既必要成果又必要时序仿真。FPGA计划的巨大性在增长,而传统的验证要领论又不再有效。已往,在FPGA计划流中,模仿并非一个紧张阶段。但眼下,却成为最关键的步调之一。当采取雷同Xilinx的Virtex-5 FPGA Family等更先辈FPGA计划时,时序仿真就变得尤其紧张。

  传统的FPGA验证要领是:

  1.成果模仿

  在验证进程中,成果模仿是个非常紧张的部分,但不该是唯一部分。当举行成果模仿时,它只对RTL计划的成果性举行测试。它不包括任意时序信息,它也不思量由实现和优化对原初计划导致的变化。


  2. 静态时序阐发/情势验证

  很多工程师以为为校验计划是否餍足时序请求,只需举行静态时序阐发。将此作为唯临时序阐发要领有很多缺陷。静态阐发无法发明当计划动态运行时,才华发明的任意题目。静态阐发仅能表现该计划作为团体是否可餍足设置和保持请求且一样平常仅到达施加的时序束缚的程度。在实际体系中,动态因素可导致FPGA的时序违规。例子之一是块RAM(Block Ram)辩论。在FPGA器件中,随着双端口块RAM(Dual Port Block Rams)的引入,应把稳克制同时读/写同一个地区,不然,读取的数据会不精确。静态阐发东西将永久无法发明该题目。雷同,如有被误读的时间范例(timespec),静态时序阐发也将难以发明此题目。

  3. 在体系测试

  实际上,每位工程师都依赖该要领举行终极测试。若计划能在板上事变且通过了种种测试,则该计划就将被颁布。这肯定是个非常好的测试,但它大概没能发明全部题目。偶然,在一些边界环境(corner-case)被发明前,计划需运行相称长的时间。诸如时序违约等题目并非在全部芯片中都以雷同方法显暴露来。当发明这些题目时,计划通常已交到用户手中。这意味着为找出此题目所导致的高本钱、歇工期和波折感。为能精确完成在体系测试,必须打扫全部硬件妨碍,此中包括与SSO相干的题目、交错滋扰以及别的与板卡接洽干系的题目。若在启动在体系测试前,有必要连接的外部接口,则将延缓产品的上市时间。

  从上可知,传统的验证要领不敷以举行完备的体系验证。有富裕来由举举措态时序阐发。

  时序仿真是可在此中举举措态阐发的唯一要领。很多工程师有令人佩服的来由拒绝举行时序阐发。一些重要担心题目是:
  它很费时;
  为实行验证,必要大量存储器和处理惩罚器资源;
  为没有步伐重复利用取自成果模仿的测试基准,必须创制新测试基准;
  为由于整个网络表是展开的,以是计划调试成为一件琐事,别的,没步伐及时定位题目地点;
  为时序仿真表现最坏环境的数量,计划本身大概充足俊逸,不至于云云发兵动众;
  为并非全部子模块都是在一个环境下举行编程的;
  为无法将在各个差别场合编程的部疏散开,由于这些部分的计划师应是那些为能举行验证从而对计划有更深刻驾驭的人。

  这些都是合法的存眷,这也便是为什么下一节将讨论工程师能做些什么以降服此中某些题目的缘故起因。

  在时序仿真中采取Netgen以得到精准结果

  Xilinx提出了一种革命性要领以从Netgen中得到用于动态阐发立室的静态时序阐发数和时序数。与-pcf 开关一起运行Netgen并指向一个有效PCF文件将确保得自Trce和Netgen的数将相互立室。

  在时序谋略时,全部新Xilinx架构都利用了相对最小数(Relative Minimums)的长处。利用相对最小数意味着在设置谋略以及相反的保持谋略时,将采取最大时钟延时和最小数据延时。如今的模仿器不支持利用雷同SDF文件中分别取自MIN域和MAX域的数。基于该限定,Xilinx必要两个差别的模仿-- 一个用于设置,另一个用于保持。

  Netgen编写SDF文件,以是,当运行SDFMAX模仿时,将利用最大时钟延时和最小数据延时。SDFMAX包管计划能餍足目标器件的设置请求。当运行SDFMIN模仿时,利用最小时钟延时和最大数据延时。SDFMIN包管计划能餍足目标器件的保持请求。

  改造时序仿真体验

  当形貌时序仿真时,“总体大于部分的总合”如许一句常语险些可被反过来说成:“部分的总合大于总体。”后一句话总结了本节所要阐释的内容。为收缩时序仿真所用的时间,我们将不得不寄托“支解后各个击破”的要领。对一个大的展开网络表来说,完成任意情势的验证都将是件费时和枯燥的任务。因此,采取的步伐是将网络表支解为多个小部分。

  该要领论并非是数字逻辑范畴的一场革命,它是一种渐进的沿革。自从HDL出现后,计划师不停喜好采取基于部分组件的模仿而非整个大计划。题目是,没步伐将此本领引入时序仿真。这与在FPGA实现中,在保持层次中所获取的盼望不再一样。其基于的理念很大略。很多计划创生于多少更小模块,而验证在各个子模块层次举行。

  不久前,推出了一种称为KEEP_HIERARCHY的要领。该方案容许计划在经历实现时也能保持层次。它在改造时序仿真方案方眼进步了一小步,但它有助于办理的实际题目是在调试阶段。如今,计划不再是一个展开网络表。后标注的HDL文件具有差别的层次部分以立室原初计划。如今,当在时序仿真中发明题目时,能容易地多地对妨碍源举行定位并举行调试除错。正如上面提到的,这只是该特性全面本领的一个太过。

  KEEP_HIERARCHY的下一步是天生“多层次文件(Multiple Hierarchical Files)”的本领。这一引入到软件东西中的特性能为层次的各部分编写独立的网络表及相应的SDF(标准延时格局)文件。该特性的引入为与时序仿真一起利用的种种要领洞开了大门。一旦能为层次的各部分编写,则每个时序模块看起来与RTL版本一样。这就支持能再利用在举行成果模仿时利用的测试基准。这在时序仿真中是个长足进步。

  如今,工程师不再必要仅为举行时序仿真编写一个独立的测试基准。若已为成果模仿编写了一个测试基准,则险些不需任意窜改就可将其用于时序仿真。位于顶层的端口名称将总是雷同的,如许,测试基准就可被再利用。此类计划的重要上风之一是它可容易地定位题目地点。为能充分相识该特性的真实本领,我们将观察一个实际例子。

 

 <a href=FPGA计划的验证技能及应用原则" src="http://image.mcuol.com/News/070423141237090.JPG" width=392 border=0>

  图1中,子模块A起首由工程团队1天生、子模块B和C由工程团队2天生,别的,IP模块D从第三方买进。这些模块都在差别时间及/或由差别工程师天生,且为了验证每个模块的成果正确性,各模块都用其本身的测试基准举行了验证。一旦告成对各个独立部分举行了验证,它们就被整合进FPGA以举行实现。RTL模仿通常便是如许做的。如今,借助与KEEP_HIERARCHY一起利用MHF(多层级文件)的本领,乃至在举行时序仿真时都大概保持雷同战略。

  采取该特性能资助想举行时序仿真的计划师办理他们面对的两个最大困难:1)各个模块重复利用测试基准的本领;2)定位产生题目的详细模块的本领。可有多种途径举行时序仿真。当采取MHF时,由于全部这些模块的顶层端口都保持同等,以是可容易地重复利用RTL测试基准。

  以组块形态形成的终极网络表确实可利用户为其RTL等价物选取差别的模块。如许做,用户将可加快模仿的运行时间。RTL险些永久比布局化网络表等快得多,如有种要领在不影响计划成果的条件下可用RTL更换布局码,则就应实行这种要领。险些没一种计划在实现后就风雅绝伦。这便是为什么必要举行时序仿真的缘故起因。

  采取上述同一个例子,我们可观察怎样改造整个计划的速率及可观察性。为得到最短的运行时间,抱负的环境是在一个模块上一次仅运行时序仿真。此例中,我们可在子模块A运行时序仿真然后使子模块B、C和D处在RTL情势。一旦我们举行时序仿真并发明统统如预期的一样,就可对任意子模块举行切换并以雷同的方法举行测试。采取该要领论还意味着,若在一个子模块中发明白题目,则可容易地定位该题目子模块并将它拿给该模块的计划者举行修改。 若发明多个子模块存在题目,则该要领带来的分外长处是,两(多)个差别工程团队能同时动手办理发明的题目。

   在传统流程中,当发明计划的一个部分存在题目时,只有在该部分的题目被办理后,计划师才大概处理惩罚计划的别的部分。在采取MHF计划流后将不再受这种限定。时序仿真用户的另一个重要抱怨是:若别的工程团队不在海内,则完成末了的验证会相称困难且需花很永劫间。这是由于,它将浪费很多时间以及当采取传统时序仿真要领论时的很多相互接洽干系和依赖题目。借助MHF要领论,去失了接洽干系因素。利用MHF,差别工程团队可省去很多空闲时间。这将确保发挥团队的最大服从。具有模块布局的网络表也能为验证小组提供资助。已往,必要由一位验证工程师完成的事变现可由差别小组的多位验证工程师完成。开辟小组采取的理念也可同样用于验证小组。

  除在模仿范畴获取连续盼望以外,在施加鼓励的要领方面也有紧张进步。已往的计划通常非常小,以是过去的计划鼓励要领是采取模仿器提示(prompt)的施力文件(force file)或大略刺激以切换每个信号。随着计划变得益发巨大,施加鼓励也必要更好的要领。这里,VHDL和Verilog 的本领将有效武之地。随着HDL编码语言的引入,测试基准变得更巨大和紧凑。

  在该范畴,出现了诸如PSL、SystemC和SystemVerilog等技能。这些语言包围的范畴不在本文讨论之内。这些编程方法的一个倒霉方面是它请求将一个模仿的输出作为另一个模仿的输入。一些模仿器支持容许用户正确举行这种操控的Extended Value Change Dump Format 格局。不采取这种要领举行时序仿真的用户遇到的重要停滞是:由于当将统统都展开后端口名称将变化,以是没步伐将输出作为鼓励。采取MHF要了解去失此题目,由于,如今这里有可施以鼓励的独立模块,别的,如今一个模块的输出可被用作另一个模块举行RTL以及时序仿真的鼓励。

  选择层次

  获取层次模仿告成的一个重要部分是选取层次。没有现成的公式可用于选择精确的层次。这便是为什么没有对或错的层次的缘故起因,固然在试图选取层次还是有些原则可资鉴戒的。确保餍足如下这些原则永久是明智之举。

  1)计划应当是完全同步的。

  2)全部关键路径应包括在一个逻辑组(可被分别同步的计划的一部分)中。典范环境,每个逻辑组应是在计划顶层例示(instantiated)的Verilog内的一个模块或VHDL内的一个实体 。

  3)全部IOB(输入/输出块)逻辑应在顶层。器件的任一个输入和输出应在顶层及I/O缓冲器和I/O三态门内举行声明。但,逻辑组内例示的I/O逻辑是可担当的。

  4)在每个逻辑组的输入和/或输出应安排寄存器。高超的作法是在逻辑组的边界对全部输入信号或输出信号举行寄存处理惩罚。它确保逻辑组内的全部关键路径得到保持并免除了当通过逻辑组边界举行逻辑优化时大概导致的题目。在计划中的全部层次组内都应同等服从该规矩。

  5)顶层应只包括例示的模块或实体、IOB逻辑及时钟逻辑(DCM、BUFG等)。

  6)选择逻辑组时,应不使任一组过小以至对其单独举行验证的代价不大或不太关乎大局,还应不使任一组过大以方便产生题目时难以模仿和调试。但对此没有确切的定律,别的,它可根据计划和验证请求而变。

  7)选择逻辑组时还应细致使计划中最大概在后续计划流中被窜改的部分与计划中更稳固的部分独立开来。如许,当举行了这种明智选择后,以后的计划变动对验证时间孕育产生的影响最小。

  只要依照上述提到的规矩,保持层次就该不会对计划性能孕育产生影响。为从保有的层次中得到最大长处,只应将其应用在计划中的其端口在门级模仿中必要可见性的块中。一样平常环境,这些块是依照了上述规矩的上层块。通过对选择的块限定其保存层次,综合和实现东西将具有更多的自由以优化计划并改造性能。下图2表现的是在一个典范计划中可在那边保存层次的例子。

 

 <a href=FPGA计划的验证技能及应用原则" src="http://image.mcuol.com/News/070423141237171.JPG" width=488 border=0>

  应细致的是这里只有引导目标。没有指定怎样选择或保持层次的确定规矩。它的确因计划而异、因用户而差别。应由用户来决定在那边保持层次对验证最有代价、以及在那边应将其解构。

  层次验证进入实战

  为对在时序仿真中采取层次要领的大概长处举行量化,我们将查抄两个计划:VHDL和Verilog各一个,它们都因此中等范围Xilinx FPGA为目标器件的,且采取了500微秒的Model Technology ModelSim SE模仿器举行模仿。这些模仿是在带2GB RDRAM存储器的双2.0 GHz Xeon谋略机上在Linux环境下运行的。这是为表现该要领论能显现的量值差别所举行的一个得当的实行,它并不肯定代表典范的模仿运行时间或存储器需求。

  VHDL计划在肯定程度上代表了典范的以DSP为导向的计划,这里用的是Xilinx的 Virtex-4 SX35 FPGA。我们选择将计划分为9个子层和一个顶层,在每个盼望子层都安排一个KEEP_HIERARCHY。

  在该测试中,我们选代替码最不稳固的部分,也即在计划流的这一部分它频繁变化。实行一个相对大略的模仿,并比较TRL模仿时间与计划的时序仿真时间,我们发明它对运行时间和存储器容量请求有明显增长,见下表1。但,若我们采取仅对计划的变化部分施以时序仿真的要领,我们可相应低落运行时间24倍、减小存储器容量21倍。纵然我们选择仅采取变化的部分对整个计划举行时序验证,我们看到,与完全RTL模仿相比,其所需的运行时间和存储器容量与完全RTL模仿相比也只需增长约一倍。与更传统的全时序仿原形比,其对上述两个指标的请求也有大幅低落。

 

 <a href=FPGA计划的验证技能及应用原则" src="http://image.mcuol.com/News/070423141237182.JPG" border=0>

  看Verilog计划,它代表了某种更大更巨大数据路径方法的计划,我们以Xilinx Virtex-4 LX80 FPGA为目标器件。我们将其分为14个子层和一个顶层,采取KEEP_HIERARCHY束缚以支持分段时序仿真。我们看到,与VHDL运行相比,所需的时间长了些,但对该计划仍获取雷同的改造。仅对变化部分举行的时序仿真与对整个计划举行时序仿原形比,运行时间和模仿存储器分别节流了6.3和6.6倍。仅将计划的变化部分代替以时序仿真网络表然后模仿整个RTL计划,运行时间和存储器需求仍分别收缩了3.6倍、减小了 5.5倍。

  在两个计划中,被变化模块的包围范畴完全相称,且由于更快的运行时间以及需阐发的计划更小,计划调试变得更容易。大概由于必要更大的存储器,模仿器用起来也更觉机灵。我们细致到,采取该要领论(扩展了验证计划的可用资源并容许并行运行以进一步低落总体运行时间),大概用一款较低真个谋略机(速率更慢、存储器更少)实行该模仿。

  本文小结

  本文包围了利用如今可用的一种技能举行高级验证的要领论。它并非一种革命性的要领论,而是一种大多数计划师并不完全相识或彻底驾驭的一种要领。这些技能已往不停用于差别范例的模仿和验证,但大概并没发挥出全部效力。采取层次模仿可对必要多永劫间及多大高兴才华完成一个计划验证孕育产生巨大影响。令人欣慰的是,借助本文,在将来的FPGA计划中,在低落模仿对硬件需求的同时有大概实现更快和更高效的时序仿真。