[sdc] set_output_delay

[sdc] set_output_delay
[sdc] set_output_delay

set_input_delay

input_delay 是设置外部信号到达输入端口的时间,

DC会用它来计算留给内部逻辑的时间。

set_output_delay

是设置输出端口到数据采集处的延迟。

DC 会根他来计算留给内部逻辑的时间。

▋▎我的理解

下面的式子中,除了用来描述芯片内部的时间参数以外都属于input delay/output delay. max条件 T > clk_q_delay + internal_logic_delay + external_logic_delay + setup_time min条件 hold_time < clk_q_delay + internal_logic_delay + external_logic_delay

其中T是capture端时钟与launch端时钟的相位差。

即,如果是同一时钟的话,则要考虑jitter和skew

如果是不同时钟的话,则要考虑真正的相位差(capture端 - launch端)

设置set_input_delay时

■用来描述芯片内部的logic的时间参数有

internal_logic_delay

setup_time

hold_time

■其余的有以下,用来描述芯片外部logic的时间参数

clk_q_delay

external_logic_delay

所以

input_delay_max = [clk_q_delay + external_logic_delay]_max

input_delay_min = [clk_q_delay + external_logic_delay]_min

约束可以写成

set_input_delay -max [clk_q_delay + external_logic_delay]_max -clock Clk DIN

set_input_delay -min [clk_q_delay + external_logic_delay]_min -clock Clk DIN

设置set_output_delay时

■用来描述芯片内部的logic的时间参数有

clk_q_delay

internal_logic_delay

■其余的有以下,用来描述芯片外部logic的时间参数

external_logic_delay

setup_time

hold_time

所以

output_delay_max = external_logic_delay_max + setup_time

output_delay_min = external_logic_delay_min - hold_time ※

约束可以写成

set_output_delay -max (external_logic_delay_max + setup_time) -clock Clk DOUT

set_output_delay -min (external_logic_delay_min - hold_time) -clock Clk DOUT

※ 是【external_logic_delay_min - hold_time】而不是【hold_time - external_logic_delay_min 】的理由

min条件 hold_time < clk_q_delay + internal_logic_delay + external_logic_delay中

hold_time和external_logic_delay在不等式的两边,要把它们移到不等式的同一边。

如果移external_logic_delay的话,真正存在的external_logic_delay就会变成负的,不合理

那就只有移hold_time了,因为hold_time并不是真正的delay,变成负的也没有关系。

如果hold_time比较大的话,output_delay_min 有可能变成负的。

时序分析基础与时钟约束实例1

时序分析基础与时钟约束实例(1) 文中实例配套SF-CY3开发套件。更多内容请参考《SF-CY3 FPGA套件开发指南》。 何谓静态时序分析(STA,Static Timing Analysis)? 首先,设计者应该对FPGA内部的工作方式有一些认识。FPGA的内部结构其实就好比一块PCB板,FPGA的逻辑阵列就好比PCB板上的一些分立元器件。PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通。PCB板上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过逻辑门传输也会产生延时。PCB的信号走线有延时,FPGA的信号走线也有延时。这就带来了一系列问题,一个信号从FPGA的一端输入,经过一定的逻辑处理后从FPGA的另一端输出,这期间会产生多大的延时呢?有多个总线信号从FPGA的一端输入,这条总线的各个信号经过逻辑处理后从FPGA 的另一端输出,这条总线的各个信号的延时一致吗?之所以关心这些问题,是因为过长的延时或者一条总线多个信号传输时间的不一致,不仅会影响FPGA本身的性能,而且也会给FPGA之外的电路或者系统带来诸多问题。 言归正传吧,之所以引进静态时序分析的理论也正是基于上述的一些思考。它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。分析的最终结果当然是要求系统时序满足设计者提出的要求。 下面举一个最简单的例子来说明时序分析的基本概念。假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图所示的一些可能的布局布线方式。那么,怎样的布局布线能够达到系统的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、15ns、16ns、17ns、18ns,有两条路径能够满足要求,那么最后的布局布线就会选择满足要求的两条路径之一。 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。若设计者不添加时序约束,那么时序分析就无从谈起。特权同学常常碰见一些初学者在遇到问题时不问青红皂白就认为是时序问题,实际上只有在添加了时序约束后,系统的时序问题才有可能暴露出来。 下面我们再来看一个例子,我们假设有4个输入信号,经过FPGA内部一些逻辑处理后输出。FPGA内部的布线资源有快有慢之分,好比国道和高速公路。通过高速通道所需要的路径延时假设为3ns-7ns,但只有两条可用;而通过慢速通道的路径延时则>10ns。

ASIC时序约束、时序分析

ASIC时序约束、时序分析 2009-11-13 22:13 A 时序约束的概念和基本策略 时序约束主要包括周期约束(FFS到FFS,即触发器到触发器)和偏移约束(IPAD到FFS、FFS到OPAD)以及静态路径约束(IPA 综合布线工具调整映射和布局布线过程,使设计达到时序要求。例如用OFFSET_IN_BEFORE约束可以告诉综合布线工具输入信号在以根据这个约束调整与IPAD相连的Logic Circuitry的综合实现过程,使结果满足FFS的建立时间要求。 附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有分组附加周期约束,然后对FPGA/CPLD输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。附加专门约束时速例外路径和多周期路径,以及其他特殊路径。 B 附加约束的基本作用 1. 提高设计的工作频率 对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综时,从而提高工作频率。 2. 获得正确的时序分析报告 几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析 3. 指定FPGA/CPLD引脚位置与电气标准 FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从成后,设计者要根据电路板的走线对FPGA/CPLD加上引脚位置约束,使FPGA/CPLD与电路板正确连接。另外通过约束还特性。为了满足日新月异的通信发展,Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如 AGP、BLVDS、CTT、G LVPECL、LVDSEXT、LVTTL、 PCI、PCIX、SSTL、ULVDS等丰富的IO接口标准。另外通过区域约束还能在FPGA上规划各个成模块化设计等。 C 周期(PERIOD)的含义 周期的含义是时序中最简单也是最重要的含义,其它很多时序概念会因为软件商不同略有差异,而周期的概念确是最通用的,周期面要讲到的其它时序约束都是建立在周期约束的基础上的,很多其它时序公式,可以用周期公式推导。周期约束是一个基本时序和具根据PERIOD约束检查时钟域内所有同步元件的时序是否满足要求。PERIOD约束会自动处理寄存器时钟端的反相问题,如果相迟将被默认限制为PERIOD约束值的一半。如下图所示, 图1 周期的定义 时钟的最小周期为: TCLK = TCKO +TLOGIC +TNET +TSETUP -TCLK_SKEW TCLK_SKEW =TCD2 -TCD1

时序约束

在进行FPGA的设计时,经常会需要在综合、实现的阶段添加约束,以便能够控制综合、实现过程,使设计满足我们需要的运行速度、引脚位置等要求。通常的做法是设计编写约束文件并导入到综合实现工具,在进行FPGA/CPLD的综合、实现过程中指导逻辑的映射和布局布线。下面主要总结一下Xilinx FPGA时序约束设计和分析。 一、周期约束 周期约束是Xilinx FPGA 时序约束中最常见的约束方式。它附加在时钟网线上,时序分析工具会根据周期约束来检查时钟域内所有同步元件的时序是否满足需求。周期约束会自动的寄存器时钟端的反相。如果相邻的两个元件的时钟相位是相反的,那么它们之间的延迟将被默认的限制成周期约束的一半。 在进行周期约束之前,必须对电路的时钟周期明了,这样才不会出现约束过松或者过紧的现象。一般情况下,设计电路所能达到的最高运行频率取决于同步元件本身的Setup Time 和Hold Time,以及同步元件之间的逻辑和布线延迟。周期约束一般是使用下面的约束方法: 1、period_item PERIOD=period {HIGH|LOW} [high_or low_item] 其中,period_item可以是NET或TIMEGRP,分别代表时钟线名称net name或元件分组名称group-name。用NET表示PERIOD约束作用到名为“net name”的时钟网线所驱动的同步元件上,用TIMEGRP表示PERIOD约束作用到TIMEGRP所定义的分组(包括FFS、LATCH和RAM等同步元件)上。period是目标时钟周期,单位可以是ps、ns、μS和ms 等。HIGH|LOW指出时钟周期中的第1个脉冲是高电平还是低电平,high or low time为HIGH LOW指定的脉冲的持续时间,默认单位是ns。如果没有该参数,时钟占空比是50%。例如,NET SYS_CLK PERIOD=10 ns HIGH 4ns 2、NET“clock net name”TNM_NET=“timing group name”; TIMESPEC“TSidentifier”=PERIOD “TNM reference”period {HIGH | LOW} [high or low item]INPUT_JITTER value; 很多时候为了能够定义比较复杂的派生关系的时钟周期,就要使用该方法。其中TIMESPEC在时序约束中作为一个标识符表示本约束为时序规范;TSidentifier包括字母TS和一个标识符identifier共同作为一个TS属性;TNM reference指定了时序约束是附加在哪一个组上,一般情况下加在TNM_NET定义的分组上。HIGH | LOW 指的是时钟的初始相位表明第一个时钟是上升沿还是下降沿;high or low item 表示的是时钟占空比,即就是high或者low的时间,默认为1:1, INPUT_JITTER 表示的是时钟的抖动时间,时钟会在这个时间范围内抖动,默认单元为ps。比如周期约束: NET "ex_clk200m_p" TNM_NET = TNM_clk200_p; TIMESPEC "TS_clk200_p" = PERIOD "TNM_clk200_p" 5.000 ns HIGH 50 %; 建立一个TNM_clk200_p的时序分组,包括时钟网络ex_clk200m_p驱动的所有同步

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

XILINX时序约束使用指南笔记 第一章 时序约束介绍 第二章 时序约束方法 第三章 时序约束原则 第四章 在XST中指定时序约束 第五章 在Synplify中指定时序约束方法 第六章 时序约束分析

第一章 时序约束介绍 基本的时序约束包括: “PERIOD Constraints” “OFFSET Constraints” “FROM:TO(Multi‐Cycle)约束”

第二章 时序约束方法 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”与单输入时钟有关,默认情况下,OFFSET IN约束覆盖了从输入pad到内部同步元件之间的所有路径。用于抓取那些从pad输入的数据的同步元件由指定的OFFSET IN 时钟触发。应用OFFSET IN约束被称为”global”方法。这是指定输入时序的最有效的方法。 系统同步输入 在体统同步接口中,发送和抓取数据共用一个系统时钟。板上的布线延迟和时钟倾斜限制了接口的工作频率。更低的频率也会导致系统同步输入接口典型的采用SDR应用。 系统同步SDR应用例子,见图2‐1。系统同步SDR应用中,在时钟上升沿从源器件发送

FPGA时序分析基础

很多人觉得FPGA难学,难点在于FPGA的硬件特性和FPGA之外的东西,如硬件编程思想,并行编程,时序分析等,本文就时序分析进行讲解,讲解时序分析的基础,内容主要为建立时间和保持时间的分析。并且举例简单说明DT6000S项目采用的时序分析. 基本的电子系统如图1所示,一般自己的设计都需要时序分析,如图1所示的Design,上部分为时序组合逻辑,下部分只有组合逻辑。而对其进行时序分析时,一般都以时钟为参考的,因此一般主要分析上半部分。在进行时序分析之前,需要了解时序分析的一些基本概念,如时钟抖动、时钟偏斜(T skew)、建立时间(T su)、保持时间(T h)等。时序分析也就是分析每一个触发器(寄存器)是否满足建立时间/保持时间,而时序的设计的实质就是满足每一个触发器的建立时间/保持时间的要求。 图 1 基本的电子系统 1.1.1 时钟抖动和时钟偏斜 1.时钟抖动 时钟信号边沿变化的不确定时间称为时钟抖动,如图2所示。一般情况下的时序分析是不考虑时钟抖动,如果考虑时钟抖动,则建立时间应该是T su+T1,保持时间应该是T h+T2。 图 2 时钟抖动时序图 2.时钟偏斜 时序偏斜分析图如图3所示。时钟的分析起点是源寄存器(Reg1),终点是目标寄存器(Reg2)。时钟在图中的结构中传输也会有延迟,时钟信号从时钟源传输到源寄存器的延时为T c2s,传输到目标寄存器的延时为T c2d。时钟网络的延时为T c2s与T c2d之差,即 T skew=T c2d-T c2s。

图 3 时钟偏斜时序图 1.1.2 建立时间和保持时间 建立时间(Setup Time)常用T su表示,指的是在触发器的时钟信号上升沿到来以前,数据和使能信号稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器,使能信号无效,也就是说在这个时钟周期对数据的操作时无效的;保持时间(Hold Time)常用T h表示,指的是在触发器的时钟信号上升沿到来以后,数据和使能信号稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器,对数据的操作同样是无效的,使能信号无效。数据要能稳定传输,就必须满足建立时间和保持时间的关系,图4标识了它们间的关系。 图 4 建立时间/操持时间的概念 1.1.3 发送沿和捕获沿 (1)发送沿(Launch Edge):前级寄存器发送数据对应的时钟沿,是时序分析的起点; (2)捕获沿(Latch Edge):后记寄存器捕获数据对应的时钟沿,是时序分析的终点。 相对于launch Edge通常为一个时钟周期,但不绝对,如多周期。 “信号跳变抵达窗口”:对latch寄存器来说,从previous时钟对应的Hold Time开始,到current 时钟对应的Setup Time 结束。 “信号电平采样窗口”:对latch寄存器来说,从current时钟对应的Setup Time开始,到current时钟对应的Hold Time结束。 launch寄存器必须保证驱动的信号跳变到达latch寄存器的时刻处于“信号跳变抵达窗口”内,才能保证不破坏latch寄存器的“信号电平采样窗口”。

时序约束实例

用Quartus II Timequest Timing Analyzer进行时序分析:实例讲解 (一) (2012-06-21 10:25:54) 转载▼ 标签: 杂谈 一,概述 用Altera的话来讲,timequest timing analyzer是一个功能强大的,ASIC-style的时序分析工具。采用工业标准--SDC(synopsys design contraints)--的约束、分析和报告方法来验证你的设计是否满足时序设计的要求。在用户的角度,从我使用TimeQuest的经验看,它与IC设计中经常用到的比如prime time,time craft等STA软件是比较类似的。用过prime time或time craft的朋友是非常容易上手的。 在这一系列的文章里,我将会拿一个DAC7512控制器的verilog设计作为例子,详细讲解如何使用TimeQuest进行时序设计和分析。 二,TimeQuest的基本操作流程 做为altera FPGA开发流程中的一个组成部分,TimeQuest执行从验证约束到时序仿真的所有工作。Altera推荐使用下面的流程来完成TimeQuest 的操作。

1. 建立项目并加入相关设计文件 不管做什么事情,都需要有一个目标或者说对象。我们用TimeQuest 做时序分析,当然也需要一个对象,这个对象实际上就是我们的设计。所以首先是要建立一个Quartus II的项目,并把所有需要的设计文件都加入到项目中去。需要注意的一点是,这里的设计文件,不仅仅包含逻辑设计相关的文件,也包含已经存在的时序约束文件,当然,需要以synopsys Design Constraints(.sdc)的格式存在的。 2. 对项目进行预编译(initial compilation) 项目建立以后,如果从来没有对项目进行过编译的话,就需要对项目进行预编译。这里的预编译是对应于全编译(full compilation)来讲的,我们可以理解为预编译是对项目进行部分的编译,而全编译是对项目进行完整的编译。做预编译的目的是为了生成一个initial design database,

FPGA中IO时序约束分析

第1章FPGA中IO口时序分析 作者:屋檐下的龙卷风 博客地址:https://www.360docs.net/doc/8911967660.html,/linjie-swust/ 日期:2012.3.1 1.1 概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛。因此,FPGA时序约束中IO口时序约束也是一个重点。只有约束正确才能在高速情况下保证FPGA和外部器件通信正确。 1.2 FPGA整体概念 由于IO口时序约束分析是针对于电路板整个系统进行时序分析,所以FPGA需要作为一个整体分析,其中包括FPGA的建立时间、保持时间以及传输延时。传统的建立时间、保持时间以及传输延时都是针对寄存器形式的分析。但是针对整个系统FPGA的建立时间保持时间可以简化。 图1.1 FPGA整体时序图 如图1.1所示,为分解的FPGA内部寄存器的性能参数: (1) Tdin为从FPGA的IO口到FPGA内部寄存器输入端的延时; (2) Tclk为从FPGA的IO口到FPGA内部寄存器时钟端的延时; (3) Tus/Th为FPGA内部寄存器的建立时间和保持时间; (4) Tco为FPGA内部寄存器传输时间; (5) Tout为从FPGA寄存器输出到IO口输出的延时; 对于整个FPGA系统分析,可以重新定义这些参数:FPGA建立时间可以定义为:(1) FPGA建立时间:FTsu = Tdin + Tsu – Tclk; (2) FPGA保持时间:FTh = Th + Tclk; (3) FPGA数据传输时间:FTco = Tclk + Tco + Tout; 由上分析当FPGA成为一个系统后即可进行IO时序分析了。FPGA模型变为如图1.2所示。

PrimeTime_的基本概念

PrimeTime 的基本概念 一、定义设计环境 在对设计作时序分析之前,必须要定义好设计环境以使得在那些情况下满足 限制条件。 通过以下这些信息来说明设计环境: 时钟:时钟波形和时钟信号的性质; 输入、输出延迟:信号到每个输入端口的时间从每个输出端口离开所需的时间。这些时间是用一个时钟周期的相对量表示的; 输入端口的外部驱动:每一个输入端口的驱动单元或驱动电容,还可以用一个确定的过渡时间来表示; 电容负载:输入或输出端口的外部电容; 运作条件:环境特性(工艺、温度和电压); 连线负载电容:用来预测布局布线后每一条连线的电容和电阻。 下图展示了用来定义设计环境的命令: 二、时序声明 通常当前设计只是一个更大电路的一部分。时序声明提供了时钟和输入、输 出延时的信息。在将设计建立起来之后,可以进行时序声明。 为了进行时序声明,包括以下一些内容: 说明时钟信息 描述一个时钟网络 说明时钟门锁(Clock-Gating)的建立和保持时间(Setup and Hold Checks) 建立内部生成的时钟 说明输入延时 说明时钟端的输入延时 说明输出延时 三、时序例外(Timing Exceptions) PrimeTime缺省地认为所有的电路都是单时钟周期的。这意味着电路在一个 时钟周期之内将数据从一条路径的开始端传递到结束端。 在某些情况下,电路不是工作在这样的方式下。对具体的一条路径来说不适用单始终周期时序,所以必须对这

些缺省的时序假设作例外说明。否则,时序分析将不能反映真实电路的工作情况。 主要有以下一些内容: 单时钟周期(缺省)路径延时限制 设置失败(False)路径 设置最大和最小路径延时 设置多时钟周期路径 路径说明方法 有效地说明例外情况 例外情况的优先级 报告例外情况 忽略例外情况 去除例外声明 四、报告的生成 在定义了时序声明和例外情况之后,可以生成时序分析报告,有助于定位设 计中的违规之处。在进行时序分析的时候,PrimeTime会跟踪电路中所有的路径,然后根据电路说明、库、声明和例外情况计算设计的延时。 有以下一些内容: 检查设计约束 报告时序检测的覆盖率 生成路径时序报告 去除有寄存器的路径上的时钟扭斜(Skew) 生成瓶颈报告 进行快速时序升级(Fast Timing Updates) 生成约束报告 生成设计信息报告 生成连线负载报告 生成时序例外情况报告 报告最大扭斜检查(Maximum Skew Checks) 报告不变的时序检查(No-Change Timing Checks) 报告失效的时序弧(Disabled Timing Arcs) 显示情形分析设置 观察扇入逻辑 观察扇出逻辑 显示层次参考(Hierarchical References) 报告单元参考(Cell References) 生成总线报告 生成反标延时和检查报告(Annotated Delay and Check Reports) 生成模式分析报告(Mode Analysis Reports) 生成库的报告 生成延时计算报告 以路径(Paths)来生成定制报告 禁止和恢复时钟门锁、去除检查时钟门锁

入门资料:FPGA时序分析报告基础与时钟约束实例

入门:FPGA时序分析基础与时钟约束实例 2013-07-16 何谓静态时序分析(STA,Static Timing Analysis)? 首先,设计者应该对FPGA内部的工作方式有一些认识。FPGA的内部结构其实就好比一块PCB 板,FPGA的逻辑阵列就好比PCB板上的一些分立元器件。PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通。PCB板上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过逻辑门传输也会产生延时。PCB的信号走线有延时,FPGA的信号走线也有延时。这就带来了一系列问题,一个信号从FPGA的一端输入,经过一定的逻辑处理后从FPGA的另一端输出,这期间会产生多大的延时呢?有多个总线信号从FPGA的一端输入,这条总线的各个信号经过逻辑处理后从FPGA的另一端输出,这条总线的各个信号的延时一致吗?之所以关心这些问题,是因为过长的延时或者一条总线多个信号传输时间的不一致,不仅会影响FPGA本身的性能,而且也会给FPGA之外的电路或者系统带来诸多问题。 言归正传吧,之所以引进静态时序分析的理论也正是基于上述的一些思考。它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。分析的最终结果当然是要求系统时序满足设计者提出的要求。 下面举一个最简单的例子来说明时序分析的基本概念。假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图所示的一些可能的布局布线方式。那么,怎样的布局布线能够达到系统的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、15ns、16ns、17ns、18ns,有两条路径能够满足要求,那么最后的布局布线就会选择满足要求的两条路径之一。 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。若设计者不添加时序约束,那么时序分析就无从谈起。特权同学常常碰见一些初学者在遇到问题时不问青红皂白就认为是时序问题,实际上只有在添加了时序约束后,系统的时序问题才有可能暴露出来。 下面我们再来看一个例子,我们假设有4个输入信号,经过FPGA内部一些逻辑处理后输出。FPGA内部的布线资源有快有慢之分,好比国道和高速公路。通过高速通道所需要的路径延时假设为3ns-7ns,但只有两条可用;而通过慢速通道的路径延时则>10ns。

ise时序约束

ISE工具时序约束主要约束主要包括周期约束,pad to pad 约束和偏移约束: (1)周期约束的计算如下图所示: (2)pad to pad 约束是存粹的组合逻辑约束; (3)偏移约束主要包括输入偏移和输出偏移,规定了外部时钟和数据与输入输出管脚之间的时序关系,不是用来约束内部逻辑的; (转)FPGA时序分析,时序约束知识 时序约束目的:一、提高设计的工作频率二、获得正确的时序分析报告(STA:静态时序分析) 常用的时序概念:周期,最大时钟频率、时钟建立时间、时钟保持时间、时钟到输出延时、管脚到管脚延时、Slack和时钟偏斜(Skew). 周期:如图1是周期示意图,当计算出Tperiod,那么当然fm ax=1/Tperiod,fm ax是显示设计最重要的性能指标之一。 时钟建立时间:如图3所示是时钟建立时间的计算方法 时钟保持时间:同样利用图3的模型计算Th=clkdelay-datadelay+Microhold 注意:前两个公式中提到的Microsetup 和Microhold一般均是一个小于1ns的常量。

时钟输出延迟:他是指在时钟有效到数据有效的最大时钟间隔如图4所示 Tco=clkdelay+datadelay+Microco slack:表示设计是否满足时序的一个称谓:正的slack表示满足时序,负的slack表示不满足时序。保持时间slac k是一个重要的概念,引起不满足的主要原因是时钟偏斜大于数据路径的偏斜。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 设置个别时钟约束

关于quartus ii时序约束

关于quartus ii时序约束(1) 2012-06-17 09:46:07| 分类:默认分类|举报|字号订阅 一直以来都只是简单地理解了一下关于时序约束的内容,而工具也有默认classic的约束,加上目前的设计对时序没有很高的要求,所以就一直都没真正地自己做过一次约束,但是我知道,这部分是不可以跳过的,这部分也算是搞FPGA必须掌握的内容。今天下午对这部分进行了初次探究,收获有如下: 常用的约束有三种: 1.时序约束 2.区域约束 3.位置约束 时序约束的作用有: 1.提高设计的工作频率 2.获得正确的时序分析报告 需要复习前面博文《FPGA学习之时序分析基础(7)》 记住,堵塞原则是HDL语言的精髓,也就是说触发器是有延时作用的,虽然两个触发器使用的是同一个时钟,但是当第二个触发器接收第一帧数据的时候第一个触发器在发第二帧数据,而当第二个触发器接收第二帧数据的时候第一个触发器在发第三帧数据,依此类推,也就是说每一帧数据在两个触发器之间都有一个clk的时间前进,如果前进的时间太长,也即是系统给的时钟太快,就会出现无法满足第二个触发器setup的时间。setup time 就是第二个触发器在接收到由第一个触发器上一个时钟发送的数据之前应空闲的时间。 公式:CLK+TCLK2-Tsu > Tclk1 + Tcd + Tdata 所以系统CLK是和Tsu息息相关的,所以看时序报告的时候也是从Clock Setup ‘clk’看最差路径等信息。

在FPGA设计工具中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。通常,需要对这几种路径分别进行约束,以便使设计工具能够得到最优化的结果。下面对这几种路径分别进行讨论。 1. 从输入端口到寄存器: 这种路径的约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。 约束名称:input delay。 约束条件的影响主要有4个因素:外部芯片的Tco,电路板上信号延迟Tpd,FPGA的Tsu, 时钟延迟Tclk. Tco的参数通常需要查外部芯片的数据手册。计算公式:input delay = Tco+Tpd+Tsu-Tclk。FPGA的Tsu也需要查FPGA芯片的手册。FPGA速度等级不同,这个参数也不同。Tpd和Tclk需要根据电路板实际的参数来计算。通常,每10cm的线长可以按照1ns来计算。例如:系统时钟100MHz,电路板上最大延迟2ns,时钟最大延迟1.7ns,Tco 3ns,FPGA的Tsu为0.2ns。那么输入延迟的值:max Input delay = 2+3+0.2-1.7=3.5ns. 这个参数的含义是指让FPGA的设计工具把FPGA的输入端口到第一级寄存器之间的路径延迟(包括门延迟和线延迟)控制在10ns-3.5ns=6.5ns以内,其中10ns是系统时钟。 2. 寄存器到寄存器: 这种路径的约束是为了让FPGA设计工具能够优化FPGA内寄存器到寄存器之间的路径,使其延迟时间必须小于时钟周期,这样才能确保信号被可靠的传递。由于这种路径只存在于FPGA 内部,通常通过设定时钟频率的方式就可以对其进行约束。对于更深入的优化方法,还可以采用对寄存器的输入和寄存器的输出加入适当的约束,来使逻辑综合器和布线器能够对某条路径进行特别的优化。还可以通过设定最大扇出数来迫使工具对其进行逻辑复制,减少扇出数量,提高性能。 3. 寄存器到输出: 这种路径的约束是为了让FPGA设计工具能够优化FPGA内部从最后一级寄存器到输出端口的路径,确保其输出的信号能够被下一级芯片正确的采到。 约束的名称:output delay。

在ISE下分析和约束时序

1.在ISE下分析和约束时序 3.1ISE的时序约束工具入门 像TimeQuest一样,ISE软件工具也有自己的时序约束及分析工具。ISE界面的processes当中,有一个user constraints列表,其中的Creat Timing Constrain 可以提供用户添加指定的时序约束。 ISE使用的时序约束信息跟其他的物理约束,电气约束等信息全部都放置在后缀名为ucf(user constrain file)的文件中,在使用图形化界面编辑约束后,用户还可以直接编辑UCF文件对时序等要求进行修改。 此外,PlanAhead Post synthesis工具在提供管脚,区域约束等功能之外,也提供了时序约束及分析的功能。所以设计者在约束设计时序时可以有多种方法。 使用Creat Timing Constrain时界面的约束类型部分如下图所示: 图ISE时序约束类型 从图中我们看到,这个工具对于时序约束的理解与altera的一致,需要约束时钟,输入输出信号,以及指定一些时序例外,也有将约束组成Group的功能。Xilinx公司对于其FPGA约束的名称与altera略有不同,但含义一样。分别是Period constrain(时钟周期约束),OFFSET constrain(输入输出偏移约束),以及FROM TO constrain,当然也有multi-cycle constrain等。 双击unconstrained clks窗口的clk项,出现的以下对话框可以对设计的时钟信息进行指定。

图ISE下约束时钟界面 这个界面可以设置时钟的周期,占空比,以及初始边沿是上升沿还是下降沿。或者如果这个时钟是从其他指定的时钟生成的,也可以指定生成的关系从而软件自己计算生成时钟的信息。unconstrained clks窗口将设计中没有约束的时钟列出来,在对每个时钟一一指定之后,窗口内容逐一消失。而其上方另一个窗口将显示约束的具体信息,并且也可从中选择一条约束进行逐一修改。 约束类型菜单下的Inputs 选中双击后,会出现如下图所示的对话框,指定了输入偏移约束的类型之后,选择next。这里的OFFSET IN 的类型包括,输入信号是源同步还是系统同步(时钟的来源不同),是单边沿触发还是双边沿触发的信号,以及有效边沿类型。通常在设计中,若非特殊的DDR数据,或者使用了外部随路时钟,就选择SDR以及系统同步即可。

时序约束总结

很多人发贴,来信询问关于约束、时序分析的问题,比如: 如何设置setup,hold时间?如何使用全局时钟和第二全局时钟(长线资源)?如何进行分组约束?如何约束某部分组合逻辑?如何通过约束保证异步时钟域之间的数据交换可靠?如何使用I/O逻辑单元内部的寄存器资源?如何进行物理区域约束,完成物理综合和物理实现?等等。。。 为了解决大家的疑难,我们将逐一讨论这些问题。 今天先讨论一下约束的作用? 有些人不知道何时该添加约束,何时不需要添加?有些人认为低速设计不需要时序约束?关于这些问题,希望下面关于约束作用的论述能够有所帮助!附加约束的基本作用有3: (1)提高设计的工作频率 对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。 (2)获得正确的时序分析报告 几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对设计的性能做出评估。静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析报告。 (3)指定FPGA/CPLD引脚位置与电气标准 FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从而节省了系统开发时间。这样,电路板加工完成后,设计者要根据电路板的走线对FPGA/CPLD加上引脚位置约束,使FPGA/CPLD与电路板正确连接。另外通过约束还可以指定IO引脚所支持的接口标准和其他电气特性。为了满足日新月异的通信发展,Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如AGP、BLVDS、CTT、GTL、

ISE时序约束笔记

ISE时序约束笔记 ISE时序约束笔记1——Global Timing Constraints 时序约束和你的工程 执行工具不会试图寻找达到最快速的布局&布线路径。——取而代之的是,执行工具会努力达到你所期望的性能要求。 性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。 没有时序约束的例子 该工程没有时序约束和管脚分配 ——注意它的管脚和放置 ——该设计的系统时钟频率能够跑到50M 时序约束的例子

和上面是相同的一个设计,但是加入了3个全局时序约束。 ——它最高能跑到60M的系统时钟频率 ——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置 更多关于时序约束 时序约束应该用于界定设计的性能目标 1.太紧的约束将会延长编译时间 2.不现实的约束可能导致执行工具罢工 3.查看综合报告或者映射后静态时序报告以决定你的约束是否现实 执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。 路径终点 有两种类型的路径终点: 1.I/O pads 2.同步单元(触发器,锁存器,RAMs) 时序约束的两个步骤: 1.路径终点生产groups(顾名思义就是进行分组) 2.指点不同groups之间的时序要求 全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等 ISE时序约束笔记2——Global Timing Constraints 问题思考 单一的全局约束可以覆盖多延时路径 如果箭头是待约束路径,那么什么是路径终点呢? 所有的寄存器是否有一些共同点呢?

时序分析的基本概念ETM的详细介绍及如何应用的资料概述

时序分析的基本概念ETM的详细介绍及如何应用的资料概述今天我们要介绍的时序分析概念是ETM。全称extracted timing model。这是在层次化设计中必须要使用的一个时序模型文件。由block owner产生,在顶层设计使用。当block owner做完PR以后,需要将block边界上的timing信息抽取出来,存放成一个timing lib文件。这个lib文件就是ETM文件。可以将做完PR的block理解为一个Macro,ETM就是该Macro的lib文件。顶层读入每个block的ETM文件后,就能看到block边界上的timing信息。根据设计阶段的不同,我们可以在preCTS, postCTS以及postRoute之后分别抽取ETM供顶层人员使用,当然越往后阶段的ETM越精确. 来看看ETM文件里有什么内容: boundary timing arc:包括in2reg,reg2out,in2out三种timing path的信息,reg2reg的path 会被忽略 1) In2reg: 存入ETM中的是setup和hold的arc Setup arc = data path delay (input to FF) + FF setup value –clock path delay Hold arc value = data path delay (input to FF) - FF hold value –clock path delay 2) Reg2Out 存入ETM中的是时序逻辑的延迟 时序逻辑延迟= delay (CLK到CK pin) + delay (CK pin到output port). 3) In2Out 存入ETM中的是组合逻辑的延迟 组合逻辑延迟= Path delay 当然,ETM model里还会保存很多内容,比如

基本分析基本概念

基本分析基本概念 基本分析的目的是为了了解客户大致的交易、信用和收入情况,然后根据客户的交易、信用和收入特征对客户进行细分,并找出能够区分客户在这些方面特征的维度,为进一步分析和建模奠定基础。 虽然不同的分析主题有不同的分析内容,从而分析方法可能也不尽相同。但从框架上而言,就象议论文有论点、论证、论据等几部分一样,基本分析还是有一个基本思路框架的。首先需要根据需求选定主题,然后确定分析角度和相应的方法。在确定分析方法的时候需要明确所选取的样本、分析的维度和计算指标。 由于主题主要是从客户的需求中提取出来的,这里不多作赘述,下面对分析方法、分析维度、样本选取和KPI选择的有关概念作一些简单的说明。 1.1 分析方法 常见的分析方法有时序分析、频数分析和单变量分析、交叉分析、Vintage 分析、迁移分析等几种方法,如果需要也可以做方差分析、聚类分析、主成分分析等多元统计分析。 1.1.1 时序分析 顾名思义,时序分析是研究对象随时间变化的一种分析方法。通过时序分析,可以了解研究对象的变化规律,以及两变量之间的相关性,从而为以后的交叉分析维度的选择、迁移分析分析时间段的选择提供依据。 对于观测在时间上的计数类的分析指标,如客户数的增长情况,可以通过SAS的FREQ过程获得,更一般的情况是用TABULATE过程可以获得基本数据。 如研究某银行男、女新开户客户占比随时间的变化情况,可以对每月开户的客户通过性别*开户年月来获得客户数,然后求出男、女客户每月占比来获得;研究男、女客户交易额时可以对交易金额以性别为行分类变量、交易时间为列分类变量对交易金额制表即可。 数据组织常采取客户特征为行变量,统计年月为列变量的形式,相应的统计图可以选择线图,用纵轴表示研究对象的某个指标,横轴为时间,反映的是研究对象在实践上的变化规律和变化趋势。 1.1.2交叉分析 交叉分析是将分析对象与其他维度作频数和次数、金额上交叉,从而找出影响显著的维度,以及影响趋势。 交叉分析常以分类变量为对象,如激活与否、逾期期数等;对于交易次数、交易金额和收入等单值较多的离散变量或连续变量,通常需要先对变量作分档处理,再以每档为目标变量与其他维度作交叉分析。 分析的指标可以是客户数、金额、次数等绝对量上的指标,也可以是相应

时序分析基本公式

以下内容译自Quartus II Version 7.0 Handbook, Volume 3:Verificat ion的6-28:Clock Analysis部分。riple TimeQuest静态时序分析的对象包括:寄存器和寄存器之间的路径、I/O之间、I/O和寄存器之间的路径、异步复位和寄存器之间的路径。TimeQuest根据Data Arrival Time和Data Required Time计算出时序余量(Slack)。当时序余量为负值时,就发生了时序违规(Timing Violation)。riple 需要特别指出的一点是:由于时序分析是针对时钟驱动的电路进行的,所以分析的对象一定是“寄存器-寄存器”对。在分析涉及到I/O的时序关系对时,看似缺少一个寄存器分析对象,构不成“寄存器-寄存器”对,其实是穿过FPGA 的I/O引脚,在FPGA外部虚拟了一个寄存器作为分析对象。riple 一、建立时间(Setup Time)检查:riple 遵循的原则是信号从Launch edge开始计时,经过一系列的时序路径,到达后级寄存器的数据输入Pin的速度不能太慢,时间不能太长,否则会侵占后级寄存器数据输入Pin相对于Latch edge的建立时间。刚好满足后级寄存器建立时间的数据到达时间是Data Required Time(相对于Latch edge计算),实际的数据到达时间是Data Arrival Time(相对于Launch edge计算)。显然,在建立时间检查中,Data Arrival Time要小于Data Required Time,否则就会造成建立时间违规。也就是说,Data Required Time是Data Arrival Time的最大值。二者之差就是建立时间的时序余量。riple 1)寄存器-寄存器(Register-to-Register)路径检查:riple Clock Setup Slack = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay Source Regi ster +μtco + Register-to-Register Delay Data Required Time = Clock Arrival Time –μtsu – Setup Uncerta inty Clock Arrival Time = Latch Edge + Clock Network Delay to Destinat ion Register 2)输入引脚-寄存器(Pin-to-Register)路径检查:riple Clock Setup Slack Time = Data Required Time – Data Arrival Time

相关文档
最新文档