常用约束语句说明
关于Fmax
上述是实现Fmax的计算公式,clock skew delay的计算如下图,
就是两个时钟的差值。到头来,影响Fmax的值的大小就是组合逻辑,而Fmax是针对最差劲的节点给出的最高频率,而且Tsu会影响Fmax的大小。
那么提高Fmax可以通过两种方法解决:(1)将两个时序逻辑之间的大组合逻辑分为两个小的逻辑,即采用流水线设计方法 ;(可以在组合逻辑的两端加上寄存器,这样可以增加时序余量) ;(2)更改时序约束或者更改一些综合或者实现选项,让开发工具去解决问题,如下图进行相关设置。
如下图是一个实现乘法器的操作,那么我们可以将有40ns压力的组合逻辑分成多个小的的模块,即流水线形式,这样可以提高数据的吞吐量。
关于PLL约束
首先altera内部的PLL之间是相互关联的,在对PLL进行约束时,derive pll clocks是驱动所有的PLL的输出.
上述是与pll相关的时序约束,其中只要设定约束,就可以实现自动对PLL的输出时钟信号进行约束。
用于交互时钟,内部时钟,和IO接口的不确定时间的自动检测,一般只用在FPGA芯片中,一般此命令需要加入到时序约束中。
此部分也是非常的重要的部分,其中report all summaries 是把所有情况列出来,report top failing paths 是列出所有违规的路径,此路径默认深度是200,可以手动去更改,report all core timings是列出所有核心的路径,默认是1000,如果需要可以去更改。
对于PLL的输出时钟,分为有数据交换和无数据交换两部分。对于无数据交换,约束比较简单,set false path加上PLL的输出时钟名称,约定PLL的输出时钟之间无数据交换。
关于供源时钟
如上图所示,供源时钟就是从FPGA中的fpga_clk输入,然后经过某个管脚直接输出,然后供给ic1和ic2来实现,还是fpga_clk的时钟频率。
对于上图是FPGA和某IC之间的通信,这种情况是建立不了时序约束的,他们没有彼此的独立时钟源,反而观之下图可以实现与内部寄存器相类似的约束功能
延迟源分析
对于延迟方面,分为内部和外部延迟,如图1所示。图2是内部延迟,寄存器之间的一些延迟也是属于内部延迟,外部延迟如图3所示
图1延迟分析
图2 内部延迟
图3 外部延迟
输入输出延迟分析
IC2FPGA模型来讲的。参照下图:
与其相关的公式:
set max/min delay
对于上一节需要计算时钟偏斜,所以需要计算延时的最大值和最小值,即set max/min delay的参数设置。这个参数的设置具体需要根据实例中先估计一个大概值,然后再精确,留足余量。