引言
本文主要介绍了时序设计和时序约束。
一、时序设计(Timing Design)
电路设计的难点在时序设计,时序设计的实质就是满足每一个触发器的建立时间、保持时间的要求,从而达到时序收敛的过程,扩大一点地说,就是使得数据能够在正确的时间到达从而正确地被处理,这个就要对设计的电路非常的熟悉。
二、时序收敛(Timing Closure):
时序收敛是现场可编程逻辑门阵列、专用集成电路的电路设计过程中,通过调整、修改设计,从而使得所设计的电路满足时序要求的过程。
三、时序约束(Timing Constraint):
时序约束是规范设计的时序行为,主要包括周期约束,偏移约束,静态时序路径约束三种,通过附加时序约束,可以指导综合工具和布局布线工具,使设计达到时序要求。
create_clock -period 10 waveform {0 5} [get_ports clk]
时序约束的作用如下:
- 提高设计的工作频率(减少了逻辑和布线延时);
- 获得正确的时序分析报告(静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具可以正确的输出时序报告)。
四、时钟设计(Clock Design):
在通常的 FPGA 设计中对时钟偏差的控制主要有以下几种方法:
- 控制时钟信号尽量走可编程器件的的全局时钟网络。在可编程器件中一般都有专门的时钟驱动器及全局时钟网络,不同种类、型号的可编程器件,它们中的全局时钟网络数量不同,因此要根据不同的设计需要选择含有合适数量全局时钟网络的可编程器件。通常来说,走全局时钟网络的时钟信号到各使用端的延时小,时钟偏差很小,基本可以忽略不计。
- 若设计中时钟信号数量很多,无法让所有的信号都走全局时钟网络,那么可以通过在设计中加约束的方法,控制不能走全局时钟网络的时钟信号的时钟偏差。
FPGA 设计中对时钟的正确操作(例如分频等等)如下:
- FPGA 芯片有固定的时钟路由,这些路由能够有效地减少时钟抖动和时钟偏差。需要对时钟进行相移或变频的时候,一般不允许对时钟进行逻辑操作(即使是最基本的与或非也要避免),因为这样不仅会增加时钟的偏差和抖动,还会使时钟带上毛刺。
- 一般的处理方法是采用 FPGA 芯片自带的时钟管理器如 PLL、DLL 或 DCM,或者把逻辑转换到触发器的 D 输入(这些也是对时钟逻辑操作的替代方案)。