0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时序分析的基本步骤介绍

lPCU_elecfans 来源:搜狐网 作者:搜狐网 2020-10-13 10:30 次阅读

时序分析的基本步骤

一个合理的时序约束,可以分为以下步骤:

时序约束整体的思路与之前我说的方法基本一致。整体的思路如下:

1. 先是约束时钟,让软件先解决内部时序问题;(在这一步骤中可以适当加入时序例外,以便时序通过)

2. 然后再加入IO的延迟约束;

3. 最后针对没有过的时序,添加时序例外。

在《vivado使用误区与进阶》中,提到了一种叫 UltraFAST 的设计方法。针对下图中所说的根据迭代结果添加必要的例外约束(步骤1),为什么是添加必要的呢?是因为虽然是跨时钟域,但是有时候就算不约束,时序也能过。当碰到时序不过的时候,现阶段可以去针对该部分路径进行时序例外约束,以便后续继续分析。需要注意的是,就算没有报时序为例,现阶段也一定要去留意那些跨时钟的路径(通过clock_interaction),确认代码有没有做相应的跨时钟域处理。针对跨时钟域的代码处理后面会提到。

定义时钟约束

时钟主要可以分为主时钟以及衍生时钟。

创建主时钟。典型的主时钟根包括有以下几种情况:输入端口、千兆位收发器输出引脚以及某些硬件原语输出管脚。

约束实例 :

create_clock -name SysClk -period 10 -waveform {0 5} [get_ports sysclk]

GT 收发器输入引脚,例如已恢复的时钟。

约束实例 :

create_clock -name txclk -period 6.667 [get_pin gt0/TXOUTCLK]

创建生成时钟

自动衍生时钟

大部分生成时钟都由 Vivado 设计套件时序引擎自动衍生获得,该引擎可识别时钟修改模块 (CMB)及其对主时钟所执行的变换。赛灵思 7 系列器件中,CMB 是 :

• MMCM*/ PLL*

• BUFR

• PHASER*

如果 Vivado 设计套件时序引擎所选择的自动衍生时钟名称并不合适,您可以使用 create_generated_clock 命令强行定义自己的名称,此时无需指定波形转换。该约束应刚好位于约束文件中定义主时钟的约束之后。例如,由 MMCM 实例生成的时钟的默认名称是 net0,您可以添加如下约束强制将其设定为自己的名称(例如fftClk):

create_generated_clock -name fftClk [get_pins mmcm_i/CLKOUT0]

生成时钟源自另一个现有时钟(主时钟)。通常用来描述由逻辑模块在主时钟上执行的波形变换。由于生成时钟的定义取决于主时钟特性,因此必须首先定义主时钟。要明确定义生成时钟,必须使用 create_generated_clock 命令。

create_generated_clock -name GC1 -source [get_pins gen_clk_reg/C] -divide_by 2 [get_pins gen_clk_reg/Q]

跨时终域处理

跨时钟域处理,主要是为了避免亚稳态的传播(注意亚稳态不能消除,但是可以采用一定的方式,降低其传播的风险)。触发器进入亚稳态的时间可以用参数MTBF(Mean Time Between Failures)来描述,MTBF即触发器采样失败的时间间隔,表示为:

例如针对单bit数据的跨时钟域处理,是为了让MTBF增大,使得进入一个可接受范围。

*跟大家探讨一个问题,为什么打两拍就可以降低亚稳态的传播呢?

我想到的一个场景如下:

信号a经过跨时钟处理后变成了a’;这样就可以确保在时序满足的前提下,同一个时钟域中的1、2、3模块接收到的a’的值是一致的,如果不做跨时钟域处理,由于布局布线的延迟不一样,不能确保到达1、2、3模块的值是一致的,从而导致逻辑混乱,引起系统的不稳定现象。

IO的延迟约束

输入延迟

外部器件发送数据到FPGA系统模型如下图所示。对FPGA的IO口进行输入最大最小延时约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。

输入延时即为从外部器件发出数据到FPGA输入端口的延时时间。其中包括时钟源到FPGA延时和到外部器件延时之差、经过外部器件的数据发送Tco,再加上PCB板上的走线延时。如下图所示,为外部器件和FPGA接口时序。

最大输入延时(input delay max)为当从数据发送时钟沿(lanuch edge)经过最大外部器件时钟偏斜(Tclk1),最大的器件数据输出延时(Tco),再加上最大的PCB走线延时(Tpcb),减去最小的FPGA时钟偏移(FTsu)的情况下还能保证时序满足的延时。这样才能保证FPGA的建立时间,准确采集到本次数据值,即为setup slack必须为正,计算公式如下式所示:

Setup slack =(Tclk + Tclk2(min))–(Tclk1(max)+Tco(max)+Tpcb(max)+FTsu)≥0(1)

最小输入延时(input delay min)为当从数据发送时钟沿(lanuch edge)经过最小外部器件时钟偏斜(Tclk1),最小器件数据输出延时(Tco),再加上最小PCB走线延时(Tpcb),此时的时间总延时值一定要大于FPGA的最大时钟延时和建立时间之和,这样才能不破坏FPGA上一次数据的保持时间,即为hold slack必须为正,计算公式如下式所示:

Hold slack =(Tclk1(min)+ Tco(min)+ Tpcb(min))–(FTh + Tclk2(max))≥ 0(2)

我们很容易就可以从公式(1)和(2)推到出(3)

Tclk – Ftsu ≥Tclk1 -Tclk2 + Tco+ Tpcb ≥ FTh(3)

在公式(3)中,我们发现Tclk 、Ftsu以及FTh,对于工具来说是已知的,而Tclk1 - Tclk2 + Tco + Tpcb正是我们需要告知综合工具的延迟量。

从我们推到出的公式,我们可以得到:

Input_delay_max = Tclk – Ftsu;

Input_delay_min = FTh;

输出延迟

FPGA输出数据给外部器件模型如下图所示。对FPGA的IO口进行输出最大最小延时约束是为了让FPGA设计工具能够尽可能的优化从第一级寄存器到输出端口之间的路径延迟,使其能够保证让外部器件能准确的采集到FPGA的输出数据。

输出延时即为从FPGA输出数据后到达外部器件的延时时间。其中包括时钟源到FPGA延时和到外部器件延时之差、PCB板上的走线延时以及外部器件的数据建立和保持时间。如所示,为FPGA和外部器件接口时序图。

最大输出延时(output delay max)为当从FPGA数据发出后经过最大的PCB延时、最小的FPGA和器件时钟偏斜,再加上外部器件的建立时间。约束最大输出延时,是为了约束IO口输出,从而使外部器件的数据建立时间,即为setup slack必须为正,计算公式如下式所示:

Setup slack =(Tclk + Tclk2(min))–(Tclk1(max)+FTco(max)+Tpcb(max)+Tsu)≥0(4)

最小输出延时(output delay min)为当从FPGA数据发出后经过最小的PCB延时、最大的FPGA和器件时钟偏斜,再减去外部器件的建立时间。约束最小输出延时,是为了约束IO口输出,从而使IO口输出有个最小延时值,防止输出过快,破坏了外部器件上一个时钟的数据保持时间,导致hlod slack为负值,不能正确的锁存到数据,最小输出延时的推导计算公式如下式所示:

Hold slack =(Tclk1(min)+ FTco(min)+ Tpcb(min))–(Th + Tclk2(max))≥ 0(5)

我们很容易就可以从公式(4)和(5),发现这两条公式与前面推导输入延迟如出一辙。只不过现在FPGA变成了输出器件,而Tsu、Th是下游器件的参数,综合工具并不知情,需要我们告诉他。除了FTco以外,其他参数都需要我们告诉工具。

由公式(4)我们可以推导出:

FTco(max)+ Tpcb(max)–(Tclk2(min)– Tclk1(max)+Tsu ≤Tclk

那么output delay max= Tpcb(max)–(Tclk2(min)– Tclk1(max)+Tsu

同理我们由公式(5)可以推导出:

FTco(min)+ Tpcb(min)–(Tclk2(max)– Tclk1(min))– Th ≥ 0

那么output delay min =Tpcb(min)–(Tclk2(max)– Tclk1(min))– Th

为了帮助学员能够更深入地掌握FPGA系统设计与实际应用。编者给大家准备了FPGA系列学习电子书籍,包括了CPLD/Verilog编程语言基础与设计,数字IC、基本逻辑、组合逻辑等基础电路,Vivado平台开发与调试、集成开发环境使用及相关技巧,FPGA数字信号处理、数字图像处理及各种FPGA实战项目设计案例等等。

1.Verilog数字系统设计教程

本书从算法和计算的基本概念出发,讲述如何用硬线逻辑电路实现复杂数字逻辑系统的方法。全书共分三部分。部分内容共18章;二部分共12个上机练习实验范例;三部分是Verilog硬件描述语言参考手册,可供读者学习、查询之用。本书2版后,在语法篇中增加了IEEE Verilog1364-2001标准简介,以反映Verilog语法的新变化。

2.数字电路与逻辑设计

本书系统地阐述了逻辑电路的基础理论--逻辑函数及其数学工具;重点讨论了逻辑电路的设计方法和分析方法;详细介绍了通用性强的几类中、大规模集成器件,并结合实例介绍了它们在各领域中的应用;对可编程逻辑器件及其硬件描述语言也进行了系统介绍。


全书共10章,主要内容有:逻辑函数、集成逻辑门、组合逻辑电路、集成触发器、时序逻辑电路、硬件描述语言、半导体存储器、可编程逻辑器件、脉冲单元电路、模数及数模转换技术等。各章均附有内容提要、小结、思考题和习题。

3.Vivado从此开始

本书涵盖了Vivado的四大主题:设计流程、时序约束、设计分析和Tcl脚本的使用,结合实例深入浅出地阐述了Vivado的使用方法,精心总结了Vivado在实际工程应用中的一些技巧和注意事项,既包含图形界面操作方式,也包含相应的Tcl命令。本书语言流畅,图文并茂。全书共包含405张图片、17个表格、172个Tcl脚本和39个HDL代码,同时,本书配有41个电子教学课件,为读者提供了直观而生动的资料。本书可供电子工程领域内的本科高年级学生和研究生学习参考,也可供FPGA工程师和自学者参考使用。

4.Xilinx新一代FPGA设计套件Vivado应用指南

本书系统论述了新一代FPGA设计套件Vivado的性能、使用方法以及FPGA的开发方法。全书内容包括Vivado设计套件的特性,全面可编程FPGA器件的架构,使用Vivado套件创建复杂数字系统设计项目,仿真系统功能,RTL分析产生网表文件,性能要求的时序约束及综合,布局布线及静态时序分析和生成位流文件等全部设计过程,基于项目和非项目批作业两种用Tcl指令的设计模式,同步设计技术、HDL编码技术、时序收敛和HI.S优化DSP算法等关键技术,并以实例介绍了嵌入式系统的设计方法等。

责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时序分析
    +关注

    关注

    2

    文章

    127

    浏览量

    22565

原文标题:FPGA工程师进阶必学:时序分析的基本步骤和整体设计思路

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    同步时序逻辑电路

    同步时序逻辑电路:本章系统的讲授同步时序逻辑电路的工作原理、分析方法和设计方法。从同步时序逻辑电路模型与描述方法开始,介绍同步
    发表于 09-01 09:06 0次下载

    时序约束与时序分析 ppt教程

    时序约束与时序分析 ppt教程 本章概要:时序约束与时序分析基础常用
    发表于 05-17 16:08 0次下载

    时序分析基本概念介绍——时序库Lib,除了这些你还想知道什么?

    时序分析基本概念介绍——时序库Lib。用于描述物理单元的时序和功耗信息的重要库文件。lib库是最基本的
    的头像 发表于 12-15 17:11 1.2w次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本概念<b class='flag-5'>介绍</b>——<b class='flag-5'>时序</b>库Lib,除了这些你还想知道什么?

    时序逻辑电路分析有几个步骤(同步时序逻辑电路的分析方法)

    分析时序逻辑电路也就是找出该时序逻辑电路的逻辑功能,即找出时序逻辑电路的状态和输出变量在输入变量和时钟信号作用下的变化规律。上面讲过的时序
    发表于 01-30 18:55 12.7w次阅读
    <b class='flag-5'>时序</b>逻辑电路<b class='flag-5'>分析</b>有几个<b class='flag-5'>步骤</b>(同步<b class='flag-5'>时序</b>逻辑电路的<b class='flag-5'>分析</b>方法)

    关于Vivado时序分析介绍以及应用

    时序分析在FPGA设计中是分析工程很重要的手段,时序分析的原理和相关的公式小编在这里不再介绍,这
    发表于 09-15 16:38 6951次阅读
    关于Vivado<b class='flag-5'>时序</b><b class='flag-5'>分析</b><b class='flag-5'>介绍</b>以及应用

    时序分析基本概念介绍

    今天我们要介绍时序分析概念是Combinational logic. 中文名组合逻辑单元。这是逻辑单元的基本组成器件。比如我们常见的and, or, not, nand,nor等门电路。
    的头像 发表于 05-14 17:27 5750次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本概念<b class='flag-5'>介绍</b>

    时序约束的步骤分析

    FPGA中的时序问题是一个比较重要的问题,时序违例,尤其喜欢在资源利用率较高、时钟频率较高或者是位宽较宽的情况下出现。建立时间和保持时间是FPGA时序约束中两个最基本的概念,同样在芯片电路时序
    的头像 发表于 12-23 07:01 2153次阅读
    <b class='flag-5'>时序</b>约束的<b class='flag-5'>步骤</b><b class='flag-5'>分析</b>

    时序分析的静态分析基础教程

    本文档的主要内容详细介绍的是时序分析的静态分析基础教程。
    发表于 01-14 16:04 14次下载
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>的静态<b class='flag-5'>分析</b>基础教程

    时序逻辑电路设计之同步计数器

    时序电路的考察主要涉及分析与设计两个部分,上文介绍时序逻辑电路的一些分析方法,重点介绍了同步
    的头像 发表于 05-22 17:01 3348次阅读
    <b class='flag-5'>时序</b>逻辑电路设计之同步计数器

    介绍时序分析的基本概念lookup table

    今天要介绍时序分析基本概念是lookup table。中文全称时序查找表。
    的头像 发表于 07-03 14:30 1516次阅读
    <b class='flag-5'>介绍</b><b class='flag-5'>时序</b><b class='flag-5'>分析</b>的基本概念lookup table

    时序分析概念min pulse width介绍

    今天我们要介绍时序分析概念是 **min pulse width** ,全称为最小脉冲宽度检查。这也是一种非常重要的timing arc check,经常用在时序器件或者memory
    的头像 发表于 07-03 14:54 2864次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>概念min pulse width<b class='flag-5'>介绍</b>

    AOCV时序分析概念介绍

    今天我们要介绍时序分析概念是 **AOCV** 。全称Stage Based Advanced OCV。我们知道,在OCV分析过程中,我们会给data path,clock path
    的头像 发表于 07-03 16:29 1988次阅读
    AOCV<b class='flag-5'>时序</b><b class='flag-5'>分析</b>概念<b class='flag-5'>介绍</b>

    介绍时序分析基本概念MMMC

    今天我们要介绍时序分析基本概念是MMMC分析(MCMM)。全称是multi-mode, multi-corner, 多模式多端角分析模式。
    的头像 发表于 07-04 15:40 2616次阅读
    <b class='flag-5'>介绍</b><b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本概念MMMC

    时序分析Slew/Transition基本概念介绍

    今天要介绍时序分析基本概念是Slew,信号转换时间,也被称为transition time。
    的头像 发表于 07-05 14:50 3240次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>Slew/Transition基本概念<b class='flag-5'>介绍</b>

    PLC时序图的设计步骤

    电器硬件的工作中而引申出来的,借用它可以分析与确定相关的逻辑量间的时序关系。采用时序图法设计 PLC 程序的一般步骤如下:
    的头像 发表于 10-05 09:55 5022次阅读