赞
踩
今天课程主体:完成时序分析和约束的基本流程,认识用到的工具和软件。
再由目的寄存器能够正确的接收源寄存器发射过来的数据条件:Slack = Tclk + Tskew - Tsu - Tco - Tdata >= 0可知,当数据传输时间不变时,Tclk越小,即*时钟频率越高,时钟周期就越小,则Slack越容易接近零,甚至小于零。总存在一个零界点使得Slack等于零。此时对应的Tclk就是最高频率。
Clocks: 这一项是显示当前的设计中有哪些时钟。由图二右侧界面可知,此例中时钟约束频率为1GHZ(但是实际你可能只会给他50MHZ,这是软件报告的设计中的时钟信号的约束频率),则是因为如果用户没有对时钟信号加约束,软件就会自动和对分析出的是时钟信号加约束,这个约束会按照最大的可能来约束(应该就是最大时钟频率),也就是设置时钟频率为1GHZ。会用1GHZ来对此例中的逻辑电路进行分析。
当分析建立时间余量的时候,使用Slow 1200mV 85C Model模型来分析。
由图3右侧结果可知,Fmax=242.42MHZ。这说明这个代码所描述的逻辑电路在Cyclone IV E EP4CE10F17C8(65nm) 这个器件以及芯片内核供电电压1200mV,工作温度85度情况下的慢速传输模型下能最高运行的时钟为242.42MHZ。这说明如果我们实际输入时钟频率为50MHZ,在这种情况下,输入时钟频率是满足条件的。
但是!软件并不知道我们实际的输入时钟(如果你没给软件约束),它会认为实际输入的时钟频率为Clocks中约束的频率1GHZ。所以它认为这种情况下不满足时钟输入条件,1GHZ>Fmax=242.42MMHZ,因此这一项报错(变红)。
先看图4,途中共有4条寄存器路径。分析设计的时序路径的时候,一般是以寄存器到寄存器分析的,不跨寄存器分析。不然图中应有5条寄存器路径。再从四条路经中选出最长的路径,假设是从上到下的第二条,那么这条路径在途中这个逻辑电路中,就是属于最坏路径。因为它Tdata最长,最容易坏事,导致Slack不足。
软件计算最高时钟频率的时候,是根据最坏路径的建立时间余量来计算的。
点击图5界面左侧的Worst—Case Timing Paths(最坏时序路径),由界面右侧可知,里面都是在此情况下,并且输入的时钟频率(软件认为他是1GHZ)的情况下,有这么多条会导师Slack小于零的情况,其中最坏路径就是第一条(红色矩形框框住的),这就是此模型情况下的最坏路径。软件也正是根据这条路径才算出了此情况下Fmax的值(此时最坏路径也能刚好满足数据传输条件Slack=0)。
但是因为实际输入时钟可能只有50MHZ,现在软件却用1GHZ来分析,分析的结果也没啥意义。那我们就希望软件用输入频率50MHZ来分析,这该怎么办?这时候就需要用到时钟约束了
首先打开Tools栏中的TimeQuest Timing Analyzer。即打开TTA软件。
创建时序网表,Tasks 中的Create Timing Netlist 按钮。
读取SDC文件。Synopsys Design Constrains File
可以看报告,如图6所示。也可以加入约束。
加入时钟约束,点击上栏中“Constraints”中的“create Clock”,结果如图7所示。只是为了告知软件输入频率值,软件再用这个值软件去做时序分析,但是我们实际输入不受限制。图7中各名称介绍
对于系统已经约束了的时钟,比如CLK50M,系统自动约束到了1GHZ,此时我们自己再执行第5步是执行不通的,此时钟的约束不会按照我们的约束变化,这时候就直接对CLK50M信号进行改动l,右键Base,如图9所示。结果如图10所示。注意,图10中不能修改Clock name的名称,否则此次修改仍然无效。
注意,每在TTA中执行一个操作后,都需要留意console窗口中的报告,看此次操作是否执行成功
所有的约束操作完成后,需要执行写SDC文件的操作,这个操作会生成包含所有约束的SDC文件。即双击“Write SDC File ”如图11所示。SDC文件内部如图12所示。红色方框内代表创建了一个代号为CLk50M的约束时钟,周期为20ns,上升沿从0ns开始,下降沿从10ns开始,占空比也就是百分之五十,映射的实际逻辑代码端口为CLK50M。
加入约束时钟后的模型分析结果如图13所示。
Fmax = 199.88HZ,相比图3中的结果,此优化的最高频率降低了。说明EDA软件仅会根据约束需求去布局布线以达到约束要求,但是每次不会以最优的情况去编译。主要是因为全局资源有限,在满足约束条件下,需要空出资源给别的逻辑电路满足约束条件,见《FPGA时序约束与分析》1.2节。
所以在设计中一定要最起码加入合理的时钟约束。否则若有部分资源过约束(可能是FPGA自动约束或你自己约束的,花费了大量资源,实际可以不必),那么可能导致你本来应该实际输入50MHZ的时钟,但是由于资源不够,它的最高频率只能为48MHZ,这样就不满足实际条件,特别是在逻辑比较复杂情况下。而如果你进行合理约束的话,FPGA就能空出更多资源给此时钟布局布线,或许就能满足此条件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。