quartus中的时序约束常用方法
一、约束操作
quartus中有三种时序约束方法:
1️⃣Timing Setting
2️⃣Wizards/Timing Wizard
3️⃣Assignment/Assignment Editor
一般来说,前面两种是全局约束,后面一种是个别约束。
先全局,后个别。约束操作的目标就是得到合理的时序报告。
二、指定全局时序约束
(1)时序驱动的编译(TDC)
Fitter Setting,约束设置,可以调整时序的优先策略并自动提供解决方案。时序编译的主要操作有:
优化时序:将关键路径的节点放置地更近,降低延时,提高余量
优化保持时间:修改布局布线,满足保持时间和最小时序要求
优化IO单元寄存器放置:为了满足时序,自动将寄存器移到IO单元中。
其中优化保持时间,还可以选择优化IO路径保持时间与最小tPD路径的时间,或者是所有路径。
优化的方法就是在关键路径上添加布线延时以满足保持时间的要求。
(2)全局时钟设置
在timing setting 中即可设置全局时钟,用于一个时钟域的全局时钟约束。在timing requirements & options的中间位置。
(3)全局IO时序约束
在全局时钟设置的上面就是IO的最小时序设置。设置的参数包括:tSU,tCO,tPD和最小延时要求的tH、Min tCo、Min tPD共六个参数,具体的使用方法需要在实际的工程中体现。
(4)时序分析和时序报告
quartus中在综合后会自动生成时序分析报告,可以通过时序分析报告查看设计的时序要求是否符合预期。
(5)时序向导(Timing Wizard)
由自带的软件向导设置全局时钟。
三、指定个别时序约束
(1)指定个别时钟要求
quartus默认的时钟有两类:独立时钟和衍生时钟。时钟域对应的是独立时钟,对于衍生时钟,则依附于对应的独立时钟的时序。对两类时钟的声明也是不一样的,独立时钟需要时钟频率和占空比,而衍生时钟则需要相位差、频率倍数等关系约束。
(2)个别时序约束
时钟设置:在设置独立时钟时就可以将其的物理节点指定。
输入输出最大延时:输入延时直接影响时钟建立、保持时间,输出直接影响插传输延时和路径延时。
反相时钟:可以声明某个时钟的反相时钟信号。
非时钟:将某些不必要的时钟去除。
(3)时序约束的种类
单点:输入到所有寄存器的延时约束
点到点:输入到某个寄存器的延时约束
通配符:输入到某些相似寄存器的约束
时序组:输入到某组寄存器的延时
(4)查看所有时序约束
在前面的时序约束操作最后都可以在quartus中的Assignment Editor中查看,也可以在里面将其删除。
四、小结
时序分析报告是得到这个设计的时序状况,而时序约束则是优化时序状况。时序约束的前提是有明确的时序设计目标。这点需要注意。
======== ======\\ ======= -
|| || \\ // \\ /-\
|| || || // // \\
|| || // || // \\
====== ======= || === ========
|| || || \\ // \\
|| || \\ || // \\
|| || \\ // // \\
|| || ======= // \\
作者:绿叶落秋风,专注FPGA技术分析和分享,转载请注明原文链接:https://www.cnblogs.com/electricdream/p/13627258.html,文中资源链接如下:
1. GITHUB开源仓库