特权同学

FPGA实战演练逻辑篇49:基本的时序分析理论2

0
阅读(1762)

基本的时序分析理论2

本文节选自特权同学的图书《FPGA设计实战演练(逻辑篇)》

配套例程下载链接:http://pan.baidu.com/s/1pJ5bCtt

 

下面我们再来看一个例子,如图8.2所示,我们假设有4个输入信号,经过FPGA内部的一些逻辑处理后到达同一个输出端。FPGA内部的布线资源有快慢之分,就好比普通的国道和高速公路。通过高速通道所需要的路径延时假设为3ns-7ns,但只有两条可用;而通过慢速通道的路径延时通常要大许多,这里假设大于10ns(特权同学,版权所有)

1.bmp

8.2 时序分析实例2

默认情况下,如图8.3所示,离高速通道较近的din_2din_3路径被布线到了高速通道上,当前的4个信号在FPGA内部的延时分别为:din1 = 15nsdin2 = 4nsdin3 = 6nsdin4 = 13ns(特权同学,版权所有)

1.jpg

8.3 时序分析实例2默认布线延时

但是,我们实际的系统需求是这样的:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns(特权同学,版权所有)

按照前面给出的4个输入信号的默认布局布线情况来看,如图8.4所示,虽然din2din3din4都达到了要求,但是din1无法满足时序要求,我们通常认为这是时序违规。(特权同学,版权所有)

2.bmp

8.4 时序分析实例2默认布线时序违规情况

如果我们按照实际的需求对FPGA进行如下的时序约束:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。接下来,如图8.5所示,FPGA将重新进行布局布线。(特权同学,版权所有)

2.jpg

8.5 时序分析实例2重新布局布线

由于添加了时序约束,因此,FPGA的布局布线工具会根据这个实际需求,重新做布局布线。重新布局布线后的路径延时如下:din1 = 7ns, din2 = 4ns, din3 = 18ns, din4 = 13ns。显然,FPGA内部的时序全部都能够满足要求。(特权同学,版权所有)

3.jpg

8.6 时序分析实例2重新布局布线后的时序违规情况

关于约束,我们要稍微提一下两种不恰当的约束方法,即欠约束和过约束。我们假设下面提到的两种情况下的原始系统实际时序要求都是一样的,即前面我们所说的:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns(特权同学,版权所有)

但是下面这两种情况的约束不是完全按照实际系统时序需求来约束,我们来看看这些情况下会出现什么问题。(特权同学,版权所有)

首先来看看欠约束的情况(din1din2欠约束)。(特权同学,版权所有)

如果对本实例添加约束为:din1 < 20ns, din2 < 20ns, din3 < 20ns, din4 < 20ns。此时,由于4条路径的延时都能够控制在20ns要求之内,所以当前的约束都能够达到目标。(特权同学,版权所有)

但是,相对于实际的情况,有两种情形:

A. din1din2走了高速通道,那么当前约束也能够满足实际的时序要求;

B. din1din2都没有走高速通道,或者有1条路径走了高速通道,那么结果是一样的,整个系统的时序无法完全满足要求。(特权同学,版权所有)

再来看看过约束的情况(din3din4过约束)。(特权同学,版权所有)

如果对本实例添加约束为:din1 < 10ns, din2 < 10ns, din3 < 10ns, din4 < 10ns。此时,由于能够走高速通道使得路径延时小于10ns的路径只有2条,那么无论如何当前的约束都有2条无法达到目标。(特权同学,版权所有)

但是,相对于实际的情况,也有两种情形:

A. din1din2走了高速通道,那么当前约束也能够满足实际的时序要求;

B. din1din2都没有走高速通道,或者有1条路径走了高速通道,那么结果是一样的,整个系统的时序无法完全满足要求。(特权同学,版权所有)

这个简单的例子当然不会是FPGA内部实际的情况,但是FPGA内部的各种资源若要得到均衡的分配,设计者就必须添加一定的约束(时序约束),将设计的需求传达给工具,那么才有可能指导工具进行资源的合理分配,保证系统的基本性能要求得以实现。(特权同学,版权所有)

时序欠约束和时序过约束都是不可取的,设计者应该根据实际的系统时序要求,添加合适的时序要求(可以稍微过约束),帮助设计工具达到最佳的时序性能。(特权同学,版权所有)