浅谈基于FPGA开发的时钟约束方法
在FPGA开发过程中,我们完成RTL设计之后,下面一步需要将RTL进行综合,这就会牵扯到时钟约束问题。今天我们来聊一聊时钟约束。
时钟约束概念
对于同一个时钟域的所有电路来讲,为了保证电路功能的正确性,所有的电路都必须满足,这个时钟域所要求的电路速度。我们一般通过添加基本的时钟约束,达到限定电路速度的目的。
影响电路速度的因素
在FPGA上面,影响硬件电路速度的原因大概有一下三类:芯片内部器件的建立(setup)保持(hold)时间;电路中的逻辑延时(celldelay);电路中的布线延时(wiredelay);
所以我们看出,以上三个原因,共同决定了硬件电路的最高频率。如何添加时钟约束
总体思路是,我们一般根据SPEC需要,再结合对电路的分析,以及合理的估算,进行时钟约束。但是下面几个因素,需要我们特别注意。RTL设计与芯片的选择
对于同一颗芯片,如果RTL架构合理,流水线排布高效,代码执行效率好,则能达到的时钟频率会较高;同理,相同的RTL代码,如果选择高阶的芯片,则同样能达到更高的时钟频率。
第一种情况,对电路设计者的要求较高,RTL的代码设计会相对复杂。第二种情况,选择更高阶的芯片,意味着成本的增加。所以在设计过程中,往往是在两者之间进行权衡。时钟边沿的使用
在这里需要指出一个问题,时钟的边沿使用问题。在大多数的同步电路设计中,都只会使用时钟一个边沿,上升沿或者下降沿(一般使用上升沿的较多)。
这是因为工具在进行时序分析时,会对寄存器时钟端口的反相情况进行处理。当发现下降沿和上升沿同时出现的情况,延迟会自动限制为约束时钟的一半,即时钟速度放慢一倍,这往往不是我们想要的电路综合结果。电路速度的预估
在添加时钟越是时,我们还需要对电路的速度进行合理预估,过快或者过慢的时钟约束,都不是好的约束。过慢的约束,达不到SPEC需要,设计的电路肯定不能使用。过快的约束,会增加布局布线(placeroute)的难度,可能会导致拥塞,布局布线失败,或者芯片发热等后果。
在实际工作中,一般的约束策略是:约束的最高频率为实际工作频率的110,即将约束时钟放大至工作时钟的1。1倍。需要指出的是,在实际工作中,时钟的约束并不是孤立的,往往和inputdelayoutputdelay,clockuncertaintyclockskew等约束条件,共同作用,所以在约束余量力度方面,要一起进行考虑。
小结
时钟约束在所有的约束条件里面,重要性十分突出。一个合理的时钟约束,能够得到较优的电路综合结果。个人建议,在平时的工作学习中,多做实验,多比较最后综合得到的电路,这会对我们理解时钟约束,有很好的帮助。