本發(fā)明涉及芯片設(shè)計技術(shù)領(lǐng)域,特別是涉及一種仿真驗證系統(tǒng)。
背景技術(shù):
隨著工藝技術(shù)領(lǐng)域的不斷發(fā)展,芯片的應(yīng)用越來越廣泛。在芯片的設(shè)計過程中,對其進行功能性驗證是一個必要的環(huán)節(jié),并且,隨著芯片的復雜度在不斷提高,對芯片進行驗證的驗證平臺所需要支持的監(jiān)測和控制也越來越復雜。更重要的是,對于超大規(guī)模的芯片,不但需要將芯片本身的功能和性能與參考模型進行評估和對照,還需要將芯片與其外部的模型共同構(gòu)建一個完整的系統(tǒng)進行仿真驗證。
現(xiàn)有技術(shù)中,在對芯片進行仿真驗證時采用的仿真驗證系統(tǒng)為單純的Verilog驗證平臺,Verilog驗證平臺是基于EDA仿真驗證工具所提供的語言調(diào)用接口來調(diào)用相應(yīng)的語言,以進一步實現(xiàn)對芯片的仿真驗證。
但是,一方面,由于EDA仿真驗證工具所提供的接口適用于對C/System C或者System Verilog的調(diào)用,無法對更高級的語言進行調(diào)用,所以,當某些芯片的某些功能需要調(diào)用更高級的語言來進行仿真驗證時,現(xiàn)有技術(shù)中的仿真驗證系統(tǒng)就不能滿足需求,故,現(xiàn)有技術(shù)中的仿真測試系統(tǒng)適用范圍較小、測試效率較低。
另一方面,由于現(xiàn)有技術(shù)中的仿真驗證系統(tǒng)中的Verilog與調(diào)用語言之間的操作沒有明星的區(qū)分,從而導致仿真驗證結(jié)果不精確。
因此,如何提供一種解決上述技術(shù)問題的仿真驗證系統(tǒng)成為本領(lǐng)域的技術(shù)人員需要解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種仿真驗證系統(tǒng),在使用過程中適用范圍較大,并且提高了測試效率,同時使測試結(jié)果更加精確。
為解決上述技術(shù)問題,本發(fā)明提供了一種仿真驗證系統(tǒng),所述系統(tǒng)包括:
Verilog驗證模塊,用于對與芯片相應(yīng)的RTL代碼進行實例化,得到并發(fā)送實例化過程中的第一狀態(tài)信息;還用于接收System Verilog接口模塊返回的時序控制信息以實現(xiàn)對所述芯片的仿真驗證;
所述System Verilog接口模塊,用于對所述第一狀態(tài)信息進行處理得到并發(fā)送第二狀態(tài)信息;還用于接收并發(fā)送System C模塊返回的時序控制信息;
System C模塊,用于提供多種語言模型,并依據(jù)所述第二狀態(tài)信息及相應(yīng)的語言模型得到并發(fā)送事務(wù)級的數(shù)據(jù)信息及語言調(diào)用指令;還用于依據(jù)高級語言模塊返回的算法生成并發(fā)送相應(yīng)的時序控制信息;所述語言模型依據(jù)與C++混合編程的語言編寫而成;
所述高級語言模塊,用于依據(jù)所述事務(wù)級的數(shù)據(jù)信息及所述語言調(diào)用指令得到相應(yīng)的算法,并返回所述算法。
可選的,各個所述語言模型通過與其一一對應(yīng)的接口添加至所述System C模塊中。
可選的,所述System Verilog接口模塊,還用于依據(jù)所述第一狀態(tài)信息對所述Verilog驗證模塊的運行狀態(tài)進行監(jiān)測。
可選的,所述System Verilog接口模塊,還用于判斷所述時序控制信息是否合法,當所述時序控制信息合法時將所述時序控制信息返回至所述Verilog驗證模塊。
可選的,所述System Verilog接口模塊與所述System C模塊之間通過編程語言調(diào)用接口進行信息交互。
可選的,所述Verilog驗證模塊通過例化所述System Verilog接口模塊與所述System Verilog接口模塊進行連接。
可選的,所述編程語言調(diào)用接口由仿真工具提供。
可選的,如上述所述的仿真驗證系統(tǒng),所述C++混合編程的語言包括MATLAB語言或JAVA語言。
本發(fā)明提供了一種仿真驗證系統(tǒng),包括:Verilog驗證模塊,用于對與芯片相應(yīng)的RTL代碼進行實例化,得到并發(fā)送實例化過程中的第一狀態(tài)信息;還用于接收SystemVerilog接口模塊返回的時序控制信息以實現(xiàn)對芯片的仿真驗證;SystemVerilog接口模塊,用于對第一狀態(tài)信息進行處理得到并發(fā)送第二狀態(tài)信息;還用于接收并發(fā)送System C模塊返回的時序控制信息;System C模塊,用于提供多種語言模型,并依據(jù)第二狀態(tài)信息及相應(yīng)的語言模型得到并發(fā)送事務(wù)級的數(shù)據(jù)信息及語言調(diào)用指令;還用于依據(jù)高級語言模塊返回的算法生成并發(fā)送相應(yīng)的時序控制信息;語言模型依據(jù)與C++混合編程的語言編寫而成;高級語言模塊,用于依據(jù)事務(wù)級的數(shù)據(jù)信息及語言調(diào)用指令得到相應(yīng)的算法,并返回算法。
本發(fā)明所提供的一種仿真驗證系統(tǒng)由四層模塊構(gòu)成,在System C模塊中可以添加多種的語言模型,并且這些語言模型是通過與C++混合編程的語言編寫而成,可以用來調(diào)用更高級的語言,所以在一定程度上滿足了對芯片的多種功能進行仿真驗證的需求;并且調(diào)用語言最終也是由Verilog驗證模塊來執(zhí)行,所以本發(fā)明可以很好的將Verilog與調(diào)用語言之間的控制和操作區(qū)分開。本發(fā)明的適用范圍較大,并且提高了測試效率,同時使測試結(jié)果更加精確。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種仿真驗證系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明提供了一種仿真驗證系統(tǒng),在使用過程中適用范圍較大,并且提高了測試效率,同時使測試結(jié)果更加精確。
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參照圖1,圖1為本發(fā)明提供的一種仿真驗證系統(tǒng)的結(jié)構(gòu)示意圖。
該系統(tǒng)包括:
Verilog驗證模塊1,用于對與芯片相應(yīng)的RTL代碼進行實例化,得到并發(fā)送實例化過程中的第一狀態(tài)信息;還用于接收System Verilog接口模塊2返回的時序控制信息以實現(xiàn)對芯片的仿真驗證;
System Verilog接口模塊2,用于對第一狀態(tài)信息進行處理得到并發(fā)送第二狀態(tài)信息;還用于接收并發(fā)送System C模塊3返回的時序控制信息;
SystemC模塊3,用于提供多種語言模型,并依據(jù)第二狀態(tài)信息及相應(yīng)的語言模型得到并發(fā)送事務(wù)級的數(shù)據(jù)信息及語言調(diào)用指令;還用于依據(jù)高級語言模塊4返回的算法生成并發(fā)送相應(yīng)的時序控制信息;語言模型依據(jù)與C++混合編程的語言編寫而成;
高級語言模塊4,用于依據(jù)事務(wù)級的數(shù)據(jù)信息及語言調(diào)用指令得到相應(yīng)的算法,并返回算法。
需要說明的是,本發(fā)明所提供的仿真驗證系統(tǒng)是由四層平臺搭建而成的,也就是本申請中所提供的四個模塊,其中,Verilog驗證模塊1即為Verilog驗證平臺層,System Verilog接口模塊2即為System Verilog接口層,System C模塊3即為System C模型層,高級語言模塊4即為高級語言模塊4。從底層至上層依次是Verilog驗證模塊1、System Verilog接口模塊2、System C模塊3以及高級語言模塊4,并且每個層次為其上一層次的控制和監(jiān)控提供相對應(yīng)的功能和調(diào)用接口。
Verilog驗證模塊1(Verilog驗證平臺層),主要是用于實現(xiàn)對與需要仿真驗證的芯片相對應(yīng)的RTL代碼進行實例化,以及連線,還用于生成相應(yīng)的時鐘信號和復位信號,還提供一些對驗證平臺的基礎(chǔ)控制功能,例如開始仿真、停止仿真、輸入以及輸出等功能,還為上層System Verilog接口模塊2(System Verilog接口層)提供調(diào)用這些接口的功能。Verilog驗證模塊1在對RTL代碼進行實例化的過程中獲取實例化過程中的第一狀態(tài)信息,該第一狀態(tài)信息具體可以為被仿真的相應(yīng)功能對應(yīng)的底層信號級狀態(tài)信息和數(shù)據(jù)信息,并將該第一狀態(tài)信息發(fā)送至System Verilog接口模塊2;System Verilog接口模塊2對第一狀態(tài)信息進行處理得到第二狀態(tài)信息,具體的是將第一狀態(tài)信息進行分組處理,并將分組后的信息和數(shù)據(jù)作為第二狀態(tài)信息,并且還將第一狀態(tài)信息的格式進行轉(zhuǎn)換,轉(zhuǎn)換成與System C模塊3(即System C模型層)的接口格式相一致的通信信息(即第二狀態(tài)信息),并將該第二狀態(tài)信息發(fā)送至System C模塊3,System C模塊3提供多種的語言模型,接收到第二狀態(tài)信息后依據(jù)第二狀態(tài)信息找到與第二狀態(tài)信息相應(yīng)的語言模型,并將該第二狀態(tài)信息進行處理轉(zhuǎn)換成事物級的的數(shù)據(jù)信息(即更抽象的狀態(tài)信息),還依據(jù)相應(yīng)的語言模型生成相應(yīng)的語言調(diào)用指令(由于語言模型是依據(jù)與C++混合編程的語言編寫而成的,所有相應(yīng)的語言調(diào)用指令可以通過C++調(diào)用高級語言生成的庫,從而調(diào)用相應(yīng)的算法),再將事物級的數(shù)據(jù)信息以及語言調(diào)用指令發(fā)送至高級語言模塊4;高級語言模塊4依據(jù)事物級的數(shù)據(jù)信息以及語言調(diào)用指令調(diào)取相應(yīng)的算法(該算法具體為抽象的行為級描述動作),并將該算法發(fā)送至System C模塊3;因為抽象的行為級描述動作對應(yīng)的算法不涉及時序等電路信息,因此需要在System C模塊3對該算法進行處理和轉(zhuǎn)換,生成相應(yīng)的時序控制信息,該使時序控制信息的格式與System Verilog接口模塊2所提供的接口的格式相一致,并將該時序控制信息通過System Verilog接口模塊2發(fā)送至Verilog驗證模塊1,從而使Verilog驗證模塊1通過相應(yīng)的時序控制信息完成對相應(yīng)的芯片的仿真測試。
需要說明的是,System Verilog接口模塊2接收到時序控制信息后還需要將該時序控制信息轉(zhuǎn)換成與底層實現(xiàn)相統(tǒng)一的控制信號和數(shù)據(jù)信息,以便底層(Verilog驗證模塊1)依據(jù)相應(yīng)的控制信號對相應(yīng)的芯片完成仿真測試。
還需要說明的是,System C模塊3中提供有多種模型,并且不論需要調(diào)用怎樣的語言模型都可以通過與其相應(yīng)的接口進行調(diào)用。具體的,各個語言模型通過與其一一對應(yīng)的接口添加至所述System C模塊3中。
可選的,System Verilog接口模塊2,還用于依據(jù)第一狀態(tài)信息對Verilog驗證模塊1的運行狀態(tài)進行監(jiān)測。
需要說明的是,從底層至上層中的每個低層次均為其上一層次的控制和監(jiān)控提供相對應(yīng)的功能和調(diào)用接口。故,System Verilog接口模塊2還可以依據(jù)第一狀態(tài)信息對Verilog驗證模塊1的運行狀態(tài)進行監(jiān)測,通過第一狀態(tài)信息可以判斷Verilog驗證模塊1的運行狀態(tài)的運行狀態(tài)是否正常,當其運行狀態(tài)異常時,還可以將具體的異常信息通過System C模塊3發(fā)送至高級語言模塊4,進一步使高級語言模塊4對底層的Verilog驗證模塊1的運行狀態(tài)做出相應(yīng)的判斷,如需對Verilog驗證模塊1的動作做相應(yīng)的調(diào)整,則高級語言模塊4會下達相應(yīng)的控制指令并通過System C模塊3以及System Verilog接口模塊2將該控制指令發(fā)送至Verilog驗證模塊1,以便Verilog驗證模塊1對仿真測試過程中的相應(yīng)動作做出調(diào)整。
可選的,System Verilog接口模塊2,還用于判斷時序控制信息是否合法,當時序控制信息合法時將時序控制信息返回至Verilog驗證模塊1。
當然,本申請中的System Verilog接口模塊2還可以判斷System C模塊3返回的時序控制信息是否合法,當該時序控制信息合法時將該時序控制信息發(fā)送至至Verilog驗證模塊1;可見,當該時序控制信息不合法時,還可以向上層發(fā)送相應(yīng)的指令以便重新發(fā)送相應(yīng)的時序控制信息。
可選的,System Verilog接口模塊2與System C模塊3之間通過編程語言調(diào)用接口進行信息交互。
需要說明的是,本申請中的System Verilog接口模塊2與System C模塊3之間具體可以通過編程語言調(diào)用接口進行信息交互。該編程語言調(diào)用接口可以由仿真工具提供,也可以人工進行添加,具體的,本發(fā)明對此不做特殊的限定,能實現(xiàn)本發(fā)明的目的即可。
可選的,Verilog驗證模塊1通過例化System Verilog接口模塊2與System Verilog接口模塊2進行連接。
可選的,編程語言調(diào)用接口由仿真工具提供。
具體的,可以調(diào)用EDA工具提供的語言調(diào)用接口。
需要說明的是,本發(fā)明中所使用的各個接口需要保證相鄰層次之間的數(shù)據(jù)和控制傳輸格式的一致性,從而避免因為分層的結(jié)構(gòu)造成對數(shù)據(jù)和控制的理解不一致而引入錯誤。具體而言,對于Verilog驗證模塊1與System Verilog接口模塊2,因為語言的兼容性,可以直接在Verilog驗證模塊1的testbench中例化System Verilog接口模塊2,然后使這兩個模塊直接互連;而仿真工具提供的接口可以通過例化定義好的接口模塊(或其他方式,各家仿真工具提供的方法不同)實現(xiàn)System C模塊3與System Verilog接口模塊2的互連,這種互連也是信號級的,但因為使用仿真工具提供的編程語言調(diào)用接口(無論是何種方式實現(xiàn))可以很自然地進行一組一組地傳輸,而不用對位寬或是時序等電路級別的信息考慮太多(因為編程語言接口實際是不可綜合成電路的軟件代碼),因此這部分接口的實現(xiàn)和定義可以更多地考慮到信號之間的邏輯關(guān)系,對其進行組合,并以一定規(guī)則進行傳輸;而對于System C模塊3與高級語言模塊4之間的接口,則可以完全采用行為級和事務(wù)級的方式進行傳輸,不用考慮時序或信號級的位信息(如果需要向下傳輸?shù)脑?,這些時序等信息在System C模塊3中進行添加)。
可選的,如上述的仿真驗證系統(tǒng),C++混合編程的語言包括MATLAB語言或JAVA語言。
當然,C++混合編程的語言不僅限于包括上述兩種語言類型,還可以包括其他的語言類型,本發(fā)明最次不做特殊的限定,能實現(xiàn)本發(fā)明的目的即可。
本申請中相鄰兩層之間的接口要保證這相鄰層次之間的數(shù)據(jù)信息和控制信息的傳輸格式一致。
另外,System Verilog接口模塊2主要是實現(xiàn)對底層Verilog驗證模塊1是狀態(tài)進行監(jiān)測,實現(xiàn)為System C模塊3提供帶有監(jiān)測功能的通信接口和控制接口。整個仿真驗證系統(tǒng)的控制要在System Verilog接口模塊2這一層具體實現(xiàn)(上層模塊對Verilog驗證模塊1的控制通過接口調(diào)用System Verilog實現(xiàn))。System C模塊3與Verilog驗證模塊1的接口是通過與system Verilog代碼相連實現(xiàn)的,并且System C模塊3還提供了高級語言層相應(yīng)算法語言的接口(如果算法復雜程度足夠高)。
還需要說明的是,本發(fā)明提供了一種仿真測試系統(tǒng),具體在實際應(yīng)用中需要對芯片的哪種功能進行測試,還需要針對所測試的功能對相應(yīng)的接口和語言模型進行具體的添加,本發(fā)明可以添加多種接口進一步可以添加多種語言模型。具體的,可以根據(jù)實際情況而定。
由上述可知,對于本申請中的控制和監(jiān)測功能的調(diào)用功能則要維護一套完整的自底向上的對仿真驗證過程的監(jiān)測和控制機制,即所有上層的監(jiān)測和控制功能,都能夠通過調(diào)用其下層的功能來實現(xiàn)。也就是說,最后所有的監(jiān)測和控制功能,最后都能統(tǒng)一的映射到最底層的Verilog驗證模塊1進行實現(xiàn),而這些不同層級的監(jiān)測和控制,彼此之間不會有影響和干擾,可以通過對底層功能的調(diào)試和設(shè)計,來發(fā)現(xiàn)和避免。
本發(fā)明提供了一種仿真驗證系統(tǒng),包括:Verilog驗證模塊,用于對與芯片相應(yīng)的RTL代碼進行實例化,得到并發(fā)送實例化過程中的第一狀態(tài)信息;還用于接收System Verilog接口模塊返回的時序控制信息以實現(xiàn)對芯片的仿真驗證;System Verilog接口模塊,用于對第一狀態(tài)信息進行處理得到并發(fā)送第二狀態(tài)信息;還用于接收并發(fā)送System C模塊返回的時序控制信息;System C模塊,用于提供多種語言模型,并依據(jù)第二狀態(tài)信息及相應(yīng)的語言模型得到并發(fā)送事務(wù)級的數(shù)據(jù)信息及語言調(diào)用指令;還用于依據(jù)高級語言模塊返回的算法生成并發(fā)送相應(yīng)的時序控制信息;語言模型依據(jù)與C++混合編程的語言編寫而成;高級語言模塊,用于依據(jù)事務(wù)級的數(shù)據(jù)信息及語言調(diào)用指令得到相應(yīng)的算法,并返回算法。
本發(fā)明所提供的一種仿真驗證系統(tǒng)由四層模塊構(gòu)成,在System C模塊中可以添加多種的語言模型,并且這些語言模型是通過與C++混合編程的語言編寫而成,可以用來調(diào)用更高級的語言,所以在一定程度上滿足了對芯片的多種功能進行仿真驗證的需求;并且調(diào)用語言最終也是由Verilog驗證模塊來執(zhí)行,所以本發(fā)明可以很好的將Verilog與調(diào)用語言之間的控制和操作區(qū)分開。本發(fā)明的適用范圍較大,并且提高了測試效率,同時使測試結(jié)果更加精確。
還需要說明的是,在本說明書中,諸如術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。