如何发现并解决FPGA设计中的时序问题

发布者:游走人间最新更新时间:2008-12-22 来源: 赛灵思公司关键字:FPGA  时序 手机看文章 扫描二维码
随时随地手机看文章

耗费数月精力做出的设计却无法满足时序要求,这确实非常令人伤心。然而,试图正确地对设计进行约束以保证满足时序要求的过程几乎同样令人费神。找到并确定时序约束本身通常也是非常令人头痛的问题。

时序问题的恼人之处在于没有哪种方法能够解决所有类型的问题。由于客户对于和现场应用工程师共享源代码通常非常敏感,因此我们通常都是通过将工具的潜力发挥到极致来帮助客户解决其时序问题。当然好消息就是通过这种方法以及优化RTL代码,可以解决大多数时序问题。

但在深入探讨之前,我们首先需要对时序问题进行一点基本分析。这里的目标是首先排除明显的问题,如将时钟引脚置于器件的上部、在器件下部驱动数字时钟管理器(DCM),然后再在器件上部驱动全局缓冲(BUFG)。

有时,此类引脚布局会导致根本没有办法满足时序要求。通过察看时序报告中的延迟,通常可以发现这些明显的时序问题。在这些情况下,为了解决这些明显的问题,都需要利用底层规划工具“floorplanner”将造成问题的部分锁定在适当的位置。底层布局规划工具还可以帮助以可视的方式来理解时序问题。

用最新工具进行时序分析

假设问题并非这么明显,那么为了锁定问题所在,需要了解所使用的器件系列以及软件版本。通常,每种器件系列对应一种最优的软件版本。如Xilinx Virtex-4器件对应的最佳软件是ISE软件9.2i版,而对Virtex-5 FPGA则是ISE软件10.1版。

综合工具的版本也很重要,因此当采用最新的器件架构时,下载并使用最新版软件非常重要。软件开发几乎总是滞后于硬件功能,因此我不提倡使用旧版软件进行基于新器件的设计。

然而,有些客户由于担心新的和未知的软件缺陷而不愿意升级软件。但是,在使用最新的器件时,如果希望更好地处理时序挑战,强烈建议下载最新版软件。

拥有了最适用于目标器件系列的软件,还需要确定最佳的实现选项。可惜,并没有适用于所有情况的超级选项组合。对于设计实现工具来说,有成千上万种不同的实现选项组合。根据所使用的实现选项不同,时序分数(即所有存在错误的时序路径与时序要求的差异总和,以皮秒表示)也会有很大不同。

赛灵思的几款工具可帮助确定适用于特定设计的最佳实现选项。ISE软件现在包括两个工具:Xplorer以及最近发布的SmartXplorer。SmartXplorer可充分发挥多处理器优点,能够以不同选项组合运行多个实施实例。

SmartXplorer需要Linux支持,但使用非常容易。其命令行很简单:smartxplorer designname.edn -p xc5vlx110t-1ff1136.

只要用户约束文件(UCF)和网表约束文件(NCF)文件名相同,SmartXplorer会自动使用正确的选项。唯一需要做的是编辑主机列表文件。

SmartXplorer可以通过SSH/rsh安全shell登录到其他机器。只需要在名为smartxplorer.hostlist的文件中将每台机器一行将机器名字添加进去就可以了。如果机器有两个处理器,请将机器列出两次。表1给出了SmartXplorer的一组结果。

表1:对基于Virtex-5 FPGA的设计SmartXplorer 10.1的一个例子。

PlanAhead软件也包括了与SmartXplorer类似的称为ExploreAhead的功能。ExploreAhead支持同时在多台Linux机器上分布式运行布局布线任务。所有这些工具的目的都是类似的:确定实现工具的最佳选项组合,以获得最好的时序得分。

请注意选项的不同组合对于时序得分和运行时间的巨大影响。仔细调整综合选项也非常重要。例如,在综合选项中关闭结构层次(hierarchy)通常会大大提高性能。综合过程中的约束条件好坏在满足时序方面的作用也很突出。[page]

用PlanAhead分析时序

在了解实现选项对最佳时序分值的影响之后,现在可以开始有效地分析时序问题了。这时候,PlanAhead是一款非常有价值的工具,可以视觉化显示布局布线后的设计。利用它,还可以导入时序约束并在已布局窗口交叉探查(cross-probe)时序失败的路径。

当工具本身的决策不好时,则可以通过平面布局模块或通过手工布局部分组件的方式来纠正。这一过程通常需要反复多次,才能够确定时序优化的最佳设计布局方式。PlanAhead软件的可视化功能确实使这一工作的完成更容易了。

利用PlanAhead软件,首先创建项目(project),然后将HDL或网表文件导入工具中。一旦创建了一个项目,就可以选择“File→Import Placement”。选择时序优化效果最佳的布局布线后(ncd)文件,将布局布线信息导入PlanAhead软件项目。

软件会将PlanAhead项目组织到几个不同的窗口。左上窗口是物理分层窗口,描述了设计中的当前区域组。选定窗口在下面,包含了当前选定的数据详细信息。中间窗口是网表窗口,给出了整个网表的分层结构。最右侧窗口是器件观察窗(Device view),里面已经充满了设计实施完成后的逻辑。

然后,将时序分析报告(TWR/TWX)导入到PlanAhead工具中。选择“File→Import TRCE Report”。这一步将时序报告数据添加到底部窗口。按照时序余量(timing slack)对这一窗口进行排序可以将焦点首先集中于违反时序要求最多的地方。经常的情况是解决了这些时序偏差最大的地方所存在的问题也就解决了整个设计的时序问题。

图1. PlanAhead 10.1版显示出已实施的设计,一条时序失败路径高亮显示。
图1. PlanAhead 10.1版显示出已实施的设计,一条时序失败路径高亮显示。

一旦选择了一条时序失败的路径,PlanAhead软件就会选定时序失败路径上的实例和连接。按F9键放大显示选定的部分。

这儿的事情显得有些复杂。必须进行一定的审查和思考才能够明显布局布线工具将基本单元(primitive)放在某个地方,以及为什么对于当前的特定设计来说还有更好的方法。

可以放大显示任何高亮的基本单元。鼠标点击一个基本单元并拖动,可以更好地观察其连接情况。在网表窗口,还可以移动到包含了所选实例的顶层模块。鼠标右击模块名称并为选定的实例选择颜色,这样就可以显示出这一模块在芯片中的布局,以及组内单元是靠近还是散开的。

可能发现有时需要更好地锁定特定的基本单元。Block RAM和DSP模块的自动布局是导致时序失败的常见原因。很容易发现布局布线工具将Mult18安排的位置很不好。时序失败路径中的块RAM输出连接到Mult18,后者的输出又馈送到进位链。块RAM在上部、Mult18在下部,而逻辑部分又位于上部。如果布线不需要上上下下、边边角角地来回绕,该路径应当可以满足时序要求。 [page]

时序问题不同,在PlanAhead软件中处理这些时序问题的解决方案也跟着变化。在PlanAhead设计工具中解决时序问题需要不断实践。该解决方案体现以下操作步骤中:

1. 选择高亮显示失败的时序路径。

2. 右击路径上的某个实例,选择“Highlight With →color of choice”。

3. 在左侧栏中,将底部第二个Mult18释放。右击“Unplace。这将为时序失败的块RAM腾出空间。

4. 点击拖动底部的Mult18向左上移动一个位置。

5. 点击拖动右边的块RAM到底部左侧的自由块RAM位置。

6. 选定失败的时序路径,确认路径看起来是优化的。

7. 选择“Tools→Clear PlacementConstraints”。点击第一个选项中的“Next”。

8. 选择“Unplace All But SelectedInstances”。在余下的向导步骤点击“Next”。

9. 如果希望在“PlanAhead软件外运行实施流程,选择“File →Export Floorplan”。

10. 工具会输出一个新的文件名为“top.ucf”的UCF文件。你可直接使用这一文件,或者将文件中的约束加入到原始UCF中。

11. 另一个选择是在PlanAhead软件内运行实施工具。

选择“Tool→Run ISE Place & Route with ExploreAhead。

ExploreAhead提供了许多很好的功能,包括:自动从器件观察窗导入约束到UCF;简化了从ExploreAhead中运行的布局和时序结果的导入。

图2. PlanAhead 10.1版软件显示出将DSP48和块RAM锁定后的正确路径。
图2. PlanAhead 10.1版软件显示出将DSP48和块RAM锁定后的正确路径。

Pblock和底层规划

如果发现布局中有许多时序失败路径,手工布局调整通常无法解决问题。反过来,应当创建区域组。创建区域组(Pblock)的方式之一是在网表窗口中右击模块名字并选择“Draw Pblock”。然后在器件观察窗中希望放置区域组的地方画一个长方形。

工具会创建一个Pblock,同时会显示有关的详细信息。属性窗口会显示Pblock需要的逻辑资源以及画出的长方形区域组中可用的资源。

设计的底层规划是一个需要深度交互的过程。你可能会发现需要反复多次调整区域组才能够达到目标。请记住有时创建的区域组越小越少越好。你并不是总需要将整个模块固定为区域组。集中于时序失败的基本单元,将它们组合为区域组并单独为其进行底层规划。

在此过程中,应当利用Pblock指标(Metrics)来更好地理解有关功能,如区域组中可配置的逻辑块(CLB)的利用情况如何(可以在PlanAhead软件左上窗口中点击Metrics标签来查看可用的指标)。这可帮助确定是否某个特定区域中太拥挤以致妨碍布线。如果确实比较拥挤,可能需要通过平面规划将设计逻辑放得散开一些。

一旦利用PlanAhead软件获得尽可能好的时序分数,最后的任务就是优化代码。PlanAhead设计工具现在支持HDL源文件。根据你导入的源文件不同,你可以从时序问题出发通过交叉探查功能回查到网表或HDL。

利用原理图观察窗(Schematic view),可以察看整个时序路径。只需要从时序结果中选择时序路径并按F4。仔细观察从其他模块扇入扇出的逻辑。由于外部接口要求,工具可能经常需要将模块在芯片上散开部署。如果是这样,可能需要使用流水线。

Block RAM和DSP输出时序是引起时序问题的常见原因。通过在这些模块的输出进行存储,通常可以恢复一纳秒甚至更多的时间。

关键字:FPGA  时序 引用地址:如何发现并解决FPGA设计中的时序问题

上一篇:Dan Leibholz担任ADI通用DSP工程总监
下一篇:用数字信号处理器优化视频编码器

推荐阅读最新更新时间:2024-05-02 20:44

集成UART核心的FPGA异步串行实现
    串行外设都会用到RS232-C异步串行接口,传统上采用专用的集成电路即UART实现,如TI、EXAR、EPIC的550、452等系列,但是我们一般不需要使用完整的UART的功能,而且对于多串口的设备或需要加密通讯的场合使用UART也不是最合适的。如果设计上用到了FPGA/CPLD器件,那么就可以将所需要的UART功能集成到FPGA内部,本人最近在用XILINX的XCS30做一个设计的时候,就使用VHDL将UADT的核心功能集成了,从而使整个设计更加紧凑,更小巧、稳定、可靠,下面就谈谈设计方法。   分析UART的结构,可以看出UART主要由数据总线接口、控制逻辑和状态接口、波特率发生器、发送和接受等部分组成,各部分间关
[嵌入式]
Altera低成本Cyclone III FPGA实现对EtherCAT实时协议IP的支持
     流行的工业通信协议提高了工厂自动系统的设计灵活性 2007年7月20号,北京 ——为帮助工业设备设计人员更灵活地实现实时以太网通信,Altera公司(NASDAQ: ALTR)今天宣布为EtherCAT技术协会的EtherCAT协议提供知识产权(IP)支持。此前IP是针对Cyclone II器件,现在将针对Altera新的低成本、低功耗Cyclone III FPGA。 EtherCAT技术协会执行总监Martin Rostan说:“在竞争非常激烈的工厂自动化设备市场上,企业正在寻找能够迅速突出产品优势的新功能和特性。Cyclone III FPGA实现对EtherCAT的支持,使设计人员能够以高性价比方式,轻松加入实
[新品]
FPGA或将成为电子系统制造商救命利器
根据赛灵思的分析,2007年可编程逻辑芯片市场约为36亿美元,2012年将快速增长到140亿美元。推动这一巨幅增长的因素来自以下三个方面:智能视频分析和监控、更高带宽网络通信、高清视频广播、HDTV和互联网音视频流传输等数字多媒体融合市场的需求、FPGA的性能、成本、功耗和容量已经接近甚至超过此前ASIC或ASSP的水平、以及当前金融和经济危机导致的快速、量小和多变的客户需求趋势。 今年二月初赛灵思(Xilinx)为庆祝其新LOGO诞生和25周年生辰而在北京举办的庆典活动上,赛灵思新任CEO Moshe Gavrielov在其致贺视频片断中用短短的四个英文单词“Do more with less”就非常到位地概括了当
[嵌入式]
ARM+FPGA开发板的强劲图形系统体验——米尔基于NXP i.MX 8M Mini+Artix-7开发板
ARM+FPGA开发板的强劲图形系统体验——米尔基于NXP i.MX 8M Mini+Artix-7开发板 关键词:NXP、Xilinx、i.MX 8M Mini、Artix-7、ARM+FPGA、图像处理、异构处理器 本篇测评由优秀测评者“qinyunti”提供。 01 ARM+FPGA异核架构开发板简单介绍 MYD-JX8MMA7的这款ARM+FPGA异核架构开发板, 拥有2个GPU核,一个用来做3D数据处理,另一个用来做2D和 3D加速。3D GPU核支持:  OpenGL ES 1.1,2.0  Open VG 1.1  2D GPU核支持  多图层混合 基于ARM+FPG
[嵌入式]
ARM+<font color='red'>FPGA</font>开发板的强劲图形系统体验——米尔基于NXP i.MX 8M Mini+Artix-7开发板
一种基于FPGA和DSP的图行显示控制系统设计
随着现代电子信息技术的发展,人机交互、图形图像数据的输出显示在系统设计中越来越重要,一方面要求各种参数的输入,另一方面要求将数据结构显示出来。文中设计的基于DSP和FPGA的系统结构,实现了人机交互和各种图形图像的输出显示,而且可以达到动态显示的效果。在设计上采用了软件填充的图形设计方法,先由DSP生成全局数据缓冲区,填充要绘制的图形,之后通过DSP的EDMA传递给FPGA,FPGA实现显示屏的接口不断扫描,将数据送到显示屏显示。同时FPGA连接键盘接口,通过扫描法扫描键值,之后通过中断方式送到DSP,使DSP对各种输入进行控制。整个系统的结构图如图1所示。 1 系统功能 为实现显示系统的基本功能,系统要求实现人机交互,
[嵌入式]
一种基于<font color='red'>FPGA</font>和DSP的图行显示控制系统设计
赛灵思实现对多通道杜比数码专业编码功能的支持
全球可编程逻辑解决方案领导厂商赛灵思公司(Xilinx, Inc. (NASDAQ: XLNX))日前宣布,现场可编程门阵列 (FPGA) 首次实现对多通道杜比数码专业编码功能的支持。利用这种实施在赛灵思 Virtex®-5 器件中的编码功能,广播设备开发人员可针对快速变化的设计要求做出极其灵活的反应,充分满足高性能、低功耗系统和精简材料清单的需求,以降低开发成本。 赛灵思与业界领先的可重配置多媒体与通信IP 模块供应商 Coreworks联手协作,向 Virtex-5 FPGA 移植了杜比数码5.1 通道专业编码器并进行了验证。该解决方案还将应用于最新一代的高性能 Virtex-6 和低功耗、低成本的 Spar
[嵌入式]
基于FPGA的语音信号LPC参数提取算法的实现
    摘要: 介绍语音信号LPC分析中部分相关系数的舒尔递推算法的FPGA实现,给出了电路设计思想及具体电路结构,并对其工作过程进行了详细分析说明,为嵌入式系统设计提供了一种有效手段。     关键词: 部分相关系数 舒尔递推算法 FPGA 并行处理技术 随着语音技术应用的发展,越来越多的语音信号数字处理系统需要按照实时方式或在线方式工作,特别在嵌入式系统设计中,对系统的硬件环境要求更高。随着语音处理算法的日益复杂,用普通处理器对语音信号进行实时处理,已显得力不从心。本文将采用新一代现场可编程门阵列FLEX10K系列的FPGA芯片实现语音信号的LPC分析,并通过舒尔(Schur)递推算法,提取语音信号算是中
[半导体设计/制造]
瑞苏盈科FPGA核心板在声呐系统中的应用
瑞苏盈科FPGA核心板在声呐系统中的应用 前言 声纳系统使用声脉冲来探测、识别和跟踪水下物体。一个完整的声纳系统是由一个控制和显示部件、一个发射器电路、一个接收器电路和同时能作为发射装置(扬声器)和探测装置(高灵敏度麦克风)的传感器组成。 声纳系统图 技术挑战 本文讨论的声纳发射器是一个相控阵发射器, 能够发射10Khz至100Khz的频率 。该系统采用了一个发射器模块阵列,每个模块能够驱动8个声纳传感器。FPGA设计包含若干独特的模块:ARM处理中心(英特尔HPS)、一个波形发生器、通道接口、时钟和芯片计时、系统监控和控制以及状态寄存器。 系统框图 解决方案 该项目采用了 瑞苏盈科基于Int
[嵌入式]
瑞苏盈科<font color='red'>FPGA</font>核心板在声呐系统中的应用
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved