作者:Ramsey Wang 来源:易灵思FPGA技术交流易灵思提供了相关时序约束的PPT,内容非常全面,但是我们还是发现很多客户在使用Efinity时,时序约束存在很多问题。添加约束添加约束的目的是为了告诉FPGA你的设计指标及运行情况。在上面的生成约束之后,在Result àxx.sdc中提供约束参考(请注意该文件不能直接添加到工程中,...
时序约束
作者:FPGA技术实战引言:本文我们介绍下Xilinx SelectIO资源内部IDELAYE2资源应用。IDELAYE2原句配合IDELAYCTRL原句主要用于在信号通过引脚进入芯片内部之前,进行延时调节,一般高速端口信号由于走线延时等原因,需要通过IDELAYE2原语对数据做微调,实现时钟与数据的源同步时序要求。1. IDELAYE2在SelectIO中的位置7系列FPGA...
本文转载自:FPGA入门到精通微信公众号
FPGA开发过程中,离不开时序约束,那么时序约束是什么?简单点说,FPGA芯片中的逻辑电路,从输入到输出所需要的时间,这个时间必须在设定的时钟周期内完成,更详细一点,即需要满足建立和保持时间。
时序约束可以让VIvado和Quartus等FPGA开发软件,在布线时检测综合出来的逻辑电路是否满足这个时序要求,并生成时序报告。
一、建立/...
本文转载自:FPGA入门到精通微信公众号
在FPGA开发中,资源占用和时序约束一直是主要问题。为了解决这些问题,Vivado提供了丰富的优化工具和资源占用分析工具,帮助工程师优化FPGA设计,深入了解各个子模块的资源使用情况。
本文将从资源占用的角度,介绍Vivado中如何进行FPGA设计资源优化以及查看各子模块资源占用的方法。通过使用Vivado提供的优化工具,...
本文转载自: FPGA入门到精通微信公众号
FPGA开发离不开IO约束和时序约束,IO约束用于确定输入/输出端口的物理端口和电气特性,与芯片和电路设计有关。而时序约束则用于设定FPGA设计中的时序特性,以确保系统能够在预期时钟频率下正常运行。本文将介绍vivado中常见的设置约束方法。
一、IO约束
IO约束,实际上是将工程的输入输出端口与芯片的引脚关联起来,...
本文转载自: 明德扬FPGA科教微信公众号
本文讲一下随路时钟,什么是随路的时钟呢?
第1节 随路时钟的概念
如图1是一个SDRAM的接口时序图,大家如果做外部接口,使用过各种芯片,一般也能看到类似这样接口时序图。CLK是时钟信号,INPUT代表输入SDRAM的各种信号,OUTPUT表示SDRAM输出的各种信号线。其实芯片接口就是一些寄存器,既然是寄存器,...
本文转载自:明德扬FPGA科教微信公众号
本小节对时序约束做最终的总结。如图1所示,前几节内容依次讲述了时序约束的四大步骤。第一是生成时钟约束;第二是输入端口约束input delay;第三是输出端口约束output delay;最后是时序例外。前几节内容把这些情况都归纳起来,对每种情况仔细划分,然后按照对应的情况进行时序约束即可。
图1 时序约束四大步骤
再强调一点...
本文转载自: 明德扬FPGA科教微信公众号
本文继续讲解时序约束的第四大步骤——时序例外。
首先看一下图1,最后一步才进行时序例外的相关约束。再讲一下步骤,第一步是时钟约束,这一步会影响FPGA内部时序,第二步和第三步也会使用生成时钟的约束作为参考时钟约束输入输出端口。时钟约束完内部实际逻辑都没问题之后,第二步是input delay,第三步是output delay,...
本文转载自: 明德扬FPGA科教微信公众号
本文将详细介绍输出延时(output delay)的概念、场景分类、约束参数获取方法以及约束方法。
图1 output delay约束类型
如上图1所示:输出延时(output delay)约束与输入延时(input delay)约束相似,输出延时亦分成系统同步和源同步两大情形。
其中源同步根据时钟特性,...
作者:Gary Hilson EE Times特约编辑
设计人员在开发芯片逻辑之前,需要在许多因素之间作出权衡。例如,如果是为移动应用开发芯片,功耗就是一个非常重要的因素。在这种情况下,需要低功耗逻辑。顾名思义,低功耗逻辑有助于降低功耗,但会影响芯片的性能。同样,如果是为数据中心应用开发芯片,则需要考虑高性能,功耗相对次之。
总之,芯片的功耗和性能是成反比的。在为芯片设计编写逻辑时,...
本文转载自:明德扬FPGA科教微信公众号
时序约束出现时序违例(Slack为负数),如何处理?
答:
一. 首先指出一个误区:当约束出现错误时,想当然地认为是“时序约束做得不对”,所以应该怎么去改“时序约束”,从而让这些错误消失,这是一个错误的观念。
二. 时序约束的作用:在于检查“设计是否满足时序要求”,它是用来审视自己设计的,很多情况是,要改设计代码来满足时序要求。
三....
本文转载自:缘来是你远去是我的CSDN博客
1. 时序约束的概念和基本策略
答:时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。通过附加时序约束可以综合布线工具调整映射和布局布线,是设计达到时序要求。
策略:附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,...
本文转载自:米联客1. 概述基于RGMII时序广泛应用于以太网通信中,基于Xilinx的三速以太网时序分析,不同的Xilinx系列方法不一样。当使用2路以上以太网通信,KU系列FPGA的MAC核需要进行修改,以支持2路以太网和满足时序要求。以下笔者对修改的部分进行说明,希望对广大开发者有所帮助,如果有不对的地方欢迎指针。2. 代码修改主要针对以上三个文件修改,详细的可以打开我们的配套工程阅读代码...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/weiweiliulu/article/details/105774390 创建时钟是针对代码中主时钟而言,创建时钟之前需要知道代码中的主时钟都是什么,可以在综合以后,打开综合,然后在TCL 中输入命令:...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/weiweiliulu/article/details/105772785 1、时序错误的影响 一个设计的时序报告中,design run 时序有红色,裕量(slack)为负数时,...
本文转载自:孤独的单刀的CSDN博客写在前面 最近研究vivado里的时序分析路径时,发现了3个很有意思的问题。经过一番查找资料后,总算把问题搞明白了,在这里分享给大家。1、为什么同一条时序路径在报表里的值不一样?在如下文件建立的工程中:module test
(
...
本文转载自:孤独的单刀的CSDN博客写在前面 之前文章讨论的时序约束可以说都是对时钟的理想特征进行约束,为了更精确地进行时序分析,设计者还必须设定一些与运行环境相关的可预测变量和随机变量,这部分也称作时钟的不确定性特征,包括时钟抖动Clock Jitter、时钟不确定性Clock Uncertainty和时钟延迟Clock Latency。1...
作者:Grace Sun,赛灵思工程师
随着设计复杂度和调用IP丰富度的增加,在调试时序约束的过程中,用户常常会对除了顶层约束外所涉及的繁杂的时序约束感到困惑而无从下手。举个例子,我的XDC里面并没有指定set_false_path,为什么有些路径在分析时忽略了?我怎么去定位这些约束是哪里设定的?
事实上,Vivado集成设计环境提供了很多辅助工具来协助用户完成时序约束的分析。...
作者:张大侠,来源:傅里叶的猫 set_input_delay属于时序约束中的IO约束,我之前的时序约束教程中,有一篇关于set_input_delay的文章,但里面写的并不是很详细,今天我们就来详细分析一下,这个约束应该如何使用。FPGA时序约束理论篇之IO约束 首先还是需要明确一点,这个约束没有延迟的作用,如果需要对输入信号做延迟,就要使用IODELAY这种原语。...
本文转载自:孤独的单刀的CSDN博客
注:本文由作者授权转发,如需转载请联系作者本人
写在前面
时序约束与分析是FGPA开发过程中一项必备的技能,同时也是设计开发中相对较难的部分。很多人一谈起FPGA开发,言必称时序约束,搞得好像不会时序分析就不会进行FPGA开发一样。
举个例子:我以前面试某公司的硬件工程师职位,...
Q:在Vivado或其他综合工具(如Synplify)上,综合阶段需要添加什么约束呢?
A: Vivado综合默认是timing driven模式,除了IO管脚等物理约束,建议添加必要的时序约束,有利于综合逻辑的优化,同时综合后的design里面可以评估时序。
Q:如果综合只是翻译成网表过程,那么这些约束又有什么用呢?用来优化网表结构吗?
A: 所谓timing...
作者:潘文明,文章来源: 明德扬FPGA科教
本文章探讨一下FPGA的时序约束步骤,本文章内容,来源于配置的明德扬时序约束专题课视频。
时序约束是一个非常重要的内容,而且内容比较多,比较杂。因此,很多读者对于怎么进行约束,约束的步骤过程有哪些等,不是很清楚。明德扬根据以往项目的经验,把时序约束的步骤,概括分成四大步,分别是时钟的约束、input delays的约束、output...
参考:https://forums.xilinx.com/t5/Timing-Analysis/Hold-violation-in-ISERDES/td-p/715121
前言
在STA中,要分析上游器件和FPGA之间的时序关系就得指定input delay。
流程
什么是input delay:约定上游芯片输出及时钟之间的关系。约束的目的就是看适配后的时序关系是什么样的...
作者:张大侠,来源: 傅里叶的猫微信公众号
在我之前写的FPGA时序约束教程中,有一篇中讲到了虚拟时钟:
FPGA时序约束理论篇之时钟周期约束
但文中对虚拟时钟的应用介绍的还不够详细,因此这里我们再对虚拟时钟做一个更加细致的介绍。
首先,虚拟时钟用于什么地方?
虚拟时钟通常用于设定输入和输出的延时,...
作者:张大侠,本文转载自: 傅里叶的猫微信公众号
在FPGA的开发中,对于两个异步时钟,如果我们可以在RTL的设计中保证这两个时钟域之间的处理都是正确的,那就可以让工具不分析这两个时钟域之间的交互。如果不设置的话,Vivado默认都会分析的,这样会大大增加Implementation的时间。
常用的不让工具分析两个时钟域交互的方式有两种,一种是设置为伪路径(False Path...
本文作者: NeverCode
本文转载自: https://www.cnblogs.com/nevercode/p/15169653.html
《Xilinx约束学习笔记》为自己阅读 Xilinx 官方 UG903 文档后的学习笔记,大多数为翻译得来,方便大家学习。
1 约束方法学
1.1 组织约束文件
Xilinx 建议将时序约束和物理约束分开保存为两个不同的文件。...
如果给 DCM/PLL/MMCM 的输入时钟施加 PERIOD 约束,约束会自动传递给输出时钟。这些时钟被视为相关时钟而跨时钟域路径由时序分析器进行分析,我该如何从时序分析中排除跨时钟域路径呢?
解决方案 1
要从时序分析删除一组路径,如果您确定这些路径不会影响时序性能(False 路径),可用FROM-TO 约束以及时序忽略 (TIG) 关键字。这种方法要指定时序忽略 (TIG)...
本文转载自: XILINX开发者社区微信公众号
本篇博文中的分析是根据真实客户问题撰写的,该客户发现硬件中存在 DDR4 校准错误,不同板以及不同构建 (build) 之间出现的故障并不一致。
本篇博文旨在演示用于缩小根本原因范围以及修复此问题的部分调试技巧。
最后,问题是由于用户 XDC set_false_path 约束覆盖 MIG IP 约束所导致的,错误使用...
本文转载自:XILINX开发者社区微信公众号
随着设计复杂度和调用IP丰富度的增加,在调试时序约束的过程中,用户常常会对除了自己设定的约束外所涉及的繁杂的时序约束感到困惑而无从下手。举个例子,我的XDC里面并没有指定set_false_path,为什么有些路径在分析时忽略了?我怎么去定位这些约束是哪里设定的?
事实上,...
本文详细介绍Vivado工具对FPGA设计进行逻辑和时序分析的特点,以及工具生成的报告和信息。讨论实现时序收敛的方法,包括审查时钟树和时序约束,设计底层规划,以及平衡运行时间和结果。
在线答疑专家:
李昀(Joyce Li):赛灵思资深技术营销工程师
高亚军(Lauren Gao):赛灵思战略应用工程师
徐天容(Yolanda Xu):赛灵思软件应用工程师
*会议每天会安排两次在线答疑时间,详细时间请见会议日程安排
以下内容节选自《设计收敛之三:功耗约束,精确报告功耗估算的最佳实践》。演讲人:John Heslip – 赛灵思功耗与散热设计高级工程师...
作者:XILINX 高级产品应用工程师 Vivian Yin,本文转载自:XILINX开发者社区微信公众号
时序约束中的 set_input_delay/set_output_delay 约束一直是一个难点,无论是概念、约束值的计算,还是最终的路径分析,每一次都要费一番脑子。Vivado为方便用户创建输入输出接口的约束,整理出了一套非常实用的InputDelay/Output Delay...
作者:猫叔科学计算Tech微信公众号
首先,我们要知道的是,Hold Time违例,是因为时钟绕的太远,到达时间太晚。而且综合之后给出的时序报告都是估计值,因此综合之后可以不考虑Hold Time,只考虑Setup Time;即便此时Hold Time违例,我们也不需要去理会。在Place Design之后再去看Hold Time,如果此时Hold Time的违例比较小(比如-0.05ns...
作者:猫叔 科学计算Tech微信公众号
在前面的章节中,我们用了很多Tcl的指令,但有些指令并没有把所有的参数多列出来解释,这一节,我们就把约束中的Tcl指令详细讲一下。
我们前面讲到过get_pins和get_ports的区别,而且我们也用过get_cells、get_clocks和get_nets这几个指令,下面就通过一张图直观展现它们的区别。...
Vivado® Design Suite HLx 版本可为设计团队提供实现基于 C 的设计、重用优化、IP 子系统重复、集成自动化以及设计收敛加速所需的工具和方法。与 UltraFast™ 高层次生产力设计方法指南相结合,这种特殊组合经过验证,不仅可帮助设计人员以高层次抽象形式开展工作,同时还可促进重复使用,从而可加速生产力。
本次系列研讨会将由赛灵思战略应用高级工程师 Lauren...
作者:猫叔 文章来源:科学计算Tech
时序约束辅助工具
上面我们讲的都是xdc文件的方式进行时序约束,Vivado中还提供了两种图形界面的方式,帮我们进行时序约束:时序约束编辑器(Edit Timing Constraints )和时序约束向导(Constraints Wizard)。两者都可以在综合或实现后的Design中打开。
1. 时序约束编辑器...
作者:猫叔
时序约束辅助工具
上面我们讲的都是xdc文件的方式进行时序约束,Vivado中还提供了两种图形界面的方式,帮我们进行时序约束:时序约束编辑器(Edit Timing Constraints )和时序约束向导(Constraints Wizard)。两者都可以在综合或实现后的Design中打开。
1. 时序约束编辑器...
作者:猫叔
延迟约束
对于延迟约束,相信很多同学是不怎么用的,主要可能就是不熟悉这个约束,也有的是嫌麻烦,因为有时还要计算PCB上的走线延迟导致的时间差。而且不加延迟约束,Vivado也只是在Timing Report中提示warning,并不会导致时序错误,这也会让很多同学误以为这个约束可有可无。
但其实这种想法是不对的,比如在很多ADC的设计中,...
作者:猫叔
多周期路径约束
多周期路径,我们一般按照以下4个步骤来约束:
1. 带有使能的数据
首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求
其实这几个路径都是带有使能的路径,使能的周期为2倍的时钟周期,本来就应该在2个时钟周期内去判断时序收敛。因此,我们添加时序约束:...
作者:猫叔
伪路径约束
在本章节的“2 约束主时钟”一节中,我们看到在不加时序约束时,Timing Report会提示很多的error,其中就有跨时钟域的error,我们可以直接在上面右键,然后设置两个时钟的伪路径。
这样会在xdc中自动生成如下约束:
set_false_path -from [get_clocks -of_objects [...
作者:猫叔
I/O约束
I/O约束是必须要用的约束,又包括管脚约束和延迟约束。
管脚约束
管脚约束就是指管脚分配,我们要指定管脚的PACKAGE_PIN和IOSTANDARD两个属性的值,前者指定了管脚的位置,后者指定了管脚对应的电平标准。
在vivado中,使用如下方式在xdc中对管脚进行约束。
set_property -dict {...
Vivado时序约束中Tcl命令的对象及属性
在前面的章节中,我们用了很多Tcl的指令,但有些指令并没有把所有的参数多列出来解释,这一节,我们就把约束中的Tcl指令详细讲一下。
我们前面讲到过get_pins和get_ports的区别,而且我们也用过get_cells、get_clocks和get_nets这几个指令,下面就通过一张图直观展现它们的区别。...
多周期路径约束
多周期路径,我们一般按照以下4个步骤来约束:
1. 带有使能的数据
首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求
其实这几个路径都是带有使能的路径,使能的周期为2倍的时钟周期,本来就应该在2个时钟周期内去判断时序收敛。因此,我们添加时序约束:...
约束衍生时钟
系统中有4个衍生时钟,但其中有两个是MMCM输出的,不需要我们手动约束,因此我们只需要对clk_samp和spi_clk进行约束即可。约束如下:
create_generated_clock -name clk_samp -source [get_pins clk_gen_i0/clk_core_i0/clk_tx] -divide_by 32 [...
约束主时钟
在这一节开讲之前,我们先把wave_gen工程的wave_gen_timing.xdc中的内容都删掉,即先看下在没有任何时序约束的情况下会综合出什么结果?
对工程综合并Implementation后,Open Implemented Design,会看到下图所示内容。
可以看到,时序并未收敛。可能到这里有的同学就会有疑问,...
作者:猫叔
我们以Vivado自带的wave_gen工程为例,该工程的各个模块功能较为明确,如下图所示。为了引入异步时钟域,我们在此程序上由增加了另一个时钟--clkin2,该时钟产生脉冲信号pulse,samp_gen中在pulse为高时才产生信号。
下面我们来一步一步进行时序约束。
1. 梳理时钟树
我们首先要做的就是梳理时钟树,...
xdc约束优先级
在xdc文件中,按约束的先后顺序依次被执行,因此,针对同一个时钟的不同约束,只有最后一条约束生效。
虽然执行顺序是从前到后,但优先级却不同;就像四则运算一样,+-x÷都是按照从左到右的顺序执行,但x÷的优先级比+-要高。
时序例外的优先级从高到低为:
① Clock Groups (set_clock_groups)
② False Path (...
两种时序例外
多周期路径
上面我们讲的是时钟周期约束,默认按照单周期关系来分析数据路径,即数据的发起沿和捕获沿是最邻近的一对时钟沿。如下图所示。
默认情况下,保持时间的检查是以建立时间的检查为前提,即总是在建立时间的前一个时钟周期确定保持时间检查。这个也不难理解,上面的图中,数据在时刻1的边沿被发起,建立时间的检查是在时刻2进行,而保持时间的检查是在时刻1(...
时钟周期约束
时钟周期约束,顾名思义,就是我们对时钟的周期进行约束,这个约束是我们用的最多的约束了,也是最重要的约束。
下面我们讲一些Vivado中时钟约束指令。
1. Create_clock
在Vivado中使用create_clock来创建时钟周期约束。使用方法为:
create_clock -name <name> -period...
时序路径
典型的时序路径有4类,如下图所示,这4类路径可分为片间路径(标记①和标记③)和片内路径(标记②和标记④)。
对于所有的时序路径,我们都要明确其起点和终点,这4类时序路径的起点和终点分别如下表。
这4类路径中,我们最为关心是②的同步时序路径,也就是FPGA内部的时序逻辑。
时序模型
典型的时序模型如下图所示,...