第6章 约束与时延分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ቤተ መጻሕፍቲ ባይዱ
f max
1 = B − ( E − C ) + Tco + Tsu
整个系统时钟频率 Fmax的计算方法为: 1 f max = Max{cycle _ input _ clk , cycle _ in _ clk , cycle _ output _ clk}
Slack Slack用来衡量一个设计是否满足时序——正的slack表示满足时序 ,而负的slack则表示不满足时序。
PAD-to-Setup路径 图6-6是另外一种常见的时序模型,也叫做输入模型。
PAD D
SET
Q
CLR
Q
clk
图 6–6 PAD-to-Setup路径
图 6–7 PAD-to-Setup路径波形图 从CPLD/FPGA层面来看输入模型的路径延时包括了输入缓冲延时 、逻辑及布局布线延时以及建立时间;从系统角度来看,整条路 径的延时还需要包括上一级芯片的输出模型延时以及PCB走线延 时和信号的飞行时间,因此要确定对此路径进行时序约束,需要 召集电路设计工程师和布局布线工程师一起讨论最后决定此路径 的时序约束。
Fmax 对于芯片内部而言,它是寄存器到寄存器之间的延时,而对于整 个芯片而言,还需要考虑进入芯片的建立保持时间以及输出芯片 的 Tco。把它取反就是最小时钟周期的概念。
SET SET
A
D
Q
B
D
Q
Q
CLR
Q
E
CLR
Q
C clk
图 6–13 计算Fmax的时序模型示意图
芯片内部的Fmax的计算方法如下:
wire NodeName/*synthesis SYN_KEEP = 1 NOCLIP = "ON" NOMERGE = "ON"*/
6.3 时序约束的基本概念
时序约束是指路径之间的约束,任何一条路径都有起点和终点, 最重要的是,路径是不能穿过触发器的 CPLD/FPGA至少有三种不同的基本路径:一是触发器到触发器之 间的路径;一是从输入端口到内部触发器之间的路径;一是从内 部触发器到输出端口之间的路径。 时序约束有几个重要的基本概念:建立时间、保持时间、时钟到 输出延时、传播延时等等。
图 6–4 Clock-to-PAD路径
图 6–5 Clock-to-PAD路径波形图
从系统层面来看,Clock-to-PAD路径是整个系统中路径延时的一 部分,要计算整个路径延时和最小的时钟周期还需要考虑信号在 PCB上的走线延时、飞行时间以及下一级接收芯片的输入时序模 型。从CPLD/FPGA层面上来看,它包括时钟端到触发器输出端延 时、逻辑和布局布线延时、输出缓冲延时等等。当对Clock-toPAD路径进行时序约束时,需要电路设计工程师、CPLD/FPGA工 程师和布局布线工程师共同决定信号在Clock-to-PAD路径的延时 、信号在PCB板上的延时以及接收端芯片可承受的延时容限各为 多少,最后以文档的形式确定时序约束。
http://www.latticesemi.com/documents/TN1112.pdf
管脚锁定 关键字:LOC 当采用Examplar综合工具的时候,它的基本语法如下:
//examplar attribute Pinname LOC [Pin#]
当采用Synplicity综合工具进行综合的时候,它的基本语法是:
//examplar attribute PinName IO_TYPES Type
采用Synplicity综合工具的时候,它的基本语法如下:
/*synthesis IO_TYPES = "Type"*/
管脚驱动电流设定 关键字:DRIVE 采用examplar综合工具的时候,它的基本语法如下:
//examplar attribute PinName DRIVE Value
NET "DATA_?" DRIVE = 8;
pinType PinName /*synthesis LOC = "[Pin#]"*/;
6.2.2 代码注释约束
不同的厂家有不同的代码注释约束方式,而且代码注释约束的方 式只针对于特定的综合工具 以Lattice的ispLEVER集成开发环境来具体说明怎样进行代码注释 约束。 相关的技术文档和网站,如:
//examplar attribute PinName PULLMODE TYPE
采用Synplicity综合工具的时候,它的基本语法如下:
/*synthesis PULLMODE ="TYPE"*/
管脚OD设定 关键字:OPENDRIVE 有两种方式:开启(ON)、关闭(OFF)。 采用examplar综合工具的时候,它的基本语法如下: //examplar attribute PinName OPENDRAIN ON/OFF 采用Synplicity综合工具的时候,它的基本语法如下:
管脚约束是CPLD/FPGA的基础之一。 管脚约束主要有三种方式:一是采用各家公司的集成开发环境来 实现管脚约束 二是设计专门的管脚约束文件 三是采用注释的方式在代码中自动锁定
6.2.1 管脚约束文件
不同的厂商支持不同的管脚约束文件,如Lattice所采用的管脚约 束文件为.lpf文件,Xilinx支持的管脚约束文件为.ucf文件,而 Altera所使用的管脚约束文件为.qsf文件。 Xilinx公司的管脚约束文件.ucf文件的语法规则: 通用规则: .ucf文件对于大小写敏感,也就是是说同一单词的大小写不同表 示不同的含义,标识符必须与代码中的名字一致。但是约束中的 关键字对大小写不敏感。 语句以分号结尾,一个语句可以多行表述。 语句之间不分先后次序,不过建议管脚约束顺序与代码中管脚列 表顺序一致。 采用“#”或者“ ”的方式来进行注释
/*synthesis OPENDRAIN ="ON|OFF"*/
节点预留设定 如果两个或者两个以上节点在CPLD/FPGA里面的输入信号相同, 并且整个处理过程和方式都一致,那么在综合工具中就会被等效 成一个节点而被自动优化,而这样可能与设计的初衷不相符合, 因此需要采用节点预留设定的方式,当综合软件解析到这样的注 释的时候,就将“忠诚地”按照代码方式处理,而不会将“冗余 ”的节点优化。 采用examplar综合工具的时候,它的基本语法如下:
Paths Ending at Clock Pin of Flip-Flops 此路径是指时钟信号从源端到达各个具体触发器的时钟端的路径 。在CPLD/FPGA中,设计工程师都推荐采用全局时钟来驱动触发 器,但是尽管采用全局时钟,时钟到达触发器之间还是有一段延 时时间,这段时间在计算时延的时候必须考虑进去。
6.3.2 时序约束参数
建立时间 建立时间就是指数据必须在时钟有效沿到来之前稳定的最小时间 长度。当建立时间不够的时候,触发器采集不到数据,或者采集 到的数据是错误的数据,从而导致整个时序逻辑的错误。 任何一个时序逻辑芯片都会存在建立时间这个概念,一般使用 Tsu来表示
图 6–12 计算建立时间的时序模型图
第6章 约束与时延分析 章
本章主要内容
约束的基本概念 管脚约束 时序约束 约束的分析方法 静态时延分析
6.1约束的目的
约束的终极目的就是为了设计达到所要实现的功能,主要有如下 几个方面的作用。 管脚位置锁定及电气标准设定。 提高设计的工作频率。 获得正确的时序分析报告。
6.2 管脚约束及电气标准设定
图 6–10 PAD to PAD路径 图 6–11 PAD to PAD路径波形图
整条路径的延时分为输入延时、输出延时以及中间的逻辑和布局 布线延时。 如果放在整个系统层面来看,严格来说不能称之为路径,因为这 个时延路径的源端和目的端都不在这个芯片里面,而在上一级或 者上上级的芯片中和下一级的芯片中。
图 6–8 Paths Ending at Clock Pin of Flip-Flops
图 6–9 Paths Ending at Clock Pin of Flip-Flops波形图
PAD to PAD路径 图6-10表示为一条纯组合逻辑的路径,从芯片输入的管脚开始, 经过任意级的组合逻辑电路,然后从另外一个输出管脚输出。
图 6–1 简单的时序模型
6.3.1路径
Clock-to-setup路径 Clock-to-setup路径是我们常见到的时序模型,一般用来描述 CPLD/FPGA内触发器之间的延时。
图 6–2 时序模型示意图
图 6–3 时序逻辑波形示意图
路径的延时包括:源端触发器的时钟端到输出端的延时、逻辑和 布线延时、时钟的布线延时以及建立时间,通过计算可以读出最 小的时钟周期和最高的时钟频率。 Clock-to-PAD路径 Clock-to-PAD路径 我们常见的时序模型之一,可以称之为输出模型。任何一个 CPLD/FPGA在系统中都不是单独存在的,而CPLD/FPGA的时序不 仅仅只是内部的时序模型,同样它可以驱动下一级芯片,从而产 生一个新的时序模型
//examplar attribute PinName SLEWRATE FAST/SLOW
采用Synplicity综合工具的时候,它的基本语法如下:
/*synthesis SLEWRATE ="FAST/SLOW"*/
管脚上拉模式设定 关键字:PULLMODE 有四种模式,分别为上拉(UP)、下拉(DOWN)、保持(KEEPER )和无(NONE)。采用examplar综合工具的时候,它的基本语 法如下:
基本语法
{NET | INST | PIN} "full name" constraint;
例如:
NET "I_PAL_32KHZ" LOC = A8 | IOSTANDARD = LVCMOS33 | SLEW = FAST;
通配符 在约束语句中可以使用 “*”,“?”来作为通配符。“*”代表 任何的字符串,而“?”则表示一个字符。 这样的表示方法可以用来对一组信号进行约束。如:
pinType PinName /*synthesis LOC = "[Pin#]"*/;
需要注意的是,采用synplicity综合工具的时候,注释需要写在 “;”里面,而且注释和信号声明中不能有其他的注释,否则无效 。 管脚类型设定 关键字:IO_TYPES 采用examplar综合工具的时候,它的基本语法如下:
保持时间 保持时间是指当时钟信号有效沿到来之后,数据必须保持的最小 的稳定时间,一般采用Th来表示。当保持时间不够的时候,数据 传输将出现紊乱,系统将出现亚稳态的问题。 时钟到输出延时 当时钟到达一个触发器并成功地采样到数据端的数据的时候,并 不会立即就表现在输出端上,这之间会有一段延时时间,叫做时 钟到输出延时时间,一般用 Tco表示。 传播延时 数据从寄存器出来以后,到达下一级寄存器之间的逻辑和布线延 迟,就叫做传播延时,一般使用Tpd 表示。
//examplar attribute NODEName PRESERVE_SIGNAL TRUE //examplar attribute NODEName NOCLIP ON //examplar attribute NODEName NOMERGE ON
采用Synplicity综合工具的时候,它的基本语法如下:
采用Synplicity综合工具的时候,它的基本语法如下: 电流驱动强度与管脚类型设定要直接的关系,不同的管脚类型有 不同的驱动电流。另外驱动电流只针对于输出而言,对于输入是 无所谓驱动电流的。
/*synthesis DRIVE= "Value"*/
管脚输出斜率设定 关键字:SLEWRATE 采用examplar综合工具的时候,它的基本语法如下:
slack = required _ clock _ cycle − actual _ clock _ cycle
slack = slack _ clock _ period − (Tco + Tpd + Tsu )
如果slack为负,数据保持时间不够,主要是由于数据路径延时大 于时钟延时而造成的。 从建立时间来来考虑,最坏的情况是slack是一个时钟周期减去时 钟抖动的最大绝对值;而从保持时间来考虑,最坏的情况是slack 一个时钟周期加上时钟抖动的最大绝对值。 对于异步电路来说,由于采用不同的时钟信号进行驱动, slack _ clock _ period 是指两个不同时钟的有效边沿之差
相关文档
最新文档