電子設計自動化演算法

時序圖與最長路徑分析(timing graph & longest-path analysis)

靜態時序分析底下藏著一個優美的圖演算法。整顆晶片被建模成一張有向無環圖——節點是接腳、邊承載延遲——而「電路能否在目標時脈下運作?」這個問題,就化為「從任一發射正反器到任一捕捉正反器,延遲最長的路徑是多少?」工具不會逐一追蹤數十億條可能路徑(那會比宇宙年齡還久),而是在每個節點算出單一數字,並在一次掃描中向前傳播。

這就是區塊式 STA,本質上是專案排程裡的 PERT/關鍵路徑法:依拓樸順序走訪節點,在每個節點把它的到達時間設為所有入邊(前驅到達時間+邊延遲)的最大值。一次線性時間的前向掃描,就得出每個端點的最差到達時間;一次後向掃描傳播所需時間,而到達時間減所需時間就是每一點的時序餘裕——瞬間揭露關鍵路徑。其精妙之處在於:在每個節點取「最大值」,把指數多條路徑折疊成線性計算,這正是 STA 能在數分鐘內為十億閘晶片簽核的原因。

arrival(n) = max over fan-in p of ( arrival(p) + delay(p→n) ); slack = required − arrival

區塊式 STA 在設計上偏向悲觀——它在每個節點都傳播最差情況,因此一條實際永遠不會被觸發的「偽路徑」仍可能顯示為關鍵路徑,直到工程師告訴工具忽略它為止。

又称
timing DAGblock-based STAPERT analysis時序圖