專利名稱:驗證集成電路效能模型的方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于集成電路的計算器輔助設(shè)計;特別是,關(guān)于在一存儲器等待時間仿真環(huán)境中對集成電路效能模型進(jìn)行驗證。
背景技術(shù):
當(dāng)處理器發(fā)送請求至存儲器裝置,例如動態(tài)隨機(jī)存取存儲器(DRAM),處理器在一 段時間之后,才能讀取到存儲器裝置的響應(yīng),這種情況稱為“等待時間(latency) ”。舉例來 說,處理器發(fā)出讀取請求到高速緩沖寄存器(Cache)系統(tǒng),然后在一段時間后,高速緩沖寄 存器系統(tǒng)產(chǎn)生響應(yīng),并將所請求的數(shù)據(jù)放在總線,而在等待時間結(jié)束后,處理器可從總線中 取得所要的數(shù)據(jù)。如果處理器在等待時間結(jié)束前就試著要取得數(shù)據(jù),則處理器可能取得不 正確或是無效的數(shù)據(jù)。因此在設(shè)計處理器時,需要將存儲器的等待時間一并考慮。在先前技術(shù)中,處理器或是其它集成電路的計算器輔助設(shè)計需要許多的人力與物 力,來驗證集成電路模型是否是正確無誤。舉例來說,集成電路中定義功能需求的架構(gòu)模 型,一般是先由一個工程小組來負(fù)責(zé)編寫。接著另一個工程小組負(fù)責(zé)集成電路的寄存器傳 輸級(register transfer level)模型,并以架構(gòu)模型來驗證寄存器傳輸級模型的邏輯或 是功能。在先前技術(shù)中,乃是利用“固定等待時間”模型(或稱為仿真環(huán)境)來進(jìn)行驗證, 其中存儲器的等待時間被設(shè)定為固定值。但實際上,等待時間會因為種種的因素而變動,例 如不同種類的請求會有不同的等待時間。因此以“固定等待時間”所進(jìn)行的驗證可能是不 準(zhǔn)確的。根據(jù)以上所述,因此需要一種更準(zhǔn)確且動態(tài)的等待時間模型,來進(jìn)行集成電路的 驗證。
發(fā)明內(nèi)容
本發(fā)明提供一種驗證集成電路效能模型的方法、一種設(shè)計集成電路的方法、以及 一種動態(tài)仿真存儲器等待時間以設(shè)計集成電路的方法。在一實施例中,本發(fā)明提出一種驗證集成電路效能模型的方法,包含取得存取存 儲器的請求的統(tǒng)計數(shù)目與其對應(yīng)等待時間值;根據(jù)統(tǒng)計數(shù)目與對應(yīng)的等待時間值產(chǎn)生等待 時間的函數(shù);將隨機(jī)數(shù)代入等待時間的函數(shù)以取得一等待時間值;根據(jù)所取得的等待時間 值驗證集成電路效能模型的邏輯。在另一實施例中,本發(fā)明提出一種設(shè)計集成電路的方法,包含編寫集成電路的源 編碼;產(chǎn)生集成電路的效能模型;以及驗證效能模型。驗證效能模型的步驟還包含取得存 取存儲器的請求的統(tǒng)計數(shù)目與其對應(yīng)等待時間值;根據(jù)統(tǒng)計數(shù)目與對應(yīng)的等待時間值產(chǎn)生 等待時間的函數(shù);將隨機(jī)數(shù)代入等待時間的函數(shù)以取得一等待時間值;根據(jù)所取得的等待 時間值驗證效能模型的邏輯。在又一實施例中,本發(fā)明提出一種動態(tài)仿真存儲器等待時間以設(shè)計集成電路的方 法,包含編寫該集成電路的源編碼;產(chǎn)生集成電路的效能模型;以及驗證效能模型。驗證效能模型的步驟還包含取得存取存儲器的請求的統(tǒng)計數(shù)目與其對應(yīng)等待時間值;根據(jù)統(tǒng)計數(shù)目與對應(yīng)的等待時間值產(chǎn)生等待時間的函數(shù);將一隨機(jī)數(shù)代入等待時間的函數(shù)以取得一 等待時間值;將另一隨機(jī)數(shù)代入等待時間的函數(shù)以取得另一等待時間值;根據(jù)所取得的等 待時間值驗證效能模型的邏輯。通過以下的較佳實施例的敘述并配合圖式說明,本發(fā)明的目的、特征與優(yōu)點將更 為清楚。
圖1為本發(fā)明實施例設(shè)計集成電路的方法流程圖;圖2顯示本發(fā)明實施例的統(tǒng)計數(shù)據(jù);以及圖3a_3d顯示本發(fā)明實施例的分段線形函數(shù)。
具體實施例方式圖1顯示本發(fā)明一實施例中設(shè)計集成電路(例如圖形處理單元(GPU))的流程 圖。在步驟100,利用例如C++的編程語言編寫集成電路的源編碼,接著建立寄存器傳輸級 (RTL)的效能模型。在集成電路的設(shè)計中,寄存器傳輸級的描述是一種描述同步數(shù)字電路運 作的方式。在寄存器傳輸級的設(shè)計中,電路的行為是由硬件寄存器間的信號流動(或是數(shù) 據(jù)搬移)來定義,而通過這些信號來進(jìn)行邏輯操作。在步驟102中,取得統(tǒng)計數(shù)據(jù),例如存取存儲器的請求的統(tǒng)計請求數(shù)目與其對應(yīng) 等待時間值,以建立一存儲器等待時間分布模型。圖2顯示存儲器等待時間分布模型的范 例,其中X軸代表以頻率(Clk)來表示的等待時間值,Y軸則代表請求數(shù)目。需說明的是, 本發(fā)明中的統(tǒng)計請求數(shù)目與等待時間值可以從一真實系統(tǒng)的歷史數(shù)據(jù)中取得,或是如同圖 2范例中,由計算器仿真來產(chǎn)生。此外需說明的是,統(tǒng)計請求數(shù)目可只針對某一種類的請求, 例如讀取請求或是寫入請求,但在其它范例中,所取得的統(tǒng)計請求數(shù)目與請求的種類無關(guān)。從圖2范例中所顯示的統(tǒng)計數(shù)據(jù),假設(shè)全部共有2000個請求,而其等待時間值的 范圍從600Clks到900Clks。整個等待時間值的范圍(也就是600_900Clks)可被細(xì)分為 600-700Clks、700-800Clks、800-900Clks。而在 600_700Clks 這個范圍中,累積有 300 個 請求,占全部請求的15% ;在700-800Clks這個范圍中,累積有700個請求,占全部請求的 35%;在800-900Clks這個范圍中,累積有1000個請求,占全部請求的50%。需說明的是, 在其它實施例中,因應(yīng)不同的使用目的,整個等待時間值的范圍可被細(xì)分為任何數(shù)目、相等 或不等、的“子范圍”,而在相應(yīng)地,每個“子范圍”中所累積的請求或其對應(yīng)全部請求的比例 也會跟著改變。在步驟104中,根據(jù)在此細(xì)分范圍(也就是600-700Clks、700-800Clks、 800-900Clks其中之一)中所累積的請求,對每一個細(xì)分的范圍(或稱“子范圍”)分別產(chǎn) 生一預(yù)定函數(shù)。較佳地,此預(yù)定函數(shù)為分段線性函數(shù)(piecewise linear function),但本 發(fā)明其它實施例亦可利用連續(xù)、不連續(xù)、線性、或非線性函數(shù)來描述等待時間的分布狀況。在此范例中,還用每一細(xì)分范圍中所累積的請求相對于全部請求的比例,來決定 分段線性函數(shù)的區(qū)段。舉例來說,在600-700Clks這個范圍中所累積的請求,占全部請 求的15%,因此600-700Clks這個范圍的分段線性函數(shù)便建立在0與0. 15之間。依此,700-800Clks這個范圍的分段線性函數(shù)便建立在0. 15與0. 5之間;800_900Clks這個范圍 的分段線性函數(shù)便建立在0. 5與1之間。此范例的分段線性函數(shù)條列于下并顯示于圖3a, 其中X軸代表相對于全部請求的累積比例,Y軸代表以頻率(Clk)來表示的等待時間值。Y = X* (700-600)/(0· 15-0. 0)+600,其中 X 在 0 與 0. 15 之間;Y= (X-0. 15)* (800-700)/(0. 5-0. 15)+700,其中 X 在 0. 15 與 0. 5 之間;Y= (X-0. 5)* (900-800)/(1. 0-0. 5)+800,其中 X 在 0. 5 與 1 之間。在步驟106中,從0到1之間選擇一隨機(jī)數(shù),且將此隨機(jī)數(shù)代入上述三個分段線性 函數(shù)其中之一,以取得Y軸的等待時間值。舉例來說,如果隨機(jī)數(shù)為0. 1,其位于0與0. 15間 的范圍中,則此隨機(jī)數(shù)0. 1被代入第一個分段線性函數(shù),而取得等待時間值為666. 67Clks。 如果隨機(jī)數(shù)為0. 75,其位于0. 5與1間的范圍中,則此隨機(jī)數(shù)0. 1被代入第三個分段線性函 數(shù),而取得等待時間值為850Clks。根據(jù)此方法,存儲器存取的請求能夠以動態(tài)的方式進(jìn)行 仿真,且更接近真實的狀況。在步驟108中,一或多個等待時間值被用來驗證集成電路效能 模型的邏輯。 需說明的是,在上述步驟104中,并非一定要采用每一細(xì)分范圍中所累積的請求 相對于全部請求的比例。在其它實施例中,分段線性函數(shù)的區(qū)段可直接用統(tǒng)計請求數(shù)目來 決定,而相應(yīng)地,在步驟106中的隨機(jī)數(shù)將從整個統(tǒng)計請求數(shù)目的范圍中來挑選。此外,需說明的是,上述步驟102至106可通過軟件產(chǎn)品來實施,此軟件產(chǎn)品可由 編程語言例如“C++”來編寫,且可在個人計算器或工作站上執(zhí)行。執(zhí)行步驟102至106的 軟件產(chǎn)品可以是獨立的產(chǎn)品,或是僅為功能模塊,而需與其它功能模塊(例如用來分析排 隊行為的模塊)結(jié)合為完整的用于驗證的軟件產(chǎn)品。在另一實施例中,統(tǒng)計數(shù)據(jù)亦如圖2所示,假設(shè)全部共有2000個請求,而其等待時 間值的范圍從600Clks到900Clks。整個等待時間值的范圍(也就是600_900Clks)可被細(xì) 分為600-750Clks與750_900Clks兩個相等的范圍。而在600_750Clks這個范圍中,累積 有650個請求,占全部請求的32. 5% ;在750-900Clks這個范圍中,累積有1350個請求,占 全部請求的67.4%。在步驟104中,根據(jù)在600_750Clks與750_900Clks兩個范圍中所累積的請求,分 別產(chǎn)生分段線性函數(shù)。如先前所述,還用每一細(xì)分范圍中所累積的請求相對于全部請求的 比例,來決定分段線性函數(shù)的區(qū)段。舉例來說,在600-750Clks這個范圍中所累積的請求, 占全部請求的32. 5%,因此600-750Clks這個范圍的分段線性函數(shù)便建立在0與0. 325之 間。依此,750-900Clks這個范圍的分段線性函數(shù)便建立在0. 325與1之間。此范例的分段 線性函數(shù)條列于下并顯示于圖3b。Y = X* (750-600) / (0. 325-0. 0) +600,其中 X 在 0 與 0. 325 之間;Y = (X-0. 325) * (900-750) / (1-0. 325) +750,其中 X 在 0. 325 與 1 之間。在步驟106中,如果隨機(jī)數(shù)為0. 1,其位于0與0.325間的范圍中,則此隨機(jī)數(shù)0. 1 被代入第一個分段線性函數(shù),而取得等待時間值為646. 15Clks。如果隨機(jī)數(shù)為0. 75,其位 于0. 325與1間的范圍中,則此隨機(jī)數(shù)0. 75被代入第二個分段線性函數(shù),而取得等待時間 值為 844. 44Clks。在又一實施例中,統(tǒng)計數(shù)據(jù)亦如圖2所示,假設(shè)全部共有2000個請求,而其等待時 間值的范圍從600Clks到900Clks。整個等待時間值的范圍(也就是600_900Clks)可被細(xì)分為600-700Clks與700-900Clks兩個不相等的范圍。而在600_700Clks這個范圍中,累積有300個請求,占全部請求的15% ;在700-900Clks這個范圍中,累積有1700個請求,占 全部請求的85%。在步驟104中,根據(jù)在600_700Clks與700_900Clks兩個范圍中所累積的請求,分 別產(chǎn)生分段線性函數(shù)。如先前所述,還用每一細(xì)分范圍中所累積的請求相對于全部請求的 比例,來決定分段線性函數(shù)的區(qū)段。舉例來說,在600-700Clks這個范圍中所累積的請求, 占全部請求的15%,因此600-700Clks這個范圍的分段線性函數(shù)便建立在0與0. 15之間。 依此,700-900Clks這個范圍的分段線性函數(shù)便建立在0. 15與1之間。此范例的分段線性 函數(shù)條列于下并顯示于圖3c。Y = X*(700-600)/(O. 15-0. 0)+600,其中 X 在 0 與 0. 15 之間;Y= (X-0. 15)* (900-700)/(1-0. 15)+700,其中 X 在 0. 15 與 1 之間。在步驟106中,如果隨機(jī)數(shù)為0. 1,其位于0與0. 15間的范圍中,則此隨機(jī)數(shù)0. 1 被代入第一個分段線性函數(shù),而取得等待時間值為666. 67Clks。如果隨機(jī)數(shù)為0. 75,其位 于0. 15與1間的范圍中,則此隨機(jī)數(shù)0. 75被代入第二個分段線性函數(shù),而取得等待時間值 為 841.18Clks。在另一實施例中,統(tǒng)計數(shù)據(jù)亦如圖2所示,但等待時間值落在700_800Clks范圍 內(nèi)的請求被忽略不計,因此全部共有1300個請求,而其等待時間值的范圍從600Clks到 700Clks以及從800Clks到900Clks。而在600_700Clks這個范圍中,累積有300個請求, 占全部請求的23. ;在800-900Clks這個范圍中,累積有1000個請求,占全部請求的 76. 9%。在步驟104中,根據(jù)在600_700Clks與800_900Clks兩個范圍中所累積的請求,分 別產(chǎn)生分段線性函數(shù)。如先前所述,還用每一細(xì)分范圍中所累積的請求相對于全部請求的 比例,來決定分段線性函數(shù)的區(qū)段。舉例來說,在600-700Clks這個范圍中所累積的請求, 占全部請求的23. 1%,因此600-700Clks這個范圍的分段線性函數(shù)便建立在0與0. 231之 間。依此,800-900Clks這個范圍的分段線性函數(shù)便建立在0. 231與1之間。此范例的分段 線性函數(shù)條列于下并顯示于圖3d。Y = X* (700-600) / (0. 231-0. 0) +600,其中 X 在 0 與 0. 231 之間;Y= (X-0. 231)* (900-800)/(1-0. 231)+800,其中 X 在 0. 231 與 1 之間。在步驟106中,如果隨機(jī)數(shù)為0. 1,其位于0與0.231間的范圍中,則此隨機(jī)數(shù)0. 1 被代入第一個分段線性函數(shù),而取得等待時間值為643. 29Clks。如果隨機(jī)數(shù)為0. 75,其位 于0. 231與1間的范圍中,則此隨機(jī)數(shù)0. 75被代入第二個分段線性函數(shù),而取得等待時間 值為 867. 49Clks。雖然本發(fā)明已以實施例揭露如上,然其并非用以限定本發(fā)明,任何具有本發(fā)明所 屬技術(shù)領(lǐng)域的通常知識者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種更動與潤飾,并可 思揣其它不同的實施例,因此本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求范圍所界定者為準(zhǔn)。
權(quán)利要求
一種驗證集成電路效能模型的方法,包含(a)取得存取存儲器的請求的統(tǒng)計數(shù)目與其對應(yīng)等待時間值;(b)根據(jù)該統(tǒng)計數(shù)目與該對應(yīng)等待時間值產(chǎn)生至少一等待時間的函數(shù);(c)將一隨機(jī)數(shù)代入該等待時間的函數(shù)以取得一等待時間值;以及(d)根據(jù)所取得的等待時間值驗證該集成電路效能模型的邏輯。
2.根據(jù)權(quán)利要求1所述的方法,其中該等待時間的函數(shù)為分段線性函數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其中步驟(a)在該對應(yīng)等待時間值的范圍內(nèi)決定至少 一第一范圍與一第二范圍,以及導(dǎo)出在該第一范圍內(nèi)所累積的請求的第一請求數(shù)目與在該 第二范圍內(nèi)所累積的請求的第二請求數(shù)目。
4.根據(jù)權(quán)利要求3所述的方法,其中步驟(b)根據(jù)該第一請求數(shù)目產(chǎn)生該第一范圍的 第一分段線性函數(shù),以及根據(jù)該第二請求數(shù)目產(chǎn)生該第二范圍的第二分段線性函數(shù)。
5.根據(jù)權(quán)利要求4所述的方法,其中該第一范圍與該第二范圍不相等。
6.根據(jù)權(quán)利要求4所述的方法,其中該第一范圍與該第二范圍不相鄰。
7.根據(jù)權(quán)利要求4所述的方法,其中另有請求累積在該第一范圍與該第二范圍以外的 第三范圍。
8.根據(jù)權(quán)利要求4所述的方法,其中從該統(tǒng)計數(shù)目的范圍中選擇該隨機(jī)數(shù)。
9.根據(jù)權(quán)利要求4所述的方法,其中該第一范圍內(nèi)所累積的請求與在該第二范圍內(nèi)所 累積的請求合計為一總和,而步驟(a)導(dǎo)出在該第一范圍內(nèi)所累積的請求相對于該總和 的第一比例,以及導(dǎo)出在該第二范圍內(nèi)所累積的請求相對于該總和的第二比例;其中步驟(b)還以該第一比例決定該第一分段線性函數(shù)的區(qū)段,以該第二比例決定該 第二分段線性函數(shù)的區(qū)段。
10.根據(jù)權(quán)利要求9所述的方法,其中從0至1之間選擇選擇該隨機(jī)數(shù)。
11.一種設(shè)計集成電路的方法,包含編寫該集成電路的源編碼;產(chǎn)生該集成電路的效能模型;以及驗證該效能模型,該步驟還包含(a)取得存取存儲器的請求的統(tǒng)計數(shù)目與其對應(yīng)等待時間值;(b)根據(jù)該統(tǒng)計數(shù)目與該對應(yīng)等待時間值產(chǎn)生至少一等待時間的函數(shù);(c)將一隨機(jī)數(shù)代入該等待時間的函數(shù)以取得一等待時間值;以及(d)根據(jù)所取得的等待時間值驗證該效能模型的邏輯。
12.根據(jù)權(quán)利要求11所述的方法,其中該等待時間的函數(shù)為分段線性函數(shù)。
13.根據(jù)權(quán)利要求12所述的方法,其中步驟(a)在該對應(yīng)等待時間值的范圍內(nèi)決定至 少一第一范圍與一第二范圍,以及導(dǎo)出在該第一范圍內(nèi)所累積的請求的第一請求數(shù)目與在 該第二范圍內(nèi)所累積的請求的第二請求數(shù)目。
14.根據(jù)權(quán)利要求13所述的方法,其中步驟(b)根據(jù)該第一請求數(shù)目產(chǎn)生該第一范圍 的第一分段線性函數(shù),以及根據(jù)該第二請求數(shù)目產(chǎn)生該第二范圍的第二分段線性函數(shù)。
15.根據(jù)權(quán)利要求14所述的方法,其中該第一范圍內(nèi)所累積的請求與在該第二范圍內(nèi) 所累積的請求合計為一總和,而步驟(a)導(dǎo)出在該第一范圍內(nèi)所累積的請求相對于該總 和的第一比例,以及導(dǎo)出在該第二范圍內(nèi)所累積的請求相對于該總和的第二比例;其中步驟(b)還以該第一比例決定該第一分段線性函數(shù)的區(qū)段,以該第二比例決定該 第二分段線性函數(shù)的區(qū)段。
16.一種動態(tài)仿真存儲器等待時間以設(shè)計集成電路的方法,包含編寫該集成電路的源編碼;產(chǎn)生該集成電路的效能模型;以及驗證該效能模型,該步驟還包含(a)取得存取存儲器的請求的統(tǒng)計數(shù)目與其對應(yīng)等待時間值;(b)根據(jù)該統(tǒng)計數(shù)目與該對應(yīng)等待時間值產(chǎn)生至少一等待時間的函數(shù);(c)將一隨機(jī)數(shù)代入該等待時間的函數(shù)以取得一等待時間值;(d)將另一隨機(jī)數(shù)代入該等待時間的函數(shù)以取得另一等待時間值;以及(e)根據(jù)所取得的等待時間值驗證該效能模型的邏輯。
17.根據(jù)權(quán)利要求16所述的方法,其中該等待時間的函數(shù)為分段線性函數(shù)。
18.根據(jù)權(quán)利要求17所述的方法,其中步驟(a)在該對應(yīng)等待時間值的范圍內(nèi)決定至 少一第一范圍與一第二范圍,以及導(dǎo)出在該第一范圍內(nèi)所累積的請求的第一請求數(shù)目與在 該第二范圍內(nèi)所累積的請求的第二請求數(shù)目。
19.根據(jù)權(quán)利要求18所述的方法,其中步驟(b)根據(jù)該第一請求數(shù)目產(chǎn)生該第一范圍 的第一分段線性函數(shù),以及根據(jù)該第二請求數(shù)目產(chǎn)生該第二范圍的第二分段線性函數(shù)。
20.根據(jù)權(quán)利要求19所述的方法,其中該第一范圍內(nèi)所累積的請求與在該第二范圍內(nèi) 所累積的請求合計為一總和,而步驟(a)導(dǎo)出在該第一范圍內(nèi)所累積的請求相對于該總 和的第一比例,以及導(dǎo)出在該第二范圍內(nèi)所累積的請求相對于該總和的第二比例;其中步驟(b)還以該第一比例決定該第一分段線性函數(shù)的區(qū)段,以該第二比例決定該 第二分段線性函數(shù)的區(qū)段。
全文摘要
一種驗證集成電路效能模型的方法,包含取得存取存儲器的請求的統(tǒng)計數(shù)目與其對應(yīng)等待時間值;根據(jù)統(tǒng)計數(shù)目與對應(yīng)的等待時間值產(chǎn)生等待時間的函數(shù);將隨機(jī)數(shù)代入等待時間的函數(shù)以取得等待時間值;根據(jù)所取得的等待時間值驗證集成電路效能模型的邏輯。
文檔編號G06F17/50GK101859330SQ20091013189
公開日2010年10月13日 申請日期2009年4月9日 優(yōu)先權(quán)日2009年4月9日
發(fā)明者李曉偉, 白鈺, 魯埃爾·納什 申請人:輝達(dá)公司