日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式系統(tǒng)芯片的軟硬件協(xié)同仿真環(huán)境設(shè)計(jì)

摘要:針對(duì)嵌入式系統(tǒng)芯片SoC開(kāi)發(fā)驗(yàn)證階段的需求,介紹了一種通用的SoC軟硬件協(xié)同仿真平臺(tái)。軟件仿真由C/C++和匯編語(yǔ)言編寫(xiě),硬件仿真基于VMM驗(yàn)證方法學(xué)所搭建,SoC設(shè)計(jì)代碼由RTL代碼編寫(xiě)而成。將SoC設(shè)計(jì)代碼中的ARM由DSM模型替代,通過(guò)VCS編譯器將軟硬件協(xié)同起來(lái)進(jìn)行信息交互,實(shí)現(xiàn)一種速度快、真實(shí)性高、調(diào)試方便的通用性仿真平臺(tái)。
關(guān)鍵詞:協(xié)同仿真;DSM模型;驗(yàn)證方法學(xué);片上系統(tǒng)

1 概述
    隨著微電子產(chǎn)業(yè)日新月異的發(fā)展,IC設(shè)計(jì)的規(guī)模越來(lái)越大,集成度越來(lái)越高,已經(jīng)足以將一套完整的系統(tǒng)集成到一塊小小的芯片中。在這種形勢(shì)下,SoC技術(shù)應(yīng)運(yùn)而生。隨著IP核復(fù)用技術(shù)的出現(xiàn),SoC芯片的設(shè)計(jì)已經(jīng)不再是很大的難題,SoC芯片的驗(yàn)證已逐漸取代芯片設(shè)計(jì)成為芯片開(kāi)發(fā)階段的瓶頸?,F(xiàn)階段SoC芯片設(shè)計(jì)的正確性要經(jīng)過(guò)前仿真、后仿真以及FPGA驗(yàn)證來(lái)保證。前仿真包括單元驗(yàn)證、集成驗(yàn)證和系統(tǒng)驗(yàn)證,后仿真包括帶反標(biāo)時(shí)序SDF的網(wǎng)表仿真,其中系統(tǒng)驗(yàn)證和后仿真都需要關(guān)注SoC芯片的全局功能,這就涉及SoC的軟件仿真和硬件仿真的協(xié)同問(wèn)題。本文以DSM模型替代ARM核,以VMM驗(yàn)證方法學(xué)和VCS仿真器為基礎(chǔ),搭建一個(gè)可重用性高、調(diào)試和定位問(wèn)題方便、仿真真實(shí)性高、軟件和硬件能夠很好配合的協(xié)同驗(yàn)證平臺(tái)。


    軟硬件協(xié)同仿真架構(gòu)如圖1所示,協(xié)同驗(yàn)證分軟件驗(yàn)證環(huán)境和硬件驗(yàn)證環(huán)境兩部分。軟件代碼通常由C/C++和匯編語(yǔ)言混合編寫(xiě)而成,然后由軟件編譯器轉(zhuǎn)換成二進(jìn)制格式,最后將該二進(jìn)制文件加載到SoC芯片的存儲(chǔ)器中去,芯片boot啟動(dòng)時(shí)由ARM核調(diào)用軟件代碼并執(zhí)行;硬件環(huán)境基于VMM驗(yàn)證方法學(xué)進(jìn)行搭建,下文中會(huì)有詳細(xì)介紹。協(xié)同仿真就是通過(guò)事件和命令,使用一些機(jī)制,在這兩個(gè)環(huán)境間進(jìn)行控制。

2 DSM模型的使用
    SoC芯片的CPU一般選用ARM,協(xié)同驗(yàn)證平臺(tái)中ARM可以用seamless CVE模型替代,或者直接選用ARM網(wǎng)表。采用seamless CVE模型進(jìn)行仿真,雖然速度比較快,但需要替換設(shè)計(jì)中的Memory模型,且必須使用CVE自己的模型,這樣與芯片真實(shí)情況有出入;采用ARM網(wǎng)表進(jìn)行仿真,速度比較慢,調(diào)試也不方便,但是更接近實(shí)際情況。相比于這兩者,本文采用的DSM(Design Simulation Model)模型由ARM公司提供,能完全模擬ARM的接口和時(shí)序行為,具有更高的真實(shí)性,而且DSM無(wú)需更換存儲(chǔ)器模型和外掛仿真工具,使驗(yàn)證DUT與實(shí)際芯片完全一致,即不必為了滿(mǎn)足仿真需求修改部分RTL代碼。此外,DSM環(huán)境仿真過(guò)程中輸出的LOG文件log.eis真實(shí)記錄每個(gè)周期執(zhí)行的CPU代碼和操作。根據(jù)該文件能快速定位軟件問(wèn)題。CVE環(huán)境通過(guò)調(diào)用XRAY軟件調(diào)試工具,雖然可以進(jìn)行單步調(diào)試、沒(méi)置斷點(diǎn)等操作,但出現(xiàn)軟件問(wèn)題時(shí)定位沒(méi)有DSM環(huán)境那么直觀(guān)、方便。[!--empirenews.page--]
    DSM是ARM公司提供的設(shè)計(jì)仿真模型,該模型直接從ARM公司的RTL代碼經(jīng)過(guò)加密處理轉(zhuǎn)化而來(lái),具有同真實(shí)RTL代碼完全一致的功能和特性。在時(shí)序仿真過(guò)程中,還能直接對(duì)該模型反標(biāo)時(shí)序。在仿真過(guò)程中,將模型WRAPPER——也就是模型的最頂層——例化到RTL代碼中,仿真器在仿真過(guò)程中觸發(fā)WRAPPER,請(qǐng)求Model Manager動(dòng)態(tài)調(diào)用模型庫(kù)進(jìn)行仿真。Model Manager響應(yīng)請(qǐng)求動(dòng)態(tài)調(diào)用模型庫(kù)文件,達(dá)到功能仿真的目的。由此可以看出,Model Manager在仿真過(guò)程中充當(dāng)中介角色,將模型和仿真器動(dòng)態(tài)連接在一起。DSM模型的工作原理如圖2所示。

[!--empirenews.page--]

3 軟件仿真
    ARM匯編器工具ARMASM、ARM的C/C++編譯工具ARMCC和ARMCPP,以及ARM的鏈接工具ARMLINK,利用ARM工具對(duì)軟件代碼進(jìn)行編譯鏈接生成的文件格式為ELF格式(Executable Link File),原始代碼在文件中的位置通過(guò)SCATTER文件指定,ARM提供了fromelf工具,該工具將ELF格式的文件根據(jù)運(yùn)行時(shí)域轉(zhuǎn)化為二進(jìn)制文件,以便在仿真起始階段將代碼放到指定的Memory中。在makefile中將ELF格式轉(zhuǎn)化為BIN文件的具體實(shí)例如下:
    Fromelf-bin output./softWare.elf
    上述語(yǔ)句表示將software.elf文件轉(zhuǎn)化為二進(jìn)制文件放到當(dāng)前目錄。
    在軟硬件協(xié)同仿真的初始階段,需要將生成的二進(jìn)制文件導(dǎo)入相應(yīng)的存儲(chǔ)器中,這通過(guò)Verilog提供的系統(tǒng)函數(shù)fread實(shí)現(xiàn)。下面是一個(gè)將二進(jìn)制文件導(dǎo)入存儲(chǔ)器的實(shí)例,先通過(guò)$fopen函數(shù)讀出文件地址,然后通過(guò)$fread函數(shù)將指定地址的文件數(shù)據(jù)傳給變量inst_fik_word,最后將變量inst_file_world中的值傳給存儲(chǔ)器中的相應(yīng)地址單元。在DSM仿真中都需要一個(gè)這樣的“橋梁”文件,將軟件和邏輯鏈接起來(lái)。
   
    [!--empirenews.page--]
    軟硬件協(xié)同仿真的軟件結(jié)構(gòu)如圖3所示,系統(tǒng)BOOT起來(lái)后直接跳轉(zhuǎn)到main()函數(shù)進(jìn)行單進(jìn)程任務(wù),如果出現(xiàn)中斷異常,則boot代碼中根據(jù)中斷向量表地址跳轉(zhuǎn)到中斷處理函數(shù)。中斷處理函數(shù)中包含對(duì)各中斷的處理,main()函數(shù)中調(diào)用各個(gè)模塊的TC(Test Case)函數(shù),TC調(diào)用底層的驅(qū)動(dòng)代碼。驅(qū)動(dòng)代碼的編寫(xiě)則基于各個(gè)模塊的寄存器定義文件和全局變量。該軟件結(jié)構(gòu)清晰可控,便于各測(cè)試用例TC的并行提交和管理。



4 構(gòu)建基于VMM的軟硬件協(xié)同仿真平臺(tái)
    在軟硬件協(xié)同仿真環(huán)境中,完全可以采用基于VMM的驗(yàn)證架構(gòu),但軟硬件協(xié)同仿真環(huán)境較一般的純邏輯集成驗(yàn)證環(huán)境難度大,主要體現(xiàn)在軟硬件協(xié)同仿真環(huán)境岡為仿真過(guò)程中有軟件代碼在執(zhí)行,同時(shí)驗(yàn)證環(huán)境也在執(zhí)行,因此如何將軟件代碼和硬件環(huán)境協(xié)調(diào)起來(lái)是關(guān)鍵。在仿真過(guò)程中,軟件和驗(yàn)證環(huán)境之間需要建立一種通信機(jī)制,如可以通過(guò)中斷通信,也可以通過(guò)某一特殊信號(hào)線(xiàn)通信。軟硬件協(xié)同仿真環(huán)境中,某一項(xiàng)功能點(diǎn)的測(cè)試常常需要軟硬件兩條測(cè)試用例TC,軟件TC需要驅(qū)動(dòng)代碼,而一般的集成測(cè)試用例不需要軟件TC和驅(qū)動(dòng)。典型的VMM的驗(yàn)證架構(gòu)如圖4所示。

[!--empirenews.page--]
    驗(yàn)證的總體架構(gòu)是分層次的,層次化的驗(yàn)證環(huán)境具有很好的擴(kuò)展性和重用性,各個(gè)層次完成自己特定的功能。Test層又叫TC層,主要完成數(shù)據(jù)激勵(lì)的定義、環(huán)境的控制工作。Generator層定義的數(shù)據(jù)“模板”,產(chǎn)生各種數(shù)據(jù)激勵(lì)。Function Layer層完成輸入和輸出數(shù)據(jù)激勵(lì)的收集,進(jìn)行自動(dòng)比對(duì)。Command Layer層主要按接口時(shí)序收發(fā)數(shù)據(jù),同時(shí)將一些底層方法(如數(shù)據(jù)讀寫(xiě)等)進(jìn)行封裝。Signal Layer層主要是完成接口信號(hào)連接工作。不同的人關(guān)注不同層次,一般的驗(yàn)證人員只需要在Test層工作,編寫(xiě)測(cè)試向量。只有搭建環(huán)境的驗(yàn)證人員才需了解各個(gè)層次。驗(yàn)證架構(gòu)的層次化降低了驗(yàn)證環(huán)境復(fù)雜度和環(huán)境維護(hù)成本,提升了驗(yàn)證效率。


    本文基本采用圖4的驗(yàn)證環(huán)境架構(gòu)的思路,并在其基礎(chǔ)上進(jìn)行修改,添加相應(yīng)組件。VMM驗(yàn)證環(huán)境架構(gòu)如圖5所示,環(huán)境數(shù)據(jù)流從測(cè)試用例Test Case開(kāi)始,經(jīng)過(guò)數(shù)據(jù)包產(chǎn)生器Generator和數(shù)據(jù)處理器Transactor送給BFM處理,BFM把驗(yàn)證環(huán)境的抽象層次從信號(hào)級(jí)抽象到Transaction級(jí),在實(shí)現(xiàn)上只做時(shí)序轉(zhuǎn)換功能,利于重用。從發(fā)送方向看,BFM只負(fù)責(zé)將接收到的數(shù)據(jù)發(fā)送給DUT;從接收方向看,BFM只負(fù)責(zé)將接收到的數(shù)據(jù)發(fā)給Transactor,實(shí)現(xiàn)任何數(shù)據(jù)的解析。Monitor抓取接口上的信號(hào),并分析各組控制信號(hào)之間的邏輯時(shí)序關(guān)系,檢查其是否滿(mǎn)足協(xié)議所規(guī)定的邏輯時(shí)序關(guān)系,同時(shí)把監(jiān)測(cè)到的數(shù)據(jù)信號(hào)轉(zhuǎn)化為數(shù)組送到RM解析。與BFM一樣,Monitor只實(shí)現(xiàn)時(shí)序轉(zhuǎn)換功能,不做數(shù)據(jù)解析。從Monitor上采樣數(shù)據(jù)再送入RM,是基于重用的角度考慮。參考模型(RM)用于預(yù)測(cè)數(shù)據(jù)響應(yīng),Check組件將RM的輸出數(shù)據(jù)與被觀(guān)測(cè)響應(yīng)進(jìn)行比較。
    該驗(yàn)證環(huán)境架構(gòu)還添加斷言(Assertion)來(lái)提高觀(guān)察和定位設(shè)計(jì)問(wèn)題的能力。斷言是檢查DUT中信號(hào)行為是否正確的觀(guān)察器,用來(lái)描述被預(yù)期的特定性質(zhì)。本文采用的斷言為SVA斷言語(yǔ)言,可以應(yīng)用到設(shè)計(jì)過(guò)程的各個(gè)階段,還可以統(tǒng)計(jì)功能覆蓋率。

5 基于DSM的軟硬件協(xié)同仿真調(diào)試
    由于DSM模型在仿真過(guò)程中,會(huì)將ARM執(zhí)行的每一步動(dòng)作打印出來(lái),生成一個(gè)log.eis文件,由該文件給出的信息定位問(wèn)題非常方便,如圖6所示。


    圖中第1列表示程序執(zhí)行到ARM的第幾個(gè)時(shí)鐘周期。第2列是ARM執(zhí)行的指令類(lèi)型。第3列的CCFAIL表示條件執(zhí)行時(shí)是否執(zhí)行,如果條件執(zhí)行了,則不打印CCFAIL,反之則打印出CCFAIL。第4列是ARM執(zhí)行的機(jī)器碼。最后幾列是詳細(xì)的ARM執(zhí)行的動(dòng)作,從圖中可以看出ARM執(zhí)行哪一步指令,將哪些數(shù)據(jù)讀寫(xiě)到哪些地址。對(duì)應(yīng)的仿真波形圖如圖7所示。可以看出,log.eis完整無(wú)誤地將ARM執(zhí)行的動(dòng)作打印了出來(lái)。

結(jié)語(yǔ)
    設(shè)計(jì)驗(yàn)證是SoC設(shè)計(jì)的關(guān)鍵技術(shù)之一,貫穿整個(gè)SoC設(shè)計(jì)過(guò)程。隨著SoC技術(shù)的發(fā)展,軟硬件協(xié)同驗(yàn)證的效率和正確性對(duì)整個(gè)SoC設(shè)計(jì)的影響也越來(lái)越大。相比傳統(tǒng)的軟硬件協(xié)同環(huán)境,本文介紹的環(huán)境速度快,更真實(shí),調(diào)試也更加容易。該環(huán)境可繼承性好,能夠?yàn)楦鞣NSOC項(xiàng)目開(kāi)發(fā)驗(yàn)證所用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在工業(yè)物聯(lián)網(wǎng)設(shè)備部署中,Modbus通信故障是導(dǎo)致系統(tǒng)停機(jī)的首要原因之一。據(jù)統(tǒng)計(jì),超過(guò)60%的現(xiàn)場(chǎng)問(wèn)題源于通信配置錯(cuò)誤或數(shù)據(jù)解析異常。本文從嵌入式系統(tǒng)開(kāi)發(fā)視角,系統(tǒng)闡述Modbus通信調(diào)試的方法論,結(jié)合實(shí)際案例解析如何高...

關(guān)鍵字: 嵌入式系統(tǒng) Modbus通信

在嵌入式系統(tǒng)開(kāi)發(fā)中,看門(mén)狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時(shí)機(jī)的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構(gòu)、軟件流程、安全規(guī)范三個(gè)維度,系統(tǒng)分析看門(mén)狗初始化的最佳實(shí)踐...

關(guān)鍵字: 單片機(jī) 看門(mén)狗 嵌入式系統(tǒng)

北京亦莊啟動(dòng)具身智能社會(huì)實(shí)驗(yàn)計(jì)劃 北京2025年8月9日 /美通社/ -- 2025世界機(jī)器人大會(huì)正在北京經(jīng)濟(jì)技術(shù)開(kāi)發(fā)區(qū)(簡(jiǎn)稱(chēng)北京經(jīng)開(kāi)區(qū),也稱(chēng)北京亦莊)舉行。在8月9日的2025世界機(jī)器人大會(huì)"產(chǎn)業(yè)發(fā)展&qu...

關(guān)鍵字: 智能機(jī)器人 數(shù)據(jù)采集 軟硬件 零部件

人工智能(AI)和機(jī)器學(xué)習(xí)(ML)是使系統(tǒng)能夠從數(shù)據(jù)中學(xué)習(xí)、進(jìn)行推理并隨著時(shí)間的推移提高性能的關(guān)鍵技術(shù)。這些技術(shù)通常用于大型數(shù)據(jù)中心和功能強(qiáng)大的GPU,但在微控制器(MCU)等資源受限的器件上部署這些技術(shù)的需求也在不斷增...

關(guān)鍵字: 嵌入式系統(tǒng) 人工智能 機(jī)器學(xué)習(xí)

Zephyr開(kāi)源項(xiàng)目由Linux基金會(huì)維護(hù),是一個(gè)針對(duì)資源受限的嵌入式設(shè)備優(yōu)化的小型、可縮放、多體系結(jié)構(gòu)實(shí)時(shí)操作系統(tǒng)(RTOS)。近年來(lái),Zephyr RTOS在嵌入式開(kāi)發(fā)中的采用度逐步增加,支持的開(kāi)發(fā)板和傳感器不斷增加...

關(guān)鍵字: 嵌入式系統(tǒng) 軟件開(kāi)發(fā) 實(shí)時(shí)操作系統(tǒng) Zephyr項(xiàng)目

在資源受限的嵌入式系統(tǒng)中,代碼執(zhí)行效率和內(nèi)存占用始終是開(kāi)發(fā)者需要權(quán)衡的核心問(wèn)題。內(nèi)聯(lián)函數(shù)(inline functions)和宏(macros)作為兩種常見(jiàn)的代碼展開(kāi)技術(shù),在性能、可維護(hù)性和安全性方面表現(xiàn)出顯著差異。本文...

關(guān)鍵字: 內(nèi)聯(lián)函數(shù) 嵌入式系統(tǒng)

在嵌入式系統(tǒng)和服務(wù)器開(kāi)發(fā)中,日志系統(tǒng)是故障排查和運(yùn)行監(jiān)控的核心組件。本文基于Linux環(huán)境實(shí)現(xiàn)一個(gè)輕量級(jí)C語(yǔ)言日志庫(kù),支持DEBUG/INFO/WARN/ERROR四級(jí)日志分級(jí),并實(shí)現(xiàn)按大小滾動(dòng)的文件輪轉(zhuǎn)機(jī)制。該設(shè)計(jì)在某...

關(guān)鍵字: C語(yǔ)言 嵌入式系統(tǒng)

在嵌入式系統(tǒng)和底層驅(qū)動(dòng)開(kāi)發(fā)中,C語(yǔ)言因其高效性和可控性成為主流選擇,但缺乏原生單元測(cè)試支持成為開(kāi)發(fā)痛點(diǎn)。本文提出一種基于宏定義和測(cè)試用例管理的輕量級(jí)單元測(cè)試框架方案,通過(guò)自定義斷言宏和測(cè)試注冊(cè)機(jī)制,實(shí)現(xiàn)無(wú)需外部依賴(lài)的嵌入...

關(guān)鍵字: C語(yǔ)言 嵌入式系統(tǒng) 驅(qū)動(dòng)開(kāi)發(fā)

在嵌入式系統(tǒng)與驅(qū)動(dòng)開(kāi)發(fā)中,內(nèi)存映射I/O(Memory-Mapped I/O, MMIO)是一種將硬件寄存器映射到處理器地址空間的技術(shù),允許開(kāi)發(fā)者通過(guò)指針直接讀寫(xiě)寄存器,實(shí)現(xiàn)高效、低延遲的硬件控制。本文通過(guò)C語(yǔ)言實(shí)戰(zhàn)案例...

關(guān)鍵字: 內(nèi)存映射 I/O操作 嵌入式系統(tǒng)
關(guān)閉