亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

使用多個(gè)協(xié)同仿真器的并行仿真的制作方法

文檔序號(hào):6364087閱讀:374來(lái)源:國(guó)知局
專利名稱:使用多個(gè)協(xié)同仿真器的并行仿真的制作方法
技術(shù)領(lǐng)域
本發(fā)明總體涉及仿真系統(tǒng),具體地涉及使用協(xié)同仿真器進(jìn)行仿真的方法和系統(tǒng)。
背景技術(shù)
計(jì)算機(jī)化仿真技術(shù)被用于分析和解決不同領(lǐng)域中的復(fù)雜計(jì)算問題,例如驗(yàn)證復(fù)雜電子硬件設(shè)計(jì)的性能。現(xiàn)有技術(shù)中已知許多仿真技術(shù)。一些技術(shù)使用并行處理來(lái)減少仿真時(shí)間。例如,PCT國(guó)際公開WO 2009/118731(該公開內(nèi)容以參引方式納入本文)描述了一種用于設(shè)計(jì)仿真的方法,該方法包括將一個(gè)設(shè)計(jì)的驗(yàn)證任務(wù)劃分(partition)成具有執(zhí)行依賴性的第一多個(gè)原子處理單元(PE)。該方法還包括計(jì)算用于在一個(gè)多處理器設(shè)備上執(zhí)行PE的順序,所述多處理器設(shè)備包括并行運(yùn)行的第二多個(gè)處理器,并根據(jù)內(nèi)置的調(diào)度策略 調(diào)度由處理器執(zhí)行的PE。不考慮調(diào)度策略,所述順序通過(guò)不同的處理器與執(zhí)行依賴性不沖突地并發(fā)執(zhí)行PE。根據(jù)計(jì)算的順序和調(diào)度策略,PE在處理器上執(zhí)行,以得出仿真結(jié)果。該設(shè)計(jì)的性能根據(jù)仿真結(jié)果而被驗(yàn)證。作為另一個(gè)實(shí)施例,PCT國(guó)際公開WO 2010/004474(該公開內(nèi)容以參引方式納入本文)描述了一種包括接受計(jì)算任務(wù)的定義的計(jì)算方法,該計(jì)算任務(wù)包括多個(gè)具有執(zhí)行依賴性的原子處理單元(PE)。所述計(jì)算任務(wù)被編譯,以在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括多個(gè)處理器,該多個(gè)處理器通過(guò)在一個(gè)包括一個(gè)第二數(shù)量的執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中與執(zhí)行依賴性不沖突地布置所述PE而能夠同時(shí)地執(zhí)行第一數(shù)量的PE,所述第二數(shù)量大于I且不超過(guò)第一數(shù)量。所述多處理器設(shè)備被調(diào)用以運(yùn)行軟件代碼,該軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地執(zhí)行所述執(zhí)行序列,以得出計(jì)算任務(wù)的結(jié)果。

發(fā)明內(nèi)容
下文描述的一個(gè)實(shí)施方案提供一種方法,包括由控制多個(gè)協(xié)同仿真器的一個(gè)仿真器接受一個(gè)用于仿真的仿真任務(wù)。所述多個(gè)協(xié)同仿真器中的每一個(gè)被分配執(zhí)行所述仿真任務(wù)中的一個(gè)或多個(gè)相應(yīng)的子任務(wù)。通過(guò)調(diào)用每個(gè)協(xié)同仿真器執(zhí)行所述分配的相應(yīng)的子任務(wù)來(lái)執(zhí)行所述仿真任務(wù)。在一些實(shí)施方案中,所述仿真任務(wù)在任何給定的時(shí)間由一個(gè)仿真狀態(tài)所定義,所述仿真狀態(tài)由所述仿真器保持;以及,每個(gè)子任務(wù)在任何給定的時(shí)間由一個(gè)相應(yīng)的協(xié)同仿真狀態(tài)所定義,所述協(xié)同仿真狀態(tài)由被分配執(zhí)行所述子任務(wù)的所述協(xié)同仿真器獨(dú)立于所述仿真器保持。在一些實(shí)施方案中,執(zhí)行所述仿真任務(wù)包括由一個(gè)給定的協(xié)同仿真器執(zhí)行一個(gè)給定的子任務(wù),該給定的子任務(wù)包含一個(gè)賦值語(yǔ)句;如果所述賦值語(yǔ)句是一個(gè)阻塞賦值,則在執(zhí)行任何非阻塞賦值之前將所述賦值語(yǔ)句的結(jié)果從所述給定的協(xié)同仿真器返回至所述仿真器;以及如果所述賦值語(yǔ)句是一個(gè)非阻塞賦值,則在執(zhí)行所有阻塞賦值之后返回所述結(jié)果。在一個(gè)實(shí)施方案中,返回所述結(jié)果包括調(diào)度所述仿真器在一延遲時(shí)間呼叫所述給定的協(xié)同仿真器,以接受所述賦值語(yǔ)句的結(jié)果。在一些實(shí)施方案中,所述方法包括在一個(gè)給定的協(xié)同仿真器執(zhí)行的一個(gè)給定的子任務(wù)執(zhí)行完成之前,將所述仿真任務(wù)的控制從所述給定的協(xié)同仿真器返回至所述仿真器,以使得至少一個(gè)其他協(xié)同仿真器與所述給定的協(xié)同仿真器并發(fā)運(yùn)行。返回所述控制可包括調(diào)度所述仿真器在一延遲時(shí)間呼叫所述給定的協(xié)同仿真器,以接受所述給定的子任務(wù)的結(jié)果。在一個(gè)公開的實(shí)施方案中,執(zhí)行所述仿真任務(wù)包括由所述仿真器執(zhí)行所述仿真任務(wù)的至少一個(gè)子任務(wù)。執(zhí)行所述至少一個(gè)子任務(wù)可包括使用由所述仿真器執(zhí)行的所述至少一個(gè)子任務(wù)同步兩個(gè)或更多個(gè)子任務(wù),所述兩個(gè)或更多個(gè)子任務(wù)由兩個(gè)或更多個(gè)相應(yīng)的協(xié)同仿真器執(zhí)行。在一些實(shí)施方案中,所述方法包括將所述仿真任務(wù)表示為一個(gè)分層樹結(jié)構(gòu),并通 過(guò)遞歸遍歷所述分層樹結(jié)構(gòu)將所述仿真任務(wù)劃分為所述子任務(wù)。所述方法可包括使用一個(gè)或多個(gè)編譯器編譯所述子任務(wù)。在一個(gè)實(shí)施方案中,編譯所述子任務(wù)包括使用兩個(gè)或更多個(gè)相應(yīng)的分立編譯器編譯兩個(gè)或更多個(gè)所述子任務(wù)。在一個(gè)公開的實(shí)施方案中,接受所述仿真任務(wù)包括接受硬件設(shè)計(jì)的定義,以及執(zhí)行所述仿真任務(wù)包括驗(yàn)證所述硬件設(shè)計(jì)。所述方法可包括在一個(gè)給定的協(xié)同仿真器中使用一個(gè)圖形處理單元(GPU)執(zhí)行給定的子任務(wù)的至少一部分。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供一種方法,該方法包括由一個(gè)仿真器調(diào)用一個(gè)協(xié)同仿真器,以執(zhí)行一個(gè)仿真任務(wù)的一個(gè)子任務(wù),其中所述子任務(wù)包括至少一個(gè)賦值語(yǔ)句。如果所述賦值語(yǔ)句是一個(gè)阻塞賦值,則在執(zhí)行任何非阻塞賦值之前將所述賦值語(yǔ)句的結(jié)果從所述協(xié)同仿真器返回至所述仿真器。如果所述賦值語(yǔ)句是一個(gè)非阻塞賦值,則在執(zhí)行所有阻塞賦值之后返回所述結(jié)果。所述仿真任務(wù)是由所述仿真器使用所述子任務(wù)的結(jié)果來(lái)執(zhí)行的。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供一種系統(tǒng),該系統(tǒng)包括一個(gè)仿真器和多個(gè)協(xié)同仿真器。所述仿真器被配置為接受一個(gè)仿真任務(wù),以分配所述多個(gè)協(xié)同仿真器中的每一個(gè)執(zhí)行所述仿真任務(wù)的一個(gè)或多個(gè)相應(yīng)的子任務(wù),并通過(guò)調(diào)用每個(gè)協(xié)同仿真器執(zhí)行所述分配的相應(yīng)的子任務(wù)來(lái)執(zhí)行所述仿真任務(wù)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供一種系統(tǒng),該系統(tǒng)包括一個(gè)仿真器和一個(gè)協(xié)同仿真器。所述協(xié)同仿真器被配置為接受和執(zhí)行一個(gè)仿真任務(wù)的一個(gè)子任務(wù),其中所述子任務(wù)包括至少一個(gè)賦值語(yǔ)句,如果所述賦值語(yǔ)句是一個(gè)阻塞賦值,則在執(zhí)行任何非阻塞賦值之前返回所述賦值語(yǔ)句的結(jié)果,且如果所述賦值語(yǔ)句是一個(gè)非阻塞賦值,則在執(zhí)行所有阻塞賦值之后返回所述結(jié)果。所述仿真器被配置為調(diào)用所述協(xié)同仿真器以執(zhí)行所述子任務(wù),并使用從所述協(xié)同仿真器返回的所述子任務(wù)的結(jié)果來(lái)執(zhí)行所述仿真任務(wù)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供一種計(jì)算機(jī)軟件產(chǎn)品。該產(chǎn)品包括有形非暫時(shí)計(jì)算機(jī)可讀媒介,其中程序指令存儲(chǔ)在該媒介中,當(dāng)由計(jì)算機(jī)讀取該指令時(shí),該指令使得所述計(jì)算機(jī)接受一個(gè)仿真任務(wù),以分配多個(gè)協(xié)同仿真器中的每一個(gè)執(zhí)行所述仿真任務(wù)中的一個(gè)或多個(gè)相應(yīng)的于任務(wù),并通過(guò)調(diào)用每一個(gè)協(xié)同仿真器執(zhí)行所述分配的相應(yīng)子任務(wù)來(lái)執(zhí)行所述仿真任務(wù)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供一種計(jì)算機(jī)軟件產(chǎn)品。該產(chǎn)品包括有形非暫時(shí)計(jì)算機(jī)可讀媒介,其中程序指令存儲(chǔ)在該媒介中,當(dāng)由計(jì)算機(jī)讀取該指令時(shí),該指令使得所述計(jì)算機(jī)接受和執(zhí)行一個(gè)仿真任務(wù)的子任務(wù),其中所述子任務(wù)包括至少一個(gè)賦值語(yǔ)句,如果所述賦值語(yǔ)句是一個(gè)阻塞賦值,則在執(zhí)行任何非阻塞賦值之前返回所述賦值語(yǔ)句的結(jié)果,且如果所述賦值語(yǔ)句是一個(gè)非阻塞賦值,則在執(zhí)行所有阻塞賦值之后返回所述結(jié)果。從下文實(shí)施方案的詳細(xì)描述,結(jié)合附圖,可更全面地理解本發(fā)明。


圖I是示意性示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的仿真系統(tǒng)的方塊圖;
圖2是示意性示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的仿真問題的劃分的圖示;圖3和4是示意性示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的仿真器和多個(gè)協(xié)同仿真器之間的交互的圖示。
具體實(shí)施方式
總述下文描述的本發(fā)明的實(shí)施方案提供了用于執(zhí)行仿真任務(wù)的改進(jìn)的方法和系統(tǒng)。所公開的技術(shù)的應(yīng)用可包括例如超大規(guī)模集成(VLSI)、模擬或控制硬件設(shè)計(jì)的驗(yàn)證。其他應(yīng)用可在研究工程領(lǐng)域。在一些實(shí)施方案中,仿真系統(tǒng)包括控制多個(gè)協(xié)同仿真器的仿真器。為了執(zhí)行某一仿真任務(wù),每個(gè)協(xié)同仿真器被分配執(zhí)行所述仿真任務(wù)的一個(gè)或多個(gè)子任務(wù)。所述仿真器通過(guò)調(diào)用每個(gè)協(xié)同仿真器執(zhí)行其被分配的子任務(wù),以及同步和協(xié)調(diào)多個(gè)協(xié)同仿真器的運(yùn)行來(lái)執(zhí)行仿真任務(wù)。不同于一些已知的其中仿真任務(wù)是由多個(gè)并行處理器來(lái)執(zhí)行的并行仿真方案,在所公開的技術(shù)中,每個(gè)子任務(wù)由一個(gè)相應(yīng)狀態(tài)定義,該狀態(tài)由獨(dú)立于仿真器的正執(zhí)行的協(xié)同仿真器所保持。一些公開的實(shí)施方案提供了仿真器和協(xié)同仿真器之間的接口和交互機(jī)制,這實(shí)現(xiàn)了整個(gè)系統(tǒng)的數(shù)據(jù)同步和并發(fā)執(zhí)行。還描述了將仿真任務(wù)劃分成一組均衡的于任務(wù)的示例性過(guò)程。劃分為多個(gè)子任務(wù)使得多個(gè)子任務(wù)并行編譯。在一些實(shí)施方案中,不同的子任務(wù)可被不同的(可能并行的)編譯器編譯。使用多個(gè)協(xié)同仿真器提供了相當(dāng)大的優(yōu)勢(shì)。例如,所公開的仿真系統(tǒng)能夠執(zhí)行大型仿真任務(wù),這些仿真任務(wù)超出了單個(gè)仿真器或者仿真器/協(xié)同仿真器對(duì)的存儲(chǔ)能力和計(jì)算復(fù)雜度能力。再者,在多個(gè)并行協(xié)同仿真器之間劃分一個(gè)仿真任務(wù)使得仿真時(shí)間顯著減少。由于每個(gè)協(xié)同仿真器獨(dú)立地保持其子任務(wù)的狀態(tài),因此所公開的方案提供了仿真器實(shí)際的卸載技術(shù)(offloading),因此可高度擴(kuò)展。系統(tǒng)描述圖I是示意性示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的仿真系統(tǒng)20的方塊圖。在本文描述的實(shí)施方案中,系統(tǒng)20被用于驗(yàn)證電子硬件設(shè)計(jì)。然而,在替代實(shí)施方案中,系統(tǒng)20可被用于執(zhí)行任何其他合適的仿真任務(wù),例如使用多個(gè)并發(fā)搜索引擎進(jìn)行搜索。系統(tǒng)20包括一個(gè)仿真器24以及一個(gè)或多個(gè)協(xié)同仿真器28。在該實(shí)施例中,系統(tǒng)包括被指示為#1.棚的N個(gè)協(xié)同仿真器。盡管本文描述的實(shí)施方案主要指的是包括多個(gè)協(xié)同仿真器的配置,但是所公開的技術(shù)類似地可適用于僅具有單個(gè)協(xié)同仿真器的配置。
仿真器24設(shè)有待被執(zhí)行的一個(gè)仿真任務(wù),例如待被驗(yàn)證的硬件設(shè)計(jì)。在一個(gè)示例性實(shí)施方案中,硬件設(shè)計(jì)使用Verilog來(lái)表示。替代地,該設(shè)計(jì)可使用任何其他合適的硬件描述語(yǔ)言(HDL)(例如,VHDL),或者其他寄存器傳輸級(jí)(RTL)抽象來(lái)表示。仿真器24被配置為運(yùn)行該仿真任務(wù),該仿真任務(wù)被劃分成待被仿真器和協(xié)同仿真器28執(zhí)行的子任務(wù)。這種類型的執(zhí)行通常涉及其中仿真任務(wù)被劃分成子任務(wù)的預(yù)備處理階段,如下文描述的。通常,每個(gè)子任務(wù)包括一個(gè)具有相應(yīng)數(shù)據(jù)庫(kù)的共享對(duì)象。在劃分之后,仿真器將至少一些子任務(wù)提供至協(xié)同仿真器,并運(yùn)行協(xié)同仿真器以執(zhí)行指定給它們的子任務(wù)。應(yīng)注意,一些子任務(wù)可在仿真器內(nèi)部執(zhí)行,并不委派給協(xié)同仿真器。例如,測(cè)試平臺(tái)(test-bench)子任務(wù)(即,仿真控制)和對(duì)協(xié)同仿真器進(jìn)行同步的子任務(wù)通常由仿真器執(zhí)行。(應(yīng)注意,測(cè)試平臺(tái)任務(wù)可由協(xié)同仿真器執(zhí)行。)在一些實(shí)施方案中,仿真任務(wù)由另一個(gè)處理器或系統(tǒng)劃分,隨后以劃分形式提供至仿真器24。 在本專利申請(qǐng)和權(quán)利要求的上下文情景中,術(shù)語(yǔ)“協(xié)同仿真器(co-simulator)”指的是執(zhí)行具有相應(yīng)內(nèi)部狀態(tài)的一部分仿真任務(wù)的處理單元。這些內(nèi)部狀態(tài)對(duì)仿真器來(lái)說(shuō)并非完全可得到,仿真器僅知曉定義整個(gè)仿真任務(wù)的整個(gè)狀態(tài)。換句話說(shuō),協(xié)同仿真器是有狀態(tài)的處理單元,每個(gè)協(xié)同仿真器獨(dú)立于仿真器而保持其被指定部分的仿真任務(wù)的內(nèi)部狀態(tài)。仿真器可以同步和控制不同的協(xié)同仿真器,但是通常僅知曉仿真的整個(gè)狀態(tài),不會(huì)知曉協(xié)同仿真器的內(nèi)部狀態(tài)。協(xié)同仿真器的這個(gè)定義與一些已知的并行處理方案相反,在已知的并行處理方案中,仿真任務(wù)被劃分為由多個(gè)并行的無(wú)狀態(tài)的處理器或處理核執(zhí)行的并行任務(wù)。本文中的協(xié)同仿真器28有時(shí)被稱作加速器,且兩個(gè)術(shù)語(yǔ)在本文中可互換使用。將某一仿真子任務(wù)委派給一個(gè)協(xié)同仿真器,有時(shí)被稱作加速該仿真任務(wù)的部分。在圖I的示例性實(shí)施方案中,仿真器24包括仿真器中央處理單元(CPU) 32和接口36,仿真器中央處理單元(CPU) 32執(zhí)行仿真器的處理功能,接口 36與協(xié)同仿真器通信。每個(gè)協(xié)同仿真器28包括一個(gè)與仿真器24通信的接口 40、一個(gè)協(xié)同仿真器CPU 44和一個(gè)圖形處理單元(GPU) 48。CPU 44管理和控制協(xié)同仿真器運(yùn)行。GPU 48執(zhí)行分配給協(xié)同仿真器的至少一部分仿真子任務(wù)。在一些實(shí)施方案中,CPU 44可執(zhí)行分配給協(xié)同仿真器的一部分仿真子任務(wù)。在上文引用的PCT國(guó)際公開W02009/118731和W02010/004474中討論了使用并行處理器(例如,GPU)來(lái)執(zhí)行仿真任務(wù)的某些方面。出于若干原因,使用多個(gè)協(xié)同仿真器是有利的。例如,可被仿真的設(shè)計(jì)的大小通常被協(xié)同仿真器(例如,GPU)的有限存儲(chǔ)大小所限制。在多個(gè)協(xié)同仿真器之間劃分設(shè)計(jì)仿真任務(wù),使得該系統(tǒng)能夠?qū)Σ荒懿捎脝蝹€(gè)協(xié)同仿真器來(lái)仿真的大的設(shè)計(jì)進(jìn)行仿真。再者,GPU (例如,NVIDIA GPU的CUDA)的運(yùn)行環(huán)境有時(shí)將單個(gè)仿真實(shí)例可使用的存儲(chǔ)大小限制在小于該GPU的總存儲(chǔ)大小。適當(dāng)?shù)貏澐肿尤蝿?wù)使得該系統(tǒng)可利用協(xié)同仿真器的全部存儲(chǔ)空間。此外,并行運(yùn)行多個(gè)協(xié)同仿真器使得仿真帶寬有相當(dāng)大的增加,且仿真時(shí)間顯著減少。圖I中所示出的系統(tǒng)配置,是僅出于概念清楚的目的而選擇的示例性配置。在替代實(shí)施方案中,系統(tǒng)20可具有任何其他合適的配置。例如,該系統(tǒng)可包括任何合適數(shù)量的協(xié)同仿真器。仿真任務(wù)可以任何合適方式被劃分為任何合適數(shù)量的子任務(wù)。給定的協(xié)同仿真器28可包括一個(gè)或多個(gè)任何合適類型的處理單元,未必是GPU或其他并行處理器。在一些實(shí)施方案中,該系統(tǒng)可包括運(yùn)行不同的、相應(yīng)的仿真任務(wù)的多個(gè)仿真器24,或者運(yùn)行多個(gè)仿真任務(wù)的單個(gè)仿真器。給定的協(xié)同仿真器可執(zhí)行屬于一個(gè)以上的仿真任務(wù)的子任務(wù)。仿真器24和協(xié)同仿真器28可在硬件、軟件中實(shí)施,或者使用硬件元件和軟件元件的組合來(lái)實(shí)施。在一個(gè)示例性實(shí)施方案中,整個(gè)系統(tǒng)20在單個(gè)服務(wù)器平臺(tái)中實(shí)施,其中每個(gè)協(xié)同仿真器使用相應(yīng)的刀片服務(wù)器來(lái)實(shí)施。然而,替代地,可使用任何其他合適的配置。通常,CPU32、CPU 44和GPU 48中的每一個(gè)可各自包括以軟件編程來(lái)執(zhí)行本文描述功能的通用處理器。軟件可以電子形式例如經(jīng)網(wǎng)絡(luò)下載至處理器,或者替代地或附加地,軟件可在非暫時(shí)有形媒介,例如磁存儲(chǔ)器、光存儲(chǔ)器或電存儲(chǔ)器上被提供和/或存儲(chǔ)。在本實(shí)施例中,仿真任務(wù)包括待被驗(yàn)證的電子硬件設(shè)計(jì)。該設(shè)計(jì)使用Verilog進(jìn)行建模。Verilog 是例如在 2001 年的標(biāo)題為 “IEEE Standard Verilog Hardware Description Language” 的 IEEE 標(biāo)準(zhǔn) 1364-2001 和 2009 年的標(biāo)題為 “IEEE Standardfor System Verilog-Unified Hardware Design, Specification, and VerificationLanguage”的IEEE標(biāo)準(zhǔn)1800-2009中所規(guī)定的,兩個(gè)標(biāo)準(zhǔn)以參引方式納入本文。在該實(shí)施方案中,仿真器24和協(xié)同仿真器28使用Verilog程序接口(VPI)進(jìn)行通信。在上文引用的IEEE 1364-2001標(biāo)準(zhǔn)中的26-27章中描述了 VPI。替代地,任何其他合適的接口或通信協(xié)議,例如,程序語(yǔ)言接口(PLI),可被用于仿真器24和協(xié)同仿真器28之間的通信。在上文引用的IEEE 1364-2001標(biāo)準(zhǔn)中的20-25章中描述了 PLI。其他接口實(shí)施例是DirectC和直接內(nèi)核接口(Direct Kernel Interface) 分層仿真任務(wù)劃分圖2是示意性示出根據(jù)本發(fā)明一個(gè)實(shí)施方案的仿真問題的劃分的圖示。在該實(shí)施例中,仿真任務(wù)(例如,待被驗(yàn)證的設(shè)計(jì))被建模為分層樹50。樹中的每個(gè)節(jié)點(diǎn)表示一個(gè)(可能是空的)仿真子任務(wù)。每個(gè)節(jié)點(diǎn)與其父節(jié)點(diǎn)和子節(jié)點(diǎn)通信。應(yīng)注意,標(biāo)記為“ACC”的節(jié)點(diǎn)表示被加速的子任務(wù),即被委派給協(xié)同仿真器28執(zhí)行。應(yīng)注意,標(biāo)記為“NACC”的節(jié)點(diǎn)表示未被加速的子任務(wù),即由仿真器24執(zhí)行。節(jié)點(diǎn)54表示仿真任務(wù)的頂節(jié)點(diǎn)。一個(gè)給定的仿真任務(wù)(例如,一個(gè)設(shè)計(jì))可具有多個(gè)頂節(jié)點(diǎn)。 在本實(shí)施例中,仿真任務(wù)被劃分成三個(gè)未被加速的子任務(wù)(由NACC節(jié)點(diǎn)56和66,以及也未被加速的頂節(jié)點(diǎn)54表示)和六個(gè)被加速的子任務(wù)(由ACC節(jié)點(diǎn)58、60、62、64、68和70表示)。虛線框74、76、78、80、82和84表示分配給相應(yīng)的不同協(xié)同仿真器執(zhí)行的劃分。在該實(shí)施例中,每個(gè)協(xié)同仿真器執(zhí)行由單個(gè)被加速的節(jié)點(diǎn)表示的子任務(wù)。然而,替代地,一個(gè)給定的協(xié)同仿真器可執(zhí)行對(duì)應(yīng)于多個(gè)被加速的節(jié)點(diǎn)的多個(gè)子任務(wù)。通常,包括被加速的節(jié)點(diǎn)的任何子樹的根是未被加速的節(jié)點(diǎn)。例如,未被加速的節(jié)點(diǎn)56是包括被加速的節(jié)點(diǎn)60、62和64的子樹的根。未被加速的節(jié)點(diǎn)66是包括被加速的節(jié)點(diǎn)68和70的子樹的根。未被加速的節(jié)點(diǎn)54是包括節(jié)點(diǎn)58的子樹的根。換句話說(shuō),任何兩個(gè)被加速的節(jié)點(diǎn)(即,分配給協(xié)同仿真器的任何兩個(gè)子任務(wù))經(jīng)由未被加速的節(jié)點(diǎn)同步(即,經(jīng)由仿真器同步)。在一些實(shí)施方案中,被加速的節(jié)點(diǎn)之間的通信是通過(guò)未被加速的節(jié)點(diǎn)實(shí)現(xiàn)的,通過(guò)未被加速的節(jié)點(diǎn)使被加速的節(jié)點(diǎn)同步。替代地,被加速的節(jié)點(diǎn)可彼此之間直接通信,盡管被加速的節(jié)點(diǎn)是通過(guò)一個(gè)未被加速的節(jié)點(diǎn)進(jìn)行同步的。仿真器24(或任何其他處理器或系統(tǒng))可以任何合適方式將仿真任務(wù)劃分成這種類型的分層結(jié)構(gòu)。一種示例性劃分方法將在下文詳細(xì)描述。
仿真器和協(xié)同仿真器之間的交互在一些實(shí)施方案中,仿真器24和協(xié)同仿真器28使用這樣一種機(jī)制通信,該機(jī)制確保仿真器和協(xié)同仿真器中的各種不同信號(hào)和數(shù)據(jù)庫(kù)之間的同步和數(shù)據(jù)完整性。下文的描述涉及其中仿真器和協(xié)同仿真器使用VPI進(jìn)行通信的系統(tǒng)配置。加以必要的修改,所公開的技術(shù)可使用其他各種合適的接口或通信協(xié)議。仿真器24通常在一系列仿真時(shí)隙中仿真一個(gè)Verilog設(shè)計(jì)。一個(gè)給定的協(xié)同仿真器28在一個(gè)給定的時(shí)隙中的處理,被分割成進(jìn)入階段(ingress phase)、執(zhí)行階段(execution phase)和離開階段(egress phase)。在進(jìn)入階段,協(xié)同仿真器從仿真器中讀取一個(gè)或多個(gè)信號(hào)的值。在執(zhí)行階段,協(xié)同仿真器對(duì)信號(hào)應(yīng)用適當(dāng)?shù)奶幚?。在離開階段,協(xié)同仿真器將處理結(jié)果(即,信號(hào)的更新值)提供回至仿真器。記錄(register)或訂閱(subscribe)信號(hào)并請(qǐng)求仿真器在信號(hào)值改變時(shí)提供一個(gè)觸發(fā),協(xié)同仿真器讀取一個(gè)給定的仿真器信號(hào)。該特征在VPI術(shù)語(yǔ)中被稱作“在值改變時(shí) 回調(diào)”。記錄處理可使得一個(gè)給定的信號(hào)上的值改變觸發(fā)讀取(“進(jìn)入處理”)一個(gè)或多個(gè)其他信號(hào)。因此,協(xié)同仿真器未必需要記錄所有的進(jìn)入信號(hào)。由協(xié)同仿真器在執(zhí)行階段執(zhí)行的處理可包括任何合適的Verilog語(yǔ)句。尤其是,該處理可包括阻塞賦值和/或非阻塞賦值(NBA)。在所公開的仿真器和協(xié)同仿真器之間的交互機(jī)制中,兩種類型的賦值處理是不同的,如下文將進(jìn)一步描述的。在阻塞賦值中(在Verilog中指示為“=”,例如A = B),賦值的右手側(cè)(RHS)立即被求值且被替代進(jìn)賦值的左手側(cè)(LHS)。在該給定的仿真時(shí)隙中的其他計(jì)算被阻塞,直到賦值完成。在非阻塞賦值中(指示為“< = ”,例如A<= B),賦值的RHS立即被求值,但是將該結(jié)果賦值到LHS中則被延遲到在同一時(shí)隙中的其他賦值以及它們產(chǎn)生的賦值完成。(在下文圖3的狀態(tài)模型中,結(jié)果的賦值被延遲到NBA狀態(tài),仿真器進(jìn)入激活(ACTIVE)狀態(tài)或NBA狀態(tài)。當(dāng)進(jìn)入NBA狀態(tài)時(shí),仿真器首先呼叫“預(yù)-NBA(Pre-NBA) ”呼叫(cbNBASync/cbReadffriteSync)。賦值到LHS(在非阻塞情形中)是在NBA狀態(tài)中執(zhí)行的。其他計(jì)算未被正在討論的賦值所阻塞,是可執(zhí)行的。通常,盡管不是必須的,但是阻塞賦值被用于對(duì)組合邏輯進(jìn)行建模,而非阻塞賦值被用于對(duì)時(shí)序邏輯進(jìn)行建模。圖3是示意性示出根據(jù)本發(fā)明一個(gè)實(shí)施方案的仿真器24和協(xié)同仿真器28之間的交互的圖示。如該圖中可看出的,仿真器通過(guò)遍歷被指示為(PREP0NED)、激活(ACTIVE)、非激活(INACTIVE)、NBA和延遲(POSTPONED)的一系列狀態(tài)來(lái)處理每個(gè)時(shí)隙。在同一時(shí)隙中可多次遍歷ACTIVE、INACTIVE和NBA狀態(tài)。在上文引用的ffiEE 1800-2009標(biāo)準(zhǔn)的第9. 3節(jié)和IEEE 1364-2001標(biāo)準(zhǔn)的第5. 3節(jié)中可找到對(duì)于這些狀態(tài)以及在每個(gè)狀態(tài)中執(zhí)行的處理的詳細(xì)描述。在圖3的示例性流程中,在INACTIVE狀態(tài),仿真器24向協(xié)同仿真器28提供觸發(fā)90。每個(gè)協(xié)同仿真器接收對(duì)應(yīng)于其所記錄的信號(hào)的觸發(fā),該信號(hào)的值已經(jīng)被改變。響應(yīng)于觸發(fā)90,每個(gè)被觸發(fā)的協(xié)同仿真器在Pre-NBA回調(diào)時(shí)記錄,即請(qǐng)求仿真器在從INACTIVE狀態(tài)轉(zhuǎn)變至NBA狀態(tài)后再次觸發(fā)它。仿真器通過(guò)使用Pre-NBA回調(diào)觸發(fā)94再次觸發(fā)協(xié)同仿真器來(lái)響應(yīng)。應(yīng)注意,由于接下來(lái)的狀態(tài)執(zhí)行進(jìn)入階段,因此應(yīng)該驗(yàn)證在繼續(xù)進(jìn)行之前的所有的激活和非激活信號(hào)被更新。上述延遲機(jī)制確保離開處理僅在沒有賦值在等待執(zhí)行之后才執(zhí)行。響應(yīng)于觸發(fā)94,每個(gè)被觸發(fā)的協(xié)同仿真器執(zhí)行進(jìn)入階段,即從仿真器讀取信號(hào)值。隨后,每個(gè)協(xié)同仿真器執(zhí)行執(zhí)行階段,特別是更新其內(nèi)部狀態(tài)。此時(shí),阻塞賦值和非阻塞賦值的處理是不同的。對(duì)于每個(gè)阻塞(非-NBA)賦值,協(xié)同仿真器執(zhí)行離開階段,即將已更新的信號(hào)值返回至仿真器。對(duì)于每個(gè)非阻塞賦值(NBA),協(xié)同仿真器在仿真器的NBA狀態(tài)后的一晚些時(shí)間調(diào)度離開階段。延遲的回調(diào)cbReadOnlySync 由箭頭 102 標(biāo)記。通常,協(xié)同仿真器不應(yīng)在cbReadOnlySync回調(diào)時(shí)執(zhí)行離開階段,而是僅執(zhí)行進(jìn)入階段,即讀取信號(hào)。另一個(gè)選擇是在CbReadWriteSync時(shí)記錄。然而,在實(shí)際情況中,一些仿真器不在后-NBA(Post-NBA)(箭頭98)時(shí)呼叫該回調(diào)。在一些實(shí)施方案中,在NBA狀態(tài)處理完成之后,通過(guò)使得仿真器在“valUe_Change event”時(shí)呼叫協(xié)同仿真器來(lái)延遲離開階段° 該機(jī)制使用信號(hào) signal_updated_by_simulator 和 signal_driven_by_co_simulator來(lái)實(shí)施。由于信號(hào)signal_updated_by_simulator使用“< = ”來(lái)更新,因此其在NBA狀態(tài) 處理期間被更新。然而,由于協(xié)同仿真器在該信號(hào)時(shí)記錄(由于valUe_Change的原因),在NBA狀態(tài)處理之后,仿真器不會(huì)繼續(xù)到POSTPONED狀態(tài),而是又一次到ACTIVE狀態(tài),并在接下來(lái)的INACTIVE狀態(tài)中呼叫協(xié)同仿真器。在一些實(shí)施方案中,對(duì)于阻塞賦值,離開階段(將賦值結(jié)果從協(xié)同仿真器返回至仿真器)是在系統(tǒng)中的任何非阻塞賦值(包括例如,由仿真器、給定的協(xié)同仿真器和其他協(xié)同仿真器執(zhí)行的阻塞賦值)執(zhí)行之前執(zhí)行的。另一方面,對(duì)于非阻塞賦值,離開階段是在系統(tǒng)中的所有阻塞賦值執(zhí)行之后執(zhí)行的。作為使用pre-NBA回調(diào)觸發(fā)94的替代,被觸發(fā)的協(xié)同仿真器可在post-NBA回調(diào)時(shí)記錄,即請(qǐng)求仿真器在NBA狀態(tài)后再次觸發(fā)它。在該實(shí)施方式中,仿真器通過(guò)采用post-NBA回調(diào)觸發(fā)98再次觸發(fā)協(xié)同仿真器來(lái)響應(yīng)。當(dāng)多個(gè)協(xié)同仿真器28 (或其他單元)使用上述機(jī)制與仿真器24通信時(shí),所有這些單元的信號(hào)和數(shù)據(jù)庫(kù)會(huì)保持同步。每個(gè)協(xié)同仿真器執(zhí)行其進(jìn)入階段、執(zhí)行階段和離開階段。在非阻塞賦值的情形中,僅在同一時(shí)隙中被觸發(fā)的所有協(xié)同仿真器已經(jīng)完成其相應(yīng)的進(jìn)入階段之后才需要執(zhí)行離開階段。在協(xié)同仿真器和仿真器之間也需要一個(gè)類似的同步(即使在單個(gè)協(xié)同仿真器的情形中)。盡管該機(jī)制是在多個(gè)協(xié)同仿真器的情景中描述的,但是該機(jī)制也可被用于運(yùn)行單個(gè)仿真器。無(wú)相互阻塞地運(yùn)行多個(gè)協(xié)同仿真器當(dāng)仿真器24使用圖3的機(jī)制與多個(gè)協(xié)同仿真器交互時(shí),每個(gè)協(xié)同仿真器的執(zhí)行階段被阻塞。例如,如果在到給定的協(xié)同仿真器的pre-NBA回調(diào)(圖3中的箭頭94)期間,該協(xié)同仿真器執(zhí)行阻塞呼叫(即阻塞該處理,直到已經(jīng)完成進(jìn)入、執(zhí)行和離開),仿真器將不能夠在pre-NBA時(shí)呼叫其他協(xié)同仿真器。結(jié)果,其他協(xié)同仿真器將不能與該給定的協(xié)同仿真器并發(fā)執(zhí)行它們的執(zhí)行。相反,每個(gè)協(xié)同仿真器將僅在前一協(xié)同仿真器完成之后執(zhí)行其進(jìn)入、執(zhí)行和離開。下文描述的機(jī)制使得執(zhí)行階段的并發(fā)運(yùn)行成為可能。當(dāng)使用該機(jī)制時(shí),每個(gè)協(xié)同仿真器在其完成進(jìn)入階段且初始化執(zhí)行階段(執(zhí)行被認(rèn)為是非阻塞的)之后將控制返回至仿真器。
在一些實(shí)施方案中,一個(gè)給定的協(xié)同仿真器將控制返回至仿真器,即使該協(xié)同仿真器并未完成其執(zhí)行階段和離開階段,以允許其他協(xié)同仿真器繼續(xù)進(jìn)行。如果該協(xié)同仿真器沒有在將控制返回至仿真器時(shí)完成其執(zhí)行階段和離開階段,則該協(xié)同仿真器調(diào)度仿真器在隨后的時(shí)間再次呼叫它以更新離開階段的結(jié)果。該示例性處理在圖4中示出。圖4是示意性示出根據(jù)本發(fā)明一個(gè)實(shí)施方案的一個(gè)仿真器和多個(gè)協(xié)同仿真器之間的交互的圖示。圖4的處理從仿真器24采用觸發(fā)90觸發(fā)一個(gè)給定的協(xié)同仿真器28 (在值變化時(shí)回調(diào))開始。作為響應(yīng),在加載步驟106,協(xié)同仿真器加載被觸發(fā)的信號(hào)的相應(yīng)的數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)通常指示接下來(lái)的步驟,例如進(jìn)入、執(zhí)行、離開(NBA/非-NBA)。協(xié)同仿真器記錄pre-NBA回調(diào)。結(jié)果,僅在所有ACTIVE和INACTIVE事件之后以及在NBA之前,仿真器 呼叫該回調(diào)。在處理步驟110,當(dāng)pre-NBA觸發(fā)回調(diào)觸發(fā)94到達(dá)時(shí),協(xié)同仿真器執(zhí)行進(jìn)入階段,調(diào)用非阻塞賦值的執(zhí)行,并調(diào)度延遲的離開處理。在下一個(gè)值改變回調(diào)觸發(fā)90中,協(xié)同仿真器執(zhí)行一個(gè)完成檢驗(yàn)步驟114。在該步驟中,協(xié)同仿真器檢驗(yàn)執(zhí)行階段是否已經(jīng)完成。如果完成,則協(xié)同仿真器獲得執(zhí)行結(jié)果,并執(zhí)行離開階段。否則,協(xié)同仿真器重新調(diào)度離開用于阻塞賦值。使用該技術(shù),在一個(gè)協(xié)同仿真器中的執(zhí)行不會(huì)阻塞其他協(xié)同仿真器。結(jié)果,協(xié)同仿真器可并發(fā)執(zhí)行它們相應(yīng)的子任務(wù),因此減少了仿真時(shí)間。當(dāng)協(xié)同仿真執(zhí)行由CPU 44而非GPU 48來(lái)執(zhí)行時(shí),可使用多個(gè)并發(fā)線程或進(jìn)程來(lái)支持并發(fā)。在一些實(shí)施方案中,系統(tǒng)20使用下列機(jī)制調(diào)度阻塞執(zhí)行和非阻塞執(zhí)行■定義了兩個(gè)指不為 “signal_driven_by_co_simulator” 和 “signal_updated_by_simulator”的Verilog信號(hào)(通常在被仿真器編譯的一個(gè)Verilog文件中)?!鰧?duì)于信號(hào)signal_updated_by_simulator,協(xié)同仿真器記錄在值變化時(shí)的回調(diào)?!鎏砑酉旅娴拇a(通常在被仿真器編譯的一個(gè)Verilog文件中):a.對(duì)于立即(阻塞)更新always (signal_driyen_by_co_simulator)signal_updated_by_simulator = signal_driven_by_co_simulatorb.對(duì)于NBA更新always (signal_driyen_by_co_simulator)signal_updated_by_simulator < = signal_driven_by_co_simulator■當(dāng)協(xié)同仿真器準(zhǔn)備調(diào)度回調(diào)時(shí),它經(jīng)由VPI從仿真器讀取signal_driven_by_co-simulator信號(hào),為該信號(hào)值增加1,并經(jīng)由VPI將已增加的值寫回至仿真器。由于仿真器如上文所述實(shí)施對(duì)signal_updated_by_simulator的更新,因此仿真器將呼叫協(xié)同仿真器(由于VPI值改變的原因)。將仿真任務(wù)劃分為子任務(wù)—個(gè)給定的仿真任務(wù)(例如,待被驗(yàn)證的VLSI設(shè)計(jì)),可以不同方式被劃分成子任務(wù)。在一些實(shí)施方案中,劃分由在仿真器24之前的處理執(zhí)行。該處理生成隨后被該仿真器使用的結(jié)果。劃分可由與運(yùn)行仿真器24相同的計(jì)算平臺(tái)執(zhí)行。替代地,劃分可由系統(tǒng)20外部的另一個(gè)處理器或系統(tǒng)執(zhí)行,在該情形中,該設(shè)計(jì)可以以被劃分的形式提供給仿真器24。下面的描述提供一個(gè)示例性劃分處理。該描述指的是由處理器執(zhí)行的劃分,而不考慮運(yùn)行它的實(shí)際計(jì)算平臺(tái)。在該不例性實(shí)施方案中,處理器分割一個(gè)由分層樹結(jié)構(gòu)(例如,上文圖2的樹50)表示的仿真任務(wù)。處理器將該任務(wù)分割成多個(gè)(例如,數(shù)十個(gè))劃分。每個(gè)劃分包括分層樹中的某一節(jié)點(diǎn)以及該節(jié)點(diǎn)下面的節(jié)點(diǎn)。每個(gè)劃分的根節(jié)點(diǎn)具有一個(gè)未被加速的父節(jié)點(diǎn),即該父節(jié)點(diǎn)由仿真器執(zhí)行且并未被分配至任何協(xié)同仿真器。各劃分之間的同步經(jīng)由仿真器執(zhí)行。各劃分之間的通信可直接實(shí)現(xiàn),或經(jīng)由仿真器實(shí)現(xiàn)。用戶提供了兩個(gè)指示為 MIN_SPLIT_WEIGHT_SIZE 和 MAX_SPLIT_WEIGHT_SIZE 的參數(shù)。MIN_SPLIT_WEIGHT_SIZE規(guī)定一個(gè)劃分的允許的最小權(quán)重。MAX_SPLIT_WEIGHT_SIZE規(guī)定一個(gè)劃分的最大權(quán)重。在一些情形中,可創(chuàng)建一個(gè)大于MAX_SPLIT_WEIGHT_SIZE的劃分,但是只有在不可能將該劃分分割成大于MIN_SPLIT_WEIGHT_SIZE的時(shí)候才可以如此,使得它們覆蓋該分割權(quán)重的至少某一比例(由Pl指示)?!獋€(gè)劃分的權(quán)重可以多種方式定義。在一些實(shí)施方案中,樹節(jié)點(diǎn)的權(quán)重被定義為 所討論的節(jié)點(diǎn)處和該節(jié)點(diǎn)下方的樹節(jié)點(diǎn)的數(shù)量。在這些實(shí)施方案中,一個(gè)劃分的權(quán)重被定義為作為該劃分的根的節(jié)點(diǎn)的權(quán)重。在其他實(shí)施方案中,例如在RTL設(shè)計(jì)中,節(jié)點(diǎn)的權(quán)重也可取決于該節(jié)點(diǎn)和該節(jié)點(diǎn)下方的節(jié)點(diǎn)中的語(yǔ)句(statement)和/或構(gòu)造(construct)的數(shù)量。再者,一個(gè)劃分的權(quán)重被定義為作為該劃分根(partition root)的節(jié)點(diǎn)的權(quán)重。在一些實(shí)施方案中,處理器運(yùn)行計(jì)算每個(gè)樹節(jié)點(diǎn)的權(quán)重的遞歸過(guò)程。在一個(gè)示例性實(shí)施方案中,劃分是由下面的采用當(dāng)前節(jié)點(diǎn)(cur_code)作為自變量的遞歸函數(shù)來(lái)實(shí)行的-Cur_weight = cur_code 的權(quán)重-Is_nacc =該模塊是未被加速的-Is_top =該節(jié)點(diǎn)被用戶規(guī)定為受測(cè)設(shè)備(DUT)的頂層-對(duì)cur_code的子節(jié)點(diǎn)中大于MIN_SPLIT_WEIGHT_SIZE的權(quán)重求和為sum_weights_in_range-如果(cur_weight> MAX_SPLIT_ffEIGHT_SIZE 且 sum_weights_in_range >Pl*cur_weight)或著 is_nacc 對(duì)于所有子節(jié)點(diǎn)呼叫auto_split,并且對(duì)所返回的布爾值一起進(jìn)行OR運(yùn)算至0R_result 中-如果(cur_weight< MAX_SPLIT_WEIGHT_SIZE 或者 0R_result)且! is_nacc且(cur_weight > SPLIT_MIN_WEIGHT_SIZE 或者 is_top)將該節(jié)點(diǎn)添加為分割根返回True-返回0R_result當(dāng)使用該遞歸函數(shù)時(shí),如果有下述情況,則分層的下一層被檢查-當(dāng)前節(jié)點(diǎn)“太重”,即其權(quán)重太大;以及-當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)的權(quán)重(那些>MIN_SPLIT_WEIGHT_SIZE)的和為一覆蓋當(dāng)前節(jié)點(diǎn)權(quán)重的至少Pl %的值。因此,在子節(jié)點(diǎn)(可變成劃分)不能覆蓋該權(quán)重情形中,可允許超過(guò)MAX_SPLIT_WEIGHT_SIZE。因此參數(shù)MAX_SPLIT_WEIGHT_SIZE在一些情形中是一個(gè)被超出的“軟(soft)”約束,而MIN_SPLIT_WEIGHT_SIZE是一個(gè)硬(hard)約束。在上文描述中,Pl是一個(gè)可用戶定義的參數(shù)。在一個(gè)示例性實(shí)施方案中,Pl = 90%,但可使用任何其他合適的參數(shù)值。在替代實(shí)施方案中,可使用任何其他合適的劃分處理。在一些實(shí)施方案中,使用多個(gè)編譯器編譯被劃分的仿真任務(wù),以使得每個(gè)編譯器編譯包括一個(gè)或多個(gè)子任務(wù)的一個(gè)相應(yīng)的子集。不同的編譯器可在不同的處理器或其他計(jì)算平臺(tái)上運(yùn)行,在一些實(shí)施方案中彼此并行地運(yùn)行。盡管本文描述的實(shí)施方案主要解決的是設(shè)計(jì)驗(yàn)證應(yīng)用,但是本文描述的方法和系統(tǒng)也可用在其他應(yīng)用中。例如,上文描述的劃分處理可用作其他的電子設(shè)計(jì)自動(dòng)化(EDA)應(yīng)用中,例如布局布線應(yīng)用。另一個(gè)示例性應(yīng)用是使用多個(gè)并發(fā)搜索引擎進(jìn)行并發(fā)搜索。因此應(yīng)理解,上文描述的實(shí)施方案通過(guò)實(shí)施例來(lái)引證,且本發(fā)明不限于上文特定示出和描述的。相反,本發(fā)明的范圍包括上文描述的不同特征的組合和子組合,以及本領(lǐng)域 普通技術(shù)人員在閱讀了前文描述后會(huì)想到的并且在現(xiàn)有技術(shù)中未被公開的本發(fā)明的變化和改型。本專利申請(qǐng)中以參引方式結(jié)合的文件被認(rèn)為是本申請(qǐng)的一個(gè)整體部分,除非在這些結(jié)合的文件中所定義的任何術(shù)語(yǔ)與本說(shuō)明書中明示或暗示的定義相沖突時(shí),則僅考慮本申請(qǐng)文件中的定義。
權(quán)利要求
1.一種方法,包括 由控制多個(gè)協(xié)同仿真器的一個(gè)仿真器接受一個(gè)用于仿真的仿真任務(wù); 所述多個(gè)協(xié)同仿真器中的每一個(gè)被分配執(zhí)行所述仿真任務(wù)中的一個(gè)或多個(gè)相應(yīng)的子任務(wù); 通過(guò)調(diào)用每個(gè)協(xié)同仿真器執(zhí)行所述分配的相應(yīng)的子任務(wù)來(lái)執(zhí)行所述仿真任務(wù)。
2.根據(jù)權(quán)利要求I所述的方法,其中所述仿真任務(wù)在任何給定的時(shí)間由一個(gè)仿真狀態(tài)所定義,所述仿真狀態(tài)由所述仿真器保持;其中每個(gè)子任務(wù)在任何給定的時(shí)間由一個(gè)相應(yīng)的協(xié)同仿真狀態(tài)所定義,所述協(xié)同仿真狀態(tài)由被分配執(zhí)行所述子任務(wù)的所述協(xié)同仿真器獨(dú)立于所述仿真器所保持。
3.根據(jù)權(quán)利要求I所述的方法,其中執(zhí)行所述仿真任務(wù)包括 由一個(gè)給定的協(xié)同仿真器執(zhí)行一個(gè)給定的子任務(wù),該給定的子任務(wù)包含一個(gè)賦值語(yǔ)句; 如果所述賦值語(yǔ)句是一個(gè)阻塞賦值,則在執(zhí)行任何非阻塞賦值之前將所述賦值語(yǔ)句的結(jié)果從所述給定的協(xié)同仿真器返回至所述仿真器;以及 如果所述賦值語(yǔ)句是一個(gè)非阻塞賦值,則在執(zhí)行所有阻塞賦值之后返回所述結(jié)果。
4.根據(jù)權(quán)利要求3所述的方法,其中返回所述結(jié)果包括調(diào)度所述仿真器在一延遲時(shí)間呼叫所述給定的協(xié)同仿真器,以接受所述賦值語(yǔ)句的結(jié)果。
5.根據(jù)權(quán)利要求I所述的方法,包括在一個(gè)給定的協(xié)同仿真器執(zhí)行的一個(gè)給定的子任務(wù)執(zhí)行完成之前,將所述仿真任務(wù)的控制從所述給定的協(xié)同仿真器返回至所述仿真器,以使得至少一個(gè)其他協(xié)同仿真器與所述給定的協(xié)同仿真器并發(fā)運(yùn)行。
6.根據(jù)權(quán)利要求5所述的方法,其中返回所述控制包括調(diào)度所述仿真器在一延遲時(shí)間呼叫所述給定的協(xié)同仿真器,以接受所述給定的子任務(wù)的結(jié)果。
7.根據(jù)權(quán)利要求I所述的方法,其中執(zhí)行所述仿真任務(wù)包括由所述仿真器執(zhí)行所述仿真任務(wù)的至少一個(gè)子任務(wù)。
8.根據(jù)權(quán)利要求7所述的方法,其中執(zhí)行所述至少一個(gè)子任務(wù)包括使用由所述仿真器執(zhí)行的所述至少一個(gè)子任務(wù)同步兩個(gè)或更多個(gè)子任務(wù),所述兩個(gè)或更多個(gè)子任務(wù)由兩個(gè)或更多個(gè)相應(yīng)的協(xié)同仿真器執(zhí)行。
9.根據(jù)權(quán)利要求I所述的方法,包括將所述仿真任務(wù)表示為一個(gè)分層樹結(jié)構(gòu),并通過(guò)遞歸遍歷所述分層樹結(jié)構(gòu)將所述仿真任務(wù)劃分為所述于任務(wù)。
10.根據(jù)權(quán)利要求I所述的方法,包括使用一個(gè)或多個(gè)編譯器編譯所述于任務(wù)。
11.根據(jù)權(quán)利要求10所述的方法,其中編譯所述子任務(wù)包括使用兩個(gè)或更多個(gè)相應(yīng)的分立編譯器編譯兩個(gè)或更多個(gè)所述子任務(wù)。
12.根據(jù)權(quán)利要求I所述的方法,其中接受所述仿真任務(wù)包括接受硬件設(shè)計(jì)的定義,且其中執(zhí)行所述仿真任務(wù)包括驗(yàn)證所述硬件設(shè)計(jì)。
13.根據(jù)權(quán)利要求I所述的方法,包括在一個(gè)給定的協(xié)同仿真器中使用一個(gè)圖形處理單元GPU執(zhí)行給定的子任務(wù)的至少一部分。
14.一種方法,包括 使用一個(gè)仿真器調(diào)用一個(gè)協(xié)同仿真器,以執(zhí)行一個(gè)仿真任務(wù)的一個(gè)子任務(wù),其中所述子任務(wù)包括至少一個(gè)賦值語(yǔ)句;如果所述賦值語(yǔ)句是一個(gè)阻塞賦值,則在執(zhí)行任何非阻塞賦值之前將所述賦值語(yǔ)句的結(jié)果從所述協(xié)同仿真器返回至所述仿真器,且如果所述賦值語(yǔ)句是一個(gè)非阻塞賦值,則在執(zhí)行所有阻塞賦值之后返回所述結(jié)果;以及 由所述仿真器使用所述子任務(wù)的結(jié)果來(lái)執(zhí)行所述仿真任務(wù)。
15.—種系統(tǒng),包括 多個(gè)協(xié)同仿真器;以及 一個(gè)仿真器,所述仿真器被配置為接受一個(gè)仿真任務(wù),以分配所述多個(gè)協(xié)同仿真器中的每一個(gè)執(zhí)行所述仿真任務(wù)的一個(gè)或多個(gè)相應(yīng)的子任務(wù),并通過(guò)調(diào)用每個(gè)協(xié)同仿真器執(zhí)行所述分配的相應(yīng)的子任務(wù)來(lái)執(zhí)行所述仿真任務(wù)。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述仿真器被配置為保持在任何給定的時(shí)間定義所述仿真任務(wù)的一個(gè)仿真狀態(tài),且其中每個(gè)協(xié)同仿真器被配置為獨(dú)立于所述仿真器,保持在任何給定的時(shí)間定義被分配至所述協(xié)同仿真器的子任務(wù)的相應(yīng)的協(xié)同仿真狀態(tài)。
17.根據(jù)權(quán)利要求15所述的系統(tǒng),其中一個(gè)給定的協(xié)同仿真器被配置為執(zhí)行一個(gè)包含一個(gè)賦值語(yǔ)句的給定的子任務(wù),如果所述賦值語(yǔ)句是一個(gè)阻塞賦值,則在執(zhí)行任何非阻塞賦值之前將所述賦值語(yǔ)句的結(jié)果返回至所述仿真器,且如果所述賦值語(yǔ)句是一個(gè)非阻塞賦值,則在執(zhí)行所有阻塞賦值之后返回所述結(jié)果。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述給定的協(xié)同仿真器被配置為調(diào)度所述仿真器在一延遲時(shí)間呼叫所述給定的協(xié)同仿真器,以接受所述賦值語(yǔ)句的結(jié)果。
19.根據(jù)權(quán)利要求15所述的系統(tǒng),其中一個(gè)給定的協(xié)同仿真器被配置為在所述給定的協(xié)同仿真器執(zhí)行的給定的子任務(wù)執(zhí)行完成之前,將所述仿真任務(wù)的控制返回至所述仿真器,以使得至少一個(gè)其他協(xié)同仿真器與所述給定的協(xié)同仿真器并發(fā)運(yùn)行。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中,在返回所述控制之后,所述給定的協(xié)同仿真器被配置為調(diào)度所述仿真器在一延遲時(shí)間呼叫所述給定的協(xié)同仿真器,以接受所述給定的子任務(wù)的結(jié)果。
21.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述仿真器被配置為執(zhí)行所述仿真任務(wù)的至少一個(gè)子任務(wù)。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述仿真器被配置為使用由所述仿真器執(zhí)行的至少一個(gè)子任務(wù)同步兩個(gè)或更多個(gè)子任務(wù),所述兩個(gè)或更多個(gè)子任務(wù)由兩個(gè)或更多個(gè)相應(yīng)的協(xié)同仿真器執(zhí)行。
23.根據(jù)權(quán)利要求15所述的系統(tǒng),包括一個(gè)處理器,該處理器被配置為將所述仿真任務(wù)表示為一個(gè)分層樹結(jié)構(gòu),并通過(guò)遞歸遍歷所述分層樹結(jié)構(gòu)將所述仿真任務(wù)劃分為所述子任務(wù)。
24.根據(jù)權(quán)利要求15所述的系統(tǒng),包括一個(gè)或多個(gè)被配置為編譯所述子任務(wù)的編譯器。
25.根據(jù)權(quán)利要求24所述的系統(tǒng),其中所述一個(gè)或多個(gè)編譯器包括被配置為分別編譯兩個(gè)或更多個(gè)子任務(wù)的兩個(gè)或更多個(gè)分立的編譯器。
26.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述仿真任務(wù)包括硬件設(shè)計(jì)的定義,且其中所述仿真器被配置為通過(guò)驗(yàn)證所述硬件設(shè)計(jì)執(zhí)行所述仿真任務(wù)。
27.根據(jù)權(quán)利要求15所述的系統(tǒng),其中一個(gè)給定的協(xié)同仿真器包括圖形處理單元GPU,該圖形處理單元被配置為執(zhí)行分配給所述給定的協(xié)同仿真器的一個(gè)給定的子任務(wù)的至少一部分。
28.—種系統(tǒng),包括 一個(gè)協(xié)同仿真器,被配置為接受和執(zhí)行一個(gè)仿真任務(wù)的一個(gè)子任務(wù),其中所述子任務(wù)包括至少一個(gè)賦值語(yǔ)句,如果所述賦值語(yǔ)句是一個(gè)阻塞賦值,則在執(zhí)行任何非阻塞賦值之前返回所述賦值語(yǔ)句的結(jié)果,且如果所述賦值語(yǔ)句是一個(gè)非阻塞賦值,則在執(zhí)行所有阻塞賦值之后返回所述結(jié)果;以及 一個(gè)仿真器,被配置為調(diào)用所述協(xié)同仿真器以執(zhí)行所述子任務(wù),并使用從所述協(xié)同仿真器返回的所述子任務(wù)的結(jié)果執(zhí)行所述仿真任務(wù)。
全文摘要
一種方法,包括由控制多個(gè)協(xié)同仿真器的一個(gè)仿真器接受用于仿真的仿真任務(wù)。所述多個(gè)協(xié)同仿真器的每一個(gè)被分配執(zhí)行所述仿真任務(wù)的一個(gè)或多個(gè)相應(yīng)子任務(wù)。所述仿真任務(wù)通過(guò)調(diào)用每個(gè)協(xié)同仿真器執(zhí)行所述相應(yīng)的分配的子任務(wù)來(lái)執(zhí)行。
文檔編號(hào)G06F9/45GK102736942SQ20121002244
公開日2012年10月17日 申請(qǐng)日期2012年2月1日 優(yōu)先權(quán)日2011年4月12日
發(fā)明者I·凱舍, I·蓋勒, S·密茨拉希, T·本-戴維, U·泰 申請(qǐng)人:洛克泰克科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1