數位邏輯與基本元件

同步設計與建立/保持時序(synchronous design and setup/hold timing)

同步設計是一種簡單而強大的紀律:讓單一共享時脈來決定每件事何時發生。與其讓電路的每個部分在它的輸入碰巧改變時就更新——在充滿回授與不等閘延遲的海洋裡那會是一團混亂——不如讓每個儲存元件都只在時脈邊緣、全部一起更新。這就像一支聽從單一舵手的划船隊:沒人按自己的節奏划,所以船乾淨俐落地前進。你用的幾乎每顆晶片都是同步的,因為這份共享的心跳正是讓複雜硬體可預測的原因。

從一個時脈邊緣到下一個,節奏是這樣的:在邊緣,正反器捕捉新狀態;它們的輸出接著驅動組合邏輯,算出下一狀態;那個結果有「直到下一個邊緣」的時間去穩定;而在那下一個邊緣,正反器把它捕捉起來。為了讓這可靠,每個正反器都要滿足兩條時序規則。建立時間(setup time)說的是資料輸入必須在時脈邊緣前一點點就停止改變並保持穩定。保持時間(hold time)說的是它必須在邊緣後一點點仍保持穩定。兩者合起來界定了邊緣周圍一個小窗口,期間資料不得變動。若組合邏輯太慢、來不及在建立時間前穩定,你就得到一個建立違規(setup violation)——資料在變動中途被取樣。

它為何重要:這些時序規則把邏輯和速度連起來。時脈週期至少要等於任兩個正反器之間最長的組合延遲,加上正反器自身的延遲,再加上建立時間。那條最長路徑就是關鍵路徑,它決定了最高時脈頻率——你無法把時脈打得比最慢的邏輯能穩定的速度還快。違反建立可以靠放慢時脈或縮短路徑來修;違反保持(取樣到太早抵達的資料)卻無法靠放慢時脈來修,是更危險的錯誤。弄錯了,正反器就可能進入亞穩態,懸在 0 與 1 之間,產生無法預測的結果。

假設兩個正反器之間最長的邏輯路徑要花 0.8 奈秒才穩定,正反器自身再加 0.1 奈秒延遲,建立時間是 0.1 奈秒。時脈週期至少要 0.8 + 0.1 + 0.1 = 1.0 奈秒,所以最高時脈頻率是 1 / 1.0 奈秒 = 1 GHz。把那條關鍵路徑縮短,你就能打更快的時脈;其他都幫不上忙。

正反器之間最慢的路徑加上建立時間,就定下最短的時脈週期——速度是一筆時序預算。

更高的時脈頻率不是免費的速度。只有當關鍵路徑能及時穩定,你才能把時脈拉高;否則就會出現建立違規與錯誤結果。「百萬赫茲迷思」——以為 GHz 越多就一定越快——忽略了真實效能是「指令數 times 每指令週期數 times 週期時間」。

又稱
clocked design同步電路設計建立時間與保持時間