verilog面试宝典[5]-时钟与约束问题
by yang
最近准备数字IC岗时复习整理的知识点,参考了比较火的fpga面试题,和一些相关知识。主要是写着自己看着方便的,有很多不严谨的地方,有些地方有参考链接,那些博客写的都很好。
Part.5
时钟与约束问题
1:数字电路中,时钟是整个电路最重要、最特殊的信号:
2:FPGA中的全局时钟网络:
3:什么是时钟抖动(jitter)、时钟偏移(skew)?
5:时序约束的概念和基本策略?
6:附加约束的作用?
7:在通常的 FPGA 设计中对时钟偏差的控制主要有以下几种方法
时钟与约束问题
1:数字电路中,时钟是整个电路最重要、最特殊的信号:
- 系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小,否则就可能造成时序逻辑状态出错;
- 时钟信号通常是系统中频率最高的信号;
- 时钟信号通常是负载最重的信号,所以要合理分配负载。
出于这样的考虑在 FPGA 这类可编程逻辑器件内部一般都设有数量不等的专门用于系统时钟驱动的全局时钟网络。
2:FPGA中的全局时钟网络:
- 负载能力特别强, 任何一个全局时钟驱动线都可以驱动芯片内部的触发器;
- 时延差特别小;
- 时钟信号波形畸变小,工作可靠性好。
对于一个设计项目来说,全局时钟(或同步时钟)是最简单和最可预测的时钟。
最好的时钟方案是:由专用的全局时钟输入引脚驱动单个主时钟去控制设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟。CPLD/FPGA都具有专门的全局时钟引脚,它直接连到器件中的每一个寄存器。这种全局时钟提供器件中最短的时钟到输出的延时。
同步设计时, 全局时钟输入一般都接在器件的时钟端,否则会使其性能受到影响。
对于需要多时钟的时序电路, 最好选用一个频率是它们的时钟频率公倍数的高频主时钟。
3:什么是时钟抖动(jitter)、时钟偏移(skew)?
-
抖动:指的是时钟周期的变化,两个时钟周期之间存在的差值,也就是说时钟周期在不同的周期上可能加长或缩短。这个误差是在时钟发生器内部产生的,它是一个平均值为0的平均变量。和晶振或者PLL内部电路有关,布线对其没有影响。在设计中无法避免它能带来的影响,通常只能在设计中留有一定的margin.
-
偏移:是指同样的时钟产生的多个子时钟信号之间的延时差异。skew通常是时钟相位上的不确定。由于时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了skew。完成布局布线后,物理路径延时是固定的,所以在设计中考虑到时钟偏移,就可以避免偏移带来的影响。
5:时序约束的概念和基本策略?
时序约束主要包括周期约束(触发器到触发器),偏移约束,静态时序路径约束三种。通过附加时序约束可以综合布线工具调整映射和布局布线,使设计达到时序要求。
附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对FPGA/CPLD输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。
6:附加约束的作用?
1:提高设计的工作频率(减少了逻辑和布线延时);
2:获得正确的时序分析报告;(静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具可以正确的输出时序报告)
3:指定FPGA/CPLD的电气标准和引脚位置。
7:在通常的 FPGA 设计中对时钟偏差的控制主要有以下几种方法:
- 控制时钟信号尽量走可编程逻辑器件的的全局时钟网络。 在可编程逻辑器件中一般都有专门的时钟驱动器及全局时钟网络,不同种类、型号的可编程逻辑器件,它们中的全局时钟网络数量不同, 因此要根据不同的设计需要选择含有合适数量全局时钟网络的可编程逻辑器件。一般来说,走全局时钟网络的时钟信号到各使能端的延时小,时钟偏差很小,基本可以忽略不计。
- 若设计中时钟信号数量很多,无法让所有的信号都走全局时钟网络,那么可以通过在设计中加约束的方法,控制不能走全局时钟网络的时钟信号的时钟偏差。
- 异步接口时序裕量要足够大。局部同步电路之间接口都可以看成是异步接口,比较典型的是设计中的高低频电路接口、I/O 接口,那么接口电路中后一级触发器的建立—保持时间要满足要求,时序裕量要足够大。
- 在系统时钟大于 30MHz 时,设计难度有所加大,建议采用流水线等设计方法。?
- 要保证电路设计的理论最高工作频率大于电路的实际工作频率。
仿真时序问题推荐参考《通向FPGA之路---七天玩转Altera之时序篇》pdf资料