積體電路設計

關鍵路徑(critical path)

想像一場接力賽:在最慢的那名選手跑完當前這一棒之前,整個隊伍都沒辦法開始下一棒。晶片內部的邏輯也是這麼運作的:每次時脈跳動時,資料從一個暫存器出發,穿過密密麻麻的一片閘電路,必須趕在下一次跳動之前抵達下一個暫存器。晶片能跑多快,只取決於它最慢的那次交接——所以那條最差、最慢的路徑就是關鍵路徑,時脈頻率的上限完全由它一手決定。

更準確地說,關鍵路徑是時序裕量最小的那條暫存器到暫存器的路徑——也就是訊號被要求抵達的時刻與它實際抵達的時刻之間餘量最小的那條。沿途的每個閘和每段連線都會增添一點延遲;把足夠多的延遲串起來,總和就可能超過時脈週期(減去建立時間),意味著資料在下一個時脈邊緣到來時還沒穩定下來,於是被捕捉到的就是錯誤的值。靜態時序分析透過在設計的時序圖上傳播各處延遲、並算出每個暫存器處的時序裕量來找到這條路徑,然後把裕量最差(最負,或最小的正值)的那條回報為關鍵路徑。

下面才是實務工程師真正在意的部分:關鍵路徑就是你為了提速而要去改的那一條。把它的延遲削下來——透過簡化邏輯、調整閘的尺寸,或者插入一級管線暫存器把一條長鏈從中砍成兩半——之後第二慢的那條路徑就成了你新的關鍵路徑。加快任何其他路徑對你的最高頻率毫無幫助;只有瓶頸才算數。所以時序收斂本質上就是一場打地鼠遊戲,反覆去攻擊當下戴著王冠的那條路徑。

clock period ≥ critical-path delay (max register-to-register delay + setup time); critical path = the path with minimum slack

時脈週期必須能容納最慢的那條暫存器到暫存器的延遲再加上建立時間;關鍵路徑就是時序裕量最小的那條路徑。

「關鍵路徑」一詞借自專案管理,在那裡它指的是決定一個專案最早完工時間的、由相互依賴的任務構成的最長鏈條——道理完全一樣,只不過把任務工期換成了延遲。還要注意,「最長」指的是延遲最長,而不是實體連線最長或閘數最多:一條由慢閘組成的短鏈,完全可能比一條由快閘組成的長鏈延遲更大。

又稱
longest pathworst-case pathspeed pathcritical timing path关键路径關鍵路徑