![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FPGA静态时序分析
长弓的坚持
这个作者很懒,什么都没留下…
展开
-
TimeQuest约束外设之诡异的Create Generated Clocks用法
最近在altera FPGA里设计一个外设的驱动模块,模块本身逻辑很简单如下图所示,但是模块和外设之间的时序约束问题搞的很头疼,今天先讲讲总结的一些Timequest下外设约束方法,特别是那毫无用户体验而言的Create Generated Clocks用法。要让外设正确接收FPGA发出的数据,需要dout和clkout满足外设的建立保持时间,如下图所示。 时序分析是基于源reg的转载 2017-11-13 23:50:11 · 1147 阅读 · 0 评论 -
如何节省BUFG,打破时序收敛高扇出 net 的瓶颈
高扇出 net 是时序收敛的一个常见瓶颈。所以,除了传统的降低扇出的方法之外,还可以将该 net 引入 BUFG,但前提是有可用的 BUFG。众所周知,BUFG 是全局时钟资源,在配置 MMCM 或 PLL 时会用到。这里, 我就给大家介绍两种可以通过合理使用 MMCM/PLL 节省 BUFG 的方法。 大多数情形下,MMCM 用作去除时钟网络 Skew 模式(Clock Network Desk...转载 2018-03-04 13:04:18 · 2216 阅读 · 0 评论 -
FPGA中建立时间和保持时间不满足如何解决
问题: 建立时间和保持时间不满足如何解决回答一:setup violation主要就是设法剪掉critical path的delay,要么pipeline,要么retiming,要么把combination往前后级挪一挪。hold time violationhold time violation是clock tree的skew引起的。主要的宗旨就是设法加前面一级combination的delay...转载 2018-05-01 22:48:37 · 21831 阅读 · 3 评论 -
建立时间和保持时间概念
一、概念 建立时间和保持时间都是针对触发器的特性说的。 时序图如下:建立时间(Tsu:set up time) 是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器,Tsu就是指这个最小的稳定时间。保持时间(Th:hold time) 是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据...转载 2018-05-01 22:53:49 · 60859 阅读 · 13 评论 -
Setup 和Hold (建立时间和保持时间)解析
本文是第一篇,有空会继续更新。(转载请注明出处!!!)STA分析是基于同步电路设计模型的,在数据输入端,假设外部也是同时钟的寄存器的输出并且经过若干组合逻辑进入本级,而输出也被认为是驱动后一级的同时钟的寄存器。在不设置约束的情况下,纯组合逻辑的输入->输出不得超过一个T,否则也会被认为是Timing violation.1. Timing pathTiming path就是时间线。Timin...转载 2018-05-01 22:54:52 · 62455 阅读 · 27 评论 -
数字电路中的亚稳态产生原因和处理方法
最近在异步FIFO设计中,遇到了对跨时钟信号的同步处理,主要是为了降低亚稳态出现的概率。因此这篇文章主要讲一下亚稳态出现原因以及处理办法。(一)亚稳态的出现原因 亚稳态主要是指触发器在某一段时间内不能达到一个确定的状态。一个触发器一旦进入亚稳态状态,则无法预测触发器的输出电平,也无法预测什么时候可以稳定在某个确定的电平上,此时触发器的输出端Q在较长时间内处于振荡状态,不等于输入端D。这段时间称...转载 2018-05-01 22:56:19 · 10288 阅读 · 0 评论 -
跨时钟域处理——脉冲同步器
verilog实现上面的电路:module pulse_syc( input sclk_1, input sclk_2, input p_in, output p_out, output p_out1); reg p_in_reg=0; reg delay0,delay1,delay2; wire mux_2; assign mux_2=(p_...转载 2018-05-02 23:18:51 · 6245 阅读 · 1 评论 -
时序约束,STA的Q&A
(1) clockQ1.1什么是同步时钟?时钟频率是整倍数,并且相互之间的相位是固定而且相差可预知的,才可以称得上是同步时钟。其他的都算异步时钟。比如,5M,10M是同步2M,3M一般算异步一个时钟,输出到另一个芯片中,转一圈后,以同样的频率返回到自己的芯片,因为无法确定时钟在另一个芯片里面的latency,所以输出的时钟与输入的时钟算异步一个时钟进到2个PLL,就算那2个PLL的输出频率相同,一...原创 2018-05-03 13:31:39 · 3248 阅读 · 0 评论 -
跨时钟域设计介绍
1. 亚稳态的概念说明是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态引时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。在同步系统中,如果触发器的setup time / hold time不满足,就可能产生亚稳...转载 2018-05-03 23:13:14 · 1042 阅读 · 0 评论 -
跨时钟域设置set_false_path的问题
问题:请教下:两个异步时钟域有path, 但是都经过了同步。应该怎么约束这种异步path?直接设置成false path 是否可以,为什么好多ip的这种path 都通过set max delay设置为一个源时钟域的周期?这样设置是否只为了保证性能,为什么不设置为两个时钟周期?回答:1:两个异步时钟域设置false path是可以的,设置max delay是保证总线类的跨时钟信号在被采样的时候是采的...转载 2018-05-03 23:16:34 · 23249 阅读 · 0 评论 -
Vivado使用误区与进阶——XDC约束技巧之I/O篇 (下)
《XDC约束技巧之时钟篇》中曾对I/O约束做过简要概括,相比较而言,XDC中的I/O约束虽然形式简单,但整体思路和约束方法却与UCF大相径庭。加之FPGA的应用特性决定了其在接口上有多种构建和实现方式,所以从UCF到XDC的转换过程中,最具挑战的可以说便是本文将要讨论的I/O约束了。 继《XDC约束技巧之I/O篇(上)》 详细描述了如何设置Input接口约束后,我们接着来聊聊怎转载 2018-01-27 22:22:04 · 5520 阅读 · 1 评论 -
Vivado使用误区与进阶——XDC约束技巧之I/O篇 (上)
《XDC约束技巧之时钟篇》中曾对I/O约束做过简要概括,相比较而言,XDC中的I/O约束虽然形式简单,但整体思路和约束方法却与UCF大相径庭。加之FPGA的应用特性决定了其在接口上有多种构建和实现方式,所以从UCF到XDC的转换过程中,最具挑战的可以说便是本文将要讨论的I/O约束了。I/O 约束的语法XDC 中可以用于 I/O 约束的命令包括 set_input_delay / set_o转载 2018-01-27 22:21:28 · 6271 阅读 · 0 评论 -
TimeQuest之delay_fall clock_fall傻傻分不清楚
这篇我想分享一个之前在用TimeQuest约束双边沿模块的input delay时犯得一个错误,有人看了可能会觉得傻傻的,什么眼神,falling delay和 falling clk怎么会分不清呢,字面意思好区分,可要深究在约束里的具体含义,还得花点功夫,下面以ddio接收模块为例说明它们的含义以及碰到的一些问题。ddio接收模块为双边沿工作模式,如图一所示,ddio_in接入DFFH和转载 2017-11-13 23:52:50 · 1916 阅读 · 0 评论 -
FPGA 中 IO 口时序分析(Input Delay /output Delay)
1.1 概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛。因此,FPGA时序约束中IO口时序约束也是一个重点。只有约束正确才能在高速情况下保证FPGA和外部器件通信正确。1.2 FPGA整体概念 由于IO口时序约束分析是针对于电路板整个系统进行时序分析,所以FPGA需要作为一个整体分析,其中包括FPGA转载 2017-11-14 00:00:29 · 2528 阅读 · 2 评论 -
从TimeQuest角度看set_max_delay
今天开始看特权大大的《实战演练之时序收敛》,看到set_max_delay时跟着做了一下,设置了最大延时为3ns,然后report timing突然自动飘红了,很意外,于是看了看瓢红的路径的waveform,意外的发现set_max_delay中设置的值成了latch edge time,由于E文不好google了半天也没找到原因,于是再次祭法宝(从TimeQuest方向进行猜测)。由于repor转载 2017-11-14 00:04:31 · 5133 阅读 · 0 评论 -
FPGA优化之高扇出
Fanout即扇出,模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛。因此,在写代码时应尽量避免高扇出的情况。但是,在某些特殊情况下,受到整体结构设计的需要或者无法修改代码的限制,则需要通过其它优化手段解决高扇出带来的问题。以下就介绍三个这样的方法: 首先来看下面这个实例,如图1所示为转置型FIR滤波器中的关键路径时序报告,在D转载 2017-11-26 11:47:45 · 9203 阅读 · 0 评论 -
Xilinx 7 Series FPGA时钟网络的区别(BUFG,BUFGR,BUFIO)
当Xilinx 7Series FPGA中,存在3种主要的时钟网络:BUFG,BUFR,BUFIO以及他们所衍生出的各种变种。那么他们有什么主要特点和区别呢?BUFIO是IO时钟网络,顾名思义,它只能驱动IO Block里面的逻辑,不能驱动CLB里面的LUT,REG等逻辑。BUFIO可以被如下节点驱动:1、SRCCs and MRCCs in the same clockregion2转载 2017-11-26 11:55:54 · 6258 阅读 · 0 评论 -
Vivado中set_clock_groups时钟约束的使用
一、命令格式 set_clock_groups [-asynchronous] [-exclusive] –group 二、选项说明 -asynchronous :顾名思义,时钟是异步不相关的,时钟有完全不同的时钟源 -exclusive :时钟是互斥的,即时钟不会再同一时刻同时有效 实际上,这两个选项的效果是完全一样的。转载 2018-01-27 22:06:00 · 16635 阅读 · 0 评论 -
Vivado时钟分组约束的三类应用
在Vivado中通过set_clock_groups来约束不同的时钟组,它有三个选项分别是-asynchronous,-logically_exclusive和-physically_exclusive。-asynchronous应用于异步时钟,如下图所示,CLKA和CLKB由两个外部独立的晶振提供,那么跨时钟域路径即REGA到REGB0之间的路径可采用如下约束:create_cl转载 2018-01-27 22:12:21 · 4950 阅读 · 0 评论 -
Vivado使用误区与进阶——如何读懂用好 Timing Report
《XDC约束技巧》系列中讨论了XDC约束的设置方法、约束思路和一些容易混淆的地方。我们提到过 约束是为了设计服务,写入Vivado中的XDC实际上就是用户设定的目标 ,Vivado对FPGA设计的实现过程必须以满足XDC中的约束为目标来进行。那么:如何验证实现后的设计有没有满足时序要求?如何在开始布局布线前判断某些约束有没有成功设置?如何验证约束的优先级?这些都需要用到Vivado中的转载 2018-01-27 22:18:59 · 13282 阅读 · 0 评论 -
XDC约束技巧之时钟篇
Xilinx©的新一代设计套件 Vivado 中引入了全新的约束文件 XDC,在很多规则和技巧上都跟上一代产品 ISE 中支持的 UCF 大不相同,给使用者带来许多额外挑战。Xilinx 工具专家告诉你,其实用好 XDC 很容易,只需掌握几点核心技巧,并且时刻牢记:XDC 的语法其实就是 Tcl 语言。XDC 的优势XDC 是 Xilinx Design Constraints 的简写,但转载 2018-01-27 22:19:45 · 8614 阅读 · 0 评论 -
XDC约束技巧——CDC篇
上一篇《XDC约束技巧之时钟篇》介绍了XDC的优势以及基本语法,详细说明了如何根据时钟结构和设计要求来创建合适的时钟约束。我们知道XDC与UCF的根本区别之一就是对跨时钟域路径(CDC)的缺省认识不同,那么碰到FPGA设计中常见的CDC路径,到底应该怎么约束,在设计上又要注意些什么才能保证时序报告的准确性?CDC的定义与分类CDC是Clock Domain Crossing的简称,CDC时转载 2018-01-27 22:20:29 · 3710 阅读 · 2 评论 -
FPGA中系统运行频率计算方法
我们的设计需要多大容量的芯片?我们的设计能跑多快?这是经常困扰工程师的两个问题。对于前一个问题,我们可能还能先以一个比较大的芯片实现原型,待原型完成再选用大小合适的芯片实现。对于后者,我们需要一个比较精确的预估,我们的设计能跑50M,100M 还是133M? 首先让我们先来看看Fmax 是如何计算出来的。图(1)是一个通用的模型用来计算FPGA的。我们可以看出,F...转载 2018-04-27 13:23:49 · 5330 阅读 · 0 评论