專利名稱:仿真方法和仿真系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在起始時(shí)包含如處理器和DSP (數(shù)字信號處理器)的硬件的 各個(gè)功能的系統(tǒng)LSI的仿真技術(shù)。更具體地,本發(fā)明關(guān)注于當(dāng)采用的系統(tǒng)級 語言典型地已知為C/C+十和SystemC時(shí),基于包括時(shí)鐘的時(shí)間概念的周期基 (cycle base)^U亍仿真的4支術(shù)。
背景技術(shù):
在通過使用HDL (硬件描述語言)語言(Verilog和VHDL )的傳統(tǒng)RTL (寄存器傳送級)描述中,仿真可以與每個(gè)事件同步地執(zhí)行。然而,與關(guān)于 系統(tǒng)LSI的規(guī)模增長相關(guān)聯(lián),在操作整個(gè)系統(tǒng)LSI的大規(guī)模仿真中,事件的 總數(shù)增加。結(jié)果,在RTL描述級,存在降低了仿真速度這一問題。為了解決上述問題,當(dāng)前,這樣的機(jī)制能夠通過利用如SystemC的系統(tǒng) 級語言來實(shí)現(xiàn)高速仿真。然而,即使在采用系統(tǒng)級語言的仿真中,當(dāng)仿真基 于包括時(shí)間概念的周期基而執(zhí)行時(shí),每個(gè)硬件的功能模型也在每個(gè)周期執(zhí)行。例如,根據(jù)通過SystemC的系統(tǒng)級語言進(jìn)行的描述,在當(dāng)執(zhí)行仿真時(shí)采 用時(shí)鐘的時(shí)間概念這樣的情形中,當(dāng)利用 SC—THREAD/SC—CTHREAD/SC—METHOD時(shí),當(dāng)與時(shí)鐘同步4丸行的處理操 作被定義為處理時(shí),執(zhí)行處理操作(例如,參照非專利公開l)。非專利7^開1:題為"System Design based upon SystemC"的日本書籍, 4乍者Thorsten Grotker、 Stan Liao、 Grant Martin禾口 Stuart Swan,由M. Kakimoto、 M. Kawarabayashi和T. Hasegawa翻譯,MARUZEN K.K.于2003年1月30 日出版。由于執(zhí)行使用系統(tǒng)語言的仿真,所以可以容易地進(jìn)行周期基的仿真描述。 而且,可以對每個(gè)硬件模型描述周期基上每個(gè)硬件的操作描述。然而,當(dāng)系統(tǒng)LSI的規(guī)模進(jìn)一步增加并且軟件處理操作的規(guī)模增加時(shí)(該 軟件處理操作期望由系統(tǒng)LSI的仿真器執(zhí)行),要在周期基的描述中執(zhí)行的處 理操作增加,使得期望高速執(zhí)行仿真。例如,在通過采用上述SystemC的示例中,在SC-THREAD中登記的處 理必須與對SC—THREAD設(shè)置的時(shí)鐘的上升沿(或者,下降沿)同步執(zhí)行。 結(jié)果,如果構(gòu)成系統(tǒng)LSI的對象的模型總數(shù)增加,則增加的模型使處理總數(shù) 增力口。如果當(dāng)前負(fù)載情況不是所有塊都在操作這種最大負(fù)載情況,則執(zhí)行各個(gè)模型的操作已經(jīng)被描述的各個(gè)處理。然而,存在許多情況,其中沒有執(zhí)行可 能對系統(tǒng)有影響的操作。即使在這樣的情況下,由于執(zhí)行了處理,各個(gè)模型 的處理調(diào)用也可能構(gòu)成仿真的開銷。結(jié)果,在傳統(tǒng)的仿真方法中,在與每個(gè)周期同步執(zhí)行的每個(gè)處理操作中, 操作必須通過檢查系統(tǒng)的狀態(tài)而改變,或執(zhí)行必須通過檢查執(zhí)行各個(gè)處理操 作的主例程中系統(tǒng)的狀態(tài)而控制。圖9示出用于描述通過檢查系統(tǒng)的狀態(tài)而改變操作的傳統(tǒng)仿真系統(tǒng)的流 程圖。即,在圖9 U)所示的主例程處理操作中,系統(tǒng)被初始化(步驟S41 ); 判斷是否繼續(xù)執(zhí)行仿真(步驟S42);并且當(dāng)繼續(xù)執(zhí)行仿真時(shí)(是),判斷硬 件處理操作1的執(zhí)行(步驟S43 )。在步驟S43中,傳統(tǒng)仿真方法的處理操作前進(jìn)到圖9 (b)中所示的硬件 處理操作1,然后判斷當(dāng)前處理狀態(tài)是否是處理可執(zhí)行的狀態(tài)(步驟S51); 并且在當(dāng)前處理狀態(tài)是處理可執(zhí)行的狀態(tài)時(shí)(是),執(zhí)行硬件處理操作1 (步 驟S52 )。類似地,在硬件處理操作2 (步驟S44)和另一硬件處理操作3 (步驟 S45)中,傳統(tǒng)仿真方法的處理操作前進(jìn)到圖9 (b)中示出的硬件處理操作2 和3,其中判斷當(dāng)前處理狀態(tài)是否是處理可執(zhí)行的狀態(tài)(步驟S51 );并且如 果當(dāng)前處理狀態(tài)是處理可執(zhí)行的狀態(tài)(是),則執(zhí)行硬件處理操作2或3 (步 驟S52 )。圖IO示出傳統(tǒng)仿真方法的流程圖,在傳統(tǒng)仿真方法中,檢查在用于執(zhí)行 各個(gè)處理操作的主例程中系統(tǒng)的狀態(tài),以便控制執(zhí)行。即,在圖10(a)所示 的主例程處理操作中,系統(tǒng)被初始化(步驟S61 );判斷是否繼續(xù)執(zhí)行仿真(步 驟S62);并且進(jìn)一步,判斷硬件處理操作l是否在處理可執(zhí)行狀態(tài)下(步驟 S63);同樣,當(dāng)硬件處理操作1在處理可執(zhí)行狀態(tài)下時(shí)(是),執(zhí)行硬件處理 操作i (步驟S64和S71)。類似地,判斷硬件處理操作2是否在處理可執(zhí)行狀態(tài)下(步驟S65);并且當(dāng)硬件處理操作2在處理可執(zhí)行狀態(tài)下時(shí)(是),執(zhí)行硬件處理操作2 (步 驟S66和S71)。而且,判斷硬件處理操作3是否在處理可執(zhí)行狀態(tài)下(步驟 S67 );并且當(dāng)硬件處理操作3在處理可執(zhí)行狀態(tài)下時(shí)(是),執(zhí)行硬件處理操 作3 (步驟S68和S71)。與上述傳統(tǒng)的仿真方法相反,作為能夠?qū)崿F(xiàn)高速仿真的方法,存在這樣 的方法,其用于在抽象時(shí)間概念時(shí)實(shí)現(xiàn)沒有時(shí)間概念的仿真。在裝配系統(tǒng)的 仿真中,時(shí)間概念構(gòu)成重要的元素,在所述裝配系統(tǒng)的仿真中主要執(zhí)行在硬 件結(jié)構(gòu)已經(jīng)被定義為系統(tǒng)LSI后,在開發(fā)階段的實(shí)時(shí)處理操作;并且存在另 一重要之處由定時(shí)器進(jìn)行的時(shí)間管理和周期性的處理操作以高精確度仿真。時(shí)間概念的抽象已經(jīng)通過改變圖9和圖IO中所示的主例程的處理操作自 身來實(shí)現(xiàn)?,F(xiàn)在將描述不抽象時(shí)間概念的情況和抽象時(shí)間概念的情況之間的 比較。當(dāng)時(shí)間概念沒有抽象時(shí),例如,在圖9的仿真情況下,為了執(zhí)行5次 硬件處理操作1 (步驟S43 ),傳統(tǒng)仿真方法的處理操作需要5次經(jīng)過從主例 程的仿真繼續(xù)(步驟S42 )開始的循環(huán)(從步驟S42到S45定義)?,F(xiàn)在假設(shè) 該循環(huán)對應(yīng)硬件的1個(gè)周期的處理操作,則硬件處理操作1被執(zhí)行5次的操 作對應(yīng)執(zhí)行5個(gè)周期的處理操作。換句話說,在這種情況下,當(dāng)保持每周期 的狀態(tài)時(shí),處理操作提升到5個(gè)周期。與上述情況相反,在時(shí)間概念被抽象的情況下,當(dāng)執(zhí)行第一硬件處理操 作時(shí),執(zhí)行5次硬件處理操作1。在此情況下,可以減少主例程的循環(huán)總數(shù), 使得仿真可以以高速執(zhí)行。然而,不能實(shí)現(xiàn)這些周期中的每個(gè)的硬件狀態(tài)。另一方面,在傳統(tǒng)的仿真方法中,仿真速度由于其他因素而降低。在此 情況下,進(jìn)行傳統(tǒng)仿真方法的描述。圖11描述構(gòu)成仿真對象的系統(tǒng)LSI的塊 結(jié)構(gòu)。該仿真對象系統(tǒng)LSI由處理器(CPU) 5、存儲器ll、時(shí)鐘發(fā)生器9、 重置控制器10、硬件引擎"A,, 6、另一硬件引擎"B" 7和另一硬件引擎"C" 8配置。首先,圖12中表示了用于根據(jù)傳統(tǒng)方法執(zhí)行仿真的裝置。仿真執(zhí)行單元 1在每個(gè)周期利用CPU 5執(zhí)行每個(gè)硬件引擎6、 7和8.圖13描述仿真執(zhí)行單元1的處理流操作。當(dāng)開始仿真時(shí),執(zhí)行初始化操 作(步驟S81),并且此后執(zhí)行主例程。在主例程中,CPU模型5獲取存儲器 ll的指令,然后在CPU執(zhí)行的處理操作(步驟S83)中執(zhí)行獲取的指令。當(dāng)執(zhí)行硬件引擎6、 7和8的每個(gè)時(shí),各個(gè)硬件引擎6、 7和8根據(jù)CPU5的設(shè)置值執(zhí)行各個(gè)定義的處理操作(步驟S84、 S85和S86 )。假定當(dāng)時(shí)鐘發(fā) 生器9、重置控制器10和存儲器11不在每個(gè)周期執(zhí)行處理操作時(shí),時(shí)鐘發(fā) 生器9、重置控制器10、和存儲器11僅當(dāng)從CPU5發(fā)出訪問時(shí)才執(zhí)行處理操作。還假設(shè)在收到從CPU5發(fā)出的訪問后,時(shí)鐘發(fā)生器9基于其寫入值,控 制各個(gè)硬件引擎6、 7和8的時(shí)鐘提供狀態(tài)。還假設(shè)在從CPU 5收到訪問后, 重置控制器IO基于其寫入值,釋放各個(gè)硬件引擎6、 7和8的重置狀況。還假設(shè)當(dāng)執(zhí)行硬件引擎6、 7和8的每一個(gè)時(shí),各個(gè)硬件引擎6、 7和8 檢查該時(shí)鐘發(fā)生器9的設(shè)置狀態(tài)和重置控制器10的設(shè)置狀態(tài);如果已經(jīng)提供 時(shí)鐘并且已經(jīng)釋放重置狀況,則各個(gè)硬件引擎6、 7和8執(zhí)行定義的處理操作。 圖14描述了此時(shí)硬件引擎6、 7和8的處理流操作。在傳統(tǒng)的仿真執(zhí)行方法中,如圖13所示,在每個(gè)周期執(zhí)行這樣的調(diào)用處 理操作,即CPU 5的執(zhí)行(步驟S83 );硬件引擎"A" 6的執(zhí)行(步驟S84 ); 硬件引擎"B,, 7的執(zhí)行(步驟S85 );以及硬件引擎"C" 8的執(zhí)行(步驟S86 )。應(yīng)當(dāng)理解,上述"周期"意味著當(dāng)在每個(gè)周期執(zhí)行仿真時(shí)在仿真上時(shí)間 前進(jìn)的單元。在圖13的流程圖中,從關(guān)于仿真繼續(xù)(步驟S82)的判斷直到 硬件引擎"C" 8的執(zhí)行(步驟S86)定義的、執(zhí)行一次的仿真處理構(gòu)成1個(gè) 周期。如圖14的流程操作所示,當(dāng)執(zhí)行各個(gè)硬件引擎6、 7和8的處理操作時(shí), 確認(rèn)時(shí)鐘狀態(tài)(步驟S91)并且確認(rèn)重置狀態(tài)(步驟S92)。如果已經(jīng)提供時(shí) 鐘(是)并且已經(jīng)釋放重置狀態(tài)(是),則各個(gè)硬件引擎6、 7和8執(zhí)行實(shí)際 的處理操作(步驟S93)。如前所述,在傳統(tǒng)的仿真方法中,在主例程中,即使對于不執(zhí)行實(shí)際處 理操作的硬件也執(zhí)行處理操作,并且在已經(jīng)執(zhí)行的處理操作中,出現(xiàn)用于確 認(rèn)時(shí)鐘提供狀態(tài)和重置狀態(tài)的這樣的處理操作。盡管在該示例中僅有三個(gè)硬件引擎作為對象,然而如果這樣的硬件引擎 的總數(shù)增加,則執(zhí)行該處理操作所需的持續(xù)時(shí)間也增加。結(jié)果,可能出現(xiàn)仿 真速度的降低。發(fā)明內(nèi)容這樣的目的提供一種仿真方法和仿真系統(tǒng),其能夠?qū)崿F(xiàn)高速仿真而不會由于開銷降低仿真速度。而且,本發(fā)明具有另一目的提供一種仿真方法和仿真系統(tǒng),其能夠減 少由系統(tǒng)LSI的規(guī)模增加導(dǎo)致的消極影響同時(shí)維持周期基的仿真精度。為了解決上述問題,即,仿真速度的降低,在第一發(fā)明中,除了用于執(zhí) 行仿真周期的步驟外,還提供了另一步驟,通過其響應(yīng)于每個(gè)硬件的狀態(tài)改 變,動(dòng)態(tài)形成用于執(zhí)行仿真周期的列表。當(dāng)執(zhí)行仿真周期時(shí),僅執(zhí)行在形成 的列表中描述的仿真項(xiàng)。結(jié)果,在消除傳統(tǒng)仿真方法中在每個(gè)仿真周期進(jìn)行 的各個(gè)功能單元的執(zhí)行和狀態(tài)的檢查的同時(shí),可以以高速執(zhí)行仿真。結(jié)果,由于響應(yīng)于硬件的狀態(tài)改變(例如,由來自軟件(CPU)的訪問 的時(shí)鐘設(shè)置操作和對硬件塊的初始設(shè)置操作)而動(dòng)態(tài)形成仿真的執(zhí)行列表, 所以在維持周期基的仿真精度的同時(shí),可以減少由系統(tǒng)LSI的M^莫增加造成 的影響,使得可以以高速進(jìn)行仿真。在第二發(fā)明中,由于在上述第一發(fā)明中描述的仿真的執(zhí)行列表的形成被 加載到時(shí)鐘發(fā)生器的功能塊,所以可以以高速執(zhí)行頻分和門控時(shí)鐘時(shí)的多周 期的仿真。當(dāng)CPU設(shè)置時(shí)鐘時(shí),更新執(zhí)行列表的內(nèi)容。當(dāng)進(jìn)行每個(gè)周期的仿真時(shí), 4叉進(jìn)行執(zhí)行列表的執(zhí)行處理操作而不檢查時(shí)鐘的狀態(tài)。第三發(fā)明對應(yīng)用于通過檢查時(shí)鐘的狀態(tài)和重置狀態(tài)而形成執(zhí)行列表的方 法,同時(shí),時(shí)鐘發(fā)生器和重置控制器包含在仿真系統(tǒng)中。第四發(fā)明如下安排即,在預(yù)備獨(dú)立于仿真的各功能塊的、用于形成執(zhí) 行列表的功能塊的同時(shí),形成仿真執(zhí)行列表。在第二發(fā)明和第三發(fā)明中,已 經(jīng)采用這樣的基于時(shí)鐘狀態(tài)和重置狀態(tài)而形成執(zhí)行列表的安排。在仿真的執(zhí)于多個(gè)狀況而形成的情況下,預(yù)備了獨(dú)立的控制塊;控制塊從每個(gè)功能塊接 收關(guān)于必要的狀態(tài)改變的通知;控制塊管理這些狀態(tài);然后,形成仿真執(zhí)行 列表。關(guān)于從各個(gè)功能塊發(fā)出的狀態(tài)改變的通知,可以構(gòu)思下面的通知,即, 關(guān)于從CPU發(fā)出的休眠模式的通知;關(guān)于重置控制器中的重置狀態(tài)的通知; 關(guān)于門控時(shí)鐘和操作使能的設(shè)置的通知,其特定于每個(gè)硬件引擎。第五發(fā)明對應(yīng)于這樣的方法,在當(dāng)CPU被引入休眠狀態(tài)時(shí)發(fā)出的通知、和當(dāng)CPU從休眠狀態(tài)恢復(fù)時(shí)發(fā)出的通知被定義為狀態(tài)改變點(diǎn)時(shí),增加CPU 的休眠狀況下的仿真速度。在此情況下,當(dāng)用于使CPU進(jìn)入休眠狀態(tài)的指令在仿真期間執(zhí)行時(shí),上述執(zhí)行列表的內(nèi)容被更新,以便從該執(zhí)行列表刪除CPU。在傳統(tǒng)系統(tǒng)仿真的情形,存在許多主要進(jìn)行CPU的執(zhí)行以便執(zhí)行系統(tǒng)仿真的方法。在該情況下,在起始時(shí)不能仿真^f木眠狀態(tài),或者甚至在可以仿真休眠模式的情況下,甚至當(dāng)CPU被引入休眠狀態(tài)時(shí),CPU的例程也必需執(zhí)行。 由于上述第五發(fā)明的方法被采用,所以此外可以增加在CPU處于休眠狀態(tài)下的狀況中用于改進(jìn)仿真速度的效果。根據(jù)本發(fā)明,在維持周期級的仿真精度的同時(shí),可以以高速執(zhí)行關(guān)于系統(tǒng)LSI的仿真。具體地,這樣的大規(guī)模和長時(shí)間仿真可以以接近于實(shí)際速度 的高速執(zhí)行,所述仿真包含采用當(dāng)前可用的大規(guī)模和復(fù)雜系統(tǒng)LSI的OS、設(shè) 備驅(qū)動(dòng)器和中間件,并且其中作為系統(tǒng)而操作的塊通過設(shè)置各個(gè)功能塊而改 變。由于在本發(fā)明的仿真方法中形成執(zhí)行列表對應(yīng)于傳統(tǒng)仿真方法中沒有采 用的處理操作,所以通過進(jìn)行該列表形成的執(zhí)行增加了執(zhí)行成本。然而,在 主例程的總執(zhí)行時(shí)間顯著大于狀態(tài)改變的總時(shí)間的情況下,可以實(shí)現(xiàn)可能超 過執(zhí)行成本的整體速度改進(jìn)。例如,每當(dāng)仿真周期前進(jìn)時(shí)執(zhí)行主例程。關(guān)于對時(shí)鐘發(fā)生器的總訪問數(shù), 該總訪問數(shù)變?yōu)閮H僅當(dāng)CPU實(shí)際訪問時(shí)鐘發(fā)生器時(shí)的總數(shù),因此出現(xiàn)頻率變 得非常低。結(jié)果,由于每個(gè)周期的執(zhí)行處理操作基于該方法而減少,所以當(dāng) 仿真以高速執(zhí)行時(shí)存在很大的優(yōu)點(diǎn)。
圖1是用于解釋根據(jù)本發(fā)明的實(shí)施方式的仿真系統(tǒng)的示意圖。 圖2是根據(jù)本發(fā)明的實(shí)施方式的仿真系統(tǒng)的框圖(1 )。 圖3是用于表示在根據(jù)本發(fā)明的實(shí)施方式的仿真系統(tǒng)中采用的執(zhí)行列表 的示例的圖。圖4是用于表示由根據(jù)本發(fā)明的實(shí)施方式的仿真方法進(jìn)行的處理流操作 的圖。圖5是用于指示根據(jù)本發(fā)明的實(shí)施方式的硬件引擎的處理流操作的圖(1) 。圖6是根據(jù)本發(fā)明的實(shí)施方式的仿真系統(tǒng)的框圖(2)。圖7是用于指示根據(jù)本發(fā)明的實(shí)施方式的硬件引擎的處理流操作的圖(2) 。圖8是根據(jù)本發(fā)明的實(shí)施方式的仿真系統(tǒng)的框圖(3)。圖9(a)、 9(b)是用于示出通過傳統(tǒng)仿真方法進(jìn)行的處理流操作的圖(1)。圖10(a)、 10(b)是用于指示通過傳統(tǒng)仿真方法進(jìn)行的處理流操作的圖(2)。圖11是在本發(fā)明的實(shí)施方式中利用的系統(tǒng)LSI的結(jié)構(gòu)圖。圖12是用于示出用來體現(xiàn)傳統(tǒng)仿真方法的裝置的圖。圖13是用于示出通過傳統(tǒng)仿真方法進(jìn)行的處理流操作的圖。圖14是用于指示在傳統(tǒng)仿真方法中硬件引擎的處理流操作的圖。
具體實(shí)施方式
圖1是用于表示關(guān)于實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施方式的仿真方法的裝置的示 例的圖。該圖中示出的仿真執(zhí)行單元1執(zhí)行各個(gè)功能模型l到"n"的處理操 作。仿真執(zhí)行單元1在每個(gè)周期執(zhí)行各個(gè)功能模型4,從而仿真系統(tǒng)LSI的 操作。執(zhí)行列表形成單元2接收關(guān)于從功能模型4發(fā)出的狀態(tài)改變的通知,并 且檢查各個(gè)功能模型l到"n"的狀態(tài)以便形成執(zhí)行列表3。執(zhí)行列表3對應(yīng) 關(guān)于指示應(yīng)當(dāng)對其執(zhí)行仿真的功能模型的信息的列表,即,表示被操作以便 對某個(gè)狀態(tài)下的系統(tǒng)造成影響的功能模型的信息的列表。仿真執(zhí)行單元1不 在每個(gè)周期執(zhí)行所有功能模型4,而僅執(zhí)行在由執(zhí)行列表形成單元2形成的 執(zhí)行列表3中描述的功能模型4的處理操作。接下來,描述通過改進(jìn)傳統(tǒng)的仿真方法體現(xiàn)第一發(fā)明和第二發(fā)明的方式。 圖2指示這樣的情況,其中第一發(fā)明的實(shí)施方式和第二發(fā)明的實(shí)施方式 兩者都已經(jīng)應(yīng)用到圖1中示出的本發(fā)明的基本結(jié)構(gòu)。這樣設(shè)計(jì)使得將能夠形 成執(zhí)行列表3的功能給予時(shí)鐘發(fā)生器9。時(shí)鐘發(fā)生器9以類似于傳統(tǒng)仿真方 法的方式,在接收到CPU5的訪問后執(zhí)行處理操作。如果采用傳統(tǒng)方法,則 時(shí)鐘發(fā)生器9僅設(shè)置時(shí)鐘的提供狀態(tài)。然而,在第一和第二實(shí)施方式中,響 應(yīng)于例如來自CPU 5的訪問的通知,時(shí)鐘發(fā)生器9檢查各個(gè)硬件引擎6、 7 和8的狀態(tài)改變,以便形成執(zhí)行列表3。換句話說,時(shí)鐘發(fā)生器9以與從CPU5發(fā)送的通知相關(guān)的動(dòng)態(tài)方式更新執(zhí)行列表3的內(nèi)容。關(guān)于CPU 5,假設(shè)處理地址之前已經(jīng)在初始化處理操作中登記在執(zhí)行列 表3中。圖3示出關(guān)于要形成的執(zhí)行列表3的實(shí)例。在圖3中,CPU5、硬件 引擎"A,, 6、以及硬件引擎"C,, 8已經(jīng)在執(zhí)行列表3中描述。在執(zhí)行列表3 中,執(zhí)行處理操作的地址等已經(jīng)在每個(gè)元素描述。應(yīng)當(dāng)理解,執(zhí)行列表3的 格式不僅限于上述格式,而可以與仿真執(zhí)行單元1的安裝結(jié)合利用最佳執(zhí)行 列表。圖4指示用于描述根據(jù)第一和第二實(shí)施方式的仿真方法的處理操作的流 程圖。與圖13中示出的傳統(tǒng)仿真方法的處理流操作相比,第一和第二實(shí)施方 式的處理流操作如下執(zhí)行即,與CPU 5的執(zhí)行(圖13的步驟S83 )、硬件 引擎"A" 6的執(zhí)行(步驟S84)、硬件引擎"B,, 7的執(zhí)行(步驟S85)、和硬 件引擎"C,, 8的執(zhí)行(步驟S86)相關(guān)的處理操作,構(gòu)成對執(zhí)行列表3的元 素的處理操作的執(zhí)行(圖4的步驟S14 )。關(guān)于主例程的處理操作,在傳統(tǒng)仿真方法中,主例程已經(jīng)以固定方式通 過4類這些處理操作(即,CPU5的執(zhí)行步驟S83;硬件引擎"A"的執(zhí)行 步驟S84;硬件引擎"B"的執(zhí)行步驟S85;硬件引擎"C"的執(zhí)行步驟 S86)而執(zhí)行,而在第一和第二實(shí)施方式中,主例程通過CPU 5的執(zhí)行和由 時(shí)鐘發(fā)生器9形成的元素的執(zhí)行而執(zhí)行(步驟S14)。結(jié)果,當(dāng)沒有提供時(shí)鐘并且在執(zhí)行列表3中不存在元素時(shí),不執(zhí)行硬件 引擎"A,, 6、硬件引擎"B" 7和硬件引擎"C" 8中的任何一個(gè)。在時(shí)鐘僅提供給硬件引擎"A" 6的情況,僅執(zhí)行硬件引擎"A,, 6,而 在時(shí)鐘被提供給硬件引擎"A,, 6和硬件引擎"B" 7兩組的情況,執(zhí)行兩個(gè) 元素。結(jié)果,可以與時(shí)鐘的提供狀態(tài)結(jié)合地增加和/或減少在主例程中執(zhí)行的處 理操作,還可以與時(shí)鐘的提供狀態(tài)結(jié)合地增加處理速度。具體地,在時(shí)鐘不被提供給硬件引擎"A" 6、硬件引擎"B" 7和硬件 引擎"C,, 8中的任何一個(gè)的狀況下,應(yīng)當(dāng)執(zhí)行的處理操作僅對應(yīng)CPU5的處 理操作,從而可以以較高速度執(zhí)行主例程。而且,圖5示出在這些硬件引擎6、 7和8中的任一個(gè)中執(zhí)行的處理操作 的流程圖。如果執(zhí)行傳統(tǒng)的仿真方法,則時(shí)鐘的提供狀態(tài)已經(jīng)在該處理流中 被確認(rèn)。然而,在第一和第二實(shí)施方式的仿真方法中,由于存在時(shí)鐘已經(jīng)在執(zhí)行該處理操作時(shí)的瞬間被提供的初始情況,所以用于確認(rèn)時(shí)鐘提供狀態(tài)的 處理操作可以在上述處理操作中消除,導(dǎo)致高速仿真。而且,作為第三發(fā)明的實(shí)施方式,通過接收從CPU 5對重置控制器10 的訪問,使得上述時(shí)鐘發(fā)生器9獲取用于更新重置狀態(tài)的通知。該第三發(fā)明的結(jié)構(gòu)圖在圖6中指示。通過從CPU 5對重置控制器10的 訪問而對重置狀態(tài)進(jìn)行的改變被通知給時(shí)鐘發(fā)生器9。在接收到該通知后, 時(shí)鐘發(fā)生器9與時(shí)鐘提供狀態(tài)結(jié)合形成執(zhí)行列表3。在該第三發(fā)明中,在已經(jīng)提供時(shí)鐘并且已經(jīng)釋放重置狀態(tài)的狀況下,元 素被添加到執(zhí)行列表3,而在時(shí)鐘的提供停止、或重置狀態(tài)出現(xiàn)的狀況下, 從執(zhí)行列表3刪除該元素。圖7是用于描述此時(shí)的硬件引擎6、 7和8的每個(gè)的處理操作的流程圖。 結(jié)果,由于執(zhí)行列表3可以通過考慮時(shí)鐘提供狀態(tài)和重置狀態(tài)而形成,所以 與第二發(fā)明的實(shí)施方式相比,還可以在圖7中刪除與重置狀態(tài)的檢查相關(guān)的 處理操作。作為第四發(fā)明的實(shí)施方式,將能夠形成執(zhí)行列表3的功能給予時(shí)鐘發(fā)生 器9作為另一個(gè)功能。圖8示出第四發(fā)明的上述實(shí)施方式的結(jié)構(gòu)圖。結(jié)果, 例如,除了時(shí)鐘提供狀態(tài)和重置狀態(tài)外,可以管理包含各個(gè)硬件引擎6、 7和 8的特定狀態(tài)設(shè)置狀況的狀態(tài)。應(yīng)當(dāng)注意,上述硬件引擎的特定狀態(tài)設(shè)置狀況意味著,例如該硬件引擎 被設(shè)置為休眠模式并因此不執(zhí)行處理操作的狀況,或由于沒有將操作使能設(shè) 置給該硬件引擎、所以硬件引擎沒有操作的狀況。而且,由于該形成功能獨(dú)立提供,所以要在時(shí)鐘發(fā)生器9中執(zhí)行的處理 操作可以被減少,使得有可能避免由時(shí)鐘發(fā)生器9執(zhí)行的處理操作變得復(fù)雜。作為第五發(fā)明的實(shí)施方式,CPU 5的休眠狀態(tài)不僅由時(shí)鐘發(fā)生器9仿真, 而且由重置控制器IO仿真。第五發(fā)明的該實(shí)施方式的結(jié)構(gòu)圖類似于圖8的結(jié) 構(gòu)圖。作為在第五發(fā)明的實(shí)施方式中采用的CPU5,假設(shè)由于CPU5執(zhí)行預(yù)定 指令,該CPU 5的操作狀態(tài)被引入休眠狀態(tài)。還假設(shè)已經(jīng)進(jìn)入休眠狀態(tài)的CPU 5不執(zhí)行包括指令執(zhí)行的所有處理操作,直到從硬件引擎6、 7和8發(fā)出中斷 > 通知。當(dāng)CPU 5執(zhí)行用于使CPU 5進(jìn)入休眠狀態(tài)的指令時(shí),CPU 5發(fā)出通知給執(zhí)行列表形成單元2。在接收到該通知后,執(zhí)行列表形成單元2從執(zhí)行列表3 刪除CPU 5。此后,在主例程中,執(zhí)行列表3在CPU 5不存在的狀況下執(zhí)行?,F(xiàn)在假設(shè)CPU 5處于休眠狀況并且硬件引擎"A" 6正在操作的狀況, 當(dāng)硬件引擎"A" 6的執(zhí)行完成時(shí),發(fā)生CPU5的中斷。該中斷還通知給執(zhí)行 列表形成單元2。在接收到該通知后,執(zhí)行列表形成單元2再次將休眠狀況下的CPU 5添 加到執(zhí)行列表3,并且重啟執(zhí)行。CPU5從休眠狀況接收恢復(fù)中斷,并且從該 中斷處理操作重啟操作。根據(jù)上述實(shí)施方式,在沒有抽象時(shí)間概念時(shí),響應(yīng)于硬件狀態(tài)的改變(例 如,通過來自軟件(CPU)的訪問的時(shí)鐘設(shè)置操作和對硬件時(shí)鐘的初始設(shè)置 操作)而動(dòng)態(tài)形成仿真的執(zhí)行列表,然后,參照形成的執(zhí)行列表執(zhí)行仿真。 結(jié)果,在維持周期基的仿真精度的同時(shí),由系統(tǒng)LSI的規(guī)模增加造成的影響 可以減小,使得仿真可以以高速執(zhí)行。結(jié)果,在維持周期級別的仿真精度的 同時(shí),關(guān)于系統(tǒng)LSI的仿真可以以高速執(zhí)行。特別地,這樣的大規(guī)模和長時(shí) 間的仿真可以以接近于實(shí)際速度的高速執(zhí)行,所述仿真包含釆用當(dāng)前可用的 大規(guī)模和復(fù)雜系統(tǒng)LSI的OS、設(shè)備驅(qū)動(dòng)器和中間件,并且在該仿真中作為系 統(tǒng)而操作的塊通過設(shè)置各個(gè)功能塊而改變。根據(jù)本發(fā)明的仿真方法可以以高速執(zhí)行,同時(shí)維持周期級別的精度。根 據(jù)本發(fā)明的仿真裝置和仿真方法在利用大規(guī)模硬件和大規(guī)模軟件并且還需要 實(shí)時(shí)操作的裝配系統(tǒng)的開發(fā)中非常有用。
權(quán)利要求
1.一種用于系統(tǒng)大規(guī)模集成LSI的仿真方法,包括通過接收關(guān)于系統(tǒng)狀態(tài)的通知而形成處理操作的列表的步驟,所述處理操作響應(yīng)于所述系統(tǒng)的狀態(tài)而在每個(gè)周期被執(zhí)行;以及在每次已經(jīng)經(jīng)過1個(gè)周期時(shí)執(zhí)行在所形成的列表中描述的處理操作的步驟。
2. 如權(quán)利要求1所述的仿真方法,其中響應(yīng)于提供給功能模型的時(shí)鐘的狀態(tài)而形成所述列表。
3. 如權(quán)利要求2所述的仿真方法,其中響應(yīng)于所述功能模型的重置的狀態(tài)而形成所述列表。
4. 如權(quán)利要求1所述的仿真方法,其中在數(shù)據(jù)收到與所述系統(tǒng)相關(guān)的多個(gè)狀態(tài)的通知后,響應(yīng)于所述多個(gè)狀態(tài)的 組合而形成所述列表。
5. 如權(quán)利要求4所述的仿真方法,其中所述多個(gè)狀態(tài)的通知包括從中央處理單元CPU發(fā)出的通知;以及 所述CPU的執(zhí)行被添加到所述列表或從所述列表刪除。
6. —種用于系統(tǒng)LSI的仿真系統(tǒng),包括執(zhí)行列表形成單元,用于通過接收關(guān)于系統(tǒng)的狀態(tài)的通知而形成處理操 作的列表,所述處理操作響應(yīng)于所述系統(tǒng)的狀態(tài)而在每個(gè)周期被執(zhí)行;以及仿真執(zhí)行單元,用于在每次已經(jīng)經(jīng)過1個(gè)周期時(shí)執(zhí)行在所形成的列表中 描述的處理操作。
7. 如權(quán)利要求6所述的仿真系統(tǒng),還包括時(shí)鐘發(fā)生器,用于響應(yīng)于提供給功能模型的時(shí)鐘的狀態(tài),形成所述列表。
8. 如權(quán)利要求7所述的仿真系統(tǒng),其中所述仿真系統(tǒng)還包括重置控制器,所述重置控制器將所述功能模型的重 置狀態(tài)通知給所述時(shí)鐘發(fā)生器;以及所述時(shí)鐘發(fā)生器響應(yīng)于所述功能模型的所述重置狀態(tài)形成所述列表。
9. 如權(quán)利要求6所述的仿真系統(tǒng),其中在接收到與所述系統(tǒng)相關(guān)的多個(gè)狀態(tài)的通知后,所述執(zhí)行列表形成單元 響應(yīng)于所述多個(gè)狀態(tài)的組合形成所述列表。
10.如權(quán)利要求9所述的仿真系統(tǒng),其中
11. 一種在計(jì)算機(jī)可讀介質(zhì)上體現(xiàn)的系統(tǒng)LSI的仿真程序產(chǎn)品,其在由 計(jì)算機(jī)執(zhí)行時(shí)使得計(jì)算機(jī)執(zhí)行通過接收關(guān)于系統(tǒng)狀態(tài)的通知而形成處理操作的列表的功能,所述處理 操作響應(yīng)于所述系統(tǒng)的狀態(tài)在每個(gè)周期被執(zhí)行;以及用于在每次已經(jīng)經(jīng)過1個(gè)周期時(shí)執(zhí)行在所述形成的列表中描述的處理操 作的功能。
12. 如權(quán)利要求11所述的仿真程序產(chǎn)品,其中響應(yīng)于提供給功能模型的 時(shí)鐘的狀態(tài)而形成所述列表。
13. 如權(quán)利要求12所述的仿真程序產(chǎn)品,其中響應(yīng)于所述功能模型的重置的狀態(tài)而形成所述列表。
14. 如權(quán)利要求11所述的仿真程序產(chǎn)品,其中在接收到與所述系統(tǒng)有關(guān)的多個(gè)狀態(tài)的通知后,響應(yīng)于所述多個(gè)狀態(tài)的組合而形成所述列表。
15. 如權(quán)利要求14所述的仿真程序產(chǎn)品,其中所述多個(gè)狀態(tài)的通知包括從中央處理單元CPU發(fā)出的通知;以及 所述CPU的執(zhí)行被添加到所述列表或從所述列表刪除。
全文摘要
預(yù)備了仿真執(zhí)行單元1、執(zhí)行列表形成單元2和執(zhí)行列表3。仿真執(zhí)行單元1在每個(gè)周期不執(zhí)行所有功能模型4,而僅執(zhí)行在由執(zhí)行列表形成單元2形成的執(zhí)行列表3中描述的這樣的處理操作。在接收到從每個(gè)硬件發(fā)送的、關(guān)于狀態(tài)改變的通知后,執(zhí)行列表形成單元2動(dòng)態(tài)形成處理操作的執(zhí)行列表3,所述處理操作與狀態(tài)改變結(jié)合在每個(gè)周期執(zhí)行。結(jié)果,仿真執(zhí)行單元1在每個(gè)周期執(zhí)行適于狀態(tài)改變的這樣的處理操作,以便以高速執(zhí)行仿真。
文檔編號G06F17/50GK101256601SQ200810082008
公開日2008年9月3日 申請日期2008年2月26日 優(yōu)先權(quán)日2007年2月26日
發(fā)明者片野智明 申請人:松下電器產(chǎn)業(yè)株式會社