專利名稱:基于gpu的集成電路電容參數(shù)提取系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及VLSI (Very Large Scale Integrated circuits,超大規(guī)模集成電路)物理設(shè)計(jì)領(lǐng)域,特別是關(guān)于集成電路互連電容參數(shù)的提取與電路時(shí)延分析。
背景技術(shù):
集成電路的設(shè)計(jì)流程中首先要提出功能描述,然后經(jīng)過(guò)邏輯設(shè)計(jì)、版圖設(shè)計(jì)得到描述半導(dǎo)體工藝尺寸、結(jié)構(gòu)的版圖,最后進(jìn)行版圖驗(yàn)證,即通過(guò)計(jì)算機(jī)軟件模擬來(lái)驗(yàn)證上述設(shè)計(jì)是否滿足要求。若滿足要求,則進(jìn)行下一步的生產(chǎn)制造。否則,若不滿足要求,則返回邏輯設(shè)計(jì)、版圖設(shè)計(jì)進(jìn)行必要的修正。在版圖驗(yàn)證中,一個(gè)重要的環(huán)節(jié)是“互連寄生參數(shù)提取”。隨著集成電路制造技術(shù)的發(fā)展,電路規(guī)模不斷增大、特征尺寸不斷縮小,當(dāng)今很多芯片已含有幾千萬(wàn)乃至上億個(gè)器件。然而,集成電路中互連線的寄生效應(yīng)造成互連線對(duì)電路延時(shí)的影響已超過(guò)了器件對(duì)電路延時(shí)的影響。因此,需要對(duì)互連線的電容、電阻等參數(shù)進(jìn)行準(zhǔn)確的計(jì)算,以保證電路模擬與驗(yàn)證的正確有效性。為了提高計(jì)算精度,互連線之間的電容參數(shù)提取需要使用三維提取方法,即利用三維場(chǎng)求解器進(jìn)行求解。場(chǎng)求解器的計(jì)算往往耗時(shí)較多,對(duì)其算法的優(yōu)化與加速研究意義很大。在集成電路電容參數(shù)提取的場(chǎng)求解器方法中,隨機(jī)行走電容提取算法是一種比較流行的方法。申請(qǐng)人在第十七屆國(guó)際會(huì)議Asia and South Pacific Design AutomationConference 2012 發(fā)表的論文“Fast Floating Random Walk Algorithm for CapacitanceExtraction with Numerical Characterization of Green’s Function,,中,公開(kāi)了一種集成電路多層介質(zhì)工藝隨機(jī)行走電容提取方法。該方法在給定集成電路多層介質(zhì)工藝的條件下(即導(dǎo)體周圍為多層介質(zhì)),預(yù)計(jì)算隨機(jī)行走算法中需要的信息(如多層介質(zhì)層轉(zhuǎn)移區(qū)域的轉(zhuǎn)移概率分布以及相應(yīng)權(quán)值分布數(shù)據(jù))并應(yīng)用于隨機(jī)行走算法中,從而在多層介質(zhì)情況下進(jìn)行電容參數(shù)提取時(shí)能進(jìn)行跨介質(zhì)層的跳轉(zhuǎn)操作。然而,所述論文中提取電容參數(shù)的方法仍然耗時(shí)較多,因此,其效率有待提高。
發(fā)明內(nèi)容
鑒于以上內(nèi)容,有必要提供一種基于GPU的集成電路電容參數(shù)提取系統(tǒng)與方法,能夠快速計(jì)算集成電路中主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體之間的電容參數(shù)。一種基于GPU的集成電路電容參數(shù)提取系統(tǒng),運(yùn)行于計(jì)算設(shè)備中,該計(jì)算設(shè)備包括存儲(chǔ)設(shè)備、CPU及GPU,所述存儲(chǔ)設(shè)備存儲(chǔ)集成電路版圖、預(yù)先建立的格林函數(shù)庫(kù)及權(quán)值向量,該系統(tǒng)包括:初始化模塊,用于(a)設(shè)置目標(biāo)精度q、GPU線程數(shù)threadNum、GPU線程塊的數(shù)目blockNum及總目標(biāo)路徑數(shù)pathGoal,其中blockNum是threadNum的約數(shù);(b)從所述存儲(chǔ)設(shè)備中讀取集成電路版圖、格林函數(shù)庫(kù)及權(quán)值向量;(c)在CPU的內(nèi)存及GPU的全局存儲(chǔ)器中分配電容參數(shù)提取所需的存儲(chǔ)空間并初始化變量;(d)在所述集成電路版圖中建立一個(gè)包圍主導(dǎo)體的高斯面,高斯面內(nèi)僅包含主導(dǎo)體并且不與任何環(huán)境導(dǎo)體相交;及(e)根據(jù)GPU線程數(shù)threadNum、GPU線程塊的數(shù)目blockNum及總目標(biāo)路徑數(shù)pathGoal,計(jì)算每個(gè)GPU線程塊的最小目標(biāo)路徑數(shù)blockWalkMin與每個(gè)GPU線程的最大目標(biāo)路徑數(shù)threadWalkMax ;隨機(jī)行走開(kāi)始模塊,用于(f)并行地運(yùn)行threadNum個(gè)GPU線程,每個(gè)GPU線程根據(jù)建立的高斯面及讀取的格林函數(shù)庫(kù)生成threadWalkMax個(gè)行走起始點(diǎn),根據(jù)讀取的權(quán)值向量查找行走起始點(diǎn)對(duì)應(yīng)的權(quán)值,并將行走起始點(diǎn)的坐標(biāo)及行走起始點(diǎn)對(duì)應(yīng)的權(quán)值存儲(chǔ)到GPU的全局存儲(chǔ)器中;隨機(jī)行走跳轉(zhuǎn)模塊,用于(g)并行地運(yùn)行blockNum個(gè)GPU線程塊,GPU線程塊中的每個(gè)GPU線程不斷地從GPU的全局存儲(chǔ)器中讀取行走起始點(diǎn)進(jìn)行隨機(jī)行走,直到GPU線程執(zhí)行了 threadWalkMax次行走,或者整個(gè)GPU線程塊執(zhí)行了 blockWalkMin次行走,每次行走從一個(gè)行走起始點(diǎn)開(kāi)始,直到擊中某一導(dǎo)體,將每次行走擊中導(dǎo)體的編號(hào)存儲(chǔ)到GPU的全局存儲(chǔ)器中,當(dāng)所有GPU線程塊都執(zhí)行了 blockWalkMin次行走,本模塊結(jié)束;隨機(jī)行走統(tǒng)計(jì)模塊,用于(h)并行地運(yùn)行threadNum個(gè)GPU線程,從GPU的全局存儲(chǔ)器中讀取隨機(jī)行走跳轉(zhuǎn)模塊存儲(chǔ)的擊中導(dǎo)體的編號(hào)及相應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值,根據(jù)讀取的擊中導(dǎo)體的編號(hào)及相應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和,并將計(jì)算的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和存儲(chǔ)到GPU的全局存儲(chǔ)器中;及控制模塊,用于(i)將GPU的全局存儲(chǔ)器中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和復(fù)制到CPU的內(nèi)存中;及(j)根據(jù)CPU的內(nèi)存中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和計(jì)算主導(dǎo)體的自電容的相對(duì)誤差relError,若relError小于等于目標(biāo)精度q,則計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體之間的耦合電容及主導(dǎo)體的自電容,否則,若relError大于目標(biāo)精度q,則更新總目標(biāo)路徑數(shù)pathGoal,更新后的總目標(biāo)路徑數(shù)即達(dá)到目標(biāo)精度還需行走的路徑數(shù)。—種基于GPU的集成電路電容參數(shù)提取方法,應(yīng)用于計(jì)算設(shè)備中,該計(jì)算設(shè)備包括存儲(chǔ)設(shè)備、CPU及GPU,所述存儲(chǔ)設(shè)備存儲(chǔ)集成電路版圖、預(yù)先建立的格林函數(shù)庫(kù)及權(quán)值向量,該方法包括:(a)設(shè)置目標(biāo)精度q、GPU線程數(shù)threadNum及總目標(biāo)路徑數(shù)pathGoal,其中blockNum是threadNum的約數(shù);(b)從所述存儲(chǔ)設(shè)備中讀取集成電路版圖、格林函數(shù)庫(kù)及權(quán)值向量;(c)在CPU的內(nèi)存及GPU的全局存儲(chǔ)器中分配電容參數(shù)提取所需的存儲(chǔ)空間并初始化變量;(d)在所述集成電路版圖中建立一個(gè)包圍主導(dǎo)體的高斯面,高斯面內(nèi)僅包含主導(dǎo)體并且不與任何環(huán)境導(dǎo)體相交;(e)根據(jù)GPU線程數(shù)threadNum、GPU線程塊的數(shù)目blockNum及總目標(biāo)路徑數(shù)pathGoal,計(jì)算每個(gè)GPU線程塊的最小目標(biāo)路徑數(shù)blockWalkMin與GPU線程的最大目標(biāo)路徑數(shù)threadWalkMax ; (f)并行地運(yùn)行threadNum個(gè)GPU線程,每個(gè)GPU線程根據(jù)建立的高斯面及讀取的格林函數(shù)庫(kù)生成threadWalkMax個(gè)行走起始點(diǎn),根據(jù)讀取的權(quán)值向量查找行走起始點(diǎn)對(duì)應(yīng)的權(quán)值,并將行走起始點(diǎn)的坐標(biāo)及行走起始點(diǎn)對(duì)應(yīng)的權(quán)值存儲(chǔ)到GPU的全局存儲(chǔ)器中;(g)并行地運(yùn)行blockNum個(gè)GPU線程塊,GPU線程塊中的每個(gè)GPU線程不斷地從GPU的全局存儲(chǔ)器中讀取行走起始點(diǎn)進(jìn)行隨機(jī)行走,每次行走從一個(gè)行走起始點(diǎn)開(kāi)始,直到擊中某一導(dǎo)體,將每次行走擊中導(dǎo)體的編號(hào)存儲(chǔ)到GPU的全局存儲(chǔ)器中,直到GPU線程執(zhí)行了 threadWalkMax次行走,或者整個(gè)GPU線程塊執(zhí)行了 blockWalkMin次行走,當(dāng)所有GPU線程塊都執(zhí)行了 blockWalkMin次行走,本步驟結(jié)束;(h)并行地運(yùn)行threadNum個(gè)GPU線程,從GPU的全局存儲(chǔ)器中讀取步驟(g)中存儲(chǔ)的擊中導(dǎo)體的編號(hào)及相應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值,根據(jù)讀取的擊中導(dǎo)體的編號(hào)及相應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和,并將計(jì)算的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和存儲(chǔ)到GPU的全局存儲(chǔ)器中;(i)將GPU的全局存儲(chǔ)器中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和復(fù)制到CPU的內(nèi)存中;(j)根據(jù)CPU的內(nèi)存中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和計(jì)算主導(dǎo)體的自電容的相對(duì)誤差relError,若relError小于等于目標(biāo)精度q,則計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體之間的耦合電容及主導(dǎo)體的自電容,否則,若relError大于目標(biāo)精度q,則更新總目標(biāo)路徑數(shù)pathGoal,然后返回步驟(e),更新后的總目標(biāo)路徑數(shù)即達(dá)到目標(biāo)精度還需行走的路徑數(shù)。本發(fā)明利用GPlKGraphic Processing Unit,圖形處理器)的并行處理能力來(lái)加快隨機(jī)行走電容提取算法的計(jì)算速度。目前,GPU已成為具有眾多計(jì)算核心的通用計(jì)算設(shè)備,GTO采用單指令多數(shù)據(jù)(SMD)的并行計(jì)算方式。使用GPU進(jìn)行并行計(jì)算時(shí),多個(gè)線程被組織成線程塊(thread block),整個(gè)線程塊中的線程按SMD方式并行執(zhí)行。而且,在并行計(jì)算資源調(diào)度中,GPU線程塊是基本單元。本發(fā)明將隨機(jī)行走算法分成三個(gè)不同的模塊,不同的模塊之間通過(guò)在GPU全局存儲(chǔ)器上的存儲(chǔ)空間進(jìn)行數(shù)據(jù)交換。通過(guò)模塊分割,本發(fā)明能夠有效減少GPU上不同線程的指令分歧,從而有效提高并行計(jì)算效率。此外,本發(fā)明通過(guò)整體迭代與估算剩余的隨機(jī)行走路徑數(shù)目,能根據(jù)所設(shè)目標(biāo)精度自動(dòng)確定所需的隨機(jī)行走路徑數(shù),達(dá)到了加快收斂過(guò)程、減少總計(jì)算時(shí)間的效果。
圖1是本發(fā)明基于GPU的集成電路電容參數(shù)提取系統(tǒng)較佳實(shí)施例的運(yùn)行環(huán)境示意圖。圖2是集成電路的導(dǎo)體分布示意圖。圖3是本發(fā)明基于GPU的集成電路電容參數(shù)提取方法的示意圖。圖4是圖1中基于GPU的集成電路電容參數(shù)提取系統(tǒng)的功能模塊圖。圖5是本發(fā)明基于GPU的集成電路電容參數(shù)提取方法較佳實(shí)施例的流程圖。圖6是圖5中步驟S506的細(xì)化流程圖。圖7是圖5中步驟S507的細(xì)化流程圖。圖8是圖5中步驟S508的細(xì)化流程圖。圖9是圖5中步驟S510的細(xì)化流程圖。主要元件符號(hào)說(shuō)明
權(quán)利要求
1.一種基于GPU的集成電路電容參數(shù)提取系統(tǒng),運(yùn)行于計(jì)算設(shè)備中,該計(jì)算設(shè)備包括存儲(chǔ)設(shè)備、CPU及GPU,所述存儲(chǔ)設(shè)備存儲(chǔ)集成電路版圖、預(yù)先建立的格林函數(shù)庫(kù)及權(quán)值向量,其特征在于,該系統(tǒng)包括: 初始化模塊,用于(a)設(shè)置目標(biāo)精度q、GPU線程數(shù)threadNum、GPU線程塊的數(shù)目blockNum及總目標(biāo)路徑數(shù)pathGoal,其中blockNum是threadNum的約數(shù);(b)從所述存儲(chǔ)設(shè)備中讀取集成電路版圖、格林函數(shù)庫(kù)及權(quán)值向量;(c)在CPU的內(nèi)存及GPU的全局存儲(chǔ)器中分配電容參數(shù)提取所需的存儲(chǔ)空間并初始化變量;(d)在所述集成電路版圖中建立一個(gè)包圍主導(dǎo)體的高斯面,高斯面內(nèi)僅包含主導(dǎo)體并且不與任何環(huán)境導(dǎo)體相交;及(e)根據(jù)GPU線程數(shù)threadNum、GPU線程塊的數(shù)目blockNum及總目標(biāo)路徑數(shù)pathGoal,計(jì)算每個(gè)GPU線程塊的最小目標(biāo)路徑數(shù)blockWalkMin與每個(gè)GPU線程的最大目標(biāo)路徑數(shù)threadWalkMax ;隨機(jī)行走開(kāi)始模塊,用于(f)并行地運(yùn)行threadNum個(gè)GPU線程,每個(gè)GPU線程根據(jù)建立的高斯面及讀取的格林函數(shù)庫(kù)生成threadWalkMax個(gè)行走起始點(diǎn),根據(jù)讀取的權(quán)值向量查找行走起始點(diǎn)對(duì)應(yīng)的權(quán)值,并將行走起始點(diǎn)的坐標(biāo)及行走起始點(diǎn)對(duì)應(yīng)的權(quán)值存儲(chǔ)到GPU的全局存儲(chǔ)器中; 隨機(jī)行走跳轉(zhuǎn)模塊,用于(g)并行地運(yùn)行blockNum個(gè)GPU線程塊,GPU線程塊中的每個(gè)GPU線程不斷地從GPU的全局存儲(chǔ)器中讀取行走起始點(diǎn)進(jìn)行隨機(jī)行走,直到GPU線程執(zhí)行了 threadWalkMax次行走,或者整個(gè)GPU線程塊執(zhí)行了 blockWalkMin次行走,每次行走從一個(gè)行走起始點(diǎn)開(kāi)始,直到擊中某一導(dǎo)體,將每次行走擊中導(dǎo)體的編號(hào)存儲(chǔ)到GPU的全局存儲(chǔ)器中,當(dāng)所有GPU線程塊都執(zhí)行了 blockWalkMin次行走,本模塊結(jié)束; 隨機(jī)行走統(tǒng)計(jì)模塊,用于(h)并行地運(yùn)行threadNum個(gè)GPU線程,從GPU的全局存儲(chǔ)器中讀取隨機(jī)行走跳轉(zhuǎn)模塊存儲(chǔ)的擊中導(dǎo)體的編號(hào)及相應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值,根據(jù)讀取的擊中導(dǎo)體的編號(hào)及相 應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和,并將計(jì)算的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和存儲(chǔ)到GPU的全局存儲(chǔ)器中;及 控制模塊,用于(i)將GPU的全局存儲(chǔ)器中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和復(fù)制到CPU的內(nèi)存中;及(j)根據(jù)CPU的內(nèi)存中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和計(jì)算主導(dǎo)體的自電容的相對(duì)誤差relError,若relError小于等于目標(biāo)精度q,則計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體之間的耦合電容及主導(dǎo)體的自電容,否則,若relError大于目標(biāo)精度q,則更新總目標(biāo)路徑數(shù)pathGoal,更新后的總目標(biāo)路徑數(shù)即達(dá)到目標(biāo)精度還需行走的路徑數(shù)。
2.如權(quán)利要求1所述的基于GPU的集成電路電容參數(shù)提取系統(tǒng),其特征在于,所述(f)中每個(gè)行走起始點(diǎn)的生成包括步驟: (Π)從建立的高斯面上隨機(jī)選取一個(gè)點(diǎn),以選取的點(diǎn)為中心,構(gòu)造一個(gè)極大的不包含任何導(dǎo)體的立方體轉(zhuǎn)移區(qū)域;及 (f2)在轉(zhuǎn)移區(qū)域的表面,根據(jù)讀取的格林函數(shù)庫(kù),選取一個(gè)點(diǎn)作為行走起始點(diǎn)。
3.如權(quán)利要求1所述的基于GPU的集成電路電容參數(shù)提取系統(tǒng),其特征在于,所述(e)中GPU線程塊的最小目標(biāo)路徑數(shù)blockWalkMin與GPU線程的最大目標(biāo)路徑數(shù)threadWalkMax根據(jù)以下公式計(jì)算:
4.如權(quán)利要求1所述的基于GPU的集成電路電容參數(shù)提取系統(tǒng),其特征在于,所述總目標(biāo)路徑數(shù)pathGoal根據(jù)以下公式更新:
5.一種基于GPU的集成電路電容參數(shù)提取方法,應(yīng)用于計(jì)算設(shè)備中,該計(jì)算設(shè)備包括存儲(chǔ)設(shè)備、CPU及GPU,所述存儲(chǔ)設(shè)備存儲(chǔ)集成電路版圖、預(yù)先建立的格林函數(shù)庫(kù)及權(quán)值向量,其特征在于,該方法包括: (a)設(shè)置目標(biāo)精度q、GPU線程數(shù)threadNum及總目標(biāo)路徑數(shù)pathGoal,其中blockNum是threadNum的約數(shù); (b)從所述存儲(chǔ)設(shè)備中讀取集成電路版圖、格林函數(shù)庫(kù)及權(quán)值向量; (c)在CPU的內(nèi)存及GPU的全局存儲(chǔ)器中分配電容參數(shù)提取所需的存儲(chǔ)空間并初始化變量; (d)在所述集成電路版圖中建立一個(gè)包圍主導(dǎo)體的高斯面,高斯面內(nèi)僅包含主導(dǎo)體并且不與任何環(huán)境導(dǎo)體相交; (e)根據(jù)GPU線程數(shù)threadNum、GPU線程塊的數(shù)目blockNum及總目標(biāo)路徑數(shù)pathGoal,計(jì)算每個(gè)GPU線程塊的最小目標(biāo)路徑數(shù)blockWalkMin與GPU線程的最大目標(biāo)路徑數(shù) threadWalkMax ; (f)并行地運(yùn)行threadNum個(gè)GPU線程,每個(gè)GPU線程根據(jù)建立的高斯面及讀取的格林函數(shù)庫(kù)生成threadWalkMax個(gè)行走起始點(diǎn),根據(jù)讀取的權(quán)值向量查找行走起始點(diǎn)對(duì)應(yīng)的權(quán)值,并將行走起始點(diǎn)的坐標(biāo)及行走起始點(diǎn)對(duì)應(yīng)的權(quán)值存儲(chǔ)到GPU的全局存儲(chǔ)器中; (g)并行地運(yùn)行blockNum個(gè)GPU線程塊,GPU線程塊中的每個(gè)GPU線程不斷地從GPU的全局存儲(chǔ)器中讀取行走起始點(diǎn)進(jìn)行隨機(jī)行走,每次行走從一個(gè)行走起始點(diǎn)開(kāi)始,直到擊中某一導(dǎo)體,將每次行走擊中導(dǎo)體的編號(hào)存儲(chǔ)到GPU的全局存儲(chǔ)器中,直到GPU線程執(zhí)行了threadWalkMax次行走,或者整個(gè)GPU線程塊執(zhí)行了 blockWalkMin次行走,當(dāng)所有GPU線程塊都執(zhí)行了 blockWalkMin次行走,本步驟結(jié)束; (h)并行地運(yùn)行threadNum個(gè)GPU線程,從GPU的全局存儲(chǔ)器中讀取步驟(g)中存儲(chǔ)的擊中導(dǎo)體的編號(hào)及相應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值,根據(jù)讀取的擊中導(dǎo)體的編號(hào)及相應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和,并將計(jì)算的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和存儲(chǔ)到GPU的全局存儲(chǔ)器中; (i)將GPU的全局存儲(chǔ)器中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和復(fù)制到CPU的內(nèi)存中;(j)根據(jù)CPU的內(nèi)存中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和計(jì)算主導(dǎo)體的自電容的相對(duì)誤差relError,若relError小于等于目標(biāo)精度q,則計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體之間的耦合電容及主導(dǎo)體的自電容,否則,若relError大于目標(biāo)精度q,則更新總目標(biāo)路徑數(shù)pathGoal,然后返回步驟(e),更新后的總目標(biāo)路徑數(shù)即達(dá)到目標(biāo)精度還需行走的路徑數(shù)。
6.如權(quán)利要求5所述的基于GPU的集成電路電容參數(shù)提取方法,其特征在于,所述GPU線程塊的最小目標(biāo)路徑數(shù)blockWalkMin與GPU線程的最大目標(biāo)路徑數(shù)threadWalkMax根據(jù)以下公式計(jì)算:
7.如權(quán)利要求5所述的基于GPU的集成電路電容參數(shù)提取方法,其特征在于,步驟(f)中每個(gè)行走起始點(diǎn)的生成包括步驟: (Π)從建立的高斯面上隨機(jī)選取一個(gè)點(diǎn),以選取的點(diǎn)為中心,構(gòu)造一個(gè)極大的不包含任何導(dǎo)體的立方體轉(zhuǎn)移區(qū) 域;及 (f2)在轉(zhuǎn)移區(qū)域的表面,根據(jù)讀取的格林函數(shù)庫(kù),選取一個(gè)點(diǎn)作為行走起始點(diǎn)。
8.如權(quán)利要求5所述的基于GPU的集成電路電容參數(shù)提取方法,其特征在于,步驟(g)中每次行走包括步驟: (gl)從GPU的全局存儲(chǔ)器中讀取一個(gè)行走起始點(diǎn)作為當(dāng)前行走點(diǎn); (g2)以當(dāng)前行走點(diǎn)為中心,構(gòu)造一個(gè)極大的不包含導(dǎo)體的立方體轉(zhuǎn)移區(qū)域; (g3)根據(jù)讀取的格林函數(shù)庫(kù),在當(dāng)前行走點(diǎn)的轉(zhuǎn)移區(qū)域的表面隨機(jī)選取一個(gè)點(diǎn)作為下一個(gè)行走點(diǎn); (g4)判斷下一個(gè)行走點(diǎn)是否擊中導(dǎo)體,若未擊中導(dǎo)體,則跳轉(zhuǎn)到步驟(g2);及(g5)否則,若下一個(gè)行走點(diǎn)擊中導(dǎo)體,將本次行走擊中導(dǎo)體的編號(hào)存儲(chǔ)到GPU的全局存儲(chǔ)器中。
9.如權(quán)利要求5所述的基于GPU的集成電路電容參數(shù)提取方法,其特征在于,所述步驟(j)包括: (jl)計(jì)算累計(jì)已行走的路徑數(shù)pathNum ; (J2)根據(jù)CPU的內(nèi)存中存儲(chǔ)的主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及累計(jì)電容平方和計(jì)算主導(dǎo)體和每個(gè)環(huán)境導(dǎo)體之間的耦合電容的誤差; (J3)根據(jù)主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體的累計(jì)電容值及主導(dǎo)體和每個(gè)環(huán)境導(dǎo)體之間的耦合電容的誤差計(jì)算主導(dǎo)體的自電容的相對(duì)誤差relError ; (J4)判斷主導(dǎo)體的自電容的相對(duì)誤差relError是否小于等于目標(biāo)精度q ; (j5)若relError小于等于目標(biāo)精度q,則計(jì)算主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體之間的耦合電容及主導(dǎo)體的自電容,并輸出主導(dǎo)體和每個(gè)環(huán)境導(dǎo)體之間的耦合電容的誤差、主導(dǎo)體的自電容的相對(duì)誤差relError、主導(dǎo)體與每個(gè)環(huán)境導(dǎo)體之間的耦合電容及主導(dǎo)體的自電容;及(j6)若relError大于目標(biāo)精度q,根據(jù)當(dāng)前累計(jì)已行走的路徑數(shù)pathNum及主導(dǎo)體的自電容的相對(duì)誤差relError更新總目標(biāo)路徑數(shù)pathGoal。
10.如權(quán)利要求5所述的基于GPU的集成電路電容參數(shù)提取方法,其特征在于,所述總目標(biāo)路徑數(shù)pathGoal根據(jù)以下公式更新:
全文摘要
一種基于GPU的集成電路電容參數(shù)提取系統(tǒng)及方法,該系統(tǒng)包括隨機(jī)行走開(kāi)始模塊、隨機(jī)行走跳轉(zhuǎn)模塊及隨機(jī)行走統(tǒng)計(jì)模塊。各模塊在GPU的全局存儲(chǔ)器上進(jìn)行數(shù)據(jù)交換。每個(gè)模塊并行運(yùn)行多個(gè)GPU線程。隨機(jī)行走開(kāi)始模塊中,每個(gè)GPU線程生成指定數(shù)量的行走起始點(diǎn)并獲得行走起始點(diǎn)對(duì)應(yīng)的權(quán)值。隨機(jī)行走跳轉(zhuǎn)模塊中,每個(gè)GPU線程進(jìn)行指定次數(shù)隨機(jī)行走,獲得每次行走擊中導(dǎo)體的編號(hào)。隨機(jī)行走統(tǒng)計(jì)模塊中,每個(gè)GPU線程讀取指定數(shù)量的擊中導(dǎo)體的編號(hào)及相應(yīng)的行走起始點(diǎn)對(duì)應(yīng)的權(quán)值用以計(jì)算累計(jì)電容值及累計(jì)電容平方和。若主導(dǎo)體自電容的相對(duì)誤差未達(dá)到目標(biāo)精度,則估算還需行走的路徑數(shù)。本發(fā)明能夠?qū)崿F(xiàn)集成電路電容參數(shù)的快速提取。
文檔編號(hào)G06F17/50GK103198177SQ20131007617
公開(kāi)日2013年7月10日 申請(qǐng)日期2013年3月11日 優(yōu)先權(quán)日2013年3月11日
發(fā)明者喻文健, 翟匡亞, 莊昊 申請(qǐng)人:清華大學(xué)