时序约束对项目有什么影响?
• 实现工具不会试图发现能够获得最佳速度的布局和布线方式
– 相反,设计实现工具试图满足您设定的性能目标
• 性能目标通过时序约束来体现
– 时序约束提高设计性能的途径是将逻辑放得尽可能近,从而使用尽可能短的布线资源
– 请注意,当我们讨论约束编辑器时,我们在这儿指的是Xilinx Constraints Editor
基本的约束方法
根据覆盖的路径不同,时序要求变成一些不同的全局约束。
最普通的路径类型包括: 1,输入路径 2,同步元件到同步元件路径 3,指定路径 4,输出路径 XILINX 的时序约束与每一种全局约束类型都有关。最有效的方法就是一开始就指定全局约束然后再加上指定路径的约束。在很多案例中,只要全局约束就可满足需求。 FPGA 器件执行工具都是由指定的时序要求驱动的。如果时序约束过头的话,就会导致内存使用增加,工具运行时间增加。更重要的是,过约束还会导致性能下降。因此,推荐使用实际设计要求的约束值。输入时序约束输入时序约束包括 2 种“系统同步输入”
“源同步输入” 输入时钟约束覆盖了输入数据的 FPGA 外部引脚到获取此数据的寄存器之间的路径。输入时钟约束经常用”OFFSET IN”约束。指定输入时钟要求的最好方法,取决于接口的类型(源/系统同步)和接口是 SDR 还是 DDR。 OFFSET IN 定义了数据和在 FPGA 引脚抓取此数据的时钟沿之间的关系。在分析 OFFSET IN约束时,时序分析工具自动将影响时钟和数据延迟的因素考虑进去。这些因素包括:
时钟的频率和相位转换
时钟的不确定
数据延迟调整
除了自动调整,还可以在与接口时钟相关的”PERIOD”约束中另外增加时钟不确定。关于增加”INPUT_JITTER”的更多信息,参见第三章的”PERIOD Constraints”。“OFFSET IN”与单输入时钟有关,默认情况下, OFFSET IN 约束覆盖了从输入 pad 到内部同步元件之间的所有路径。用于抓取那些从 pad 输入的数据的同步元件由指定的 OFFSET IN时钟触发。应用 OFFSET IN 约束被称为”global”方法。这是指定输入时序的最有效的方法。系统同步输入 在体统同步接口中,发送和抓取数据共用一个系统时钟。板上的布线延迟和时钟倾
斜限制了接口的工作频率。更低的频率也会导致系统同步输入接口典型的采用 SDR 应用。系统同步 SDR 应用例子,见图 2‐1。系统同步 SDR 应用中,在时钟上升沿从源器件发送数据,下一个时钟上升沿在 FPGA 中抓取数据。
全局”OFFSET IN”约束是对一个系统同步接口指定输入时序的最有效的方法。用这种方法,对每一个系统同步输入接口时钟都定义了一个”OFFSET IN”约束。这种单个约束覆盖了所有被同步元件抓取到的输入数据位的路径,这些同步元件由指定输入时钟触发。
指定输入时序:
1, 定义接口相关的输入时钟的时钟”PERIOD”约束;
2, 定义接口的全局”OFFSET IN”约束;
例子
理想的系统同步 SDR 接口的时序图见图 2‐2。
全局”OFFSET IN”约束是:
OFFSET = IN VALID BEFORE clock;
在”OFFSET IN”约束中, IN 决定了数据一开始有效的起始时间到抓取数据的时钟沿之间的时间。在这个系统同步例子中,数据在抓取数据的时钟沿之前 5ns 有效。VALID 决定了数据有效时间。在这个例子中,数据有效时间为 5ns。
对这个例子,完整的”OFFSET IN”约束和相关的 PERIOD 约束如下:
NET”SysClk”TNM_NET = “Sysclk”;
TIMESPEC “TS_Sysclk” = PERIOD”SysClk” 5ns HIGH 50%;
OFFSET = IN 5ns VALID 5ns BEFORE “SysClk”;
老规矩还是上一些文档和视频,主要内容如下:
推荐:优先看黑金的文档资料或视频教程(不是写的多么好,而是写的很友善,不至于像下面四个文档写的云里雾里,不过人家确实写的不错,手动滑稽)。然后看下面四个Xilinx推出的系列PPT,会让你学的更加充实。
地址如下:
链接: https://pan.baidu.com/s/1QDmpicpO6stzjnZhPuEWNA
提取码: 6fmc