EDN China > 技术文章 > 消费电子设计 > 便携设备 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

使用FPGA测试的一些有效方法

来源:电子产品世界/京工业大学 北京市嵌入式重点实验室 邹杨 林平分 王普 方穗明?? 2006年09月06日 ?? 收藏0
ore Generator这个工具。通过该工具可以生成需要的乘法器。使用这些乘法器来代替普通的乘法器,可以达到满意的效果。除了乘法器,还可以使用该工具产生RAM和DCM等,在此不再赘述。?综合过程解决时序问题

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

??????? 我们知道,综合的时候需要设置约束,最重要的是时钟约束。这个约束限制了系统工作的频率。为了降低系统对于时钟抖动的敏感性,我们采取的第一个方法是在设置时钟约束的时候将此约束值设的略高于实际的时钟频率。这样做有一个前提,那就是在综合后不得有负的时钟余度(time s

lack)出现。当没有负

的时钟余度出现的时候,提高时钟约束可以有效避免因时钟抖动而引入的时序问题,但是如果因为提高了约束中时钟频率,而导致负的时钟余度的出现,那么有可能导致在布局布线过程中产生时序冲突而无法正常布局布线。在这种情形下,就不宜提高约束中的时钟频率。

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

retiming 示意图

? 图 2 retiming 示意图

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

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

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

??????? 在Virtex-4中共有16个BUFG,若都被使用且经手动优化后仍不满足要求 ,那么还可以使用ISE提供的Floorplanner工具,对设计的各个模块手动进行位置摆放,使各个模块尽量靠近自己所使用的时钟树。

??????? 代码一致性

??????? 对于经过FPGA验证的代码而言,最担心的是经过验证的代码和进行流片的代码不一致。导致这个现象产生的原因是多种的,其中版本控制和由于FPGA、ASIC专用器件不一致而引起的问题是最常见的两个问题。前者不在本文的讨论范围,故在此略过。

??????? 对于经过FPGA验证的代码,为了能够使被测代码可以顺利的在FPGA进行验证,根据2.1节所述,一般都采取了FPGA专用的器件。这些FPGA专用器件在ASIC中是不存在的。为了解决这个问题,我们通常采取“假代码”(Fake Code)解决。


??????&nb;

?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FPGA? 重新流片?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈