• 正文
    •  
    • 3.1 引腳電容
    •  
    • 3.2 時(shí)序模型
    •  
    • 3.3 時(shí)序模型 - 組合邏輯單元
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

【第三章:標(biāo)準(zhǔn)單元庫(kù) 上】靜態(tài)時(shí)序分析圣經(jīng)翻譯計(jì)劃

2020/12/09
301
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本章節(jié)介紹庫(kù)(library)里單元描述中所提供的時(shí)序信息。單元可以是標(biāo)準(zhǔn)單元、IO 緩沖器或者是如 USB 內(nèi)核這樣的復(fù)雜 IP。

  • 除時(shí)序信息外,庫(kù)單元描述中還包含一些其它屬性,例如單元面積和功能,這些屬性與時(shí)序無(wú)關(guān),但在 RTL 綜合(synthesis)過(guò)程中會(huì)用到。在本章節(jié)中,我們僅關(guān)注與時(shí)序和功耗計(jì)算有關(guān)的那些屬性??梢允褂酶鞣N標(biāo)準(zhǔn)格式來(lái)描述庫(kù)單元,各種格式的內(nèi)容基本相似,本書(shū)中使用 Liberty 語(yǔ)法描述庫(kù)單元。本章節(jié)的前面部分介紹了線性和非線性時(shí)序模型,隨后介紹了用于納米技術(shù)的高級(jí)時(shí)序模型,這些將在 3.7 節(jié)中進(jìn)行介紹。

?

3.1 引腳電容

單元的每個(gè)輸入和輸出都可以在引腳(pin)上指定電容。在大多數(shù)情況下,僅為單元輸入引腳指定電容,而不為輸出引腳指定電容,即大多數(shù)單元庫(kù)中的輸出引腳電容為 0。

上面的示例展示了輸入 INP1 引腳電容值的一般規(guī)格(specification)。在最基本的格式中,引腳電容被指定為單個(gè)值(在上面的示例中為 0.5 個(gè)單位)。電容單位通常為皮法拉(pF),一般在庫(kù)文件的開(kāi)頭指定。單元描述中還可以為 rise_capacitance(0.5 個(gè)單位)和 fall_capacitance(0.45 個(gè)單位)分別指定值,這些值是指引腳 INP1 上發(fā)生電平上升和下降跳變時(shí)的值。也可以將 rise_capacitance 和 fall_capacitance 的值指定為范圍,并在描述中指定下限值和上限值。

?

3.2 時(shí)序模型

邏輯單元的時(shí)序模型(timing model)旨在為設(shè)計(jì)中的各種單元實(shí)例(instance)提供準(zhǔn)確的時(shí)序信息。通常會(huì)從單元的詳細(xì)電路仿真中獲得時(shí)序模型,用以對(duì)單元工作時(shí)的實(shí)際情況進(jìn)行建模,且需要為邏輯單元的每個(gè)時(shí)序弧都建立一個(gè)時(shí)序模型。

圖 3-1

?

讓我們首先考慮圖 3-1 中所示的反向器(inverter)的時(shí)序弧。 由于這是一個(gè)反相器,因此輸入端的電平上升(下降)跳變會(huì)導(dǎo)致輸出端的電平下降(上升)跳變。表征這個(gè)反相器的兩種延遲是:

  • Tr:輸出上升沿延遲 Tf:輸出下降沿延遲

注意,延遲是根據(jù)單元庫(kù)中定義的閾值(threshold)點(diǎn)(詳見(jiàn) 2.4 節(jié))測(cè)量的,通常為 50%Vdd。 因此,延遲值是指從輸入經(jīng)過(guò)其閾值點(diǎn)到輸出經(jīng)過(guò)其閾值點(diǎn)的延遲。

通過(guò)反相器的時(shí)序弧的延遲取決于兩個(gè)因素:

輸出負(fù)載,即反相器輸出引腳上的電容負(fù)載

輸入信號(hào)的過(guò)渡(transition)時(shí)間

延遲值與負(fù)載電容有直接關(guān)系:負(fù)載電容越大,延遲越大。在大多數(shù)情況下,延遲會(huì)隨著輸入信號(hào)過(guò)渡時(shí)間的增加而增加。而在某些情況下,輸入信號(hào)閾值點(diǎn)(用于測(cè)量延遲)與單元的內(nèi)部開(kāi)關(guān)點(diǎn)(switching point)明顯不同。在這種情況下,通過(guò)單元的延遲可能相對(duì)于輸入信號(hào)過(guò)渡時(shí)間表現(xiàn)出非單調(diào)行為:較大的輸入信號(hào)過(guò)渡時(shí)間可能會(huì)產(chǎn)生較小的延遲,尤其是在輸出負(fù)載較小的情況下。

邏輯單元輸出引腳的壓擺(slew)主要取決于輸出引腳電容:輸出信號(hào)過(guò)渡時(shí)間會(huì)隨著輸出負(fù)載的增加而增加。 因此,在輸入端壓擺較大(輸入信號(hào)過(guò)渡時(shí)間較長(zhǎng))的情況下,選擇合適的單元類(lèi)型及輸出負(fù)載,可以改善輸出端的壓擺。圖 3-2 展示了通過(guò)調(diào)節(jié)邏輯單元的輸出負(fù)載,可以改善或惡化單元輸出信號(hào)過(guò)渡時(shí)間的情況。

圖 3-2

3.2.1 線性時(shí)序模型

一個(gè)簡(jiǎn)單的時(shí)序模型是線性延遲模型(linear delay model),該模型使用含兩個(gè)參數(shù)的線性函數(shù)表示邏輯單元的延遲和輸出過(guò)渡時(shí)間,這兩個(gè)參數(shù)是:輸入過(guò)渡時(shí)間(input transition time)和輸出負(fù)載電容(output load capacitance)。通過(guò)邏輯單元的延遲(D)使用線性模型的一般形式如下所示:

其中 D0,D1,D2 是常數(shù),S 是輸入過(guò)渡時(shí)間,C 是輸出負(fù)載電容。 對(duì)于亞微米(submicron)技術(shù),線性延遲模型在輸入過(guò)渡時(shí)間和輸出負(fù)載電容的范圍內(nèi)并不準(zhǔn)確,因此,目前大多數(shù)單元庫(kù)都使用更復(fù)雜的模型,例如非線性延遲模型(non-linear delay model)。

?

3.2.2 非線性延遲模型

大多數(shù)單元庫(kù)都包括表格模型(table model),用于為單元的各種時(shí)序弧指定延遲并進(jìn)行時(shí)序檢查。一些用于納米技術(shù)的較新的時(shí)序庫(kù)還提供了基于電流源的高級(jí)時(shí)序模型(例如 CCS,ECSM 等),本章稍后將對(duì)此進(jìn)行介紹。 這些表格模型被稱為 NLDM(Non-Linear Delay Model),可用于延遲、輸出壓擺計(jì)算或其他時(shí)序檢查。表格模型中提供了:在單元輸入引腳處輸入過(guò)渡時(shí)間和輸出引腳處輸出負(fù)載電容的各種組合下通過(guò)單元的延遲。

NLDM 模型以二維形式表示,兩個(gè)獨(dú)立變量是輸入過(guò)渡時(shí)間和輸出負(fù)載電容,表中的數(shù)值表示延遲。以下是一個(gè)典型反相器單元的表格模型示例:

上面的示例描述了輸出引腳 OUT 的延遲信息。單元描述里的這個(gè)部分包含了從引腳 INP1 到引腳 OUT 時(shí)序弧的上升和下降延遲模型,以及引腳 OUT 的 max_transition 允許時(shí)間。上升和下降延遲有單獨(dú)的模型(用于輸出引腳),分別標(biāo)記為 cell_rise 和 cell_fall。索引(index)變量的類(lèi)型和順序在以下查找表模板 delay_template_3x3 中進(jìn)行了描述:

該查找表模板指定了表中的第一個(gè)變量是輸入過(guò)渡時(shí)間,第二個(gè)變量是輸出負(fù)載電容。表中數(shù)值的給定類(lèi)似于嵌套循環(huán),其中第一個(gè)索引(index_1)為外部循環(huán)變量,第二個(gè)索引(index_2)為內(nèi)部循環(huán)變量,依此類(lèi)推。在上面的示例中每個(gè)變量都有三個(gè)可能值(條目),因此它對(duì)應(yīng)于一個(gè) 3×3 的表。在大多數(shù)情況下,表的條目也可按照表的格式設(shè)置,然后可以將第一個(gè)索引(index_1)視為行索引,而第二個(gè)索引(index_2)則等同于列索引。索引值(例如 1000)是偽占位符,它們會(huì)被 cell_fall 和 cell_rise 延遲表中的實(shí)際索引值覆蓋。指定索引值的另一種方法是在模板定義中指定索引值,而不是在 cell_rise 和 cell_fall 表中指定索引值,例如以下示例:

根據(jù)延遲表,輸入下降過(guò)渡時(shí)間為 0.3ns 且輸出負(fù)載為 0.16pf 時(shí),反相器的上升延遲為 0.1018ns。 由于輸入的下降沿跳變導(dǎo)致反相器輸出的上升沿跳變,因此當(dāng)輸入引腳發(fā)生下降沿跳變時(shí),應(yīng)該去查詢 cell_rise 延遲表。

將表格中的延遲值表示為輸入過(guò)渡時(shí)間和輸出負(fù)載電容這兩個(gè)變量的函數(shù)的這種形式稱為非線性延遲模型,因?yàn)樵谶@些表格中可以看到延遲隨輸入過(guò)渡時(shí)間和輸出負(fù)載電容的非線性變化。

注意,表格模型也可以是 3 維的,例如一個(gè)具有互補(bǔ)輸出 Q 和 QN 的觸發(fā)器,這將在 3.8 節(jié)中進(jìn)行介紹。

NLDM 模型不僅可以用于計(jì)算延遲,而且還可用于計(jì)算邏輯單元輸出引腳的過(guò)渡時(shí)間,該時(shí)間同樣由輸入過(guò)渡時(shí)間和輸出負(fù)載電容來(lái)表征。因此,還存在著另外一張獨(dú)立的用于計(jì)算單元的輸出上升和下降過(guò)渡時(shí)間的二維表格。

輸出過(guò)渡時(shí)間也同樣有兩張表:rise_transition 和 fall_transition。如第 2 章所述,過(guò)渡時(shí)間是根據(jù)特定的壓擺閾值點(diǎn)(通常為電源的 10%-90%)測(cè)量的。

綜上所述,使用 NLDM 模型的反相器單元具有下列表格模型:

  • 上升延遲時(shí)間(Rise delay)下降延遲時(shí)間(Fall delay)上升過(guò)渡時(shí)間(Rise transition)下降過(guò)渡時(shí)間(Fall transition)

假設(shè)有這么一個(gè)反相器單元,其輸入過(guò)渡時(shí)間和輸出負(fù)載電容如圖 3-3 所示。對(duì)于 15ps 的輸入(下降)過(guò)渡時(shí)間和 10fF 負(fù)載,可從 cell_rise 表中獲得輸出上升延遲時(shí)間,而從 cell_fall 表中可獲得 20ps 輸入(上升)過(guò)渡時(shí)間和 10fF 負(fù)載下的輸出下降延遲時(shí)間 。

圖 3-3

指定單元邏輯功能為“反相”(invert)的信息在哪里呢?該信息可以在時(shí)序弧里的 timing_sense 字段中找到,但在某些情況下如果該字段中未指明,則應(yīng)該也可從引腳功能(pin function)中推斷出。

例如對(duì)于反相器單元,時(shí)序弧為 negative_unate,這表明輸出引腳電平跳變方向與輸入引腳電平跳變方向相反。因此,在 cell_rise 表中進(jìn)行查找時(shí)使用的參數(shù)是輸入引腳的下降過(guò)渡時(shí)間。

** 查找非線性延遲模型**

這個(gè)小節(jié)通過(guò)一個(gè)例子來(lái)說(shuō)明表格模型的查找。如果輸入過(guò)渡時(shí)間和輸出電容正好與表格條目中的值相對(duì)應(yīng),則表格查找是很簡(jiǎn)單的,因?yàn)榭梢灾苯訌谋碇袑?duì)應(yīng)的位置讀出時(shí)序值。以下示例對(duì)應(yīng)于一般情況,即輸入過(guò)渡時(shí)間和輸出電容無(wú)法與表格條目中的值對(duì)應(yīng)的情況。在這種情況下,可利用二維插值的方法來(lái)得到最終的時(shí)序值,一般選擇每個(gè)維度中兩個(gè)最接近的表格條目中的值以進(jìn)行表格插值??紤]輸入過(guò)渡時(shí)間為 0.15ns、輸出電容為 1.16pF 的輸出下降沿查找表(前文的示例), 下面復(fù)制了與二維插值有關(guān)的輸出下降過(guò)渡表的相應(yīng)部分。

在下面的公式中,兩個(gè) index_1 值分別表示為 x1 和 x2;兩個(gè) index_2 值分別表示為 y1 和 y2,而對(duì)應(yīng)的表值分別表示為 T11,T12,T21 和 T22。

如果需要在表中查找(x0,y0)的值,則查找值 T00 只能通過(guò)插值獲得,計(jì)算公式如下:

其中

將 0.15ns 代入 index_1,將 1.16pF 代入 index_2,根據(jù)上述公式可計(jì)算出 fall_transition 值為:

請(qǐng)注意,上面的等式對(duì)于內(nèi)插和外推均有效,即當(dāng)索引值(x0,y0)超出范圍時(shí)依然成立。例如,當(dāng) index_1 索引值為 0.05 且 index_2 索引值為 1.7 時(shí),fall_transition 值計(jì)算如下:

?

3.2.3 閾值規(guī)格和壓擺降額

壓擺值(slew)基于的是在庫(kù)中指定的測(cè)量閾值點(diǎn),大多數(shù)上一代的庫(kù)(0.25um 或更舊的庫(kù))都使用 10%和 90%作為壓擺(或稱過(guò)渡時(shí)間)的測(cè)量閾值點(diǎn)。

壓擺閾值點(diǎn)的選擇對(duì)應(yīng)的是波形的線性部分。隨著技術(shù)的發(fā)展,實(shí)際波形最線性的部分通常在 30%至 70%之間。 因此,大多數(shù)新一代時(shí)序庫(kù)都將壓擺測(cè)量閾值點(diǎn)指定為 Vdd 的 30%和 70%。但是,由于之前測(cè)得的過(guò)渡時(shí)間在 10%至 90%之間,因此在填充庫(kù)時(shí),通常將測(cè)得的 30%至 70%的過(guò)渡時(shí)間加倍,這由壓擺降額系數(shù)(slew derate factor)指定,通常指定為 0.5。壓擺測(cè)量閾值點(diǎn)為 30%和 70%且壓擺降額系數(shù)為 0.5,等效于測(cè)量閾值點(diǎn)為 10%和 90%。 閾值設(shè)置的示例如下:

上面的設(shè)置規(guī)定了要將表格中的過(guò)渡時(shí)間乘以 0.5,以獲得與閾值(30%-70%)設(shè)置相對(duì)應(yīng)的過(guò)渡時(shí)間。這意味著表格中的值(以及相應(yīng)的索引值)實(shí)際上是 10%-90%閾值點(diǎn)的測(cè)量值。在標(biāo)定過(guò)渡時(shí)間值時(shí),首先在 30%-70%處測(cè)量,然后再把測(cè)量值外推到 10%至 90%((70-30)/(90-10)= 0.5)。

以下是壓擺測(cè)量閾值點(diǎn)設(shè)置的另一個(gè)例子:

slew_lower_threshold_pct_fall:20.0;

slew_upper_threshold_pct_fall:80.0;

slew_lower_threshold_pct_rise:20.0;

slew_upper_threshold_pct_rise:80.0;

slew_derate_from_library not specified

在上述 20%-80%壓擺閾值設(shè)置的例子中,未指定 slew_derate_from_library(默認(rèn)值為 1.0),這意味著庫(kù)中的過(guò)渡時(shí)間不會(huì)降額(derate)。表格中的過(guò)渡時(shí)間值直接對(duì)應(yīng)于 20%-80%的閾值點(diǎn),如圖 3-4 所示:

圖 3-4

?

對(duì)上述單元庫(kù)中壓擺閾值設(shè)置稍作修改,如下所示:

slew_lower_threshold_pct_fall:20.0;

slew_upper_threshold_pct_fall:80.0;

slew_lower_threshold_pct_rise:20.0;

slew_upper_threshold_pct_rise:80.0;

slew_derate_from_library:0.6;

在這種情況下,將 slew_derate_from_library 設(shè)置為 0.6,并將壓擺測(cè)量閾值點(diǎn)指定為 20%和 80%,這意味著庫(kù)中的過(guò)渡時(shí)間表里的數(shù)據(jù)對(duì)應(yīng)于外推到 0%至 100%((80-20)/(100-0)= 0.6)的值,如圖 3-5 所示:

圖 3-5

?

指定了壓擺降額后,計(jì)算延遲時(shí)使用的壓擺值等于:

庫(kù)中過(guò)渡時(shí)間值 * 壓擺降額系數(shù) ( library_transition_time_value * slew_derate)

這就是延遲計(jì)算工具在內(nèi)部使用的壓擺值,是對(duì)應(yīng)于指定的壓擺閾值測(cè)量點(diǎn)的。

?

3.3 時(shí)序模型 - 組合邏輯單元

考慮一個(gè)兩輸入與門(mén)(and)的時(shí)序弧,由前面章節(jié)所述可知該單元的兩個(gè)時(shí)序弧均為正單邊類(lèi)型(positive_unate), 因此,輸入引腳的電平上升對(duì)應(yīng)于輸出引腳的電平上升,反之亦然。

對(duì)于這個(gè)兩輸入與門(mén),共有以下 4 種延時(shí):

  • A -> Z :輸出上升沿延遲(Output rise)A -> Z :輸出下降沿延遲(Output fall)B -> Z :輸出上升沿延遲(Output rise)B -> Z :輸出下降沿延遲(Output fall)

圖 3-6

這意味著對(duì)于 NLDM 模型,將會(huì)有四個(gè)表格模型用于指定延遲。同樣,也將有四個(gè)表格模型用于指定輸出過(guò)渡時(shí)間(壓擺)。

?

3.3.1 延遲與壓擺模型

以下是一個(gè)用于分析三輸入與非門(mén)(nand)單元的輸入 INP1 到輸出 OUT 的時(shí)序模型:

在上面的例子中,使用了兩個(gè)單元延遲表 cell_rise 和 cell_fall 以及兩個(gè)過(guò)渡時(shí)間表 rise_transition 和 fall_transition 來(lái)描述從 INP1 到 OUT 的時(shí)序弧的特性,上面的例子中還包括了輸出的最大過(guò)渡時(shí)間(max_transition)值。

如章節(jié) 2.7 中所述,與非門(mén)單元中的時(shí)序弧為負(fù)單邊類(lèi)型(negative unate),這表示輸出引腳電平跳變方向與輸入引腳電平跳變方向是相反的。因此,查找 cell_rise 表對(duì)應(yīng)于輸入引腳上的下降過(guò)渡時(shí)間。同樣,通過(guò)與門(mén)單元或者或門(mén)單元的時(shí)序弧是正單邊類(lèi)型(positive unate)的,因?yàn)檩敵鲆_電平跳變方向與輸入引腳電平跳變方向相同。

?

3.3.2 通用組合邏輯塊

考慮以下這個(gè)具有三輸入和兩輸出的通用組合邏輯塊(General Combinational Block):

圖 3-7

?

像這樣的組合邏輯塊可以具有多個(gè)時(shí)序弧。通常,從塊的每個(gè)輸入到每個(gè)輸出都有一條時(shí)序弧。如果從輸入到輸出的邏輯路徑是同相(non-inverting)或正單邊類(lèi)型的,則輸出的極性(polarity)與輸入的極性相同;如果邏輯路徑是反相(inverting)或負(fù)單邊類(lèi)型,則輸出的極性與輸入相反,即當(dāng)輸入電平上升時(shí),輸出電平將下降。這些時(shí)序弧代表了通過(guò)這個(gè)組合邏輯塊的傳播延遲。

通過(guò)組合邏輯單元的某些時(shí)序弧可以既是正單邊類(lèi)型,也是負(fù)單邊類(lèi)型的。一個(gè)例子是通過(guò)兩輸入異或門(mén)(xor)單元的時(shí)序弧,根據(jù)該單元的另一個(gè)輸入的邏輯狀態(tài),兩輸入異或門(mén)單元的輸入引腳處的電平跳變會(huì)導(dǎo)致輸出引腳處的電平沿相同或相反的方向跳變。這些時(shí)序弧可以描述為非單邊類(lèi)型(non-unate)的,也可以描述為兩組狀態(tài)相關(guān)(state-dependent)的正單邊類(lèi)型時(shí)序模型和負(fù)單邊類(lèi)型時(shí)序模型。這種與狀態(tài)相關(guān)的表格模型將在 3.5 節(jié)中有更詳細(xì)的描述。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫(xiě)文章/發(fā)需求
立即登錄