專利名稱:多核系統(tǒng)級(jí)芯片的驗(yàn)證方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及芯片驗(yàn)證領(lǐng)域,特別是指一種多核系統(tǒng)級(jí)芯片的驗(yàn)證方法和裝置。
背景技術(shù):
常見的應(yīng)用處理器芯片的流程包括芯片設(shè)計(jì)、芯片仿真驗(yàn)證、芯片生產(chǎn)和產(chǎn)品開發(fā)四個(gè)階段。其中,芯片仿真驗(yàn)證階段主要是發(fā)現(xiàn)芯片的問題,并修改。產(chǎn)品開發(fā)階段為將操作系統(tǒng)(例如android)移植到芯片平臺(tái)上,開發(fā)應(yīng)用軟件,最終生產(chǎn)平板或者智能手機(jī)等
女口
廣叩ο現(xiàn)在的應(yīng)用處理器越來越多地采用多核處理器,例如采用ARM CortexA94核。多核處理器的使用給仿真階段帶來了很大影響,需要充分發(fā)揮多核的作用,提前發(fā)現(xiàn)多核處理器與芯片各個(gè)模塊間的交互的問題。假設(shè)最終產(chǎn)品的操作系統(tǒng)為android,如果在仿真階段實(shí)現(xiàn)android,會(huì)使得仿真速度變得很慢,android的啟動(dòng)boot就需要周量級(jí)的仿真時(shí)間,這樣在時(shí)間上是不可接受的。
如果采用硬件加速器,可以把仿真時(shí)間控制在小時(shí)量級(jí),但是硬件加速器成本高,而且通常只有少數(shù)幾套,不適合大規(guī)模的團(tuán)隊(duì)驗(yàn)證。如果簡單的將原來的單核啟動(dòng)軟件移植到多核仿真平臺(tái),雖然多核能夠運(yùn)行,但是運(yùn)行方式與最終的產(chǎn)品相比有較大差異,不能真實(shí)反映多核與芯片其他模塊的交互問題。并且,這種仿真方式靈活性差,不易制造復(fù)雜的仿真場景。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種多核系統(tǒng)級(jí)芯片的驗(yàn)證方法和裝置,能夠?qū)Χ嗪讼到y(tǒng)級(jí)芯片進(jìn)行靈活的仿真。為解決上述技術(shù)問題,本發(fā)明的實(shí)施例提供技術(shù)方案如下一方面,提供一種多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,包括在多核系統(tǒng)級(jí)芯片的平臺(tái)的輕量級(jí)操作系統(tǒng)中,為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程,形成多線程;運(yùn)行所述多線程,對(duì)所述多核系統(tǒng)級(jí)芯片進(jìn)行仿真驗(yàn)證。所述輕量級(jí)操作系統(tǒng)為US/0S-II操作系統(tǒng)。所述為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程的步驟之前,還包括將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步。所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟包括在所述輕量級(jí)操作系統(tǒng)的臨界區(qū)代碼入口處,關(guān)掉中斷;獲取所述輕量級(jí)操作系統(tǒng)的原子鎖的狀態(tài);如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖;
否則,等待一預(yù)定時(shí)長后,判斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑;在退出所述臨界區(qū)代碼時(shí),釋放所述原子鎖,并打開所述中斷。所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括在所述輕量級(jí)操作系統(tǒng)的OSCtxSw函數(shù)的入口處占用原子鎖;在所述輕量級(jí)操作系統(tǒng)的OSCtxSw函數(shù)的出口釋放所述原子鎖;所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括在所述輕量級(jí)操作系統(tǒng)的中斷入口處,讀取原子鎖的狀態(tài);如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖;否則,等待一預(yù)定時(shí)長后,判斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑;在退出所述中斷時(shí),釋放所述原子鎖。所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括在所述輕量級(jí)操作系統(tǒng)的每個(gè)內(nèi)存管理函數(shù)入口處,讀取原子鎖的狀態(tài);如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖;否則,等待一預(yù)定時(shí)長后,判`斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑;在所述內(nèi)存管理函數(shù)出口,釋放所述原子鎖。所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括將所述操作系統(tǒng)的0s_sys. c timer中斷由所述多核系統(tǒng)級(jí)芯片的其中一個(gè)核執(zhí)行;或者修改所述操作系統(tǒng)的相應(yīng)字段以支持NEON處理器。另一方面,提供一種多核系統(tǒng)級(jí)芯片的驗(yàn)證裝置,包括建立模塊,在多核系統(tǒng)級(jí)芯片的平臺(tái)的輕量級(jí)操作系統(tǒng)中,為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程,形成多線程;運(yùn)行模塊,運(yùn)行所述多線程,對(duì)所述多核系統(tǒng)級(jí)芯片進(jìn)行仿真驗(yàn)證。所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證裝置,其特征在于,還包括同步模塊,將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步。本發(fā)明的實(shí)施例具有以下有益效果上述方案中,將輕量級(jí)操作系統(tǒng)應(yīng)用于多核平臺(tái)仿真,由于輕量級(jí)操作系統(tǒng)具備線程調(diào)度、中斷管理等功能,在調(diào)度和中斷管理上接近復(fù)雜操作系統(tǒng),能夠?qū)Χ嗪薙OC進(jìn)行靈活的仿真。
圖I為本發(fā)明的多核系統(tǒng)級(jí)芯片的驗(yàn)證方法的流程示意圖;圖2為本發(fā)明的多核系統(tǒng)級(jí)芯片的驗(yàn)證裝置的流程示意圖。
具體實(shí)施例方式為使本發(fā)明的實(shí)施例要解決的技術(shù)問題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。如圖I所示,為本發(fā)明所述的一種多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,包括步驟11,在多核系統(tǒng)級(jí)芯片的平臺(tái)的輕量級(jí)操作系統(tǒng)中,為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程,形成多線程;該步驟具體為將輕量級(jí)操作系統(tǒng)移植到多核處理器平臺(tái)上,以采用改進(jìn)的支持多核的輕量級(jí)操作系統(tǒng)進(jìn)行仿真。由于采用了輕量級(jí)操作系統(tǒng),那么每個(gè)功能都可以按照類似真實(shí)產(chǎn)品的軟件操作去使用,來建立多線程的復(fù)雜場景。并且,由于將操作系統(tǒng)移植到了多核處理器(例如dualcore處理器),那么這些線程能夠在2個(gè)核同時(shí)運(yùn)行,操作系統(tǒng)根據(jù)負(fù)載自動(dòng)去處理各個(gè)線程。傳統(tǒng)的仿真方式是每個(gè)模塊有自己的仿真case測試?yán)?,由?duì)應(yīng)的軟件代碼控制。在操作系統(tǒng)里,每一個(gè)case為一個(gè)線程。例如針對(duì)一個(gè)視頻播放場景,可以在操作系統(tǒng)里創(chuàng)建多個(gè)線程。具體線程如下0x10 :解碼線程,負(fù)責(zé)管理芯片上的硬件解碼器;Oxll SD卡讀數(shù)據(jù)線程,負(fù)責(zé)從SD卡讀取視頻原始碼流;0x12 :顯示器顯示線程,負(fù)責(zé)在IXD上顯示圖像;0x13 :圖像后處理線程0x14 GPU操作線程等線程
`
系統(tǒng)本身還包含若干操作系統(tǒng)的默認(rèn)線程。有了接近真實(shí)的視頻播放場景,可以在復(fù)雜環(huán)境下,檢查多個(gè)硬件模塊同時(shí)工作,如上面例子中,硬件解碼器、SD讀卡器、顯示模組同時(shí)工作,數(shù)據(jù)訪問操作多,處理器調(diào)度多個(gè)中斷,每個(gè)線程可能在corel執(zhí)行也可能在coreO執(zhí)行。在上述場景中驗(yàn)證,來發(fā)現(xiàn)模塊配合時(shí)是否存在問題、以及硬件、軟件之間配合是否存在問題。步驟12,運(yùn)行所述多線程,對(duì)所述多核系統(tǒng)級(jí)芯片進(jìn)行仿真驗(yàn)證。所述輕量級(jí)操作系統(tǒng)可以為US/0S-II操作系統(tǒng)。US/0S-II的操作系統(tǒng)簡單,代碼量小,具有多線程調(diào)度能力,運(yùn)行時(shí)占用的仿真時(shí)間很少,適合于在仿真平臺(tái)使用。US/0S-II本身不支持多核平臺(tái),例如ARM Cortex_A9多核,因此,所述為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程的步驟之前,多核系統(tǒng)級(jí)芯片的驗(yàn)證方法還包括步驟10,在多核系統(tǒng)級(jí)芯片的平臺(tái)的輕量級(jí)操作系統(tǒng)中,將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步。所述步驟10包括在所述輕量級(jí)操作系統(tǒng)的臨界區(qū)代碼入口處,關(guān)掉中斷;獲取所述輕量級(jí)操作系統(tǒng)的原子鎖的狀態(tài);如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖;否則,等待一預(yù)定時(shí)長后,判斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑;在退出所述臨界區(qū)代碼時(shí),釋放所述原子鎖,并打開所述中斷。也就是說,US/0S-II中有一類代碼叫做critical section臨界區(qū)代碼,即執(zhí)行過程中不能被中斷的代碼。多核移植時(shí),需要修改這部分代碼,增加額外的核間同步。即在critical section代碼入口,關(guān)中斷,然后獲取原子鎖,如果成功獲取,則繼續(xù)后繼操作,如果沒有成功獲取,則等待,然后繼續(xù)嘗試獲取,直到成功。在退出critical section代碼時(shí),釋放原子鎖,開中斷。#define OS_ENTER_CRITICALO {cpu_sr=OS_CPU_SR_SaveO ;\Get_semaphore(&irq_mutex);}#define OS_EXIT_CRITICAL (){release_semaphore(&irq_mutex);OS_CPU_SR_Restore(cpu_sr);}可選的,所述步驟10還包括在所述輕量級(jí)操作系統(tǒng)的OSCtxSw (線程內(nèi)容交換)函數(shù)的入口處占用原子鎖;在所述輕量級(jí)操作系統(tǒng)的OSCtxSw函數(shù)的出口釋放所述原子鎖。也就是說,在操作系統(tǒng)OSCtxSw函數(shù)的出口也要增加釋放原子鎖的操作,防止操作系統(tǒng)在多核移植后死鎖。例如,release_semaphore (&irq_mutex)。
中斷處理也要增加原子鎖操作,來進(jìn)行核間同步。因此,所述步驟10還包括在所述輕量級(jí)操作系統(tǒng)的中斷入口處,讀取原子鎖的狀態(tài);如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖;否則,等待一預(yù)定時(shí)長后,判斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑;在退出所述中斷時(shí),釋放所述原子鎖。US/0S-II不支持內(nèi)存管理,需要增加內(nèi)存管理。雙核時(shí),需要增加內(nèi)存管理的同步機(jī)制,在每個(gè)內(nèi)存管理函數(shù)入口,獲取原子鎖,成功則繼續(xù)后面操作,不成功則繼續(xù)嘗試獲取,直到知道取得,來實(shí)現(xiàn)多核之間的同步。可選的,所述步驟10還包括在所述輕量級(jí)操作系統(tǒng)的每個(gè)內(nèi)存管理函數(shù)入口處,讀取原子鎖的狀態(tài);如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖;否則,等待一預(yù)定時(shí)長后,判斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑;在所述內(nèi)存管理函數(shù)出口,釋放所述原子鎖??蛇x的,步驟10還包括將所述操作系統(tǒng)的0s_sys. c timer (操作系統(tǒng)的系統(tǒng)文件的定時(shí)器)中斷由所述多核系統(tǒng)級(jí)芯片的其中一個(gè)核執(zhí)行;也就是說,將0s_sys. c timer中斷修改成可以給coreO 和 corel ο或者,所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括修改所述操作系統(tǒng)的相應(yīng)字段以支持NEON處理器。具體為修改操作系統(tǒng)如下對(duì)應(yīng)字段Inc/os_cfg. h #define 0S_TASK_CREATE_EXT_EN IPort/os_cpu_a. s 新增加 0S_CPU_FP_SAVE,0S_CPU_FP_Restore 的聲明和實(shí)現(xiàn)Port/os_cpu. h #define 0S_CPU_FPU_EN I。另一方面,如圖2所示,為本發(fā)明所述的一種多核系統(tǒng)級(jí)芯片的驗(yàn)證裝置,包括
建立模塊21,在多核系統(tǒng)級(jí)芯片的平臺(tái)的輕量級(jí)操作系統(tǒng)中,為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程,形成多線程;運(yùn)行模塊22,運(yùn)行所述多線程,對(duì)所述多核系統(tǒng)級(jí)芯片進(jìn)行仿真驗(yàn)證。所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證裝置,還包括同步模塊23,將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步。本發(fā)明提供一種基于輕量級(jí)操作系統(tǒng)的多核SOC芯片仿真平臺(tái),移植uc/os-2到多核平臺(tái),將此輕量級(jí)操作系統(tǒng)應(yīng)用于多核平臺(tái)仿真,滿足多核平臺(tái)仿真時(shí)的調(diào)度和OS靈活性的需求。在仿真驗(yàn)證階段,引入輕量級(jí)操作系統(tǒng)(例如us/os-II,默認(rèn)支持單核心處理器),輕量級(jí)操作系統(tǒng)的軟件開銷低,不會(huì)增加太多的仿真時(shí)間,具備線程調(diào)度、中斷管理等功能,因此在調(diào)度和中斷管理上很接近復(fù)雜操作系統(tǒng)(例如Android)。本發(fā)明具有以下有益效果通過移植US/0S-II操作系統(tǒng),到支持多核,將US/0S-II操作系統(tǒng)引入到ARM多核處理器芯片的仿真環(huán)境中,從而提高了仿真驗(yàn)證的真實(shí)度、全面性和復(fù)雜性,解決了多核SOC仿真與實(shí)際應(yīng)用的操作系統(tǒng)調(diào)度方案不同帶來的不確定性問題,有助于在仿真階段制造復(fù)雜場景,在仿真階段盡早發(fā)現(xiàn)系統(tǒng)級(jí)、模塊間配合、軟硬件協(xié)同等問題。以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。`
權(quán)利要求
1.一種多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,其特征在于,包括 在多核系統(tǒng)級(jí)芯片的平臺(tái)的輕量級(jí)操作系統(tǒng)中,為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程,形成多線程; 運(yùn)行所述多線程,對(duì)所述多核系統(tǒng)級(jí)芯片進(jìn)行仿真驗(yàn)證。
2.根據(jù)權(quán)利要求I所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,其特征在于,所述輕量級(jí)操作系統(tǒng)為UC/OS-II操作系統(tǒng)。
3.根據(jù)權(quán)利要求I所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,其特征在于,所述為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程的步驟之前,還包括 將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步。
4.根據(jù)權(quán)利要求3所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,其特征在于,所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟包括 在所述輕量級(jí)操作系統(tǒng)的臨界區(qū)代碼入口處,關(guān)掉中斷; 獲取所述輕量級(jí)操作系統(tǒng)的原子鎖的狀態(tài); 如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖; 否則,等待一預(yù)定時(shí)長后,判斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑; 在退出所述臨界區(qū)代碼時(shí),釋放所述原子鎖,并打開所述中斷。
5.根據(jù)權(quán)利要求4所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,其特征在于,所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括 在所述輕量級(jí)操作系統(tǒng)的OSCtxSw線程內(nèi)容交換函數(shù)的入口處占用原子鎖; 在所述輕量級(jí)操作系統(tǒng)的OSCtxSw線程內(nèi)容交換函數(shù)的出口釋放所述原子鎖。
6.根據(jù)權(quán)利要求4所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,其特征在于,所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括 在所述輕量級(jí)操作系統(tǒng)的中斷入口處,讀取原子鎖的狀態(tài); 如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖; 否則,等待一預(yù)定時(shí)長后,判斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑; 在退出所述中斷時(shí),釋放所述原子鎖。
7.根據(jù)權(quán)利要求4所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,其特征在于,所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括 在所述輕量級(jí)操作系統(tǒng)的每個(gè)內(nèi)存管理函數(shù)入口處,讀取原子鎖的狀態(tài); 如果所述原子鎖的狀態(tài)為空閑,則占用所述原子鎖; 否則,等待一預(yù)定時(shí)長后,判斷所述原子鎖的狀態(tài)是否為空閑,直到所述原子鎖的狀態(tài)為空閑; 在所述內(nèi)存管理函數(shù)出口,釋放所述原子鎖。
8.根據(jù)權(quán)利要求4所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,其特征在于,所述將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步的步驟還包括 將所述操作系統(tǒng)的0s_sys. c操作系統(tǒng)的系統(tǒng)文件的定時(shí)器中斷由所述多核系統(tǒng)級(jí)芯片的其中一個(gè)核執(zhí)行;或者修改所述操作系統(tǒng)的相應(yīng)字段以支持NEON處理器。
9.一種多核系統(tǒng)級(jí)芯片的驗(yàn)證裝置,其特征在于,包括 建立模塊,在多核系統(tǒng)級(jí)芯片的平臺(tái)的輕量級(jí)操作系統(tǒng)中,為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程,形成多線程; 運(yùn)行模塊,運(yùn)行所述多線程,對(duì)所述多核系統(tǒng)級(jí)芯片進(jìn)行仿真驗(yàn)證。
10.根據(jù)權(quán)利要求9所述的多核系統(tǒng)級(jí)芯片的驗(yàn)證裝置,其特征在于,還包括 同步模塊,將多核系統(tǒng)級(jí)芯片的多核進(jìn)行同步。
全文摘要
本發(fā)明提供一種多核系統(tǒng)級(jí)芯片的驗(yàn)證方法和裝置。所述多核系統(tǒng)級(jí)芯片的驗(yàn)證方法,包括在多核系統(tǒng)級(jí)芯片的平臺(tái)的輕量級(jí)操作系統(tǒng)中,為所述多核系統(tǒng)級(jí)芯片的每一個(gè)處理模塊建立一個(gè)線程,形成多線程;運(yùn)行所述多線程,對(duì)所述多核系統(tǒng)級(jí)芯片進(jìn)行仿真驗(yàn)證。本發(fā)明能夠?qū)Χ嗪讼到y(tǒng)級(jí)芯片進(jìn)行靈活的仿真。
文檔編號(hào)G06F9/455GK103218251SQ20131013181
公開日2013年7月24日 申請(qǐng)日期2013年4月16日 優(yōu)先權(quán)日2013年4月16日
發(fā)明者楊磊 申請(qǐng)人:青島中星微電子有限公司