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