USB 2.0主控器軟硬件協(xié)同仿真系統(tǒng)設(shè)計(jì)
摘要:為了能夠充分、快速驗(yàn)證USB 2.0主控器的功能,設(shè)計(jì)了一個(gè)軟硬件協(xié)同仿真平臺。其中,CPU模型部分采用一種高效的SystemC模型,而不使用基于指令集的復(fù)雜CPU模型。測試用例采用抽象層次更高的C語言編寫,通過調(diào)用仿真平臺對外提供的API完成激勵(lì)生成與響應(yīng)檢查。結(jié)果表明,該方式能夠有效降低對仿真資源的占用,減少仿真時(shí)間;同時(shí)使軟件人員能在IP的硬件驗(yàn)證階段就能完成軟件的設(shè)計(jì)測試工作,縮短軟硬件接口整合時(shí)間,加快開發(fā)進(jìn)度。
關(guān)鍵詞:軟硬協(xié)同;聯(lián)合仿真引擎;CPU模型;通用串行總線;主控器;片上系統(tǒng)
USB由于具有傳輸速度快、支持即插即用和熱插拔、供電方式靈活、總線結(jié)構(gòu)簡單、使用和擴(kuò)展靈活等優(yōu)點(diǎn),已經(jīng)成為業(yè)界主流的工業(yè)接口標(biāo)準(zhǔn),并在SoC設(shè)計(jì)中得到了廣泛的應(yīng)用。在典型的應(yīng)用案例中,USB主控器作為SoC中的一個(gè)子模塊,和其他子模塊有復(fù)雜的互聯(lián)、通信關(guān)系,同時(shí)也受系統(tǒng)主CPU的控制。在這樣一個(gè)復(fù)雜的系統(tǒng)中,如何驗(yàn)證USB主控器設(shè)計(jì)的正確性以及其和SoC系統(tǒng)其他模塊協(xié)同工作的完整性對項(xiàng)目成功與否是非常關(guān)鍵的。本文設(shè)計(jì)了一種軟硬件協(xié)同仿真平臺來驗(yàn)證應(yīng)用在數(shù)字電視SoC中的USB2.0主控器,本平臺為SoC的驗(yàn)證提供了一個(gè)高效、系統(tǒng)的解決方案。結(jié)果表明效果良好。
1 待驗(yàn)證USB 2.0主控器系統(tǒng)結(jié)構(gòu)
本文驗(yàn)證的USB 2.0主控器完全兼容USB 1.1規(guī)范,EHCI主機(jī)控制器接口規(guī)范和OCHI主機(jī)控制器接口規(guī)范。該USB 2.0主控制器包含一個(gè)高速主控器和一個(gè)全速主控制器,其中高速主控器基于EHCI接口規(guī)范實(shí)現(xiàn),用來和連接到根端口的高速(傳輸速率為480 Mb/s)模式外設(shè)進(jìn)行通信。全速模式主控制器基于OHCI接口規(guī)范實(shí)現(xiàn),使USB 2.0主控器可以與全速和低速(傳輸速率為12 Mb/s和1.5Mb/s)外設(shè)進(jìn)行通信。系統(tǒng)CPU可以通過該主控器的AHB Slave接口對其進(jìn)行控制。該主控器中還包含AHB Master接口單元,能夠扮演AHB Master的角色直接控制主控器與系統(tǒng)存儲器之間的數(shù)據(jù)交換,不需要通過外部DMA控制器的控制,方便系統(tǒng)集成,加快該主控器與系統(tǒng)內(nèi)存之間的數(shù)據(jù)交換。該主控器的物理接口端提供滿足UTMI+接口規(guī)范的接口,通過與PHY相連,可以直接與外設(shè)進(jìn)行通信。圖1為該主控器的系統(tǒng)結(jié)構(gòu)框圖,圖中主控器的列表處理器模塊是系統(tǒng)中主要的控制器,其包含多個(gè)狀態(tài)機(jī)用來處理規(guī)范中描述符定義的內(nèi)容。
2 驗(yàn)證仿真系統(tǒng)介紹
2.1 使用傳統(tǒng)平臺驗(yàn)證USB主控器的不足
USB主控器真實(shí)的工作環(huán)境需要有硬件和軟件協(xié)同配合,在傳統(tǒng)驗(yàn)證平臺下,從整個(gè)驗(yàn)證過程來看,硬件人員需要描述一套基于Verilog HDL的測試激勵(lì)模擬軟件環(huán)境驗(yàn)證其功能,之后軟件人員還要再寫一遍基于C程序的軟件環(huán)境驗(yàn)證其功能,這樣造成工作的重疊。同時(shí)傳統(tǒng)驗(yàn)證平臺使用Verilog HDL編寫,抽象層次較低,在描述高抽象結(jié)構(gòu)(如USB的描述符的數(shù)據(jù)結(jié)構(gòu))時(shí)比較復(fù)雜,而使用抽象層次更高的C語言會相對簡單。
2.2 本文設(shè)計(jì)的軟硬協(xié)同仿真系統(tǒng)介紹
相對使用傳統(tǒng)驗(yàn)證方法,本文設(shè)計(jì)的軟硬件協(xié)同仿真系統(tǒng)使用抽象度較高的C語言編寫測試激勵(lì),通過調(diào)用系統(tǒng)中CPU模型對外提供的API完成激勵(lì)生成與響應(yīng)檢查?;诒疽婢帉懙臏y試激勵(lì)可以方便的移植,所以在硬件仿真階段就能調(diào)試SoC系統(tǒng)軟件,不必等到FPGA平臺設(shè)計(jì)完成或芯片設(shè)計(jì)完成后,從而大大節(jié)省了項(xiàng)目開發(fā)時(shí)間。圖2是本文驗(yàn)證USB主控器功能的軟硬件協(xié)同仿真的系統(tǒng)架構(gòu)圖。本驗(yàn)證環(huán)境由3大部分組成:聯(lián)合仿真引擎,即CPU模型;總線架構(gòu)及系統(tǒng)內(nèi)存模塊,包括一個(gè)DDR模型和DDR控制器;USB協(xié)議實(shí)現(xiàn)、檢查模塊,包括待驗(yàn)證的USB主控器、支持UTMI+接口的PHY、外設(shè)模型。在該平臺下,聯(lián)合仿真引擎(CPU模型)替換掉SoC中原有的CPU,是整個(gè)驗(yàn)證系統(tǒng)的核心也是整個(gè)系統(tǒng)設(shè)計(jì)的核心。通過使能信號觸發(fā)聯(lián)合仿真引擎工作來執(zhí)行C程序,將軟件對USB主控器的控制轉(zhuǎn)化成總線時(shí)序,將軟件和硬件交互的行為模擬到RTL側(cè)。下文將對仿真平臺中各個(gè)模塊,重點(diǎn)對聯(lián)合仿真引擎進(jìn)行詳細(xì)介紹。
2.2.1 基于TLM建模的聯(lián)合仿真引擎及設(shè)計(jì)
使用軟硬件協(xié)同仿真的方法驗(yàn)證USB主控器,只需要用C語言編寫USB主控器驅(qū)動(dòng)并將其集到成系統(tǒng)中進(jìn)行仿真測試,因此要求CPU模型能夠簡單、高效地執(zhí)行驅(qū)動(dòng)程序,CPU在SoC中都是直接通過AHBMaster接口連接到總線(BUS)上,對SoC中要驗(yàn)證的IP來講,CPU就是一個(gè)總線Mas ter,IP并不關(guān)心CPU是什么指令集,采用何種方式實(shí)現(xiàn)?;诖?,本聯(lián)合仿真引擎設(shè)計(jì)的CPU模型并沒有采用基于特定指令集設(shè)計(jì)的復(fù)雜方法,而是采用基于SystemC事物級建模(TLM)技術(shù)構(gòu)造了一個(gè)基于AHB協(xié)議的總線功能模型(BFM),實(shí)現(xiàn)了對CPU對SoC中其他模塊所呈現(xiàn)的AHB Master接口的時(shí)序封裝。這個(gè)BFM能和要驗(yàn)證的RTL模塊進(jìn)行連接和通信,它能夠編譯并解釋基于C語言編寫的驅(qū)動(dòng)程序,并把這個(gè)驅(qū)動(dòng)程序要執(zhí)行的操作翻譯成對應(yīng)的AHB總線信號。通過層次化的封裝,本聯(lián)合仿真引擎把基于時(shí)鐘時(shí)序精度的RTL的抽象層提升到?jīng)]有任何時(shí)鐘和時(shí)間概念的軟件抽象層。同時(shí),本引擎能取代任何CPU。不管SoC中真正使用的CPU是MIPS指令集、ARM指令集還是其他CPU,都能被本聯(lián)合仿真引擎替代。
本引擎的CPU模型使用系統(tǒng)仿真用的工作站或者服務(wù)器的宿主CPU來運(yùn)行驗(yàn)證工程師編寫的基于C語言的測試激勵(lì)程序,將需要的具體硬件行為通過Channel向下傳送到RTL端。相對于直接使用SoC中CPU IP核的RTL的仿真,該引擎省去了CPU IP核取指令和運(yùn)行指令的復(fù)雜的仿真、運(yùn)算過程,大大節(jié)省了仿真運(yùn)行的時(shí)間。本聯(lián)合仿真引擎為軟件人員和硬件驗(yàn)證人員分別提供了一些總線訪問和中斷處理的API,為了滿足硬件驗(yàn)證的需要,另外設(shè)計(jì)了一些API可以實(shí)現(xiàn)讓系統(tǒng)等待一定時(shí)鐘周期或者時(shí)間、停止或重新開始仿真、不通過總線而可以快速訪問系統(tǒng)存儲器等功能。在系統(tǒng)中CPU模型對USB主控器和DDR控制器的配置均通過這2個(gè)模塊對外提供的AHB Slave接口。
2.2.2 仿真系統(tǒng)的其他模塊介紹
DDR2/3為系統(tǒng)內(nèi)存,存儲USB主控器正常工作需要的描述符和收發(fā)的數(shù)據(jù)。由于本系統(tǒng)中DDR2/3控制器只提供AXI Slave的數(shù)據(jù)接口,系統(tǒng)中CPU和USB主控器需要通過AHB橋?qū)HB從機(jī)的接口時(shí)序轉(zhuǎn)換成AXI Master的接口時(shí)序,保證2個(gè)模塊之間正常的數(shù)據(jù)通信。系統(tǒng)工作過程中AxI,AHB總線監(jiān)控器監(jiān)控2個(gè)總線活動(dòng),打印出報(bào)告信息,方便仿真結(jié)果檢查。
USB主控器是待驗(yàn)證的主控器(DUT)。PHY模型提供UTMI+接口,有USB 2.0和USB 1.1兩種接口分別支持EHCI接口和OHCI接口實(shí)現(xiàn)。外設(shè)模型包括一個(gè)PHY驗(yàn)證IP(VIP)和一個(gè)USB外設(shè)驗(yàn)證IP,模擬USB外設(shè)的行為。USB外設(shè)VIP中包含一個(gè)USB監(jiān)控器模型,負(fù)責(zé)協(xié)議檢查,記錄事物傳輸進(jìn)程,監(jiān)控高速、全速和低速的USB傳輸,提供數(shù)據(jù)包級和事物級傳輸?shù)谋O(jiān)控,同時(shí)可以監(jiān)控掛起、恢復(fù)和復(fù)位信號。
3 基于本驗(yàn)證系統(tǒng)的USB主控器驗(yàn)證過程
由于使用了聯(lián)合仿真引擎,測試激勵(lì)既可以使用Verilog HDL編寫也可以使用C語言編寫。運(yùn)行C語言編寫的測試激勵(lì)時(shí),需要在測試平臺中預(yù)先置位使能信號打開聯(lián)合仿真引擎,觸發(fā)仿真工具(如NCVerilog)調(diào)用C測試激勵(lì)程序的主函數(shù)。在C測試激勵(lì)順序執(zhí)行時(shí),整個(gè)RTL的仿真時(shí)間會停在當(dāng)前時(shí)刻。只有當(dāng)C測試激勵(lì)調(diào)用了基本的讀/寫函數(shù)、中斷響應(yīng)之類的底層函數(shù),硬件仿真時(shí)間才會向前推進(jìn),RTL仿真器繼續(xù)往前運(yùn)行。直到RTL反饋后,C測試激勵(lì)程序才會繼續(xù)往下一行執(zhí)行。USB主控器驗(yàn)證系統(tǒng)仿真引擎交互過程如圖3所示。
具體過程包括:HDL仿真工具執(zhí)行Verilog HDL描述的USB的外設(shè)模型初始化過程;HDL仿真工具使能聯(lián)合仿真引擎,測試用例進(jìn)入聯(lián)合仿真引擎繼續(xù)執(zhí)行;聯(lián)合仿真引擎初始化待驗(yàn)證USB主控器;聯(lián)合仿真引擎執(zhí)行特定API函數(shù).測試用例進(jìn)入HDL仿真過程;通過調(diào)用外設(shè)的atta tch命令,使外設(shè)模型連接到待驗(yàn)證的USB主控器;聯(lián)合仿真引擎等待外設(shè)模型連接中斷,停止在當(dāng)前時(shí)刻,直到中斷有效;聯(lián)合仿真引擎執(zhí)行外設(shè)模型連接中斷處理;測試用例繼續(xù)執(zhí)行HDL仿真過程。主控器與外設(shè)模型按照配置速度,傳輸類型,傳輸方向,傳送的數(shù)據(jù)包的工作速度;C驅(qū)動(dòng)循環(huán)等待中斷信號有效,進(jìn)行中斷處理。AHB監(jiān)控器、AXI監(jiān)控器和USB監(jiān)控器監(jiān)測主控器AHB端和USB端的工作,進(jìn)行協(xié)議檢查,給出報(bào)告信息,仿真過程可以通過日志文件方便監(jiān)測?;谏鲜鏊悸肪帉懙尿?yàn)證USB主控器各個(gè)不同功能的測試用例,在不需要使用任何PLI(編程語言接口)函數(shù)的情況下,能夠快速、方便地實(shí)現(xiàn)USB 2.0主控器各個(gè)不同層級的Driver的功能,從而保證能夠全面的驗(yàn)證此主控器的特性。表1是在不同的仿真環(huán)境下,測試USB主控器與外設(shè)進(jìn)行進(jìn)行高速傳輸2 Mb數(shù)據(jù)所需要的時(shí)間。從表中可以看出,系統(tǒng)中使用RTL級CPU IP核的系統(tǒng),仿真速度最慢;基于ISS指令集模擬器的仿真系統(tǒng),速度次之;本環(huán)境的仿真速度最快。
4 結(jié)語
本文設(shè)計(jì)的用于USB主控器IP驗(yàn)證的軟硬件協(xié)同仿真系統(tǒng)具有仿真速度快、仿真系統(tǒng)資源占用小、減少軟硬件集成驗(yàn)證測試的時(shí)間的特點(diǎn),經(jīng)實(shí)踐證明,效果良好。通過使用本系統(tǒng),軟件人員能在硬件設(shè)計(jì)驗(yàn)證的早期就能進(jìn)入IP的軟件硬件聯(lián)調(diào),縮短了研發(fā)時(shí)間。同時(shí),本系統(tǒng)具有良好的可重用性,對其他IP的驗(yàn)證同樣有效,可為其他IP的驗(yàn)證提供參考。