3.4 時(shí)序模型 - 時(shí)序邏輯單元
考慮如下圖 3-8 所示的時(shí)序邏輯單元的時(shí)序?。?/p>
圖 3-8
對(duì)于同步(synchronous)輸入,例如引腳 D(或 SI,SE),存在以下時(shí)序?。?/p>
- 建立(Setup)時(shí)間檢查時(shí)序?。òㄉ仙睾拖陆笛兀┍3郑℉old)時(shí)間檢查時(shí)序弧(包括上升沿和下降沿)
對(duì)于異步(asynchronous)輸入,例如引腳 CDN,存在以下時(shí)序?。?/p>
- 恢復(fù)(Recovery)時(shí)間檢查時(shí)序弧撤銷(xiāo)(Removal)時(shí)間檢查時(shí)序弧
對(duì)于觸發(fā)器的同步輸出,例如引腳 Q 或 QN,存在以下時(shí)序?。?/p>
- 時(shí)鐘引腳(CK)到輸出端口(Q 或 QN)的傳播延遲時(shí)序?。òㄉ仙睾拖陆笛兀?/li>
所有同步時(shí)序弧均相對(duì)于時(shí)鐘的有效沿(active edge),即時(shí)序邏輯單元捕獲數(shù)據(jù)的時(shí)鐘沿。此外,時(shí)鐘引腳和異步引腳(如復(fù)位引腳)還需要進(jìn)行脈沖寬度(pulse width)時(shí)序檢查。各種時(shí)序檢查如下圖 3-9 所示:
圖 3-9
?
3.4.1 同步時(shí)序檢查:建立時(shí)間與保持時(shí)間
需要進(jìn)行建立時(shí)間和保持時(shí)間的同步時(shí)序檢查,才能確保數(shù)據(jù)能夠正確通過(guò)時(shí)序單元傳播。這些時(shí)序檢查可驗(yàn)證輸入的數(shù)據(jù)在時(shí)鐘有效沿上是否為確定的邏輯狀態(tài),并且在有效沿上將正確的數(shù)據(jù)鎖存下來(lái)。這些時(shí)序檢查也可以驗(yàn)證輸入的數(shù)據(jù)在有效時(shí)鐘沿附近是否穩(wěn)定:輸入的數(shù)據(jù)必須在有效時(shí)鐘沿之前保持穩(wěn)定的最短時(shí)間稱(chēng)為建立時(shí)間(setup time)。這是根據(jù)最晚的(the latest)數(shù)據(jù)信號(hào)超過(guò)其閾值(通常為 Vdd 的 50%)到有效時(shí)鐘沿超過(guò)其閾值(通常為 Vdd 的 50%)的時(shí)間間隔測(cè)量的。同樣,保持時(shí)間(hold time)是在時(shí)鐘有效沿之后輸入的數(shù)據(jù)必須保持穩(wěn)定的最短時(shí)間,這也是根據(jù)有效時(shí)鐘沿超過(guò)其閾值到最早的(the earliest)數(shù)據(jù)信號(hào)超過(guò)其閾值的時(shí)間間隔來(lái)度量的。如前文所述,時(shí)序單元的時(shí)鐘有效沿是指使時(shí)序單元捕獲數(shù)據(jù)的上升沿或下降沿。
?
建立時(shí)間與保持時(shí)間檢查示例
時(shí)序單元同步引腳的建立時(shí)間和保持時(shí)間約束通常用二維表格來(lái)描述,如下所示。下面的例子展示了觸發(fā)器數(shù)據(jù)引腳的建立時(shí)間和保持時(shí)間時(shí)序信息:
上面的例子展示了相對(duì)于時(shí)序單元時(shí)鐘引腳 CK 的上升沿,在輸入引腳 D 上的建立時(shí)間和保持時(shí)間約束。二維表格模型是根據(jù)約束引腳 constrained_pin(D)和相關(guān)引腳 related_pin(CK)處的過(guò)渡時(shí)間確定的,二維表格的查找是基于庫(kù)中描述的模板 setuphold_template_3x3 的。對(duì)于上述示例,查找表模板 setuphold_template_3x3 如下所示:
與前面示例中一樣,表中的值如嵌套循環(huán)一樣被指定,其中第一個(gè)索引 index_1 是外部循環(huán)變量,第二個(gè)索引 index_2 是內(nèi)部循環(huán)變量, 以此類(lèi)推。因此,當(dāng) D 引腳的上升沿過(guò)渡時(shí)間為 0.4ns,CK 引腳的上升沿過(guò)渡時(shí)間為 0.84ns 時(shí),D 引腳上升沿的建立時(shí)間約束為 0.112ns,該值是從 rise_constraint 表中讀取的。對(duì)于 D 引腳的下降沿,建立時(shí)間約束將檢查建立時(shí)間表中的 fall_constraint 表。在表中查找過(guò)渡時(shí)間不與索引值相對(duì)應(yīng)的建立時(shí)間和保持時(shí)間約束時(shí),可使用章節(jié) 3.2 中所描述的非線性模型查找的一般過(guò)程。
請(qǐng)注意,建立時(shí)間約束的 rise_constraint 和 fall_constraint 表是指 constrained_pin。所用的時(shí)鐘過(guò)渡時(shí)間由 Timing_type 決定,它會(huì)指定該時(shí)序邏輯單元是上升沿觸發(fā)還是下降沿觸發(fā)。
?
建立時(shí)間和保持時(shí)間檢查里的負(fù)值
請(qǐng)注意,上面示例中的某些保持時(shí)間值是負(fù)數(shù)。這是可以接受的,這種情況通常發(fā)生在觸發(fā)器的引腳到數(shù)據(jù)內(nèi)部鎖存點(diǎn)的路徑長(zhǎng)于相應(yīng)的時(shí)鐘路徑時(shí)。因此,負(fù)的保持時(shí)間檢查意味著觸發(fā)器的數(shù)據(jù)引腳可以在時(shí)鐘引腳之前改變,并且仍然滿(mǎn)足保持時(shí)間的檢查要求。
觸發(fā)器的建立時(shí)間值也可以為負(fù)。這意味著觸發(fā)器的數(shù)據(jù)引腳可以在時(shí)鐘引腳之后改變,并且仍然滿(mǎn)足建立時(shí)間的檢查要求。
建立時(shí)間和保持時(shí)間可以都為負(fù)嗎?不行!為使建立時(shí)間和保持時(shí)間檢查相一致,建立時(shí)間和保持時(shí)間的數(shù)值總和應(yīng)為正。因此,如果建立(或保持)時(shí)間檢查包含負(fù)值,則相應(yīng)的保持(或建立)時(shí)間檢查應(yīng)為正值,且足夠大,以使建立時(shí)間加上保持時(shí)間之和是一個(gè)正數(shù)。具有負(fù)的保持時(shí)間值的示例如圖 3-10 所示,由于建立時(shí)間檢查會(huì)先于保持時(shí)間檢查,所以此時(shí)的建立時(shí)間加上保持時(shí)間顯然是一個(gè)正數(shù)。建立時(shí)間加上保持時(shí)間即為要求數(shù)據(jù)信號(hào)穩(wěn)定的區(qū)域的寬度。
圖 3-10
?
對(duì)于觸發(fā)器,在掃描數(shù)據(jù)(scan data)輸入引腳上設(shè)置一個(gè)負(fù)的保持時(shí)間會(huì)很有幫助,這樣可以給予時(shí)鐘偏斜(clock skew)一定的靈活性,并且可以消除當(dāng)掃描模式(scan mode)下保持時(shí)間發(fā)生違例時(shí)插入緩沖器(buffer)的需要(掃描模式是將觸發(fā)器串聯(lián)在一起形成一條掃描鏈的模式,觸發(fā)器的輸出通常連接到串聯(lián)的下一個(gè)觸發(fā)器的掃描數(shù)據(jù)輸入引腳,這些連接是用于芯片測(cè)試的)。
與同步數(shù)據(jù)輸入引腳上的建立時(shí)間或保持時(shí)間檢查類(lèi)似,對(duì)異步引腳進(jìn)行的時(shí)序約束檢查將在下個(gè)小節(jié)中介紹。
?
3.4.2 異步時(shí)序檢查
恢復(fù)時(shí)間和撤銷(xiāo)時(shí)間檢查
諸如異步復(fù)位(clear)或異步置位(set)之類(lèi)的異步引腳會(huì)覆蓋單元的任何同步行為。當(dāng)異步引腳處于有效(active)狀態(tài)時(shí),輸出將由異步引腳控制,而不是由時(shí)鐘鎖存到的輸入數(shù)據(jù)控制。但是,當(dāng)異步引腳變?yōu)闊o(wú)效(inactive)狀態(tài)時(shí),時(shí)鐘的有效邊沿將開(kāi)始鎖存輸入的數(shù)據(jù)。異步恢復(fù)(recovery)時(shí)間和撤銷(xiāo)(removal)時(shí)間約束檢查將驗(yàn)證異步引腳在下一個(gè)時(shí)鐘有效沿處是否已明確返回到了無(wú)效狀態(tài)。
恢復(fù)時(shí)間是指異步輸入被置為無(wú)效(de-asserted)后在下一個(gè)時(shí)鐘有效沿之前需要保持穩(wěn)定的最短時(shí)間。
同樣,撤銷(xiāo)時(shí)間是指在一個(gè)有效的時(shí)鐘沿之后,異步引腳必須保持有效狀態(tài)的最小時(shí)間,即在有效時(shí)鐘沿之后必須經(jīng)過(guò)一段撤銷(xiāo)時(shí)間才能夠?qū)惒揭_置為無(wú)效狀態(tài)。
異步恢復(fù)時(shí)間和撤銷(xiāo)時(shí)間檢查將分別在 8.6 節(jié)和 8.7 節(jié)中介紹。
?
脈沖寬度檢查
除了同步和異步時(shí)序檢查外,還有一項(xiàng)檢查去確保邏輯單元輸入引腳上的脈沖寬度滿(mǎn)足最低要求。例如,如果時(shí)鐘引腳上的脈沖寬度小于指定的最小值,則時(shí)鐘可能無(wú)法正確鎖存數(shù)據(jù)。也可以為相關(guān)的同步和異步引腳指定脈沖寬度檢查(pulse width check),并且可以為高脈沖和低脈沖分別指定最小脈沖寬度檢查。
?
恢復(fù)時(shí)間、撤銷(xiāo)時(shí)間和脈沖寬度檢查示例
下面給出了觸發(fā)器的異步清零引腳 CDN 的恢復(fù)時(shí)間、撤銷(xiāo)時(shí)間和脈沖寬度檢查的示例,其中恢復(fù)時(shí)間和撤銷(xiāo)時(shí)間檢查還與時(shí)鐘引腳 CK 有關(guān)。由于恢復(fù)時(shí)間和撤銷(xiāo)時(shí)間檢查是針對(duì)異步引腳被置為無(wú)效的時(shí)刻,因此在以下示例中僅存在上升約束。CDN 引腳的最小脈沖寬度檢查用于低脈沖,這是由于 CDN 引腳為低電平有效,因此該引腳上的高脈沖寬度沒(méi)有限制,因此未指定。
?
3.4.3 傳播延遲
時(shí)序單元的傳播延遲(propagation delay)是指從時(shí)鐘的有效沿到輸出的上升沿或下降沿。以下是一個(gè)時(shí)鐘下降沿觸發(fā)的觸發(fā)器從時(shí)鐘引腳 CKN 到輸出 Q 的傳播延遲弧的示例。這是一個(gè)非單邊類(lèi)型(non-unate)的時(shí)序弧,因?yàn)闀r(shí)鐘的有效沿會(huì)導(dǎo)致輸出引腳 Q 的電平上升或下降。
與前一章中的示例一樣,輸出的傳播延遲會(huì)根據(jù)輸入過(guò)渡時(shí)間和輸出負(fù)載電容以二維表格的形式呈現(xiàn)。但是在此示例中,由于觸發(fā)器是時(shí)鐘下降沿觸發(fā)的,因此要使用的輸入過(guò)渡時(shí)間是 CKN 引腳的下降過(guò)渡時(shí)間,這在上面的示例中可以從 Timing_type 字段中看出,上升沿觸發(fā)的觸發(fā)器將把 rising_edge 指定為其 timing_type。
?
3.5 狀態(tài)相關(guān)的時(shí)序模型
在許多組合邏輯模塊中,輸入和輸出之間的時(shí)序弧取決于模塊中其他引腳的邏輯狀態(tài)。輸入和輸出引腳之間的這些時(shí)序弧可以是正單邊類(lèi)型時(shí)序弧、負(fù)單邊類(lèi)型時(shí)序弧也可以既是正單邊類(lèi)型又是負(fù)單邊類(lèi)型時(shí)序弧。異或門(mén)(xor)以及同或門(mén)(xnor)單元就是一個(gè)例子,其輸入到輸出的時(shí)序弧可以是正單邊類(lèi)型的也可以是負(fù)單邊類(lèi)型的。在這種情況下,其時(shí)序行為可能會(huì)有所不同,具體取決于該模塊其他輸入的狀態(tài)。通常,取決于引腳狀態(tài)的多個(gè)時(shí)序模型被稱(chēng)為狀態(tài)相關(guān)的時(shí)序模型(state-dependent models)。
考慮一個(gè)兩輸入異或門(mén)單元的例子。當(dāng)另一個(gè)輸入 A2 為邏輯 0 時(shí),從輸入 A1 到輸出 Z 的時(shí)序路徑為正單邊類(lèi)型;當(dāng)輸入 A2 為邏輯 1 時(shí),從 A1 到 Z 的路徑為負(fù)單邊類(lèi)型。這兩個(gè)時(shí)序模型是使用狀態(tài)相關(guān)的時(shí)序模型指定的。A2 為邏輯 0 時(shí)從 A1 到 Z 的時(shí)序模型如下所示:
使用 when 來(lái)指定與狀態(tài)有關(guān)的條件。雖然以上單元模型的片段僅說(shuō)明了 cell_rise 延遲,但其它時(shí)序模型(cell_fall,rise_transition 和 fall_transition)也指定了相同的 when 條件。當(dāng) when 中條件改變,如改為 A2 為邏輯 1 這個(gè)條件時(shí),會(huì)指定另一個(gè)獨(dú)立的時(shí)序模型:
sdf_cond 用于指定生成 SDF 文件時(shí)要使用的時(shí)序弧的條件,詳情參見(jiàn)后面 3.9 節(jié)中的示例。
狀態(tài)相關(guān)的時(shí)序模型可用于各種類(lèi)型的時(shí)序弧,許多時(shí)序邏輯單元會(huì)使用狀態(tài)相關(guān)的時(shí)序模型指定建立時(shí)間或保持時(shí)間的時(shí)序約束。以下是使用狀態(tài)相關(guān)的時(shí)序模型進(jìn)行保持時(shí)間約束的掃描觸發(fā)器(scan flip-flop)的一個(gè)示例。在這種情況下,指定了兩組時(shí)序模型:掃描使能引腳 SE 處于有效狀態(tài)時(shí)的一組,以及掃描使能引腳處于無(wú)效狀態(tài)時(shí)的另一組。
當(dāng)掃描使能引腳 SE 為邏輯 0 時(shí)使用以上時(shí)序模型,當(dāng) when 中條件為 SE 是高電平時(shí)也有類(lèi)似的時(shí)序模型。
可以既使用狀態(tài)相關(guān)的時(shí)序模型又使用非狀態(tài)相關(guān)的時(shí)序模型來(lái)指定一些時(shí)序關(guān)系。在這種情況下,如果單元的狀態(tài)是已知的并且這個(gè)狀態(tài)包含在狀態(tài)相關(guān)的時(shí)序模型之一中,則時(shí)序分析將使用狀態(tài)相關(guān)的時(shí)序模型。而如果狀態(tài)相關(guān)的時(shí)序模型未包含單元的這個(gè)狀態(tài),則使用來(lái)自非狀態(tài)相關(guān)模型的時(shí)序。例如考慮一種情況,保持時(shí)間約束僅由當(dāng) when 條件為 SE 處于邏輯 0 時(shí)來(lái)指定,而沒(méi)有為 SE 處于邏輯 1 時(shí)指定單獨(dú)的狀態(tài)相關(guān)模型。在這種情況下,如果 SE 被置為邏輯 1,則將會(huì)使用非狀態(tài)相關(guān)時(shí)序模型的保持時(shí)間約束。而如果沒(méi)有用于保持時(shí)間約束的非狀態(tài)相關(guān)時(shí)序模型,那么將沒(méi)有任何有效的保持時(shí)間約束!
可以為時(shí)序庫(kù)中的任何屬性指定狀態(tài)相關(guān)的模型,因此可以存在功率、漏電功率、過(guò)渡時(shí)間、上升和下降延遲、時(shí)序約束等狀態(tài)相關(guān)的模型。下面給出了一個(gè)狀態(tài)相關(guān)的漏電功率模型示例: