你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

【赛灵思中国通讯53期】- FPGA设计,视时序为一切

发布者:jackzhang 时间:2014-09-30 11:52:21

作者:Angela Sutton
FPGA产品部产品市场营销经理
Synopsys公司
sutton@synopsys.com

Paul Owens
FPGA产品部企业应用程序工程师
Synopsys公司
powens@synopsys.com

当您的FPGA 设计无法满足时序性能目标时,其原因可能并不明显。解决方案不仅取决于FPGA 实现工具为满足时序要求而优化设计的能力,还取决于设计人员指定前方目标,诊断并隔离下游时序问题的能力。目前,设计人员掌握了一些使用技巧,可以帮助您 设置时钟;通过Synopsys Synplify Premier 等工具正确设置时序约束;然后调整参数,以满足赛灵思FPGA 设计的性能目标。

有多个攻克角度,其中包括:

•更好的设计设置,例如完整、准确的时序约束和时钟规格;

•节省时间的设计技术,例如仔细RTL编码,以求更佳的性能效果,以及将造成最大性能问题的设计部件整合在一起,从而缩短随后调整设计时序的迭代运行时间。

•综合关联,并布局布线时序,以产生更好的时序结果质量(QoR)和时序收敛。

现在从三个方面详细介绍一下这些技术,并检测如何使用以实现您的时序目标。

您需要确认您已经充分、完全地对您的设计进行约束,且未过度约束。

第一步:更好的设计设置
最大的成本开销来自于指定正确、完整的设计约束条件。这些约束条件可以在设计意图和设计性能目标与综合工具之间实现通信。综合设计之后,这些约束条件和关 键路径信息将自动传递至Vivado®Design Suite布局布线(P&R)工具,以进一步确保满足时序要求。

综合工具可以帮助您应对设置综合前约束这项艰巨的任务。您的任务清单如下:

1.识别时钟

2.识别并创建时钟组和时钟关系

3.约束时钟

4.约束设计输入和输出

5.定义多周期路径和错误的路径

您需要确认已经充分、完全地对您的设计进行约束,且未过度约束。过度约束将导致运行时间延长,并有可能报告错误的关键路径。务必要指定多周期和错误路径,并对衍生时钟设置约束(define_path_delay, define_false_path)。

设置Vivado流程的初始约束文件
由于约束条件设置工作非常困难,因此综合软件可以提供一个初始约束模版,其中的基础约束和语法可以作为此项工作的起点。例如,在Synplify综合软件中,运行TCL实用程序为特定的设计创建一个初始FDC文件:

TCL: create_fdc_template

图1给出了该流程将生成的约束文件(.fdc)的实例。该实例中,您可以看到声明时钟、时钟组(时钟之间的关系)和输入/输出延迟等关键项目已经纳入考虑范围。

针对Vivado Design Suite流程中约束设置的最佳实践
在Vivado Design Suite流程中设置约束条件时,要确保进行以下操作:

•定义输入端口或与输入端口连接的网络上的所有基础时钟。

•定义黑盒输出引脚上的时钟。

•定义网络上生成的时钟。

•不要定义逻辑选通时钟。

•提供正确的时钟约束:不要过度约束,并确保将不相关的(又称异步)时钟放置在单独的时钟组中。

•定义时序例外,例如错误路径和多周期路径。

提示:在Vivado Design Suite中,时钟约束应尽量接近源时钟,而不是赛灵思 ISE® Design Suite流程中的BUFG。

确保您的约束条件正确无误
我们建议在设计设置阶段采用四种约束验证技术。为了让您了解应该做的约束检查类型,我们来看一下Synplify软件执行的各项检查。

首先,运行“语法检查”—即快速进行约束条件检查,其中包括其嵌入的“get_XX” 和 “all_XX”命令,用以发现和清理任何约束语法错误。错误会显示在日志文件中,并可以超链接至错误手册,以解释错误并提出修改建议。使用Tcl命令 check_fdc_query。

第二,运行“综合检查”以检测与硬件相关的错误,例如错误编写的触发器。这些错误会以单独的日志文件报告。

第三,运行基础“快速综合”,以检查时钟设置问题,包括声明、衍生和推断时钟。快速综合支持执行时钟设置检查,因其可生成时钟报告和时序报告,进而使时钟设置问题明朗化。

一些综合工具可支持在“快速”模式下运行综合,其为了实现较短的运行时间,其会禁用一些综合优化。在Synplify Premier综合软件中,您可以通过以下命令实现:

set_option –fast_synthesis 1

综合编译器将创建一个综合报告时钟总结,您可以使用其中有关推断时钟的信息用以识别、定义和约束时钟。

第四,运行全面的“约束条件检查”。该检查会查找关于时钟关系、未约束开始/结束点、未锁定I/O和无约束I/O的约束设置问题。

一个全面的约束检查还会查找正确应用的约束和实例名称。例如,它会标记出应用于不存在或无效参数和对象的时序约束。然后该工具会针对不可应用的约束 和未找到的实例生成详细的解释性报告,以便纠正约束文件。Synplify综合工具将在综合预先映射阶段自动运行这些检查,或者您可以在综合开始时使用以 下TCL命令运行约束检查:

TCL: project -run constraint_check

运行这些基本的检查类型可在综合周期的早期就能找出潜在的错误,从而改进结果的质量(见图2)。

运行综合之后,请务必要分析后期综合时序报告,因为其可以提供重要的信息。例如在使用Synplify软件时,时序报告的起始时钟部分中的“系统时钟”显示,一些I/O没有被约束。此报告的接口信息将确认情况是否如此。

第二步:RTL代码风格和关键路径调整
为了收敛更好的时序,我们建议您针对有限状态机、RAMS、数学/DSP功能、时钟树和移位寄存器使用特定的代码风格。结果将改进时序QoR,因为通过FPGA原语构建模块,综合工具能够更好地推断实现。

另外,这些代码风格可以避免创建不必要的逻辑,例如推断锁存器、RAMS的读取/写入检查逻辑,以及已经装入DSP原语中的逻辑。关于这个话题我们 已经谈了很多,使用综合工具中的核生成器性能是关键考虑因素。例如,Synplify软件包含一个SynCore IP向导,它可以为支持字节的RAM自动生成所需的RTL代码风格。其他IP生成器,例如赛灵思IP Catalog、Synopsys Synphony Model Compiler或Synopsys DesignWare coreTools和DesignWare Building Blocks,也可以帮助您配置IP,执行许多DSP和数学功能,并创建良好的RTL代码风格。如果是手动编码,请记住以下内容:

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了