本章節(jié)介紹用于處理和表示互連寄生(interconnect parasitics)現(xiàn)象的各種技術(shù),以驗證設(shè)計的時序。
- 在數(shù)字設(shè)計中,將標(biāo)準(zhǔn)單元或塊(block)的引腳連接在一起的線(wire)稱為網(wǎng)絡(luò)(net)。網(wǎng)絡(luò)通常只有一個驅(qū)動,但它可以驅(qū)動多個扇出單元或塊。物理實現(xiàn)(physical implementation)后,網(wǎng)絡(luò)可以在芯片的多個金屬層上移動,各種金屬層可以具有不同的電阻和電容值。對于等效的電氣表示,通常將網(wǎng)絡(luò)劃分為多個段(segment),每個段均由等效的寄生參數(shù)表示。我們也將段稱為互連走線(interconnect trace),也就是說,它是特定金屬層上網(wǎng)絡(luò)的一部分。
?
4.1 互連 RLC
互連電阻(R)來自設(shè)計實現(xiàn)中各種金屬層和過孔(vias)中的互連走線。圖 4-1 是一個穿越各種金屬層和過孔的網(wǎng)絡(luò)示例。因此,可以將互連電阻視為單元的輸出引腳與扇出單元的輸入引腳之間的電阻。
圖 4-1
?
互連電容(C)也來自金屬走線,包括接地電容以及相鄰信號路徑之間的電容。
互連電感(L)是由于電流環(huán)路而產(chǎn)生的,通常,電感效應(yīng)在芯片內(nèi)可以忽略不計,僅在封裝和板級分析中考慮。在芯片級設(shè)計中,電流環(huán)路又窄又短,這意味著電流返回路徑是通過電源或地信號而緊密相連的。在大多數(shù)情況下,時序分析不考慮片上電感,片上電感分析的任何進(jìn)一步描述都超出了本書的范圍。接下來僅分析互連電阻和互連電容的表示方法。
理想情況下,互連走線一部分的電阻和電容(RC)用分布式(distributed)RC 樹表示,如圖 4-2 所示。在此圖中,RC 樹的總電阻和總電容 Rt 和 Ct 分別等于 Rp * L 和 Cp * L,其中 Rp 和 Cp 分別是單位長度走線的互連電阻和電容值,L 是走線長度。Rp 和 Cp 值通常是從各種配置下提取的寄生參數(shù)中獲得的,并由 ASIC 代工廠提供。
圖 4-2
?
RC 互連可以通過各種簡化模型來表示,這些將在下面的小節(jié)中進(jìn)行介紹。
?
T 模型
使用 T 模型表示時,總電容 Ct 被建模為在電阻樹中間的連接??傠娮?Rt 被分為兩部分(每部分為 Rt / 2),Ct 連接在電阻樹的中點,如圖 4-3 所示。
圖 4-3
?
π模型
在如圖 4-4 所示的π模型中,總電容 Ct 被分為兩部分(每部分為 Ct / 2),并連接在電阻的兩側(cè)。
圖 4-4
?
通過將 Rt 和 Ct 分成多個部分,可以獲得分布式 RC 樹的更準(zhǔn)確表示。若分為 N 個部分,則每個中間部分的電阻和電容值分別為 Rt / N 和 Ct /N,而兩端部分需要根據(jù) T 模型或π模型的概念來進(jìn)行建模。圖 4-5 中兩端部分使用了 T 模型進(jìn)行建模,而圖 4-6 中兩端部分使用了π模型進(jìn)行建模。
圖 4-5
?
圖 4-6
?
4.2 線負(fù)載模型
在進(jìn)行布局規(guī)劃(floorplanning)或布局(layout)之前,可以使用線負(fù)載模型(wireload models)來估計由互連線帶來的電容、電阻以及面積開銷。線負(fù)載模型可用于根據(jù)扇出數(shù)量來估計網(wǎng)絡(luò)的長度,線負(fù)載模型取決于塊(block)的面積,具有不同面積的設(shè)計可以選擇不同的線負(fù)載模型。線負(fù)載模型還可以將網(wǎng)絡(luò)的估計長度映射(map)為電阻、電容以及由于布線而產(chǎn)生的相應(yīng)面積開銷。
塊內(nèi)的平均走線長度與塊的面積密切相關(guān):隨著塊面積的增加,平均走線長度也會增加。圖 4-7 顯示,對于不同的面積(芯片或塊),通常將使用不同的線負(fù)載模型來確定寄生效應(yīng)。因此,下圖中面積小的塊的電容比較小。
圖 4-7
?
以下是一個線負(fù)載模型的例子:
resistance 是互連線單位長度的電阻值,capacitance 是互連線單位長度的電容值,area 是互連線單位長度的面積開銷,slope 是用于扇出 - 長度(fanout_length)表中未指定的數(shù)據(jù)點的外推斜率。
圖 4-8
?
線負(fù)載模型描述了互連線長度與扇出之間的函數(shù)關(guān)系,上面的示例如圖 4-8 所示。對于表中未明確列出的任何扇出值,可使用具有指定斜率的線性外推法計算得到互連線長度。例如,扇出為 8 時可進(jìn)行如下計算:
- 互連線長度 = 4.1 + (8 - 5) * 0.5 = 5.6 電容值 = 5.6 * 1.1 = 6.16 電阻值 = 5.6 * 5 =28.0 面積開銷 = 5.6 * 0.05 = 0.28
上述計算結(jié)果中長度、電容、電阻、面積的單位都會在庫(library)中指定。
?
4.2.1 互連樹
一旦確定了預(yù)布局(pre-layout)后互連線的電阻電容估計值(即 Rwire 和 Cwire),下一個問題便是互連結(jié)構(gòu)?;ミB RC 結(jié)構(gòu)相對于驅(qū)動單元該如何分布呢?這一點很重要,因為從驅(qū)動引腳(driver pin)到負(fù)載引腳(load pin)的互連延遲取決于互連的結(jié)構(gòu)。通常,互連延遲取決于沿路徑的互連電阻和電容大小。因此,延遲值可能會有所不同,具體取決于給這個網(wǎng)絡(luò)(net)假定的拓?fù)浣Y(jié)構(gòu)。
對于預(yù)布局估計,可以使用以下三種不同形式來表示互連 RC 樹(見圖 4-9)。請注意,每個互連線的總長度(以及電阻和電容估計值)在這三種情況下是相同的。
圖 4-9
?
- Best-case tree
在最佳情況樹中,假定負(fù)載引腳在物理上與驅(qū)動引腳相鄰。因此,到負(fù)載引腳的路徑中都沒有互連電阻,來自其它扇出引腳的所有互連線電容和引腳電容仍然作為驅(qū)動引腳上的負(fù)載。
- Balanced tree
在這種情況下,假定每個負(fù)載引腳都在互連線的一部分上,并且每條到達(dá)負(fù)載引腳的路徑上的總電阻和電容都相等。
- Worst-case tree
在最差情況樹中,假定所有負(fù)載引腳都集中在互連線的另一端。因此,每條到負(fù)載引腳的路徑上都會有全部的互連線電阻和電容。
?
4.2.2 指定線負(fù)載模型
使用以下命令指定線負(fù)載模型:
set_wire_load_model "wlm_cons" -library "lib_stdcell"
以上命令表示使用單元庫 lib_stdcell 中的線負(fù)載模型 wlm_cons。
當(dāng)一個網(wǎng)絡(luò)跨越了設(shè)計層次(hierarchical)的邊界時,可以基于線負(fù)載模式(wireload mode)將不同的線負(fù)載模型應(yīng)用于每個層次中網(wǎng)絡(luò)的不同部分。這些線負(fù)載模式是:
- topenclosedsegmented
可以使用 set_wire_load_mode 來指定線負(fù)載模式:
set_wire_load_mode enclosed
在 top 線負(fù)載模式下,層次結(jié)構(gòu)中的所有網(wǎng)絡(luò)都將繼承頂層(top)的線負(fù)載模型,即忽略下級層級中指定的任何線負(fù)載模型。因此,頂層的線負(fù)載模型具有優(yōu)先權(quán)。對于圖 4-10 所示的例子,塊 B1 中指定的 wlm_cons 線負(fù)載模型優(yōu)先于塊 B2、B3 和 B4 中指定的所有其它線負(fù)載模型。
圖 4-10
?
在 enclosed 線負(fù)載模式下,將完全包含網(wǎng)絡(luò)的那個塊中使用的線負(fù)載模型用于整個網(wǎng)絡(luò)。對于圖 4-11 中所示的例子,網(wǎng)絡(luò) NETQ 被完全包含在塊 B2 中,因此將塊 B2 的線負(fù)載模型 wlm_light 用于該網(wǎng)絡(luò)。同理,完全包含在塊 B3 中的網(wǎng)絡(luò)使用 wlm_aggr 線負(fù)載模型,而完全包含在塊 B5 中的網(wǎng)絡(luò)使用 wlm_typ 線負(fù)載模型。
圖 4-11
?
在 segmented 線負(fù)載模式下,網(wǎng)絡(luò)的每段(segment)都從包含該段的塊中獲取其線負(fù)載模型,網(wǎng)絡(luò)的每個部分都在該層次內(nèi)使用適當(dāng)?shù)木€負(fù)載模型。圖 4-12 舉例說明了一個網(wǎng)絡(luò) NETQ,它的三段分別在三個塊中。B3 塊中此網(wǎng)絡(luò)的扇出互連使用 wlm_aggr 線負(fù)載模型,B4 塊中使用 wlm_typ 線負(fù)載模型,B2 塊中使用 wlm_light 線負(fù)載模型。
圖 4-12
?
通常,是根據(jù)模塊的芯片面積來選擇線負(fù)載模型的。但是,可以根據(jù)用戶的判斷修改或更改它們。例如,可以為面積在 0 到 400 之間的塊選擇線負(fù)載模型 wlm_aggr,為面積在 400 到 1000 之間的塊選擇線負(fù)載模型 wlm_typ,為面積大于 1000 的塊選擇線負(fù)載模型 wlm_cons。線負(fù)載模型通常在單元庫中定義,但是用戶也可以自定義線負(fù)載模型??梢栽趩卧獛熘袑⒛J(rèn)的線負(fù)載模型指定為:
default_wire_load : "wlm_light" ;
在單元庫中定義了一個線負(fù)載模型選擇組,該組根據(jù)面積選擇線負(fù)載模型,以下是一個示例:
單元庫可以包含許多這樣的選擇組。通過使用 set_wire_load_selection_group,可以選擇特定的一個組供 STA 使用。
set_wire_load_selection_group WireAreaSelGrp
本節(jié)介紹了在物理實現(xiàn)之前(即在預(yù)布局階段)估算寄生參數(shù)的建模過程。下一節(jié)將介紹從布局中提取得到的寄生參數(shù)的表示方法。