精华内容
下载资源
问答
  • 时序约束

    2019-03-09 17:59:47
    时序约束 第一步:时钟设置 设置输入输出时钟 create_clock -name {mc_clk_20m_sys} -period $CLK_20M_PERIOD -waveform { 0.000 25 } [get_ports {mc_clk_20m_sy...

                                                                   时序约束

     

    第一步时钟设置

    设置输入输出时钟

    create_clock -name {mc_clk_20m_sys} -period $CLK_20M_PERIOD -waveform { 0.000 25 } [get_ports {mc_clk_20m_sys}]  -add

    对于PLL 的输出时钟,用creat_generated_clock 创建,用derive_pll_clocks生成所有的pll时钟。

     


    第二步时序约束

    在进行时序约束之前,我们先了解一下Data Arrival and Data Required Time

    图1

                                                                        图1  Timequest timing netlist

     

    •   Part 1 setup check

    图2

     

                                                                   图2  timing analysis 示意图(register to register)

     

     

                                                                              图3  setup check

     

     

     

     

     

                                                                         图片来自altera文档

     

    由上面的三个等式:

             当setup slack >= 0 ,timing met

             当setup slack <  0 ,timing violation

     

    • Part 2 hold check

     

                                                                                              图4 hold check

     

     

     

     

                                                                             图片来自altera文档

     

    由上面的三个等式:

            当hold slack >= 0 ,timing met

            当hold slack <  0 ,timing violation

     

    • Part 3 输入输出约束

    约束最大最小输入输出延时,这样工具才好分析fpga/cpld 内的建立保持slack。

     

                                                                                       输入约束示意图

     

                                                                                        输出约束示意图

     

     

     

    设置输入输出时序约束用set_input_delay /set_output_delay


    • 第三步:其他的时序约束

    其余的时序约束,如多周期时钟路径,异步时钟等。

    多周期 set_multicycle_path

    不需要检测的路径 set_false_path

     

    展开全文
  • ALTERA 时序约束

    2018-01-11 17:11:29
    ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束ALTERA 时序约束...
  • 作为赛灵思用户论坛的定期访客(见 ),我注意到新用户往往对时序收敛以及如何使用时序约束来达到时序收敛感到困惑。为帮助 FPGA设计新手实现时序收敛,让我们来深入了解时序约束以及如何利用时序约束实现FPGA 设计的...

    作为赛灵思用户论坛的定期访客(见 ),我注意到新用户往往对时序收敛以及如何使用时序约束来达到时序收敛感到困惑。为帮助 FPGA设计新手实现时序收敛,让我们来深入了解时序约束以及如何利用时序约束实现FPGA 设计的最优结果。

    何为时序约束?

    为保证设计的成功,设计人员必须确保设计能在特定时限内完成指定任务。要实现这个目的,我们可将时序约束应用于连线中——从某 FPGA 元件到 FPGA 内部或 FPGA 所在 PCB 上后续元件输入的一条或多条路径。

    在 FPGA 设计中主要有四种类型的时序约束:PERIOD、OFFSET IN、OFFSET OUT 以及 FROM: TO(多周期)约束。

    PERIOD 约束与建组

    每个同步设计要有至少一个PERIOD 约束(时钟周期规格),这是最基本的约束类型,指定了时钟周期及其占空比。若设计中有不止一个时钟,则每个时钟都有自己的 PERIOD 约束。PERIOD约束决定了我们如何进行布线,来满足设计正常工作的时序要求。

    为简化时序约束应用过程,常常可将具有类似属性的连线分组为一组总线或一组控制线。这样做有助于完成正确为设计约束定义优先级这一关键步骤。

    设计约束优先次序排列

    若设计有多重约束,则需进行优先次序排列。一般来说,约束的一般性越强,其优先级越低。相反,约束的针对性越强,其优先级越高。举例来说,时钟网络上的某个一般性 PERIOD 约束将被特定网络的具有更高优先级的 FROM: TO 约束所覆盖。

    特定 FROM: TO(或 FROM: THRU:TO)约束在时钟域内任意网络中的重要性均高于一般性约束。

    为便于进行约束的优先级排列,可运行赛灵思时序分析器(ISE® Design Suite中的静态时序分析工具),并生成时序规格迭代报告,即常说的 .tsi 报告。该报告说明了各约束间是如何迭代的,以及该工具如何为各约束设置默认优先级。

    采用 PRIORITY 约束关键词可手动设置任一时序约束的优先级并使其优先于默认的或预先设定的优先级。这对同一路径上的两个或多个时序约束发生冲突时尤为有用。这里的优先级指的是同一路径上有两个或多个时序约束时,该应用哪一个。其余的低优先级约束则被忽略。优先级可在 -10 ~ +10 的范围内设置。

    PRIORITY 值越低,优先级越高。注意该值不会影响到哪些路径应率先布局和走线,只有当优先级相同的两个约束出现在同一路径上时,它才会影响由哪个约束控制该路径。

    下面将以 PERIOD 只控制从同步元件到同步元件之间的网络,如 FFS 到FFS 为例来进一步介绍(约束以蓝色显示如下):

    该命令的作用是告知工具,确保数据从时序分组“my_from_grp”包含的元件到“my_to_grp”的元件所用时间为 40纳秒。时序分析器仍将计算从源分组到目标分组的时钟偏移,不过若时钟关联,则优先级较低。也可使用如下预定义分组:

    如前所述,工具将自动默认上文所述所有 FROM: TO 约束的优先级高于PERIOD 约束,除非另有规定。

    详细查看 .tsi 报告

    除帮助查看时序约束迭代外,.tsi 报告还就如何改进通用约束文件 (UCF) 中的约束提供方法建议。该报告还会告知是否有路径受多重时钟域的约束。下面是约束迭代报告的例子:

    在本例中,高优先级的 FROM: TO约束(仅一个)将优先于 PERIOD 约束应用。

    建立和保持

    在实际的同步数字系统中,数据必须先于进行采样的时钟脉冲边沿到达。达到这一目标所需的最短时间称为“建立时间”。除了先于时钟脉冲边沿到达外,数据必须在时钟脉冲边沿保持一定时间,这一时间称为“保持时间”。保持时间可

    以为负,此时数据在时钟脉冲边沿到达前便已结束;可以为零,此时数据保持到时钟脉冲边沿采样;也可为正,此时数据保持到时钟脉冲边沿采样完毕后一段时间。

    根据设计,在 FPGA 架构中,对所有速度等级,保持时间均不为正(或零或负)。这样可简化布局和布线,因数据只

    需先于时钟脉冲边沿到达,并可在时钟脉冲边沿采样发生后即刻发生变化。数据超出最小建立时间的值称为时序裕量。时序裕量应总是为正。若报告上出现时序裕量负值,则说明建立时序尚未得到充分满足,数据到达太迟。

    时钟路径本身也有延迟或偏移。因此,要分析时序,工具需计算出数据和时钟到达所分析触发器的时间。

    约束违例的简便补救办法

    重申一下:PERIOD 约束定义的是触发器等同步元件的时钟周期。可使用时序分析器来验证同步元件之间的所有路径是否满足设计的建立和保持时序要求。PERIOD 约束违例将以负的时序裕量显示在在时序报告,并说明到底是建立时间还是保持时间要求出现违例。所以若报告显示发生了建立时间违例时该作何处理?应找出两个所分析的同步元件间一条较快路径,或至少是某种方法来确保数据在合适时间内到达并保持足够长的时间,以便时钟脉冲边沿能够正确采样。若布局布线软件无法找到更快的路径,则可从 FPGA Editor 工具中手动进行布线。

    不过这是最后的手段。在弄清楚不用它如何解决问题之前,请尽量不要使用这种方法。只使用 FPGA Editor 查看底层结构“知其所以然”,了解工具对设计的所做的处理,以达到让设计恰当的使用FPGA 资源来实现的目的。首先试试重构电路来满足设计的时序要求。一个比较简单的方法就是在路径上及早布置一个触发器。该技术即为流水线,它会增加信号的延迟,不过也可使信号值得到正确地采样。

    若出现保持时间违例(数据在时钟脉冲边沿到来之前便已结束),则往往说明存在设计问题(架构不良)。数值只能

    在时钟脉冲边沿发生变化,而不是之前。

    若外部信号值在时钟脉冲边沿之前发生变化,则需使用 DCM 或 PLL 延迟时钟脉冲边沿,这样数据才能由新的延迟时钟正确采样。

    有一种替代方法,就是在输入/ 输出模块中使用 IDELAY 元件,将数据移到时钟有效的位置上。

    数据有效窗口与亚稳态时钟脉冲边沿之前的时间(建立)加上时钟脉冲边沿之后的时间(保持)即为“数据有效窗口”,也就是数据保持稳定,以进行正常采样的时间。若数据在此期间没有保持有效,则结果存在不确定性,或不可知。

    不过,数据的有效时间未达到规定的长度,并不意味着触发器输出为亚稳态。亚稳态不同于不确定。若不能满足时序要求,则输出可能为随机的 1 或 0。亚稳态是指时钟脉冲边沿“几乎”能进行状态采集,而触发器输出则在时钟脉冲边沿之后的一段时间内处于某种中间状态(非 1 非 0)。亚稳态无法避免,因其为时钟脉冲边沿和数据几乎完全“错过”时的电路物理状态。

    在设计合理的同步系统中,亚稳态不是什么问题。当出现异步情况(如敲击键盘上的一个键)或当两个同步时钟彼此异步时,亚稳态就会成为问题。一般而言,若出现异步情况,则需进行同步处理。

    关于如何处理亚稳态的情况,这里有篇不错的专题文章:

    spr2003/synchronization_pres.pdf 。(要深入了解亚稳态,请查看本期第二篇文章 FPGA101)

    传输时间与 OFFSET 约束

    信号从 A 点到达 B 点所用的时间称为传输时间。它取决于传输介质中光传播的速度。例如,PCB 电路板上的走线以 6~7 皮秒/ 毫米来传输信号。可采用多种方法来确定这一时间值,例如进行仿真,或在材料介电常数与走线几何结构已知的情况下,列方程求解。在芯片内,信号的行为方式也很类似,不过也会因通过缓存器、反相器、逻辑和互联等有

    源电路而发生延迟。

    传输时间是可测量的,通常用示波器来测量。当路径上无有源元件时,传输时间一般不会有太大变化。若路径在芯片内,则晶体管的作用会使路径延迟在最大值与最小值之间变化。设计需同时满足二者的时序要求。

    为告诉工具数据何时到达特定位置,需使用另一种名为“OFFSET_IN”的约束。“OFFSET_IN”约束在时钟和数据进入器件时,对其关系进行了定义。以如下约束为例:

    OFFSET_IN 适用于进入器件的时钟与数据之间的关系,另一种常见的OFFSET_OUT 约束定义时钟在 FPGA 输入处发生跳变后数据离开器件所需的时间。以下为常见的 OFFSET_OUT 用法:

    分组与分组名称

    时间分组是用来识别对于同步元件间的路径集或连线集的约束的一种方式。向时序分组添加组件,应使用 TNM、TNM_NET 或 TIMEGRP。

    通过定义分组并给定分组之间的时序要求,可对路径进行约束。部分约束不需要时序分组,如 NET MAXDELAY。这一最大延迟 (MAXDELAY) 属性定义了一条连线上允许的最大延迟。

    时序名称

    向用户定义的分组添加组件,可这样处理:

    在此,“TNM”为保留字,用于定义时序分组的名称。

    在这种情况下,object_name 为带分组元件或信号的名称,predefined_group 为可选关键词,标示符可以是字母、数字和下划线的任意组合。不能使用诸如 FFS、LATCHES 或RAMS 这样的保留字。该变量对大小写敏感。(TNM=abc 不等于 TNM=ABC)。

    可将 TNM 应用于任何连线、元件引脚、原语或宏。组件可加入一个以上的分组。例如,my_ffs_group TNM 中可含有 my_ff组件。同样,my_ffs_group2 TNM 也可包含 my_ff 组件。要创建分组,请使用:

    所有在 t e s t e r 宏中的 PADS、LATCHES、RAMS 及 FFS 都将放在名为 coverall 的分组中。相关的约束指南将包含完整的预定义分组列表。

    简洁至上

    一般而言,约束的数量越少越好。复杂的约束引发的问题往往比解决的要多。另外,部分路径或网络是非关键性的,可对这些网络不使用约束。TIG(时序忽略)约束用于清除对无需关注的路径,或从虚假路径上移除约束。以下为常见 TIG:

    赛灵思有大量宝贵的关于时序约束的资源,其中最值得一读的,我已在以下参考文献中列出。若您有更深入的问题,请随时与我联系。我邀请您参加赛灵思社区论坛,该论坛可为 您的一些FPGA 设计中最棘手的问题提供充分的解答。

    参考文献:

    《约束指南》:UCF、PCF、HDL 约束语法,

    cgd.pdf 。

    《时序约束用户指南》:如何约束设计的概念信息, 。

    《时序分析器使用帮助》:使用赛灵思时序分析器的一般信息, 。

    打开APP阅读更多精彩内容

    点击阅读全文

    展开全文
  • XILINX-时序约束使用指南中文XILINX 时序约束使用指南笔记第一章 时序约束介绍第二章 时序约束方法第三章 时序约束原则第四章 在 XST 中指定时序约束第五章 在 Synplify 中指定时序约束方法第六章 时序约束分析1/162...

    XILINX-时序约束使用指南中文

    XILINX 时序约束使用指南笔记

    第一章 时序约束介绍

    第二章 时序约束方法

    第三章 时序约束原则

    第四章 在 XST 中指定时序约束

    第五章 在 Synplify 中指定时序约束方法

    第六章 时序约束分析

    1 / 16

    2 / 16

    第一章 时序约束介绍

    基本的时序约束包括:

    “PERIOD Constraints”

    “OFFSET Constraints”

    “FROM:TO(Multi‐Cycle)约束”

    3 / 16

    第二章 时序约束方法

    1,简介:

    2,基本的约束方法

    根据覆盖的路径不同,时序要求变成一些不同的全局约束。

    最普通的路径类型包括:

    1,输入路径

    2,同步元件到同步元件路径

    3,指定路径

    4 ,输出路径

    XILINX 的时序约束与每一种全局约束类型都有关。最有效的方法就是一开始就指定全局

    约束然后再加上指定路径的约束。在很多案例中,只要全局约束就可满足需求。

    FPGA 器件执行工具都是由指定的时序要求驱动的。如果时序约束过头的话,就会导致

    内存使用增加,工具运行时间增加。更重要的是,过约束还会导致性能下降。因此,推荐使

    用实际设计要求的约束值。

    3,输入时序约束

    输入时序约束包括 2 种

    “系统同步输入”

    “源同步输入”

    输入时钟约束覆盖了输入数据的 FPGA 外部引脚到获取此数据的寄存器之间的路径。输

    入时钟约束经常用”OFFSET IN”约束。指定输入时钟要求的最好方法,取决于接口的类型(源

    /系统同步)和接口是 SDR 还是 DDR。

    OFFSET IN 定义了数据和在 FPGA 引脚抓取此数据的时钟沿之间的关系。在分析 OFFSET IN

    约束时,时序分析工具自动将影响时钟和数据延迟的因素考虑进去。这些因素包括:

    时钟的频率和相位转换

    时钟的不确定

    数据延迟调整

    除了自动调整,还可以在与接口时钟相关的”PERIOD”约束中另外增加时钟不确定。

    关于增加”INPUT_JITTER” 的更多信息,参见第三章的”PERIOD Constraints” 。

    “OFFSET IN”与单输入时钟有关,默认情况下,OFFSE

    展开全文
  • 时序约束目的:一、 提高设计的工作频率二、获得正确的时序分析报告(STA:静态时序分析)常用的时序概念:周期,最大时钟频率、时钟建立时间、时钟保持时间、时钟到输出延时、管脚到管脚延时、Slack和时钟偏斜(Skew)....

    时序约束目的:一、 提高设计的工作频率二、获得正确的时序分析报告(STA:静态时序分析)

    常用的时序概念:周期,最大时钟频率、时钟建立时间、时钟保持时间、时钟到输出延时、管脚到管脚延时、Slack和时钟偏斜(Skew).

    周期:如图1是周期示意图,当计算出Tperiod,那么当然fmax=1/Tperiod,fmax是显示设计最重要的性能指标之一。

    时钟建立时间:如图3所示是时钟建立时间的计算方法

    时钟保持时间:同样利用图3的模型计算Th=clkdelay-datadelay+Microhold

    注意:前两个公式中提到的Microsetup 和Microhold一般均是一个小于1ns的常量。

    时钟输出延迟:他是指在时钟有效到数据有效的最大时钟间隔如图4所示Tco=clkdelay+datadelay+Microco

    slack:表示设计是否满足时序的一个称谓:正的slack表示满足时序,负的slack表示不满足时序。保持时间slack是一个重要的概念,引起不满足的主要原因是时钟偏斜大于数据路径的偏斜。

    Quartus2时序分析工具和优化向导:

    常用的三种时序约束设置方法:1 通过Assignment/timing settings 2 Assignment/timing wiard

    tool 3 Assignment/Assignment editor选择在图形界面下完成对设计的时序约束。一般情况下前两种是做全局的时序约束,后一种是做局部的时序约束,另外还可以通过修改.qsf文件来实现。

    时序约束思想:时序约束一般都是先全局后个别,如果冲突则个别的优先级更高。

    一、将编绎器设置为时序驱动编绎,即是指让编绎过程尽量向着满足时序约束方向努力!assignment/settings/fitter setting.

    二、全局时钟设置如果在设计中只有一个全局时钟,或者所有的时钟同频,可以在Quartus2中只设置一个全局时钟约束。 Assignment/timing settings

    三、时序向导 在用记对时序约束设置不熟悉的情况下,可以选择使用向导。 Assignment/classic timing analyser wizards.

    四、可以设置独立时钟与衍生时钟,衍生时钟是由独立时钟变化而来的,他是由独立时钟分频,倍频,移相等变化而来的,可以在设置中确定二者的关系 Assignment/settings/timing analyse setting/classic timing analyse setting/individual clock。

    五、通过assignment editor 设置个别时钟约束

    zoom.gif

    a85cb42c06d180abad070cd613efee16.png

    Tperiod的计算公式

    zoom.gif

    fdcc9ef5a317f9b07ec9aff6199854d3.png

    逻辑延时与互连延时

    zoom.gif

    0cb90afec5f0d1e372a0a99e63a3a6a7.png

    时钟建立时间计算

    zoom.gif

    ff03f1b98431aefa979f72d5472d6f7b.png

    时钟到输出计算方法

    展开全文
  • 1 时钟约束1.1 主时钟(primary clock)主时钟应首先被定义,因为其他时序约束往往以主时钟为参照标准。主时钟的定义往往应定义在输入端口,而不是clock buffer的输出端口。如下图所示:针对主时钟进入时钟专用单元,...
  • 时序约束方法之一--时序约束步骤

    千次阅读 2018-08-12 21:55:49
    本系列文章为在读一篇关于时序约束的文章时的一些笔记和思考。文章以Xilinx器件时序约束为基础进行分析。 在FPGA的开发中,时序是灵魂,如何进行时序约束,显得尤为重要。 FPGA的时序约束,可以分成以下4个步骤: ...
  • 对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地,设计的时序收敛过程就会更可控。...
  • 时序约束与时序分析

    2016-03-04 09:53:52
    时序约束与时序分析 讲义
  • FPGA时序约束

    2018-01-02 22:29:22
    32个相关文档,都是从网上整理搜集到的,包括时序约束的基本讲解资料,以及altera和xilinx公司的时序约束相关文档
  • Xilinx时序约束

    2018-07-27 10:24:34
    Xilinx时序约束相应文档,内容丰富。
  • 时序约束包括全局(global)约束和个别(individual)约束,通过【Assignments】|【Timing Settings】菜单命令可以设置全局约束;通过【Assignments】|【Wizards】|【Timing Wizard】菜单命令和【Assignments】|...
  • 时序约束与时序分析
  • 时序约束目的:一、 提高设计的工作频率二、获得正确的时序分析报告(STA:静态时序分析)常用的时序概念:周期,最大时钟频率、时钟建立时间、时钟保持时间、时钟到输出延时、管脚到管脚延时、Slack和时钟偏斜(Skew)....
  • DCM的时序约束

    2018-05-22 14:56:46
    XLINX FPGA 时序约束中出现的关于DCM中输出时钟约束的一些问题,从网上搜集的一些DCM 时序约束的讨论和相关网络讨论的整理。
  • XILINX FPGA时序约束教程。时序约束一共包含以下几个步骤:时钟约束、IO约束以及时序例外。
  • SDRAM时序约束设计

    2018-03-06 16:02:45
    很好的sdram时序约束设计资料,很适合初学者的学习,看了一定会对时序约束有更深入的了解
  • 1 / 16 XILINX 时序约束使用指南笔记 第一章 时序约束介绍 第二章 时序约束方法 第三章 时序约束原则 第四章 在XST 中指定时序约束 第五章 在Synplify 中指定时序约束方法 第六章 时序约束分析
  • 时序约束辅助工具

    2020-08-24 17:32:03
    文章目录时序约束辅助工具1. 时序约束编辑器2. 时序约束向导Vivado时序约束中Tcl命令中的对象及属性 本文摘抄自: 个人网站:http://www.technomania.cn/ 微信公众号:Quant_times、Reading_Times 时序约束辅助工具 ...
  • FPGA时序约束权威教程

    2018-06-27 09:57:16
    内含XILINX关于时序约束的官网文档(英文),以及两份时序约束经典透彻中文教程。
  • FOGA毕竟不是ASIC,对时序收敛的要求更加严格,本文主要介绍本人在工程中学习到的各种时序约束技巧。首先强烈推荐阅读官方文档UG903和UG949,这是最重要的参考资料,没有之一。它提倡要在设计的早期阶段就要排除问题...
  • 时序约束文章合集.rar

    2020-10-11 21:13:03
    有关时序约束的文章,是一系列文章连载合集,xilinx的资料多一些,自己学习过程中整理的,看完能够完全掌握时序约束原理及操作技能,是很好的资料
  • 时序约束还是要多参考官方文档,多做一些官方的参考设计,细心,耐心优化自己的设计。做了时序约束,才发现自己原来的设计有很多不合理的地方,有些逻辑设计一定要注意。
  • DC综合的时序约束.docx

    2020-12-28 18:01:08
    时序约束的重点讲解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,491
精华内容 596
关键字:

时序约束