本文档可提供新的版本。客户应 单击此处 前往查看最新版本。
2.1.5.1. 时序报告命令
2.1.5.2. Fmax汇总报告(Fmax Summary Report)
2.1.5.3. Report Timing命令
2.1.5.4. 报告逻辑电平深度
2.1.5.5. 报告相邻路径(Report Neighbor Paths)
2.1.5.6. Report CDC Viewer命令
2.1.5.7. Report Custom CDC Viewer命令
2.1.5.8. 报告时间借用数据
2.1.5.9. 将约束与时序报告相关联
2.1.5.10. 从Timing Analyzer运行Design Assistant
2.1.5.11. 在其他工具中定位时序路径
2.2.1. 建议的初始SDC约束
2.2.2. SDC文件优先级
2.2.3. 迭代约束修改(Iterative Constraint Modification)
2.2.4. 使用实体绑定的SDC文件(Using Entity-bound SDC Files)
2.2.5. 创建时钟和时钟约束
2.2.6. 创建I/O约束
2.2.7. 创建延迟和偏移约束(Creating Delay and Skew Constraints)
2.2.8. 创建时序异常(Creating Timing Exceptions)
2.2.9. 使用Fitter过约束(Using Fitter Overconstraints)
2.2.10. 示例电路和SDC文件
2.2.5.6.2. 时钟不确定性
默认情况下,Timing Analyzer创建理想的时钟并具有完美的边沿。要模仿诸如抖动的时钟级(clock-level)效果,您可以对这些时钟边沿添加不确定性。 Timing Analyzer自动计算相应的设置和保持不确定性,并将这些不确定性应用于设计中的所有时钟传输,即使您的.sdc文件中未包含derive_clock_uncertainty命令也是如此。设置和保持不确定性是正确约束设计的关键部分。
对于每条适应路径,Timing Analyzer从数据所需时间中减去设置不确定性,并将保持不确定性加入到数据所需时间中。这略微减少了每条路径上的设置和保持时序裕量(slack)。
Timing Analyzer会考量三种时钟到时钟传输的不确定性时钟效应:内部锁定传输,时钟间隔传输和I/O接口时钟传输。
- 当器件中发生寄存器到寄存器的传输,并且源时钟和目的时钟来自同一个PLL输出管脚或时钟端口时,会发生内部锁定传输。
- 当器件的内核中发生寄存器到寄存器的传输,并且源时钟和目的时钟来自不同的PLL输出管脚或时钟端口时,会发生时钟间隔传输。
- 当数据从I/O端口传输到器件的内核或从器件的内核传输到I/O端口时,会发生I/O接口时钟传输。
要手动指定时钟不确定性,请使用set_clock_uncertainty命令。您可以分别指定设置和保持的不确定性。您还可以对上升和下降时钟跳变分别指定值。您可以覆盖derive_clock_uncertainty命令自动应用的值。
如果PLL输入上的时钟抖动在目标器件中PLL的输入抖动规范内,那么derive_clock_uncertainty命令会考量PLL时钟抖动。如果PLL的输入时钟抖动超出规范,那么使用set_clock_uncertainty -add命令为PLL输出时钟增加额外的不确定性,以解决过多的抖动。有关抖动规范,请参考器件手册。
当抖动超过器件的抖动规范时,您还可以使用set_clock_uncertainty -add来计算电路板的峰峰(peak-to-peak)抖动。在这种情况下,您将不确定性加入到等于1/2抖动值的设置及保持中:
set_clock_uncertainty –setup –to <clock name> \
-setup –add <p2p jitter/2>
set_clock_uncertainty –hold –enable_same_physical_edge –to <clock name> \
–add <p2p jitter/2>
对于Timing Analyzer如何应用derive_clock_uncertainty和set_clock_uncertainty的值,有一组复杂的优先规则,这取决于.sdc文件中命令和选项的顺序。以下Help主题涵盖这些规则的完整说明。如果您遵循以下建议,这些优先规则更容易实现:
- 要将您自己的时钟不确定性值分配给任何时钟传输,请在.sdc文件中的derive_clock_uncertainty命令之后添加 set_clock_uncertainty异常。
- 对set_clock_uncertainty使用-add选项时,您指定的值是derive_clock_uncertainty值的附加值。如果未指定-add ,那么您指定的值将替换derive_clock_uncertainty的值。