时序约束 中:
derive_pll_clocks
derive_clock_uncertainty
这两个命令常用于时序约束文件中,主要用于帮助 Quartus 自动推导时钟相关信息,以便进行时序分析。
1. derive_pll_clocks
- 该命令用于自动推导 PLL(Phase-Locked Loop)时钟 的信息。
- PLL 时钟 是通过相位锁定环路从输入时钟信号生成的多个输出时钟。通过使用此命令,Quartus 会根据设计中的 PLL 设置,自动识别和生成这些输出时钟,确保它们能够正确参与时序分析。
- 该命令会查找所有配置了 PLL 的模块,并自动提取其时钟频率、相位、时钟树等信息,从而帮助时序分析工具理解和处理时钟信号。
2. derive_clock_uncertainty
- 该命令用于自动推导 时钟不确定性(clock uncertainty)。
- 时钟不确定性表示的是由于信号传播延迟、时钟偏移、时钟源不稳定等因素引起的时钟的误差。这通常涉及时钟源和 PLL 输出时钟的精度。
- 通过这个命令,Quartus 会自动计算时钟信号的不确定性,并将其纳入时序分析中。时钟不确定性对设计的时序裕度(timing margin)有重要影响,确保时钟信号在设计中是可靠的。
作用总结:
derive_pll_clocks
:自动推导和识别设计中的 PLL 时钟,确保所有由 PLL 生成的时钟信号都能参与时序分析。derive_clock_uncertainty
:自动计算和推导时钟不确定性,并纳入时序分析中,确保时钟误差被考虑进时序验证,帮助提高设计的时序准确性。
这两个命令可以帮助 Quartus 更好地处理时钟约束,自动推导时钟信息并进行时序分析,确保时序设计的正确性。
不加这两个命令 (derive_pll_clocks
和 derive_clock_uncertainty
) 会影响 Quartus 在时序分析中的时钟处理,具体表现为:
1. derive_pll_clocks
不加的影响:
-
自动推导 PLL 时钟失效:
- 如果你没有加上
derive_pll_clocks
,Quartus 将 无法自动推导由 PLL(Phase-Locked Loop)生成的时钟。 - 如果设计中有多个由 PLL 生成的时钟,系统可能无法正确识别它们的频率、相位和依赖关系,从而导致时序分析中的时钟源不完整。
- 这意味着设计中由 PLL 生成的时钟可能不会参与时序分析,可能导致时序错误或警告,尤其是在设计中大量依赖 PLL 时钟时。
- 如果你没有加上
-
需要手动指定时钟:
- 如果不使用
derive_pll_clocks
,你必须手动为每个 PLL 输出时钟设置约束,指定时钟频率、相位等信息。这不仅增加了工作量,而且也容易因为手动设置错误而导致时序问题。
- 如果不使用
2. derive_clock_uncertainty
不加的影响:
-
时钟不确定性未考虑:
- 如果不加
derive_clock_uncertainty
,Quartus 将 无法自动计算时钟的不确定性(clock uncertainty),也就是说,时钟信号的误差和偏移不会被考虑进时序分析中。 - 时钟不确定性是影响时序可靠性的一个重要因素。如果没有考虑这些不确定性,可能导致一些时序裕度不足的情况,特别是在高频时钟和复杂设计中,时钟源的稳定性和时钟延迟可能造成额外的时序问题。
- 如果不加
-
潜在的时序错误:
- 时钟不确定性如果没有正确考虑,会影响时序分析的精确度,从而可能导致时序错误无法被发现。例如,时钟源的抖动、偏移或不稳定性可能导致一些信号在时钟周期内到达不稳定的时刻,进而出现时序违例(timing violation)。
总结:
- 不加
derive_pll_clocks
:设计中的 PLL 时钟无法自动识别,需要手动设置,这可能导致时序问题,尤其是当设计复杂且涉及多个 PLL 时钟时。 - 不加
derive_clock_uncertainty
:时钟的不确定性未被考虑,可能导致时序分析不准确,增加时序违例的风险。
因此,建议在时序约束中加上这两个命令,它们可以帮助 Quartus 自动推导出设计中的时钟和时钟不确定性,确保时序分析的准确性,避免可能的时序问题。