本發(fā)明屬于芯片前端設(shè)計(jì)技術(shù)領(lǐng)域,特別是涉及一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法和裝置。
背景技術(shù):
隨著工藝技術(shù)以及應(yīng)用領(lǐng)域的不斷發(fā)展,芯片的復(fù)雜度不斷提高,相對應(yīng)的,驗(yàn)證工作的復(fù)雜度也不斷提高,驗(yàn)證工作耗費(fèi)的事件日益成為芯片研發(fā)周期的瓶頸。于是,如何盡可能提高仿真驗(yàn)證的效率,縮短每次仿真驗(yàn)證耗費(fèi)的事件,成為優(yōu)化芯片驗(yàn)證工作,縮短芯片研發(fā)周期的一個(gè)重要方向。
針對報(bào)文處理的多處理器系統(tǒng)的仿真驗(yàn)證,往往伴隨著大量的監(jiān)測機(jī)制,用來自動(dòng)化地對系統(tǒng)狀態(tài)進(jìn)行檢查,并為系統(tǒng)的操作提供邏輯判斷的依據(jù)。而每個(gè)監(jiān)測機(jī)制都涉及到一個(gè)或多個(gè)觸發(fā)事件,當(dāng)系統(tǒng)規(guī)模擴(kuò)大的時(shí)候,這些觸發(fā)事件可能的總數(shù)呈指數(shù)型增長。
現(xiàn)有技術(shù)中的監(jiān)測機(jī)制如下:當(dāng)仿真中一旦出現(xiàn)觸發(fā)事件,就需要暫停仿真,開始對觸發(fā)事件進(jìn)行處理,結(jié)束之后再重啟仿真。然而,利用這種方法,在大規(guī)模的多處理器系統(tǒng)中,監(jiān)測機(jī)制將耗費(fèi)大量的資源和仿真時(shí)間。
技術(shù)實(shí)現(xiàn)要素:
為解決上述問題,本發(fā)明提供了一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法和裝置,避免監(jiān)測機(jī)制對每個(gè)觸發(fā)事件都要進(jìn)行一次“暫停-重啟”仿真的操作,能夠節(jié)省大量的資源和仿真時(shí)間。
本發(fā)明提供的一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法包括:
定義系統(tǒng)中的觸發(fā)監(jiān)測的事件;
對所述觸發(fā)監(jiān)測的事件的類型,確定統(tǒng)一的存儲格式;
構(gòu)造具有預(yù)設(shè)深度和預(yù)設(shè)寬度的事件fifo,所述預(yù)設(shè)深度不小于系統(tǒng)同一周期出現(xiàn)的最多事件的數(shù)量;
當(dāng)系統(tǒng)仿真過程中出現(xiàn)所述觸發(fā)監(jiān)測的事件,將所述觸發(fā)監(jiān)測的事件寫入所述事件fifo中;
每個(gè)時(shí)鐘周期結(jié)束后,如果所述事件fifo不為空,暫停仿真,按照順序?qū)⑺鲇|發(fā)監(jiān)測的事件讀出并處理。
優(yōu)選的,在上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法中,在所述定義系統(tǒng)中的觸發(fā)監(jiān)測的事件之前,還包括:
定義所述系統(tǒng)中的監(jiān)測機(jī)制。
優(yōu)選的,在上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法中,所述構(gòu)造具有預(yù)設(shè)深度和預(yù)設(shè)寬度的事件fifo包括:
當(dāng)所述監(jiān)測機(jī)制和所述事件fifo通過軟件語言實(shí)現(xiàn)時(shí),用抽象化事務(wù)級的方式,自定義特定的事件數(shù)據(jù)類型實(shí)現(xiàn);
否則,對所述事件的類型進(jìn)行統(tǒng)一的編碼,構(gòu)造出一個(gè)固定位寬的事件存儲格式。
優(yōu)選的,在上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法中,所述預(yù)設(shè)深度不小于系統(tǒng)同一周期出現(xiàn)的最多事件的數(shù)量具體為:
利用C++語言構(gòu)造所述事件fifo時(shí),用指針和鏈表方式構(gòu)造一個(gè)無限大的事件fifo。
優(yōu)選的,在上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法中,所述按照順序?qū)⑺鲇|發(fā)監(jiān)測的事件讀出并處理之后還包括:
當(dāng)處理完畢,重啟仿真。
本發(fā)明提供的一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置包括:
第一定義單元,用于定義系統(tǒng)中的觸發(fā)監(jiān)測的事件;
確定單元,用于對所述觸發(fā)監(jiān)測的事件的類型,確定統(tǒng)一的存儲格式;
構(gòu)造單元,用于構(gòu)造具有預(yù)設(shè)深度和預(yù)設(shè)寬度的事件fifo,所述預(yù)設(shè)深度不小于系統(tǒng)同一周期出現(xiàn)的最多事件的數(shù)量;
寫入單元,用于當(dāng)系統(tǒng)仿真過程中出現(xiàn)所述觸發(fā)監(jiān)測的事件,將所述觸發(fā)監(jiān)測的事件寫入所述事件fifo中;
處理單元,用于每個(gè)時(shí)鐘周期結(jié)束后,如果事件fifo不為空,暫停仿真,按照順序?qū)⑺鲇|發(fā)監(jiān)測的事件讀出并處理。
優(yōu)選的,在上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置中,還包括:
第二定義單元,用于定義所述系統(tǒng)中的監(jiān)測機(jī)制。
優(yōu)選的,在上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置中,所述構(gòu)造單元具體用于:
當(dāng)所述監(jiān)測機(jī)制和所述事件fifo通過軟件語言實(shí)現(xiàn)時(shí),用抽象化事務(wù)級的方式,自定義特定的事件數(shù)據(jù)類型實(shí)現(xiàn);
否則,對所述事件的類型進(jìn)行統(tǒng)一的編碼,構(gòu)造出一個(gè)固定位寬的事件存儲格式。
優(yōu)選的,在上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置中,所述構(gòu)造單元具體用于:
利用C++語言構(gòu)造所述事件fifo時(shí),用指針和鏈表方式構(gòu)造一個(gè)無限大的事件fifo。
優(yōu)選的,在上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置中,還包括:
重啟單元,用于當(dāng)處理完畢,重啟仿真。
通過上述描述可知,本發(fā)明提供的上述多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法和裝置,由于先定義系統(tǒng)中的觸發(fā)監(jiān)測的事件;然后對所述觸發(fā)監(jiān)測的事件的類型,確定統(tǒng)一的存儲格式;再構(gòu)造具有預(yù)設(shè)深度和預(yù)設(shè)寬度的事件fifo,所述預(yù)設(shè)深度不小于系統(tǒng)同一周期出現(xiàn)的最多事件的數(shù)量;當(dāng)系統(tǒng)仿真過程中出現(xiàn)所述觸發(fā)監(jiān)測的事件,將所述觸發(fā)監(jiān)測的事件寫入所述事件fifo中;最后,每個(gè)時(shí)鐘周期結(jié)束后,如果所述事件fifo不為空,暫停仿真,按照順序?qū)⑺鲇|發(fā)監(jiān)測的事件讀出并處理,因此能夠避免監(jiān)測機(jī)制對每個(gè)觸發(fā)事件都要進(jìn)行一次“暫停-重啟”仿真的操作,能夠節(jié)省大量的資源和仿真時(shí)間。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請實(shí)施例提供的第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法的示意圖;
圖2為本申請實(shí)施例提供的第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置的示意圖;
圖3為基于事件fifo的多處理器系統(tǒng)仿真監(jiān)測機(jī)制基本流程圖。
具體實(shí)施方式
考慮到在大規(guī)模的多處理器系統(tǒng)仿真中,在對系統(tǒng)的狀態(tài)監(jiān)測上耗費(fèi)的資源隨著系統(tǒng)規(guī)模的擴(kuò)大呈指數(shù)型增長,本發(fā)明的核心思想在于提供一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法和裝置,避免監(jiān)測機(jī)制對每個(gè)觸發(fā)事件都要進(jìn)行一次“暫停-重啟”仿真的操作,能夠節(jié)省大量的資源和仿真時(shí)間。
本發(fā)明通過引入事件fifo,以每個(gè)時(shí)鐘周期為單位,對能觸發(fā)系統(tǒng)狀態(tài)監(jiān)測的事件進(jìn)行保存和統(tǒng)一的處理,然后在當(dāng)前時(shí)鐘周期結(jié)束時(shí)暫停仿真,對事件按順序進(jìn)行處理,然后重啟仿真,從而在不影響監(jiān)測機(jī)制功能的前提下,將處理觸發(fā)事件對仿真的暫停次數(shù)降到了最低,從而減少了對時(shí)間和資源的浪費(fèi),縮短了整個(gè)仿真的時(shí)間。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本申請實(shí)施例提供的第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法如圖1所示,圖1為本申請實(shí)施例提供的第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法的示意圖。該方法包括如下步驟:
S1:定義系統(tǒng)中的觸發(fā)監(jiān)測的事件;
S2:對所述觸發(fā)監(jiān)測的事件的類型,確定統(tǒng)一的存儲格式;
S3:構(gòu)造具有預(yù)設(shè)深度和預(yù)設(shè)寬度的事件fifo,所述預(yù)設(shè)深度不小于系統(tǒng)同一周期出現(xiàn)的最多事件的數(shù)量;
具體的,事件fifo的預(yù)設(shè)深度必須大于等于系統(tǒng)中同周期可能出現(xiàn)的最多事件數(shù)量,這個(gè)值可以由對系統(tǒng)中觸發(fā)事件的計(jì)算得出。在實(shí)際應(yīng)用中,因?yàn)榉抡嬗玫降膄ifo,增加深度的資源耗費(fèi)非常小,因此對觸發(fā)事件的數(shù)量的計(jì)算可以不那么精確,盡量取較大的值就可以。
S4:當(dāng)系統(tǒng)仿真過程中出現(xiàn)所述觸發(fā)監(jiān)測的事件,將所述觸發(fā)監(jiān)測的事件寫入所述事件fifo中;
具體的,在寫入事件fifo時(shí),必須依照觸發(fā)事件發(fā)生的順序,也就是對監(jiān)測機(jī)制發(fā)生影響的順序?qū)懭耄瑥亩_保引入fifo的機(jī)制不會對監(jiān)測機(jī)制的處理產(chǎn)生影響。
S5:每個(gè)時(shí)鐘周期結(jié)束后,如果所述事件fifo不為空,暫停仿真,按照順序?qū)⑺鲇|發(fā)監(jiān)測的事件讀出并處理。
具體的,在讀出事件fifo時(shí),當(dāng)fifo不為空時(shí),在仿真完一個(gè)時(shí)鐘周期之后,對事件fifo中的事件按寫入順序,一個(gè)一個(gè)地讀出并處理,在讀出和處理的過程中,仿真是暫時(shí)停止的。
與傳統(tǒng)監(jiān)測機(jī)制相比,在沒有發(fā)生觸發(fā)事件的時(shí)鐘周期中,兩種監(jiān)測機(jī)制的時(shí)間耗費(fèi)基本相同;在出現(xiàn)一個(gè)觸發(fā)事件的時(shí)鐘周期中,二者都需要對仿真進(jìn)行一次暫停和處理事件的操作,但是因?yàn)榛趂ifo的方式有對fifo的額外操作,因此時(shí)間耗費(fèi)稍微大一點(diǎn)。而對于有多個(gè)事件的時(shí)鐘周期,因?yàn)轭l繁對仿真的暫停和重啟對時(shí)間的耗費(fèi)要遠(yuǎn)大于對fifo的操作(如果fifo是以軟件語言的方式實(shí)現(xiàn),這個(gè)差距會更加明顯),假設(shè)讀寫fifo的時(shí)間耗費(fèi)為i,“暫停-重啟”仿真的時(shí)間耗費(fèi)為(i+j),當(dāng)前時(shí)鐘周期觸發(fā)事件為n,那么顯然,兩種監(jiān)測方式的對時(shí)間的耗費(fèi)差距是跟事件n成正比的,再加上每個(gè)時(shí)鐘周期內(nèi)出現(xiàn)的觸發(fā)事件的期望值基本是隨著系統(tǒng)規(guī)模擴(kuò)大而呈指數(shù)型增加的??梢缘贸鋈缦碌慕Y(jié)論,在平均每周期(除去沒有觸發(fā)事件的周期)觸發(fā)事件期望值大于1的系統(tǒng)中,使用基于fifo的監(jiān)測方式將比傳統(tǒng)方式節(jié)省仿真時(shí)間,而節(jié)省的時(shí)間長度隨著系統(tǒng)規(guī)模的擴(kuò)大而幾乎呈指數(shù)型增加。
通過上述描述可知,本申請實(shí)施例提供的上述第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法,由于先定義系統(tǒng)中的觸發(fā)監(jiān)測的事件;然后對所述觸發(fā)監(jiān)測的事件的類型,確定統(tǒng)一的存儲格式;再構(gòu)造具有預(yù)設(shè)深度和預(yù)設(shè)寬度的事件fifo,所述預(yù)設(shè)深度不小于系統(tǒng)同一周期出現(xiàn)的最多事件的數(shù)量;當(dāng)系統(tǒng)仿真過程中出現(xiàn)所述觸發(fā)監(jiān)測的事件,將所述觸發(fā)監(jiān)測的事件寫入所述事件fifo中;最后,每個(gè)時(shí)鐘周期結(jié)束后,如果所述事件fifo不為空,暫停仿真,按照順序?qū)⑺鲇|發(fā)監(jiān)測的事件讀出并處理,因此能夠避免監(jiān)測機(jī)制對每個(gè)觸發(fā)事件都要進(jìn)行一次“暫停-重啟”仿真的操作,能夠節(jié)省大量的資源和仿真時(shí)間。
本申請實(shí)施例提供的第二種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法,是在上述第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法的基礎(chǔ)上,還包括如下技術(shù)特征:
在所述定義系統(tǒng)中的觸發(fā)監(jiān)測的事件之前,還包括:
定義所述系統(tǒng)中的監(jiān)測機(jī)制。
在這種情況下,需要先定義明確系統(tǒng)中的監(jiān)測機(jī)制,然后才能定義對應(yīng)的事件。比如先定義有對請求報(bào)文是否超時(shí)的監(jiān)測機(jī)制,就必須定義相關(guān)的請求報(bào)文發(fā)出的觸發(fā)事件和報(bào)文完成的觸發(fā)事件。一旦監(jiān)測機(jī)制已經(jīng)確定,就可以列出觸發(fā)事件的所有種類。再考慮到事件的特性和系統(tǒng)的規(guī)模,也就可以計(jì)算出同一時(shí)鐘周期內(nèi)觸發(fā)事件的最大數(shù)量和存儲單個(gè)事件需要的空間,這兩個(gè)數(shù)值就可以作為事件fifo的深度和寬度。
本申請實(shí)施例提供的第三種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法,是在上述第二種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法的基礎(chǔ)上,還包括如下技術(shù)特征:
所述構(gòu)造具有預(yù)設(shè)深度和預(yù)設(shè)寬度的事件fifo包括:
當(dāng)所述監(jiān)測機(jī)制和所述事件fifo通過軟件語言實(shí)現(xiàn)時(shí),用抽象化事務(wù)級的方式,自定義特定的事件數(shù)據(jù)類型實(shí)現(xiàn);
否則,對所述事件的類型進(jìn)行統(tǒng)一的編碼,構(gòu)造出一個(gè)固定位寬的事件存儲格式。
本申請實(shí)施例提供的第四種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法,是在上述第三種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法的基礎(chǔ)上,還包括如下技術(shù)特征:
所述預(yù)設(shè)深度不小于系統(tǒng)同一周期出現(xiàn)的最多事件的數(shù)量具體為:
利用C++語言構(gòu)造所述事件fifo時(shí),用指針和鏈表方式構(gòu)造一個(gè)無限大的事件fifo。
在這種情況下,就不用考慮具體的事件的數(shù)量,更便于操作。
本申請實(shí)施例提供的第五種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法,是在上述第四種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測方法的基礎(chǔ)上,還包括如下技術(shù)特征:
所述按照順序?qū)⑺鲇|發(fā)監(jiān)測的事件讀出并處理之后還包括:
當(dāng)處理完畢,重啟仿真。
在這種情況下,整個(gè)過程如下:在仿真開始之后,一旦出現(xiàn)觸發(fā)事件,就將其寫入系統(tǒng)唯一的觸發(fā)事件fifo中,但并不暫停仿真,也不對觸發(fā)事件做處理,直到當(dāng)前時(shí)鐘周期結(jié)束,暫停仿真,對fifo中的事件按照寫入的順序串行讀出并處理,直到fifo重新為空之后,繼續(xù)仿真。
本申請實(shí)施例提供的第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置如圖2所示,圖2為本申請實(shí)施例提供的第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置的示意圖,該裝置包括:
第一定義單元201,用于定義系統(tǒng)中的觸發(fā)監(jiān)測的事件;
確定單元202,用于對所述觸發(fā)監(jiān)測的事件的類型,確定統(tǒng)一的存儲格式;
構(gòu)造單元203,用于構(gòu)造具有預(yù)設(shè)深度和預(yù)設(shè)寬度的事件fifo,所述預(yù)設(shè)深度不小于系統(tǒng)同一周期出現(xiàn)的最多事件的數(shù)量,具體的,事件fifo的預(yù)設(shè)深度必須大于等于系統(tǒng)中同周期可能出現(xiàn)的最多事件數(shù)量,這個(gè)值可以由對系統(tǒng)中觸發(fā)事件的計(jì)算得出。在實(shí)際應(yīng)用中,因?yàn)榉抡嬗玫降膄ifo,增加深度的資源耗費(fèi)非常小,因此對觸發(fā)事件的數(shù)量的計(jì)算可以不那么精確,盡量取較大的值就可以;
寫入單元204,用于當(dāng)系統(tǒng)仿真過程中出現(xiàn)所述觸發(fā)監(jiān)測的事件,將所述觸發(fā)監(jiān)測的事件寫入所述事件fifo中,具體的,在寫入事件fifo時(shí),必須依照觸發(fā)事件發(fā)生的順序,也就是對監(jiān)測機(jī)制發(fā)生影響的順序?qū)懭?,從而確保引入fifo的機(jī)制不會對監(jiān)測機(jī)制的處理產(chǎn)生影響;
處理單元205,用于每個(gè)時(shí)鐘周期結(jié)束后,如果事件fifo不為空,暫停仿真,按照順序?qū)⑺鲇|發(fā)監(jiān)測的事件讀出并處理,具體的,在讀出事件fifo時(shí),當(dāng)fifo不為空時(shí),在仿真完一個(gè)時(shí)鐘周期之后,對事件fifo中的事件按寫入順序,一個(gè)一個(gè)地讀出并處理,在讀出和處理的過程中,仿真是暫時(shí)停止的。
本申請實(shí)施例提供的第二種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置,是在上述第一種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置的基礎(chǔ)上,還包括如下技術(shù)特征:
第二定義單元,用于定義所述系統(tǒng)中的監(jiān)測機(jī)制。在這種情況下,需要先定義明確系統(tǒng)中的監(jiān)測機(jī)制,然后才能定義對應(yīng)的事件。比如先定義有對請求報(bào)文是否超時(shí)的監(jiān)測機(jī)制,就必須定義相關(guān)的請求報(bào)文發(fā)出的觸發(fā)事件和報(bào)文完成的觸發(fā)事件。一旦監(jiān)測機(jī)制已經(jīng)確定,就可以列出觸發(fā)事件的所有種類。再考慮到事件的特性和系統(tǒng)的規(guī)模,也就可以計(jì)算出同一時(shí)鐘周期內(nèi)觸發(fā)事件的最大數(shù)量和存儲單個(gè)事件需要的空間,這兩個(gè)數(shù)值就可以作為事件fifo的深度和寬度。
本申請實(shí)施例提供的第三種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置,是在上述第二種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置的基礎(chǔ)上,還包括如下技術(shù)特征:
所述構(gòu)造單元具體用于:
當(dāng)所述監(jiān)測機(jī)制和所述事件fifo通過軟件語言實(shí)現(xiàn)時(shí),用抽象化事務(wù)級的方式,自定義特定的事件數(shù)據(jù)類型實(shí)現(xiàn);
否則,對所述事件的類型進(jìn)行統(tǒng)一的編碼,構(gòu)造出一個(gè)固定位寬的事件存儲格式。
本申請實(shí)施例提供的第四種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置,是在上述第三種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置的基礎(chǔ)上,還包括如下技術(shù)特征:
所述構(gòu)造單元具體用于:
利用C++語言構(gòu)造所述事件fifo時(shí),用指針和鏈表方式構(gòu)造一個(gè)無限大的事件fifo。在這種情況下,就不用考慮具體的事件的數(shù)量,更便于操作。
本申請實(shí)施例提供的第五種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置,是在上述第四種多處理器系統(tǒng)仿真的系統(tǒng)狀態(tài)監(jiān)測裝置的基礎(chǔ)上,還包括如下技術(shù)特征:
重啟單元,用于當(dāng)處理完畢,重啟仿真。
具體的,在仿真開始之后,一旦出現(xiàn)觸發(fā)事件,就將其寫入系統(tǒng)唯一的觸發(fā)事件fifo中,但并不暫停仿真,也不對觸發(fā)事件做處理,直到當(dāng)前時(shí)鐘周期結(jié)束,暫停仿真,對fifo中的事件按照寫入的順序串行讀出并處理,直到fifo重新為空之后,繼續(xù)仿真。
基于上述描述,本申請實(shí)施例提供的裝置的基本流程如圖3所示,圖3為基于事件fifo的多處理器系統(tǒng)仿真監(jiān)測機(jī)制基本流程圖。根據(jù)檢測機(jī)制定義所有可能的觸發(fā)事件,然后將可能的觸發(fā)事件統(tǒng)一存儲格式,并以此形成深度足以容納同一時(shí)鐘周期內(nèi)所有觸發(fā)事件的觸發(fā)事件fifo,并開始仿真,如果出現(xiàn)觸發(fā)事件,則寫入觸發(fā)事件fifo,直到當(dāng)前仿真周期結(jié)束之后,如果觸發(fā)事件fifo不為空,則暫停仿真,依序讀出fifo中的觸發(fā)事件并處理,如果為空,則進(jìn)入直接判斷是否仿真結(jié)束,如果未結(jié)束,則繼續(xù)下一個(gè)仿真周期,判斷是否出現(xiàn)觸發(fā)事件,并循環(huán)上述步驟。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。