编译完成后有时候TimeQusst Timing Analyzer标红,如图
Messages提示栏也会提示没有进行时钟约束。以前没有注意这个,直接就下载用了,也没影响,这次闲下来还是深入学习了下。笔记在这里做一下。
Q1:什么是时钟约束?
A1:时序约束,顾名思义就是对时钟信号进行约束,说白了,就是在代码里,输入的时钟信号你只会写input CLK_50M,你知道这是50Mhz的时钟,但是EDA软件如quartus它不知道,它只知道这是个时钟端口,那么它会根据时钟信号进行时序分析后,生成电路网表,不同的时钟信号会生成不同的优化电路网表。
Q2:如果不进行时钟约束,会怎样?
A2:如果不进行时钟约束,EDA软件会自动分配一个时钟信号。编译后点击查看Clocks选项可以查看。如图
这里时钟信号CLK就给了1000MHz,那么也就是说,EDA软件按照这个时钟信号进行时序分析以后,生成了最优化的电路。这个信号频率是1000MHz,一个周期的上升沿在0,下降沿在0.5ns。
Q3:为什么标红报错?
A3:按这个频率优化出来的电路,其内部时钟网表可能存在时序异常,也就是你所选用的这个器件,它不一定撑得起1GHz的频率(电路生成的寄存器之间,连线之间等存在延迟,而有的延迟不同导致电路功能不能正常发挥,这里具体可以详细了解时序分析,末尾附地址)。
Q4:FPGA或CPLD芯片所能支持的频率?
A4:在TimeQusst Timing Analyzer下,slow 1200mv 85C model和slow 1200mv 0C Model以及Fast 1200mv 0C model里,如图
Fmax表示最大频率,注意,这里的最大频率不是指器件本身的最大频率,而是根据你的代码和时钟约束综合以后的结果。大意就是,代码给了quartus,然后没给时钟约束,quartus就说,那我给你用个1GHz的时钟,然后他开始给你编译生成电路,弄完了以后它告诉你,哥啊,不行啊,我按刚才的条件弄出来电路了,不过有问题,我拿这个电路检验以后,发现我这样生成的电路最高只能支持250MHz的时钟频率。
所以现在明白为什么要时钟约束了,我就跑个50MHz频率的电路,谁让你给我整1GHz啊!占用内部资源不说还有问题。
Q5:不约束可以不?
A5:根据个人实际检验过,不约束在部分设计是可以的。不过不能保证全部设计,尤其是复杂的Verilog代码生成的复杂电路网表。而且不同时钟频率生成的内部网表是不同的(按我的理解应该是这样),quartus会根据当前时钟生成最优的电路。所以为了电路优化,也还是最好加上时钟约束吧。
A6:使用TimeQuest Timing Analysis软件
步骤:
1、打开TimeQuest Timing Analysis
2、创建时序网表
3、读取SDC文件
4、加入约束
具体操作:
1、右击TimeQuest Timing Analyzer,选择open;
或者菜单栏Tools,选择TimeQuest Timing Analyzer,如图
打开界面如图:
|