整個晶元中時鐘訊號到達時間的差異成為時鐘偏移,即clock skew。在時序設計的時候,滿足暫存器的建立時間和保持時間的要求是最基本的設計原則。在相鄰的暫存器之間的資料傳輸延遲,與時鐘偏移應該滿足一定的關係,在本節中,我們來詳細地討論其關係。
通過圖1來看相鄰暫存器之間傳輸的時候的資料延遲和時鐘偏移,以及詳細的時序關係
圖 1 兩個相鄰觸發器之間的時鐘偏移
給定兩個相鄰的觸發器dff1和dff2以及乙個等電位時鐘分布網路,這兩個觸發器之間的時鐘偏移定義為:
tskew = t2 - t1在這裡t1和t2分別從市中院到觸發器dff1和dff2的延遲。
時鐘偏移中的短路徑問題與觸發器的保持時間違背很相似。在兩個相鄰觸發器之間的資料傳播延遲比時鐘偏移還短時,就會出現該問題。圖2中的電路圖和時序圖可以說明短路徑問題。由於同一時鐘沿到達第二個觸發器比新資料要慢,因此第二個觸發器在與第乙個觸發器同樣的邊沿處,切換為與第乙個觸發器同樣的值,這會使dff2在與dff1同乙個邊沿處移位同樣的資料,最終導致功能錯誤。
圖 2 含短路徑問題的電路
在兩個順序上相鄰的觸發器之間的資料路徑傳播延遲比兩者之間的資料偏移小的時候,就會出現短路徑問題。
通過圖3將兩個暫存器之間的各個延時資訊表示出來
圖 3 暫存器之間的各個部位延遲資訊
其中:
tcq1:第乙個觸發器的時鐘輸出延遲在以下條件下,會出現明顯的短路徑問題:trdq:從第乙個觸發器的輸出到第二個觸發器輸入的傳播延遲
tck2:第二個觸發器的時鐘到達時間與第乙個觸發器的時鐘到達時間之差
tck2 > tcq1 + trdq - thold其中thold是第二個觸發器的保持時間
該區域如圖4所示
圖 4 短路徑示意圖
因此,為了使設計完善,必須識別哪些是短路徑,設計者必須提取出時鐘偏移和短路徑延遲。
將時鐘偏移減小至最小值是解決短路徑問題的最好方法。將設計中的時鐘偏移保持在觸發器的最小延遲之下能提高設計對所有短路徑問題的健壯性。下面介紹一些常用的設計技術以使設計對時鐘偏移更健壯。
如圖3所示,通過在資料路徑上增加延遲(trdq1)而最終使整個資料路徑的延遲大於時鐘延遲,可以消除短路徑問題。在資料路徑中插入的延遲必須足夠大以保證資料路徑延遲一定能大於時鐘偏移。
時鐘翻轉是避免出現短路徑和時鐘偏移問題的另一種方法。在這種技術中,將時鐘相對於資料翻轉使用,這樣就自動消除了時鐘偏移。請注意,這麼做的前提是:在整個設計中,時鐘和資料是乙個確定的關係,並且這個關係是用於不會改變的,否則這樣設計也會出錯。
在傳送暫存器接收到時鐘沿前,時鐘會西安驅動接收觸發器讀入傳送值。圖5是實現時鐘翻轉方式的乙個小例子。
圖 5 時鐘反轉方法
可以看出,在插入足夠多的延遲後,接收觸發器會比源觸發器先接受到有效時鐘沿,當然這樣肯定會犧牲掉建立時間,同時提高了保持時間。
避免時鐘偏移問題的已知方法之一是使用交替相位時鐘,以下為幾種交替相位時鐘的設計技術。
交替使用時鐘沿
在這種設計方法中,順序上相鄰的觸發器使用相反的時鐘沿觸發,如圖6所示
圖 6 交替邊沿時鐘
這種方法為時鐘偏移提供了約半個時鐘週期的短路徑時鐘偏移餘量。
交替使用時鐘相位
圖7中的相鄰觸發器組分別由同一時鐘的兩個不同相位驅動,在這種情況下,任意兩個相鄰的觸發器之間都有與兩個相位的相位差大致相同的安全餘量。
圖 7 交替相位時鐘
必須注意一點,交替使用時鐘相位要求對原始時鐘訊號使用完全不同的時鐘約束。例如,在交替使用時鐘邊沿時,由於相鄰觸發器由同乙個時鐘週期相反的邊沿驅動,因此時鐘頻率的新約束值應該是初始約束頻率的一半。
在解決短路徑問題的時候,雖然已經提出了好幾種設計方法,但最常用的設計方法為在資料路徑上增加資料延遲。對於fpga或asic來說,各個廠家都會預定義一些為了增加資料延遲的巨集定義,這對於設計來說相對比較方便。而後續介紹的提供時鐘翻轉和交替相位的方法,雖然在原理上可行,但是在實際操作的時候,卻並不是那麼容易,尤其在時序約束已經很緊的情況下,請更加慎重地考慮這些設計方法。
[1] mohit arora.硬體架構的藝術.機械工業出版社. 42-48
邏輯設計方法學 7 跨時鐘域
如果多個時鐘都起源於同一時鐘,並且它們的香味和頻率關係是已知的,那麼這些時鐘可以看成是跨同步時鐘域的時鐘。按照相位和頻率的關係,可以將這些時鐘分成以下型別 假定兩個時鐘之間的相位和時鐘抖動相同,並假定他們之間的路徑已經按同樣的時鐘延遲和偏移引數進行了平衡。除此之外,還假設這兩個時鐘起始處的相位差為零...
邏輯設計方法學 6 多時鐘設計技術
在進行乙個含多個時鐘的設計時,在 和綜合過程中需要遵循一定的準則,這樣會帶來很大的好處。通用的準則如下 xilinx的開發工具vivado有 project mode 和 non project mode 在 non project mode 中,我們經常使用指令碼進行開發。同樣在 的時候,也會編寫...
邏輯設計方法學 3 門控時鐘
對於每乙個暫存器,都需要有時鐘輸入端,如果在一些對設計功耗要求比較高的地方,保持設計準確後的功耗控制便是頭等大事。為了分析如何減少功耗,首先要來分析功耗主要由哪些部分組成。在絕大多數的設計中,功耗主要由三部分組成 在每個時鐘沿變化的組合邏輯所產生的功耗 由於觸發器驅動這些組合邏輯 由觸發器產生的功耗...