|
嵌入式硬件培訓(xùn)出來_嵌入式系統(tǒng)芯片的軟硬件協(xié)同仿真環(huán)境設(shè)計,
隨著微電子產(chǎn)業(yè)日新月異的發(fā)展,IC設(shè)計的規(guī)模越來越大,集成度越來越高,已經(jīng)足以將一套完整的系統(tǒng)集成到一塊小小的芯片中。在這種形勢下,SoC技術(shù)應(yīng)運而生。隨著IP核復(fù)用技術(shù)的出現(xiàn),SoC芯片的設(shè)計已經(jīng)不再是很大的難題,SoC芯片的驗證已逐漸取代芯片設(shè)計成為芯片開發(fā)階段的瓶頸,F(xiàn)階段SoC芯片設(shè)計的正確性要經(jīng)過前仿真、后仿真以及FPGA驗證來保證。前仿真包括單元驗證、集成驗證和系統(tǒng)驗證,后仿真包括帶反標(biāo)時序SDF的網(wǎng)表仿真,其中系統(tǒng)驗證和后仿真都需要關(guān)注SoC芯片的全局功能,這就涉及SoC的軟件仿真和硬件仿真的協(xié)同問題。本文以DSM模型替代ARM核,以VMM驗證方法學(xué)和VCS仿真器為基礎(chǔ),搭建一個可重用性高、調(diào)試和定位問題方便、仿真真實性高、軟件和硬件能夠很好配合的協(xié)同驗證平臺。
軟硬件協(xié)同仿真架構(gòu)如圖1所示,協(xié)同驗證分軟件驗證環(huán)境和硬件驗證環(huán)境兩部分。軟件代碼通常由C/C++和匯編語言混合編寫而成,然后由軟件編譯器轉(zhuǎn)換成二進制格式,最后將該二進制文件加載到SoC芯片的存儲器中去,芯片boot啟動時由ARM核調(diào)用軟件代碼并執(zhí)行;硬件環(huán)境基于VMM驗證方法學(xué)進行搭建,下文中會有詳細介紹。協(xié)同仿真就是通過事件和命令,使用一些機制,在這兩個環(huán)境間進行控制。
2 DSM模型的使用
SoC芯片的CPU一般選用ARM,協(xié)同驗證平臺中ARM可以用seamless CVE模型替代,或者直接選用ARM網(wǎng)表。采用seamless CVE模型進行仿真,雖然速度比較快,但需要替換設(shè)計中的Memory模型,且必須使用CVE自己的模型,這樣與芯片真實情況有出入;采用ARM網(wǎng)表進行仿真,速度比較慢,調(diào)試也不方便,但是更接近實際情況。相比于這兩者,本文采用的DSM(Design SimulaTIon Model)模型由ARM公司提供,能完全模擬ARM的接口和時序行為,具有更高的真實性,而且DSM無需更換存儲器模型和外掛仿真工具,使驗證DUT與實際芯片完全一致,即不必為了滿足仿真需求修改部分RTL代碼。此外,DSM環(huán)境仿真過程中輸出的LOG文件log.eis真實記錄每個周期執(zhí)行的CPU代碼和操作。根據(jù)該文件能快速定位軟件問題。CVE環(huán)境通過調(diào)用XRAY軟件調(diào)試工具,雖然可以進行單步調(diào)試、沒置斷點等操作,但出現(xiàn)軟件問題時定位沒有DSM環(huán)境那么直觀、方便。
DSM是ARM公司提供的設(shè)計仿真模型,該模型直接從ARM公司的RTL代碼經(jīng)過加密處理轉(zhuǎn)化而來,具有同真實RTL代碼完全一致的功能和特性。在時序仿真過程中,還能直接對該模型反標(biāo)時序。在仿真過程中,將模型WRAPPER——也就是模型的最頂層——例化到RTL代碼中,仿真器在仿真過程中觸發(fā)WRAPPER,請求Model Manager動態(tài)調(diào)用模型庫進行仿真。Model Manager響應(yīng)請求動態(tài)調(diào)用模型庫文件,達到功能仿真的目的。由此可以看出,Model Manager在仿真過程中充當(dāng)中介角色,將模型和仿真器動態(tài)連接在一起。DSM模型的工作原理如圖2所示。
3 軟件仿真疆嵌入式筆試題目, 基于嵌入式qt, 墻體嵌入式收納, 嵌入式系統(tǒng)漢英, arm嵌入式環(huán)境, 嵌入式開發(fā)網(wǎng)上培訓(xùn), 武漢科技大學(xué)嵌入式, 嵌入式馬桶好嘛, 嵌入式芯片檢測, 嵌入式技術(shù)主要應(yīng)用, 成都嵌入式音箱, plc屬于嵌入式嗎, 嵌入式工控機知識, 嵌入式工程師工作日常, 大華嵌入式錄播設(shè)備, 嵌入式開發(fā)板與pc, 狀態(tài)機編程和嵌入式, 嵌入式項目中的難點, 蘇州嵌入式培訓(xùn)中心, 嵌入式應(yīng)用開發(fā)總結(jié),
ARM匯編器工具ARMASM、ARM的C/C++編譯工具ARMCC和ARMCPP,以及ARM的鏈接工具ARMLINK,利用ARM工具對軟件代碼進行編譯鏈接生成的文件格式為ELF格式(Executable Link File),原始代碼在文件中的位置通過SCATTER文件指定,ARM提供了fromelf工具,該工具將ELF格式的文件根據(jù)運行時域轉(zhuǎn)化為二進制文件,以便在仿真起始階段將代碼放到指定的Memory中。在makefile中將ELF格式轉(zhuǎn)化為BIN文件的具體實例如下:
Fromelf-bin output./softWare.elf
上述語句表示將software.elf文件轉(zhuǎn)化為二進制文件放到當(dāng)前目錄。
在軟硬件協(xié)同仿真的初始階段,需要將生成的二進制文件導(dǎo)入相應(yīng)的存儲器中,這通過Verilog提供的系統(tǒng)函數(shù)fread實現(xiàn)。下面是一個將二進制文件導(dǎo)入存儲器的實例,先通過$fopen函數(shù)讀出文件地址,然后通過$fread函數(shù)將指定地址的文件數(shù)據(jù)傳給變量inst_fik_word,最后將變量inst_file_world中的值傳給存儲器中的相應(yīng)地址單元。在DSM仿真中都需要一個這樣的“橋梁”文件,將軟件和邏輯鏈接起來。
軟硬件協(xié)同仿真的軟件結(jié)構(gòu)如圖3所示,系統(tǒng)BOOT起來后直接跳轉(zhuǎn)到main()函數(shù)進行單進程任務(wù),如果出現(xiàn)中斷異常,則boot代碼中根據(jù)中斷向量表地址跳轉(zhuǎn)到中斷處理函數(shù)。中斷處理函數(shù)中包含對各中斷的處理,main()函數(shù)中調(diào)用各個模塊的TC(Test Case)函數(shù),TC調(diào)用底層的驅(qū)動代碼。驅(qū)動代碼的編寫則基于各個模塊的寄存器定義文件和全局變量。該軟件結(jié)構(gòu)清晰可控,便于各測試用例TC的并行提交和管理。
|
|