在設計中,由於時序路徑中的邏輯單元本身存在驅動能力有限的問題,所以在滿足時序要求的同時也要保證邏輯單元工作的穩定性,即邏輯單元驅動的負載不應該超過它所能控制的驅動範圍。如下圖所示。
可以通過設置時序設計規則約束來指導時序分析工具正確地評估單元是否能夠在穩定的合理工作狀態下工作。
時序設計規則約束包含如下三個方面。
1. 最大轉換時間
所有的單元驅動能力是有限的,故其驅動的最大轉換時間也是有限的。爲了讓所有的單元在正常的驅動力範圍內工作,需要設置最大轉化時間來控制單元的驅動力過載的問題,否則可能導致不能正常工作。
使用SDC命令set_max_transition來定義最大轉換時間約束,命令示例如下。
set_max_transition 0.6 [all_outputs]
以上命令定義所有輸出驅動器的最大轉換時間爲0.6ns。
2. 最大電容負載
單元驅動轉換時間本質上取決於輸出負載的大小,因此單元的驅動狀態根本原因是受到輸出端的負載影響。爲了讓設計中的所有單元都在正常的驅動力範圍內工作,也可以設置單元輸出端的最大電容負載,超過最大負載值的限制有可能會導致單元不能正常工作。
使用SDC命令set_max_capacitance來定義最大電容負載約束,命令示例如下。
set_max_capacitance 0.5 [all_outputs]
以上命令定義所有的輸出驅動端的負載電容爲0.5pF。
3. 最大扇出
扇出是指邏輯單元輸出端直接連接的下級單元的輸入端的個數。由於扇出直接影響負載的大小,所以爲了讓所有單元都能正常工作,可以設置輸出端的最大扇出值,超過最大扇出值的限制就有可能導致單元不能正常工作。
使用SDC命令set_max_fanout來定義最大扇出約束,命令示例如下。
set_max_fanout 16 [all_outputs]
以上命令定義了所有輸出驅動端的最大扇出值爲16。