基于Python語言的Rapidio切換器邏輯仿真驗(yàn)證平臺(tái)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,具體涉及一種基于Python語言的Rapid1切換器邏輯仿真驗(yàn)證平臺(tái)及方法,使用Python語言進(jìn)行邏輯仿真的方法。
【背景技術(shù)】
[0002]芯片的邏輯功能驗(yàn)證是伴隨芯片設(shè)計(jì)不斷發(fā)展的一個(gè)行業(yè),功能驗(yàn)證在芯片的整個(gè)設(shè)計(jì)周期中占用的時(shí)間最多。盡管目前有許多技術(shù)可用于減少驗(yàn)證時(shí)間,但并沒有一個(gè)明確適用于某一項(xiàng)目的驗(yàn)證方法。
[0003]很多帶有微處理器的SOC設(shè)計(jì)項(xiàng)目所使用的傳統(tǒng)的驗(yàn)證環(huán)境,是基于Verilog模型以及類似C驅(qū)動(dòng)程序的測試向量組成的。C程序模擬芯片中微處理器的啟動(dòng)程序,啟動(dòng)后對芯片中各組件的寄存器進(jìn)行讀寫操作,將實(shí)際得到的寄存器值與期望值進(jìn)行比較,判斷測試是否通過。仿真時(shí),C程序被編譯為2進(jìn)制文件,由Verilog測試平臺(tái)讀入到微處理器的存儲(chǔ)器模型中,然后處理器開始執(zhí)行C代碼編譯出的程序,模擬芯片的行為。
[0004]對于沒有微處理器的芯片,則基本使用Verilog測試平臺(tái)。后來出現(xiàn)的UVM與SystemVerilog為驗(yàn)證人員開發(fā)面向?qū)ο蟮尿?yàn)證環(huán)境提供了方便,但是由于SystemVerilog必須向前兼容經(jīng)典Verilog的語法,所以它的面向?qū)ο髾C(jī)制有很多固有缺陷。如何應(yīng)用一種抽象層次更高,且簡單易學(xué)的面向?qū)ο缶幊陶Z言,成為很多芯片驗(yàn)證項(xiàng)目需要考慮的冋題。
[0005]Python語言是近些年新興的一種腳本語言,對比其他面向?qū)ο蟮恼Z言,它的優(yōu)勢非常明顯。它的類模塊支持多態(tài)、操作符重載和多重繼承等高級概念,并且以Python特有的簡潔的語法和類型,00P (面向?qū)ο缶幊蘋bject Oriented Programming,是一種計(jì)算機(jī)編程架構(gòu))十分易于使用。
[0006]Python的使用和分發(fā)是完全免費(fèi)的。就像其他的開源軟件一樣,Python的在線社區(qū)對用戶需求的響應(yīng)和商業(yè)軟件一樣快。而且,由于Python完全開放源代碼,提高了開發(fā)者的實(shí)力,并產(chǎn)生了一個(gè)很大的專家團(tuán)隊(duì)。它可以在不同的系統(tǒng)平臺(tái)中簡單的進(jìn)行移植。另外Python是一個(gè)混合體。它豐富的工具集使它介于傳統(tǒng)的腳本語言(例如,Tcl和Perl)和系統(tǒng)語言(例如,C、C++和Java)之間。Python提供了所有腳本語言的簡單和易用性,并且具有在編譯語言中才能找到的高級軟件工程工具。不像其他腳本語言,這種結(jié)合使Python在長期大型的開發(fā)項(xiàng)目中十分有用。
【發(fā)明內(nèi)容】
[0007]本發(fā)明要解決的技術(shù)問題是:本發(fā)明針對以上問題,提供一種基于Python語言的Rapid1切換器邏輯仿真驗(yàn)證平臺(tái)及方法。
[0008]本發(fā)明所采用的技術(shù)方案為:
基于Python語言的Rapid1切換器邏輯仿真驗(yàn)證平臺(tái),所述驗(yàn)證平臺(tái)包括:對Python語義進(jìn)行解釋的SystemC接口函數(shù)、SystemC調(diào)用SystemVerilog的DPI接口函數(shù)、Python實(shí)現(xiàn)的測試用例及運(yùn)行腳本。
[0009]所述驗(yàn)證平臺(tái)實(shí)現(xiàn)步驟如下:
1)對Verilog編寫的Rapid1切換器被測對象進(jìn)行例化;
2)用Verilog程序編寫基本的激勵(lì)輸入以及響應(yīng)輸出的DPI函數(shù)與外層SystemC環(huán)境進(jìn)行交互;
3)編寫SystemC對于Python的解釋器;
4)編寫Python的底層庫函數(shù);
5)編寫Python的測試用例以及運(yùn)行腳本。
[0010]基于Python語言的Rapid1切換器邏輯仿真驗(yàn)證方法,其中其中基于Python語言的邏輯仿真環(huán)境分2部分:在Cadence仿真器能夠運(yùn)行的部分、Python語言編寫的測試用例以及相關(guān)代碼部分,由于Cadence仿真器不能直接支持對Python的編譯,所以需要有一種機(jī)制來連接這2部分的進(jìn)程,采用共享內(nèi)存的方法,利用Liunx機(jī)制,對所述2部分進(jìn)程進(jìn)行數(shù)據(jù)交換。
[0011]所述方法所運(yùn)行的內(nèi)容包括:
DCadence仿真器部分運(yùn)行的內(nèi)容包括:
由Verilog實(shí)現(xiàn)的Rapid1 Switch被測對象;
外層的Verilog TB wrapper例化這個(gè)被測對象,并且把更外層的SystemC送來的TLM數(shù)據(jù)包轉(zhuǎn)換為具體信號(hào)流,施加給被測對象,并把被測對象的輸出轉(zhuǎn)換為TLM包送出;
SystemC TB負(fù)責(zé)把TLM數(shù)據(jù)流從更外層取到,分別送給SystemC的參考模型以及Verilog被測對象,對這2個(gè)的輸出的數(shù)據(jù)包進(jìn)行對比,并對比較結(jié)果進(jìn)行輸出,給到外層的API函數(shù);
最外層的內(nèi)存訪問程序接口,負(fù)責(zé)通過Cadence仿真器提供的接口函數(shù),讀入加載給被測對象的數(shù)據(jù)包,并把比對結(jié)果通過Cadence仿真器提供的接口函數(shù)送入共享內(nèi)存;
2) Python語言編寫的測試用例以及相關(guān)代碼部分運(yùn)行的內(nèi)容包括:
具體的測試用例以及運(yùn)行腳本和一些基本庫函數(shù);每次運(yùn)行一個(gè)測試用例,通過運(yùn)行腳本把測試用例編譯,并創(chuàng)建一個(gè)進(jìn)程,使這個(gè)進(jìn)程與Cadence仿真器的仿真進(jìn)程同步,直到仿真運(yùn)行完畢;
上述2部分通過2部分進(jìn)程的共享內(nèi)存,相互傳輸要測試的包信息以及測試結(jié)果,實(shí)現(xiàn)Cadence仿真器部分的數(shù)據(jù)與Python編譯器部分的數(shù)據(jù)之間的交換,能夠讓Python實(shí)時(shí)控制仿真的進(jìn)程,并得知仿真結(jié)果。
[0012]所述方法編譯運(yùn)行一個(gè)測試的啟動(dòng)步驟如下:
Python運(yùn)行腳本啟動(dòng);
編譯Python測試用例以及庫函數(shù);
編譯Cadence仿真器需要的被測對象的Verilog代碼;
編譯SystemC相關(guān)代碼及Verilog Wrapper代碼;
啟動(dòng)Cadence仿真器,獲取相應(yīng)線程以及共享內(nèi)存;
運(yùn)行編譯過的Python代碼,啟動(dòng)Python程序,這時(shí)Python進(jìn)程可以對仿真進(jìn)程的共孚內(nèi)存進(jìn)彳丁讀與; 當(dāng)仿真結(jié)束,Python測試用例執(zhí)行完畢后,關(guān)閉仿真器以及其他進(jìn)程。
[0013]本發(fā)明的有益效果為:本發(fā)明通過增加Python語言與SystemC語言間的解釋器,使得Python語言能夠直接控制邏輯仿真器的激勵(lì)輸入并比較響應(yīng)輸出,使得由Python編寫的測試用例能直接用于邏輯仿真,并在一個(gè)Rapid1切換器上進(jìn)行應(yīng)用,通過以上環(huán)境的使用,可以極大提高測試用例的編寫效率以及可復(fù)用性。
【附圖說明】
[0014]圖1為本發(fā)明Python語言的Rapid1切換器邏輯仿真驗(yàn)證平臺(tái)基本結(jié)構(gòu)示意圖; 圖2為本發(fā)明Python邏輯仿真驗(yàn)證平臺(tái)的啟動(dòng)流程圖;
其中:
APIS:應(yīng)用程序接口 (applicat1n programe interfaces);
IUS:Incisive Unified Simulator0
【具體實(shí)施方式】
[0015]下面通過說明書附圖,結(jié)合【具體實(shí)施方式】對本發(fā)明進(jìn)一步說明:
基于Python語言的Rapid1切換器邏輯仿真驗(yàn)證平臺(tái),所述驗(yàn)證平臺(tái)包括:對Python語義進(jìn)行解釋的SystemC接口函數(shù)、SystemC調(diào)用SystemVerilog的DPI接口函數(shù)、Python實(shí)現(xiàn)的測試用例及運(yùn)行腳本。
[0016]所述驗(yàn)證平臺(tái)實(shí)現(xiàn)步驟如下:
1)對Verilog編寫的Rapid1切換器被測對象進(jìn)行例化;
2)用Verilog程序編寫基本的激勵(lì)輸入以及響應(yīng)輸出的DPI函數(shù)與外層SystemC環(huán)境進(jìn)行交互;
3)編寫SystemC對于Python的解釋器;