本發(fā)明涉及片上系統(tǒng)(System on Chip,SoC)領(lǐng)域,尤其涉及一種SoC總線行為檢測方法和裝置。
背景技術(shù):
當(dāng)前SoC芯片運(yùn)行速度越來越快,其處理器的主頻已經(jīng)達(dá)到2GHz以上,因此單靠測試機(jī)臺無法捕捉到瞬間信號,更不可能深入到芯片內(nèi)部捕捉總線信號,這就需要一個監(jiān)控模塊嵌入到芯片內(nèi)部實時捕捉總線信號。
然而,現(xiàn)有的監(jiān)控模塊如SonicsMT和FlexNoC監(jiān)控模塊中,只能對高級可擴(kuò)展接口(Advanced eXtensible Interface,AXI)總線的某些信號進(jìn)行抓取,具體地說,現(xiàn)有的監(jiān)控模塊只能對AXI總線地址和命令進(jìn)行抓取,而無法對AXI總線數(shù)據(jù)進(jìn)行抓??;總之,現(xiàn)有的監(jiān)控模塊功能較為單一,無法滿足對SoC芯片進(jìn)行調(diào)試的多樣化需求。
技術(shù)實現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明實施例期望提供一種SoC總線行為檢測方法和裝置,能夠滿足SoC總線調(diào)試的多樣化需求。
本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
本發(fā)明實施例提供了一種片上系統(tǒng)SoC總線行為檢測方法,包括:
接收SoC總線信號,所述SoC總線信號包括SoC高級可擴(kuò)展接口AXI總線信號;
基于接收的AXI總線信號進(jìn)行至少以下一種操作:抓取AXI總線通道數(shù)據(jù)、對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行至少一次統(tǒng)計;所抓取的AXI總線通道數(shù)據(jù)包括至少以下一種數(shù)據(jù):所述AXI總線寫數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù)、 所述AXI總線讀數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù);每次統(tǒng)計的總線傳輸參數(shù)包括:對應(yīng)的統(tǒng)計時間內(nèi)總線傳輸?shù)钠骄訒r或所占有的平均帶寬。
上述方案中,所述抓取AXI總線通道數(shù)據(jù),包括:在AXI總線信號中寫地址通道(Write address channel,AW)傳輸?shù)男盘枬M足預(yù)設(shè)的第一觸發(fā)條件,或AXI總線信號中讀地址通道(Read address channel,AR)傳輸?shù)男盘枬M足預(yù)設(shè)的第二觸發(fā)條件時,抓取AXI總線通道數(shù)據(jù)。
上述方案中,所抓取的AXI總線通道數(shù)據(jù)為AXI總線信號中使能信號有效的各個通道的數(shù)據(jù)。
上述方案中,所述方法還包括:設(shè)置K組寄存器,每組寄存器用于存儲總線傳輸參數(shù)的一次統(tǒng)計結(jié)果,K為大于1的整數(shù);
在對AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行統(tǒng)計時,在L組寄存器被寫入統(tǒng)計結(jié)果時,讀取所述L組寄存器中的統(tǒng)計結(jié)果,L為小于K的整數(shù)。
上述方案中,進(jìn)行AXI總線數(shù)據(jù)傳輸時每次統(tǒng)計的總線傳輸?shù)钠骄訒r的計算公式為:
T=total_delay/n
其中,T表示對應(yīng)一次統(tǒng)計的總線傳輸?shù)钠骄訒r,Total_delay表示對應(yīng)的統(tǒng)計時間內(nèi)各個Burst傳輸所耗費(fèi)的時間之和,n表示對應(yīng)的統(tǒng)計時間內(nèi)所發(fā)生的Burst傳輸?shù)膫€數(shù);
進(jìn)行AXI總線數(shù)據(jù)傳輸時每次統(tǒng)計的總線傳輸所占有的平均帶寬B的計算公式為:
B=total_byte/total_cycle
其中,B表示對應(yīng)的一次統(tǒng)計的總線傳輸所占有的平均帶寬,total_byte表示對應(yīng)的統(tǒng)計時間內(nèi)各個Burst傳輸所傳輸?shù)臄?shù)據(jù)量的和,total_cycle表示對應(yīng)的統(tǒng)計時間所經(jīng)歷的時鐘周期數(shù)。
上述方案中,所述方法還包括:接收AXI總線信號對應(yīng)的時間戳信息。
上述方案中,所述SoC總線信號還包括:AXI一致性擴(kuò)展(AXI Coherency Extensions,ACE)總線信號;
在接收SoC總線信號之后,所述方法還包括:基于接收的ACE總線信號抓取ACE總線通道數(shù)據(jù)。
上述方案中,所述抓取ACE總線通道數(shù)據(jù)包括:在ACE總線信號AC通道傳輸?shù)男盘枬M足預(yù)設(shè)的第三觸發(fā)條件時,抓取ACE總線通道數(shù)據(jù)。
上述方案中,所抓取的ACE總線通道數(shù)據(jù)為ACE總線信號中使能信號有效的各個通道的數(shù)據(jù)。
上述方案中,所述方法還包括:抓取ACE總線信號對應(yīng)的時間戳信息。
本發(fā)明實施例還提供了一種SoC總線行為檢測裝置,包括:接收模塊和檢測模塊;其中,
接收模塊,用于接收SoC總線信號,所述SoC總線信號包括AXI總線信號;
檢測模塊,用于基于接收的AXI總線信號進(jìn)行至少以下一種操作:抓取AXI總線通道數(shù)據(jù)、對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行至少一次統(tǒng)計;所抓取的AXI總線通道數(shù)據(jù)包括至少以下一種數(shù)據(jù):所述AXI總線寫數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù)、所述AXI總線讀數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù);每次統(tǒng)計的總線傳輸參數(shù)包括:對應(yīng)的統(tǒng)計時間內(nèi)總線傳輸?shù)钠骄訒r或所占有的平均帶寬。
上述方案中,所述檢測模塊,具體用于在AXI總線信號中AW通道傳輸?shù)男盘枬M足預(yù)設(shè)的第一觸發(fā)條件,或AXI總線信號中AR通道傳輸?shù)男盘枬M足預(yù)設(shè)的第二觸發(fā)條件時,抓取AXI總線通道數(shù)據(jù)。
上述方案中,所抓取的AXI總線通道數(shù)據(jù)為AXI總線信號中使能信號有效的各個通道的數(shù)據(jù)。
上述方案中,所述檢測模塊還包括K組寄存器,每組寄存器用于存儲總線傳輸參數(shù)的一次統(tǒng)計結(jié)果,K為大于1的整數(shù);
在對AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行統(tǒng)計時,在L組寄存器被寫入統(tǒng)計結(jié)果時,讀取所述L組寄存器中的統(tǒng)計結(jié)果,L為小于K的整數(shù)。
上述方案中,所述接收模塊,還用于接收ACE總線信號;
在接收SoC總線信號之后,所述方法還包括:基于接收的ACE總線信號 抓取ACE總線通道數(shù)據(jù)。
上述方案中,所述檢測模塊,具體用于在ACE總線信號AC通道傳輸?shù)男盘枬M足預(yù)設(shè)的第三觸發(fā)條件時,抓取ACE總線通道數(shù)據(jù)。
上述方案中,所抓取的ACE總線通道數(shù)據(jù)為ACE總線信號中使能信號有效的各個通道的數(shù)據(jù)。
本發(fā)明實施例提供的一種SoC總線行為檢測方法和裝置,接收SoC總線信號,所述SoC總線信號包括AXI總線信號;基于接收的AXI總線信號進(jìn)行至少以下一種操作:抓取AXI總線通道數(shù)據(jù)、對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行至少一次統(tǒng)計;所抓取的AXI總線通道數(shù)據(jù)包括至少以下一種數(shù)據(jù):所述AXI總線寫數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù)、所述AXI總線讀數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù);每次統(tǒng)計的總線傳輸參數(shù)包括:對應(yīng)的統(tǒng)計時間內(nèi)總線傳輸?shù)钠骄訒r或所占有的平均帶寬。如此,本發(fā)明實施例支持對AXI總線數(shù)據(jù)的抓取和AXI總線數(shù)據(jù)的參數(shù)統(tǒng)計,能夠滿足SoC總線調(diào)試的多樣化需求。
附圖說明
圖1為本發(fā)明SoC總線行為檢測方法的第一實施例的流程圖;
圖2為本發(fā)明SoC總線行為檢測方法的第一實施例中抓取AXI總線通道數(shù)據(jù)的過程的示意圖;
圖3為本發(fā)明SoC總線行為檢測方法的第一實施例中統(tǒng)計一次總線傳輸參數(shù)的時序示意圖;
圖4為本發(fā)明SoC總線行為檢測方法的第一實施例中統(tǒng)計總線傳輸參數(shù)的過程的示意圖;
圖5為本發(fā)明SoC總線行為檢測方法的第一實施例中進(jìn)行連續(xù)統(tǒng)計的時序示意圖;
圖6為本發(fā)明SoC總線行為檢測方法的第一實施例中抓取ACE總線通道數(shù)據(jù)的過程的示意圖;
圖7為本發(fā)明SoC總線行為檢測方法的第二實施例的應(yīng)用場景的示意圖;
圖8為本發(fā)明SoC總線行為檢測方法的第二實施例中總線數(shù)據(jù)抓取的流程圖;
圖9為本發(fā)明SoC總線行為檢測方法的第二實施例中總線傳輸參數(shù)的統(tǒng)計的流程圖;
圖10為本發(fā)明實施例SoC總線行為檢測裝置的第一組成結(jié)構(gòu)示意圖;
圖11為本發(fā)明實施例SoC總線行為檢測裝置的第二組成結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
圖1為本發(fā)明SoC總線行為檢測方法的第一實施例的流程圖,如圖1所示,該方法包括:
步驟100:接收SoC總線信號,SoC總線信號包括AXI總線信號。
這里,AXI總線信號通常包括以下至少一個通道的信號:AR通道信號、AW通道信號、讀數(shù)據(jù)通道(Read data channel,R)信號、寫數(shù)據(jù)通道(Write data channel,W)信號和寫響應(yīng)通道(Write response channel,B)信號。
進(jìn)一步地,還可以接收AXI總線信號對應(yīng)的時間戳(timestamp)信息,從而可以準(zhǔn)確地獲知總線握手的時刻以及響應(yīng)握手的時刻。
本步驟中,為了改善AXI總線信號的各個通道信號之間的時序,可以在接收AXI總線信號之前,對AXI總線信號的各個通道信號之間的時序進(jìn)行調(diào)整,例如,采用基本邏輯單位slice對AXI總線信號的各個通道信號之間的時序進(jìn)行調(diào)整。
本步驟中,SoC總線信號還可以包括AXI一致性擴(kuò)展(AXI Coherency Extensions,ACE)總線信號;這里,ACE總線信號通常包括以下至少一個通道的信號:AC通道(snoop address channel)信號、CR通道(snoop response channel)信號、CD通道(snoop data channel)信號。
進(jìn)一步地,還可以接收ACE總線信號對應(yīng)的時間戳信息,從而可以準(zhǔn)確地 獲知總線握手的時刻以及響應(yīng)握手的時刻。
本步驟中,為了改善ACE總線信號的各個通道信號之間的時序,可以在接收ACE總線信號之前,對ACE總線信號的各個通道信號之間的時序進(jìn)行調(diào)整,例如,采用基本邏輯單位slice對ACE總線信號的各個通道信號之間的時序進(jìn)行調(diào)整。
步驟101:基于接收的AXI總線信號進(jìn)行至少以下一種操作:抓取AXI總線通道數(shù)據(jù)、對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行至少一次統(tǒng)計;所抓取的AXI總線通道數(shù)據(jù)包括至少以下一種數(shù)據(jù):所述AXI總線寫數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù)、所述AXI總線讀數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù);每次統(tǒng)計的總線傳輸參數(shù)包括:對應(yīng)的統(tǒng)計時間內(nèi)總線傳輸?shù)钠骄訒r或所占有的平均帶寬。
具體地,所述抓取AXI總線通道數(shù)據(jù)包括:接收第一數(shù)據(jù)抓取信號;在第一數(shù)據(jù)抓取信號有效時,對接收的AXI總線各個通道的數(shù)據(jù)進(jìn)行抓取,在第一數(shù)據(jù)抓取信號無效時,停止對接收的AXI總線各個通道的數(shù)據(jù)的抓取流程。這里,第一數(shù)據(jù)抓取信號的有效性可以預(yù)先設(shè)置,例如,第一數(shù)據(jù)抓取信號為高電平信號或低電平信號,當(dāng)?shù)谝粩?shù)據(jù)抓取信號為高電平信號時,表明第一數(shù)據(jù)抓取信號有效;當(dāng)?shù)谝粩?shù)據(jù)抓取信號為低電平信號時,表明第一數(shù)據(jù)抓取信號無效。
本步驟中,所述抓取AXI總線通道數(shù)據(jù)包括:在AXI總線信號中AW通道傳輸?shù)男盘枬M足預(yù)設(shè)的第一觸發(fā)條件,或AXI總線信號中AR通道傳輸?shù)男盘枬M足預(yù)設(shè)的第二觸發(fā)條件時,抓取AXI總線通道數(shù)據(jù);在AXI總線信號中AW通道傳輸?shù)男盘柌粷M足預(yù)設(shè)的第一觸發(fā)條件,且AXI總線信號中AR通道傳輸?shù)男盘柌粷M足預(yù)設(shè)的第二觸發(fā)條件時,不抓取AXI總線通道數(shù)據(jù)。
這里,預(yù)設(shè)的第一觸發(fā)條件可以根據(jù)以下至少一個要素設(shè)置:AW通道傳輸?shù)腁WID信號、AW通道傳輸?shù)腁WADDR信號、AW通道傳輸?shù)腁WLEN信號、AW通道傳輸?shù)腁WSIZE信號、AW通道傳輸?shù)腁WBURST信號;預(yù)設(shè)的第二觸發(fā)條件可以根據(jù)以下至少一個要素設(shè)置:AR通道傳輸?shù)腁RID信號、AR通道傳輸?shù)腁RADDR信號、AR通道傳輸?shù)腁RLEN信號、AR通道傳輸?shù)? ARSIZE信號、AR通道傳輸?shù)腁RBURST信號。
本步驟中,所抓取的AXI總線通道數(shù)據(jù)為AXI總線信號中使能信號有效的各個通道的數(shù)據(jù)。這里,與AXI總線信號中每個通道信號對應(yīng)的使能信號的有效性可以預(yù)先設(shè)置。
如此,通過合理地設(shè)置第一觸發(fā)條件、第二觸發(fā)條件和使能信號的有效性,可以靈活地抓取AXI總線通道數(shù)據(jù),降低抓取的AXI總線通道數(shù)據(jù)的數(shù)據(jù)量。
示例性地,下面通過一個具體例子對抓取AXI總線通道數(shù)據(jù)的過程進(jìn)行說明。
AXI協(xié)議支持Outstanding傳輸訪問,即能夠發(fā)出多個未完成的事務(wù);AXI協(xié)議可以利用ID標(biāo)記每個Burst傳輸,因此在本發(fā)明第一實施例中設(shè)置兩個寄存器組id_reg及id_cnt,其中,寄存器組id_reg用于記錄每個Burst傳輸?shù)腎D號,id_cnt用于記錄相同ID號的Burst傳輸?shù)竭_(dá)的先后順序的索引,這里,若存在相同的ID號的多個Burst傳輸,將第i1個到達(dá)的Burst傳輸?shù)南群箜樞虻乃饕洖閕1,i1為自然數(shù)。
圖2為本發(fā)明SoC總線行為檢測方法的第一實施例中抓取AXI總線通道數(shù)據(jù)的過程的示意圖,如圖2所示,gbal_id_reg表示按照預(yù)先設(shè)置的查詢順序排列的Burst傳輸?shù)牟樵冺樞?,預(yù)先設(shè)置的查詢順序為圖2中的箭頭順序(由上到下);寄存器組id_reg由多個存儲單元(slot)組成,每個slot用于存儲一個ID號,寄存器組id_cnt由多個存儲單元組成,每個slot用于存儲一個索引的值。
圖2描述了從T0時刻到T4時刻AXI總線通道數(shù)據(jù)的抓取過程,具體說明如下:
在T0時刻,第一數(shù)據(jù)抓取信號由無效變?yōu)橛行?,然而,此時還存在一個ID為0的Burst傳輸沒有完成。
在T1時刻,接收到一個Burst傳輸?shù)捻憫?yīng),在接收到的Burst傳輸?shù)捻憫?yīng)與T0時刻未完成的Burst傳輸匹配時,表示T0時刻未完成的ID為0的Burst傳輸已經(jīng)在T1時刻完成,此時,在寄存器組id_reg和寄存器組id_cnt中,將與T0時刻未完成的ID為0的Burst傳輸相對應(yīng)的slot無效,圖2中,將無效 的slot存儲的數(shù)據(jù)標(biāo)記為X。
在T2時刻,針對新的Burst傳輸,在寄存器組id_reg和寄存器組id_cnt中,查找有效的slot,搜索出滿足預(yù)設(shè)的第一觸發(fā)條件或第二觸發(fā)條件的Burst傳輸對應(yīng)的slot,將該slot標(biāo)記為“已匹配”;將不滿足預(yù)設(shè)的第一觸發(fā)條件且不滿足預(yù)設(shè)的第二觸發(fā)條件的Burst傳輸對應(yīng)的slot標(biāo)記為“不匹配”。這里,對于“不匹配”的slot,不需要抓取對應(yīng)的Burst傳輸數(shù)據(jù)。圖2中,標(biāo)記為“已匹配”的slot對應(yīng)T2時刻表格的第二行,標(biāo)記為“不匹配”的slot對應(yīng)T2時刻表格的第三行至第五行。
在T2時刻,對于寫數(shù)據(jù)操作,如果寫ID標(biāo)記(WID)與標(biāo)記為“已匹配”的slot中存儲的ID相同,且對應(yīng)的標(biāo)記為“已匹配”的slot存儲的索引的值最小,則認(rèn)為WID與對應(yīng)的標(biāo)記為“已匹配”的slot中存儲的ID匹配,此時將寫數(shù)據(jù)(WDATA)、寫選通(WSTRB)、寫最后一個(WLAST)和寫ID標(biāo)記(WID)全部抓取,并將抓取后的數(shù)據(jù)發(fā)送到FIFO中。
在T2時刻,對于讀數(shù)據(jù)操作,如果讀ID標(biāo)記(RID)與標(biāo)記為“已匹配”的slot中存儲的ID相同,且對應(yīng)的標(biāo)記為“已匹配”的slot存儲的索引的值最小,則認(rèn)為RID與對應(yīng)的標(biāo)記為“已匹配”的slot中存儲的ID匹配,此時將讀數(shù)據(jù)(RDATA)、讀響應(yīng)(RRESP)、RID及讀最后一個(RLAST)全部抓取,并將抓取后的數(shù)據(jù)發(fā)送到FIFO中。
在T3時刻,對于寫數(shù)據(jù)操作,在響應(yīng)ID(BID)等于0時,如果BID與標(biāo)記為“已匹配”的slot中存儲的ID相同,且對應(yīng)的標(biāo)記為“已匹配”的slot存儲的索引的值最小,則認(rèn)為BID與對應(yīng)的標(biāo)記為“已匹配”的slot中存儲的ID匹配,此時標(biāo)記為“已匹配”的slot對應(yīng)的Burst傳輸已經(jīng)完成,因此將T3時刻Burst傳輸已經(jīng)完成的slot標(biāo)記為無效,該無效的slot對應(yīng)圖2中T3時刻表格的第二行;然后,在寄存器組id_reg和寄存器組id_cnt中,將其余ID等于0的slot對應(yīng)的索引值均減1,并將寫響應(yīng)(BRESP)、BID發(fā)送到FIFO中。
在T3時刻,對于讀數(shù)據(jù)操作,在RID等于0且RLAST有效的情況下,如果RID與標(biāo)記為“已匹配”的slot中存儲的ID相同,且對應(yīng)的標(biāo)記為“已匹 配”的slot存儲的索引的值最小,則認(rèn)為標(biāo)記為“已匹配”的slot對應(yīng)的Burst傳輸已經(jīng)完成,因此將T3時刻Burst傳輸已經(jīng)完成的slot標(biāo)記為無效;然后,在寄存器組id_reg和寄存器組id_cnt中,將其余ID等于0的slot對應(yīng)的索引值均減1,并將RLAST、RDATA和RRESP發(fā)送到FIFO中。
在T4時刻,對于寫數(shù)據(jù)操作,在BID等于0時,如果BID與標(biāo)記為“不匹配”的slot中存儲的ID相同,且對應(yīng)的標(biāo)記為“不匹配”的slot存儲的索引的值最小,則認(rèn)為BID與對應(yīng)的標(biāo)記為“不匹配”的slot中存儲的ID匹配,此時標(biāo)記為“不匹配”的slot對應(yīng)的Burst傳輸已經(jīng)完成,僅將T4時刻Burst傳輸已經(jīng)完成的slot標(biāo)記為無效,而不進(jìn)行數(shù)據(jù)的抓取和發(fā)送,這時因為Burst傳輸并不滿足預(yù)設(shè)的第一觸發(fā)條件和第二觸發(fā)條件。
在T4時刻,對于讀數(shù)據(jù)操作,在RID等于0且RLAST有效的情況下,如果RID與標(biāo)記為“不匹配”的slot中存儲的ID相同,且對應(yīng)的標(biāo)記為“不匹配”的slot存儲的索引的值最小,則認(rèn)為標(biāo)記為“不匹配”的slot對應(yīng)的Burst傳輸已經(jīng)完成,此時僅將T4時刻Burst傳輸已經(jīng)完成的slot標(biāo)記為無效,該標(biāo)記為無效的slot對應(yīng)圖2中T4時刻表格的第三行;在T4時刻不進(jìn)行數(shù)據(jù)的抓取,這是因為Burst傳輸并不滿足預(yù)設(shè)的第一觸發(fā)條件和第二觸發(fā)條件。
本步驟中,進(jìn)行AXI總線數(shù)據(jù)傳輸時通常使用Burst傳輸機(jī)制進(jìn)行數(shù)據(jù)傳輸,Burst傳輸機(jī)制包括但不限于遞增猝發(fā)、回卷猝發(fā)。
示例性地,進(jìn)行AXI總線數(shù)據(jù)傳輸時每次統(tǒng)計的總線傳輸?shù)钠骄訒r可以根據(jù)以下公式計算:
T=total_delay/n
其中,T表示對應(yīng)一次統(tǒng)計的總線傳輸?shù)钠骄訒r,Total_delay表示對應(yīng)的統(tǒng)計時間內(nèi)各個Burst傳輸所耗費(fèi)的時間之和,n表示對應(yīng)的統(tǒng)計時間內(nèi)所發(fā)生的Burst傳輸?shù)膫€數(shù);具體地,Total_delay=T1+T2+…+Tn,T1至Tn分別表示對應(yīng)的統(tǒng)計時間內(nèi)第1個Burst傳輸至第n個Burst傳輸所耗費(fèi)的時間。
進(jìn)行AXI總線數(shù)據(jù)傳輸時每次統(tǒng)計的總線傳輸所占有的平均帶寬可以根據(jù)以下公式計算:
B=total_byte/total_cycle
其中,B表示對應(yīng)的一次統(tǒng)計的總線傳輸所占有的平均帶寬,total_byte表示對應(yīng)的統(tǒng)計時間內(nèi)各個Burst傳輸所傳輸?shù)臄?shù)據(jù)量的和,單位為位,total_cycle表示對應(yīng)的統(tǒng)計時間所經(jīng)歷的時鐘周期數(shù),total_cycle為自然數(shù);具體地,total_byte的計算公式為:Total_byte=(L1+L2+…+Ln)*8,其中,L1至Ln分別表示對應(yīng)的統(tǒng)計時間內(nèi)第1個Burst傳輸至第n個Burst傳輸所傳輸?shù)臄?shù)據(jù)量,單位為字節(jié)。
圖3為本發(fā)明SoC總線行為檢測方法的第一實施例中統(tǒng)計一次總線傳輸參數(shù)的時序示意圖,如圖3所示,ACLK表示全局時鐘信號,AWVALID表示寫地址有效,AWREADY表示寫地址準(zhǔn)備,AWADDR表示寫地址,AWSIZE表示一次寫傳輸中一拍數(shù)據(jù)的最大字節(jié)數(shù),AWLEN指示一次寫傳輸有多少拍數(shù)據(jù),BVALID表示寫響應(yīng)有效,BREADY表示響應(yīng)準(zhǔn)備,BRESP表示寫響應(yīng);圖3中示例性的說明了T1至Tn的含義。
進(jìn)一步地,所述對進(jìn)行AXI總線數(shù)據(jù)傳輸時的總線傳輸參數(shù)進(jìn)行至少一次統(tǒng)計包括:接收統(tǒng)計觸發(fā)信號;在統(tǒng)計觸發(fā)信號有效時,對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)依次進(jìn)行至少一次統(tǒng)計,在統(tǒng)計觸發(fā)信號無效時,停止對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行統(tǒng)計。這里,統(tǒng)計觸發(fā)信號的有效性可以預(yù)先設(shè)置,例如,統(tǒng)計觸發(fā)信號為高電平信號或低電平信號,當(dāng)統(tǒng)計觸發(fā)信號為高電平信號時,表明統(tǒng)計觸發(fā)信號有效;否則,當(dāng)統(tǒng)計觸發(fā)信號為低電平信號時,表明統(tǒng)計觸發(fā)信號無效。
具體地,可以采用如下兩種統(tǒng)計模式來確定每次統(tǒng)計的終止時間點(diǎn)。
第一種統(tǒng)計模式:對進(jìn)行AXI總線數(shù)據(jù)傳輸時的總線傳輸參數(shù)進(jìn)行第1次統(tǒng)計的開始時間點(diǎn)為統(tǒng)計觸發(fā)信號由無效變?yōu)橛行У臅r刻,終止時間點(diǎn)為以下兩個時間點(diǎn)中的較早的時間點(diǎn):統(tǒng)計觸發(fā)信號由有效變?yōu)闊o效的時刻、第1次統(tǒng)計所經(jīng)歷的時鐘周期數(shù)超過預(yù)設(shè)的時鐘周期數(shù)Fixed_cycle的時刻。
當(dāng)j大于1時,對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行第j次統(tǒng)計的開始時間點(diǎn)為第j-1次統(tǒng)計的終止時間點(diǎn)或第j-1次統(tǒng)計的終止時間點(diǎn)之后總 線握手首次成功的時刻,對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行第j次統(tǒng)計的終止時間點(diǎn)為以下兩個時間點(diǎn)中的較早的時間點(diǎn):統(tǒng)計觸發(fā)信號由有效變?yōu)闊o效的時刻、第j次統(tǒng)計所經(jīng)歷的時鐘周期數(shù)超過預(yù)設(shè)的時鐘周期數(shù)Fixed_cycle的時刻。
第二種統(tǒng)計模式:對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行第1次統(tǒng)計的開始時間點(diǎn)為統(tǒng)計觸發(fā)信號由無效變?yōu)橛行У臅r刻,終止時間點(diǎn)為以下兩個時間點(diǎn)中的較早的時間點(diǎn):統(tǒng)計觸發(fā)信號由有效變?yōu)闊o效的時刻、進(jìn)行第1次統(tǒng)計時各個Burst傳輸所傳輸?shù)臄?shù)據(jù)量的和大于預(yù)設(shè)的數(shù)據(jù)量Fixed byte的時刻。
當(dāng)j大于1時,對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行第j次統(tǒng)計的開始時間點(diǎn)為第j-1次統(tǒng)計的終止時間點(diǎn)或第j-1次統(tǒng)計的終止時間點(diǎn)之后總線握手首次成功的時刻,對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行第j次統(tǒng)計的終止時間點(diǎn)為以下兩個時間點(diǎn)中的較早的時間點(diǎn):統(tǒng)計觸發(fā)信號由有效變?yōu)闊o效的時刻、進(jìn)行第j次統(tǒng)計時各個Burst傳輸所傳輸?shù)臄?shù)據(jù)量的和大于預(yù)設(shè)的數(shù)據(jù)量Fixed byte的時刻。
這里,第一種統(tǒng)計模式可以稱為規(guī)定時鐘周期數(shù)的統(tǒng)計模式,第二種統(tǒng)計模式可以稱為規(guī)定數(shù)據(jù)量的統(tǒng)計模式。
示例性地,下面通過一個具體例子對進(jìn)行AXI總線數(shù)據(jù)傳輸時統(tǒng)計總線傳輸參數(shù)的過程進(jìn)行說明。
由于AXI協(xié)議可以利用ID標(biāo)記每個Burst傳輸,因此通過記錄AXI總線上ID的變化,可以計算每個Burst傳輸?shù)难訒r和他們花費(fèi)的總延時。具體地,設(shè)置三個寄存器組gbal_ID_reg、ID_reg和ID_cnt,其中,寄存器組gbal_ID_reg用于記錄整個統(tǒng)計時間內(nèi)每個Burst傳輸?shù)腎D,寄存器組ID_reg用于記錄統(tǒng)計觸發(fā)信號有效的時間內(nèi)每個Burst傳輸?shù)腎D,寄存器組ID_cnt用于記錄相同ID號的Burst傳輸?shù)竭_(dá)的先后順序的索引,這里,若存在相同的ID號的多個Burst傳輸,將第i2個到達(dá)的Burst傳輸?shù)南群箜樞虻乃饕洖閕2,i2為自然數(shù)。
圖4為本發(fā)明SoC總線行為檢測方法的第一實施例中統(tǒng)計總線傳輸參數(shù)的 過程的示意圖,如圖4所示,寄存器組gbal_ID_reg存儲的ID號按照預(yù)先設(shè)置的查詢順序排列,預(yù)先設(shè)置的查詢順序為圖4中的箭頭順序(由上到下);,寄存器組gbal_ID_reg由多個slot組成,每個slot用于存儲一個ID號,寄存器組ID_reg由多個slot組成,每個slot用于存儲一個ID號,寄存器組ID_cnt由多個slot組成,每個slot用于存儲一個索引的值。寄存器組ID_reg和寄存器組ID_cnt的深度為5。圖4示例性地描述了從T0時刻到T4時刻統(tǒng)計總線傳輸參數(shù)的過程,具體說明如下:
在T0時刻,統(tǒng)計觸發(fā)信號無效,還有兩個Burst傳輸?shù)捻憫?yīng)沒有返回,即圖4中寄存器組gbal_ID_reg中ID為0的Burst傳輸響應(yīng)沒有返回;這里,寄存器組gbal_ID_reg中ID為X的slot為無效的slot,該無效的slot對應(yīng)圖4中T0時刻的第一行和第三行。在T0時刻,不記錄沒有返回響應(yīng)的Burst傳輸?shù)腎D順序,只記錄沒有返回響應(yīng)的Burst傳輸?shù)腎D;在任意一個Burst傳輸?shù)捻憫?yīng)返回時,將對應(yīng)的返回響應(yīng)的Burst傳輸?shù)腞ID/BID與寄存器組gbal_ID_reg中ID進(jìn)行比較;在對應(yīng)的返回響應(yīng)的Burst傳輸?shù)腞ID/BID與寄存器組gbal_ID_reg中的ID匹配時,將對應(yīng)的slot無效,直至寄存器組gbal_ID_reg中所有的slot都無效。
在T1時刻,統(tǒng)計觸發(fā)信號變?yōu)闊o效,新的Burst傳輸有效,針對新的Burst傳輸,在寄存器組ID_reg和寄存器組ID_cnt中,查找有效的slot,搜索出滿足預(yù)設(shè)的第一觸發(fā)條件或第二觸發(fā)條件的Burst傳輸對應(yīng)的slot,將該slot標(biāo)記為“已匹配”,標(biāo)記為“已匹配”的slot對應(yīng)T1時刻表格的第二行。在T1時刻,將不滿足預(yù)設(shè)的第一觸發(fā)條件且不滿足預(yù)設(shè)的第二觸發(fā)條件的Burst傳輸對應(yīng)的slot標(biāo)記為“不匹配”。這里,對于“不匹配”的slot,不需要抓取對應(yīng)的總線傳輸數(shù)據(jù)。
針對標(biāo)記為“已匹配”的Burst傳輸,從新的Burst傳輸有效開始的時刻對時鐘周期數(shù)進(jìn)行計數(shù)。
需要說明的是,在T1時刻,當(dāng)ID號為0的Burst傳輸?shù)捻憫?yīng)返回時,需要先在寄存器組ID_reg和寄存器組ID_cnt中,將與統(tǒng)計觸發(fā)信號有效前寄存 器組gbal_ID_reg中ID為0的Burst傳輸對應(yīng)的slot無效,以避免統(tǒng)計觸發(fā)信號有效前Burst傳輸對統(tǒng)計造成影響,這里,無效的slot對應(yīng)圖4中T1時刻表格的第三行。
在T2時刻,當(dāng)ID號為0的Burst傳輸?shù)捻憫?yīng)返回時,在寄存器組ID_reg和寄存器組ID_cnt中,將與統(tǒng)計觸發(fā)信號有效前寄存器組gbal_ID_reg中ID為0的Burst傳輸對應(yīng)的slot無效,以避免統(tǒng)計觸發(fā)信號有效前Burst傳輸對統(tǒng)計造成影響。從圖4中可以看出,此時,統(tǒng)計觸發(fā)信號有效前所有的Burst傳輸均已傳輸完成。
在T3時刻,新的Burst傳輸有效,針對新的Burst傳輸,在寄存器組ID_reg和寄存器組ID_cnt中,查找有效的slot,搜索出滿足預(yù)設(shè)的第一觸發(fā)條件或第二觸發(fā)條件的Burst傳輸對應(yīng)的slot,在T3時刻,將不滿足預(yù)設(shè)的第一觸發(fā)條件且不滿足預(yù)設(shè)的第二觸發(fā)條件的Burst傳輸對應(yīng)的slot標(biāo)記為“不匹配”。這里,對于“不匹配”的slot,不需要抓取對應(yīng)的Burst傳輸數(shù)據(jù);這里,“不匹配”的slot對應(yīng)圖4中T3時刻表格的第一行。
在T4時刻,ID為0的Burst傳輸?shù)捻憫?yīng)返回,由于統(tǒng)計觸發(fā)信號有效前的Burst傳輸均已傳輸完成,此時,在寄存器組ID_reg和寄存器組ID_cnt中,查找ID為0且索引值為1的slot,將該slot無效,該slot對應(yīng)圖4中T4時刻表格的第二行,停止對時鐘周期數(shù)的計數(shù),得出完成對應(yīng)的Burst傳輸所耗費(fèi)的時間。在T4時刻,新的Burst傳輸出現(xiàn),該Burst傳輸滿足預(yù)設(shè)的第一觸發(fā)條件或第二觸發(fā)條件,將該Burst傳輸對應(yīng)的slot標(biāo)記為“已匹配”,重新針對該新的Burst傳輸進(jìn)行時鐘周期數(shù)的計數(shù),這里,該標(biāo)記為“已匹配”的slot對應(yīng)圖4中T4時刻表格的第三行。
進(jìn)一步地,AXI總線可以連接多個主設(shè)備以及多個從設(shè)備;在一個主設(shè)備通過AXI總線讀取一個從設(shè)備的數(shù)據(jù),或者,一個主設(shè)備通過AXI總線向一個從設(shè)備寫入數(shù)據(jù)時,可以根據(jù)預(yù)先配置的任意一個主設(shè)備的地址,來統(tǒng)計該主設(shè)備讀寫數(shù)據(jù)時的平均時延和所占有的平均帶寬;同理,可以根據(jù)預(yù)先配置的任意一個從設(shè)備的地址,來統(tǒng)計從設(shè)備被讀取數(shù)據(jù)/被寫入數(shù)據(jù)時的平均時延和 所占用的平均帶寬;進(jìn)一步地,可以根據(jù)預(yù)先配置的任意一個主設(shè)備和任意一個從設(shè)備的地址,來統(tǒng)計對應(yīng)主設(shè)備讀寫對應(yīng)從設(shè)備的數(shù)據(jù)時的平均時延和所占用的平均帶寬。
優(yōu)選地,還可以設(shè)置K組寄存器來存儲統(tǒng)計結(jié)果,K為大于1的整數(shù),每組寄存器用于存儲總線傳輸參數(shù)的一次統(tǒng)計結(jié)果;在對AXI總線數(shù)據(jù)傳輸時的總線傳輸參數(shù)進(jìn)行統(tǒng)計時,如果L組寄存器被寫入統(tǒng)計結(jié)果,則利用外部設(shè)備將該L組寄存器的統(tǒng)計結(jié)果讀取出去,L為小于K的整數(shù);例如,在L組寄存器被寫入統(tǒng)計結(jié)果之后,產(chǎn)生中斷并向外部的CPU發(fā)出請求信息,請求將該L組寄存器的統(tǒng)計結(jié)果讀取出去。這里,L和K的值可以根據(jù)實際應(yīng)用場景進(jìn)行設(shè)置,例如K取8,L取4。
需要說明的是,如果外部設(shè)備不能及時將該L組寄存器的統(tǒng)計結(jié)果讀取出去,則在該L組寄存器的統(tǒng)計結(jié)果被新的統(tǒng)計結(jié)果覆蓋時,產(chǎn)生寫覆蓋中斷。
可以看出,對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行多次統(tǒng)計時,可以實現(xiàn)統(tǒng)計觸發(fā)信號有效的持續(xù)時間內(nèi)總線傳輸參數(shù)的連續(xù)統(tǒng)計,如此,可以繪制出總線傳輸參數(shù)隨時間的變化波形圖,有利于更準(zhǔn)確的掌握總線行為。
圖5為本發(fā)明SoC總線行為檢測方法的第一實施例中進(jìn)行連續(xù)統(tǒng)計的時序示意圖,如圖5所示,windows表示統(tǒng)計觸發(fā)信號有效的持續(xù)時間,ACLK表示全局時鐘信號,START表示統(tǒng)計觸發(fā)信號,當(dāng)START為高電平時,表示統(tǒng)計觸發(fā)信號有效,當(dāng)START為低電平時,表示統(tǒng)計觸發(fā)信號無效;perf表示統(tǒng)計結(jié)果獲取時序,P1至Pk分別表示統(tǒng)計觸發(fā)信號有效的持續(xù)時間內(nèi)獲取的k個統(tǒng)計結(jié)果,k大于1;end_flag為高電平信號或低電平信號,當(dāng)end_flag為低電平信號時,表示正在進(jìn)行某一次統(tǒng)計,當(dāng)end_flag變?yōu)楦唠娖?,end_flag拉起時,表示某一次統(tǒng)計終止。
進(jìn)一步地,如果步驟100中SoC總線信號還包括ACE總線信號,則在本步驟中,還需要基于接收的ACE總線信號抓取ACE總線通道數(shù)據(jù)。
具體地,所述抓取ACE總線通道數(shù)據(jù)包括:接收第二數(shù)據(jù)抓取信號;在第二數(shù)據(jù)抓取信號有效時,對接收的ACE總線各個通道的數(shù)據(jù)進(jìn)行抓取,在第二 數(shù)據(jù)抓取信號無效時,停止對接收的ACE總線各個通道的數(shù)據(jù)的抓取流程。這里,第二數(shù)據(jù)抓取信號的有效性可以預(yù)先設(shè)置,例如,第二數(shù)據(jù)抓取信號為高電平信號或低電平信號,當(dāng)?shù)诙?shù)據(jù)抓取信號為高電平信號時,表明第二數(shù)據(jù)抓取信號有效;否則,當(dāng)?shù)诙?shù)據(jù)抓取信號為低電平信號時,表明第二數(shù)據(jù)抓取信號無效。
本步驟中,所述抓取ACE總線通道數(shù)據(jù)包括:在ACE總線信號AC通道傳輸?shù)男盘枬M足預(yù)設(shè)的第三觸發(fā)條件時,抓取ACE總線通道數(shù)據(jù);在ACE總線信號AC通道傳輸?shù)男盘柌粷M足預(yù)設(shè)的第三觸發(fā)條件時,不抓取ACE總線通道數(shù)據(jù)。
這里,預(yù)設(shè)的第三觸發(fā)條件可以根據(jù)以下至少一個要素設(shè)置:AC通道傳輸?shù)腁CADDR信號、AC通道傳輸?shù)腁CSNOOP信號。
本步驟中,所抓取的ACE總線通道數(shù)據(jù)為ACE總線信號中使能信號有效的各個通道的數(shù)據(jù)。這里,與ACE總線信號中每個通道信號對應(yīng)的使能信號的有效性可以預(yù)先設(shè)置。
如此,通過合理地設(shè)置第三觸發(fā)條件和使能信號的有效性,可以靈活地抓取ACE總線通道數(shù)據(jù),降低抓取的ACE總線通道數(shù)據(jù)的數(shù)據(jù)量。
示例性地,下面通過一個具體例子對抓取ACE總線通道數(shù)據(jù)的過程進(jìn)行說明。
ACE總線協(xié)議不支持利用ID標(biāo)記每個Burst傳輸,在本發(fā)明第一實施例中設(shè)置寄存器組cnt、cnt_cd、max_cnt、max_cnt_cd,其中,寄存器組cnt用于記錄AC通道傳輸?shù)南群箜樞?,寄存器組cnt包括多個slot,每個slot用于存儲一個表示AC通道傳輸?shù)南群箜樞虻乃饕?,在有多個AC通道傳輸?shù)男盘栂群蟮竭_(dá)的情況下,索引值越小,則說明對應(yīng)的AC通道傳輸?shù)男盘栐较鹊竭_(dá);寄存器組cnt_cd用于記錄CD通道傳輸?shù)南群箜樞?,寄存器組cnt包括多個slot,每個slot用于存儲一個表示CD通道傳輸?shù)南群箜樞虻乃饕?,在有多個CD通道傳輸?shù)男盘栂群蟮竭_(dá)的情況下,索引值越小,則說明對應(yīng)的CD通道傳輸?shù)男盘栐较鹊竭_(dá)。通常,寄存器組cnt和寄存器組cnt_cd存儲的索引值大于等 于1的自然數(shù)。
圖6為本發(fā)明SoC總線行為檢測方法的第一實施例中抓取ACE總線通道數(shù)據(jù)的過程的示意圖,如圖6所示,寄存器組max_cnt包括至少一個slot,每個slot用于記錄第二數(shù)據(jù)抓取信號有效前未傳輸完成的一個Burst傳輸對應(yīng)的AC通道傳輸?shù)南群箜樞虻乃饕担患拇嫫鹘Mmax_cnt_cd包括至少一個slot,每個slot用于記錄第二數(shù)據(jù)抓取信號有效前未傳輸完成的一個Burst傳輸對應(yīng)的CD通道傳輸?shù)南群箜樞虻乃饕怠?/p>
圖6示例性地描述了從T0時刻到T4時刻ACE總線通道數(shù)據(jù)的抓取過程,具體說明如下:
在T0時刻,第二數(shù)據(jù)抓取信號無效,CRRESP信號或CDLAST信號有效,此時直至寄存器組max_cnt和寄存器組max_cnt_cd中每個slot記錄的索引值變?yōu)椴粩噙M(jìn)行減1處理,直至寄存器組max_cnt和寄存器組max_cnt_cd中每個slot記錄的索引值變?yōu)?,此時第二數(shù)據(jù)抓取信號有效前所有的Burst傳輸均已完成。
在T1時刻,第二數(shù)據(jù)抓取信號有效,如果ACE總線信號滿足預(yù)設(shè)的第三觸發(fā)條件,則將寄存器組cnt/寄存器組cnt_cd中對應(yīng)的slot標(biāo)記為“已匹配”,這里,標(biāo)記為“已匹配”的slot對應(yīng)圖6中T1時刻表格的第二行和第四行,此時,將標(biāo)記為“已匹配”的slot對應(yīng)的AC通道傳輸?shù)男盘柊l(fā)送到FIFO中,AC通道傳輸?shù)男盘栔辽侔ㄒ韵乱环N:ACVALID信號、ACREADY信號、ACADDR信號、ACSNOOP信號、ACPORT信號。
在T1時刻,如果AC通道傳輸?shù)臄?shù)據(jù)/CD通道傳輸?shù)臄?shù)據(jù)不滿足預(yù)設(shè)的第三觸發(fā)條件,則將寄存器組cnt/寄存器組cnt_cd中對應(yīng)的slot標(biāo)記為“不匹配”,這里,標(biāo)記為“不匹配”的slot對應(yīng)圖6中T1時刻表格的第一行、第三行和第五行。
在T2時刻,CDLAST信號有效,此時將寄存器組cnt_cd中索引值為1的slot無效,并將寄存器組cnt_cd中記錄的其余索引值全部減1,這里,該無效的slot在圖6中用索引值X表示;在T2時刻,ACE總線信號滿足預(yù)設(shè)的第三觸發(fā)條件,則將寄存器組cnt/寄存器組cnt_cd中對應(yīng)的slot標(biāo)記為“已匹配”, 此時,將標(biāo)記為“已匹配”的slot對應(yīng)的CD通道傳輸?shù)男盘柊l(fā)送到FIFO中,CD通道傳輸?shù)男盘栔辽侔ㄒ韵乱环N:CDVALID信號、CDREADY信號、CDDATA信號、CDLAST信號。
在T3時刻,CRRESP信號有效,此時將寄存器組cnt中索引值為1的slot無效,并將寄存器組cnt中記錄的其余索引值全部減1,里,該無效的slot在圖6中用索引值X表示;在T3時刻,ACE總線信號滿足預(yù)設(shè)的第三觸發(fā)條件,則將寄存器組cnt/寄存器組cnt_cd中對應(yīng)的slot標(biāo)記為“已匹配”,此時,將標(biāo)記為“已匹配”的slot對應(yīng)的CR通道傳輸?shù)男盘柊l(fā)送到FIFO中,CR通道傳輸?shù)男盘栔辽侔ㄒ韵乱环N:CRVALID信號、CRREADY信號、CRRESP信號。
在T4時刻,CRRESP信號和CDLAST信號有效,將寄存器組cnt中索引值為1的slot無效,將寄存器組cnt_cd中索引值為1的slot無效,并將寄存器組cnt_cd和寄存器組cnt中記錄的其余索引值全部減1;在T4時刻ACE總線信號不滿足預(yù)設(shè)的第三觸發(fā)條件,則將寄存器組cnt/寄存器組cnt_cd中對應(yīng)的slot標(biāo)記為“不匹配”,此時,不會將抓取ACE總線通道數(shù)據(jù)。
本發(fā)明的SoC總線行為檢測方法的第一實施例,首先可以對AXI總線數(shù)據(jù)進(jìn)行抓取,與現(xiàn)有的只能對AXI總線地址和命令進(jìn)行抓取的技術(shù)方案相比,可以更準(zhǔn)確的獲知總線行為;其次可以對ACE總線信號進(jìn)行抓取,能夠適用更多的應(yīng)用場景;最后可以完成對AXI總線傳輸?shù)南嚓P(guān)參數(shù)的統(tǒng)計;如此,本發(fā)明的SoC總線行為檢測方法的第一實施例可以支持多種功能,能夠滿足SoC總線調(diào)試的多樣化需求。
第二實施例
為了能更加說明本發(fā)明的目的,在本發(fā)明第一實施例的基礎(chǔ)上,進(jìn)行進(jìn)一步的舉例說明。
圖7為本發(fā)明SoC總線行為檢測方法的第二實施例的應(yīng)用場景的示意圖,如圖7所示,處理器700代表一個主設(shè)備,處理器700和從設(shè)備701之間通過AXI總線/ACE總線進(jìn)行數(shù)據(jù)傳輸;檢測儀702用于采用本發(fā)明對處理器和從設(shè)備之間的總線數(shù)據(jù)傳輸?shù)男袨檫M(jìn)行檢測,DDR存儲器703用于存儲檢測儀得 出的總線行為檢測結(jié)果。檢測儀702通過從接口連接AXI總線/ACE總線,用于監(jiān)控AXI總線/ACE總線;檢測儀702通過主接口連接DDR存儲器703,檢測儀702對AXI總線/ACE總線的監(jiān)控屬于非侵入式監(jiān)控,因此不會干擾處理器和從設(shè)備之間的總線數(shù)據(jù)傳輸。
具體地,針對上述應(yīng)用場景,分別對總線數(shù)據(jù)抓取和總線傳輸參數(shù)的統(tǒng)計的流程進(jìn)行說明。
圖8為本發(fā)明SoC總線行為檢測方法的第二實施例中總線數(shù)據(jù)抓取的流程圖,如圖8所示,該流程包括:
步驟800:預(yù)先配置總線數(shù)據(jù)抓取的參數(shù);配置第一數(shù)據(jù)抓取信號/第二數(shù)據(jù)抓取信號有效,跳至步驟801。
具體地,預(yù)先配置總線數(shù)據(jù)抓取的參數(shù)包括:設(shè)置觸發(fā)條件,配置AXI總線/ACE總線各個通道的使能信號的有效性,設(shè)置AXI總線/ACE總線信號的時間戳抓取功能,配置AXI總線/ACE總線各個通道在DDR存儲器中存儲空間,配置AXI總線/ACE總線每個通道在DDR存儲器中存儲的粒度為1K;
進(jìn)一步地,預(yù)先配置SoC總線行為檢測的各種參數(shù)還包括:配置針對AXI總線/ACE總線至少一個通道的中斷屏蔽,配置中斷清除和抓取數(shù)據(jù)結(jié)束時的中斷信號,抓取數(shù)據(jù)結(jié)束時的中斷信號標(biāo)記為drain_out,當(dāng)drain_out拉高為高電平時,表示發(fā)出抓取數(shù)據(jù)結(jié)束時的中斷信號。
當(dāng)某一個通道配置有中斷屏蔽時,忽略對應(yīng)通道發(fā)出的中斷信號。
步驟801:判斷AXI總線/ACE總線的至少一個通道是否發(fā)出中斷信號,如果是,則跳至步驟802;否則,跳至步驟804。
步驟802:判斷發(fā)出中斷信號的通道是否配置有中斷屏蔽,如果是,則返回至步驟801;如果否,則跳至步驟803。
步驟803:將DDR中與發(fā)出中斷信號的通道對應(yīng)的數(shù)據(jù)讀出,待數(shù)據(jù)讀出后,清除中斷,返回至步驟801。
本步驟中,所述將DDR中與發(fā)出中斷信號的通道對應(yīng)的數(shù)據(jù)讀出包括:查詢中斷號,根據(jù)中斷號判斷中斷信號來自哪個通道,之后,通知CPU配置相 應(yīng)的DMA讀取方式,將對應(yīng)通道的數(shù)據(jù)從DDR讀取出來,將讀取出的數(shù)據(jù)存儲到外部存儲器如USB中。
步驟804:判斷是否結(jié)束總線數(shù)據(jù)抓取,如果不結(jié)束總線數(shù)據(jù)抓取,則返回至步驟801;如果結(jié)束總線數(shù)據(jù)抓取,則配置第一數(shù)據(jù)抓取信號/第二數(shù)據(jù)抓取信號無效,跳至步驟805。
這里,結(jié)束總線數(shù)據(jù)抓取的時機(jī)可以用戶自己確定。
步驟805:檢測儀將自身內(nèi)部的殘余數(shù)據(jù)排空,發(fā)出抓取數(shù)據(jù)結(jié)束時的中斷信號,將DDR中與沒有設(shè)置中斷屏蔽的每個通道對應(yīng)的數(shù)據(jù)讀出,在數(shù)據(jù)讀取完畢時,清除中斷,結(jié)束流程。
具體地,所述將DDR中與沒有設(shè)置中斷屏蔽的每個通道對應(yīng)的數(shù)據(jù)讀出包括:基于沒有設(shè)置中斷屏蔽的各個通道,通知CPU配置相應(yīng)的DMA讀取方式,將對應(yīng)通道的數(shù)據(jù)從DDR讀取出來,將讀取出的數(shù)據(jù)存儲到外部存儲器中。
需要說明的是,如果AXI總線/ACE總線各個通道均設(shè)置中斷屏蔽,則在檢測儀將自身內(nèi)部的殘余數(shù)據(jù)排空后,直接結(jié)束流程。
圖9為本發(fā)明SoC總線行為檢測方法的第二實施例中總線傳輸參數(shù)的統(tǒng)計的流程圖,如圖9所示,該流程包括:
步驟900:預(yù)先配置總線傳輸參數(shù)的統(tǒng)計參數(shù);配置統(tǒng)計觸發(fā)信號有效,跳至步驟901。
具體地,配置總線傳輸參數(shù)的統(tǒng)計參數(shù)包括:配置至少一個主設(shè)備的地址,用于統(tǒng)計對應(yīng)主設(shè)備在總線數(shù)據(jù)傳輸時的平均時延和所占有的平均帶寬;配置至少一個從設(shè)備的地址,用于統(tǒng)計對應(yīng)從設(shè)備在總線數(shù)據(jù)傳輸時的平均時延和所占有的平均帶寬;預(yù)先配置至少一個主設(shè)備的地址和至少一個從設(shè)備的地址,用于統(tǒng)計對應(yīng)主設(shè)備到對應(yīng)從設(shè)置之間的總線數(shù)據(jù)傳輸?shù)钠骄鶗r延和所占有的平均帶寬;配置統(tǒng)計模式。
配置總線傳輸參數(shù)的統(tǒng)計參數(shù)還可以包括:配置針對至少一個通道的統(tǒng)計結(jié)果的中斷屏蔽,配置中斷清除和統(tǒng)計結(jié)束時的中斷信號。
步驟901:判斷是否收到CPU發(fā)出的讀請求中斷,如果有,則跳至步驟902,否則,跳至步驟904。
具體地,檢測儀內(nèi)部配置有八組統(tǒng)計寄存器,每次統(tǒng)計結(jié)束后會將統(tǒng)計結(jié)果發(fā)送到一個統(tǒng)計寄存器中,當(dāng)?shù)贸鏊慕M統(tǒng)計結(jié)果時,發(fā)出讀請求中斷,請求CPU讀取統(tǒng)計結(jié)果。
步驟902:根據(jù)需要讀取的每組統(tǒng)計結(jié)果的類型,判斷對應(yīng)的統(tǒng)計結(jié)果是否設(shè)置有中斷屏蔽,如果是,則返回至步驟901;如果否,則跳至步驟903。
步驟903:將統(tǒng)計結(jié)果讀出,待數(shù)據(jù)讀出后,清除中斷,返回至步驟901。
步驟904:判斷是否結(jié)束統(tǒng)計過程,如果不結(jié)束統(tǒng)計過程,則返回至步驟901;如果結(jié)束統(tǒng)計過程,則配置統(tǒng)計觸發(fā)信號無效,跳至步驟905。
這里,結(jié)束統(tǒng)計過程的時機(jī)可以用戶自己確定。
步驟905:發(fā)出統(tǒng)計結(jié)束時的中斷信號,基于沒有設(shè)置中斷屏蔽的各個通道的統(tǒng)計結(jié)果,將剩余的統(tǒng)計結(jié)果讀出,清除中斷,結(jié)束流程,此時,可以針對統(tǒng)計結(jié)果進(jìn)行分析。
需要說明的是,如果獲取的AXI總線各個通道的統(tǒng)計結(jié)果均設(shè)置中斷屏蔽,則在步驟904之后,直接結(jié)束流程。
第三實施例
針對本發(fā)明實施例的方法,本發(fā)明實施例還提供了一種SoC總線行為檢測裝置。
圖10為本發(fā)明實施例SoC總線行為檢測裝置的第一組成結(jié)構(gòu)示意圖,如圖10所示,該裝置包括:接收模塊1000和檢測模塊1001;其中,
接收模塊1000,用于接收SoC總線信號,所述SoC總線信號包括AXI總線信號。
檢測模塊1001,用于基于接收的AXI總線信號進(jìn)行至少以下一種操作:抓取AXI總線通道數(shù)據(jù)、對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行至少一次統(tǒng)計;所抓取的AXI總線通道數(shù)據(jù)包括至少以下一種數(shù)據(jù):所述AXI總線寫數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù)、所述AXI總線讀數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù);每次統(tǒng)計的總線傳 輸參數(shù)包括:對應(yīng)的統(tǒng)計時間內(nèi)總線傳輸?shù)钠骄訒r或所占有的平均帶寬。
具體地,所述檢測模塊1001,用于在AXI總線信號中AW通道傳輸?shù)男盘枬M足預(yù)設(shè)的第一觸發(fā)條件,或AXI總線信號中AR通道傳輸?shù)男盘枬M足預(yù)設(shè)的第二觸發(fā)條件時,抓取AXI總線通道數(shù)據(jù)。
這里,所抓取的AXI總線通道數(shù)據(jù)為AXI總線信號中使能信號有效的各個通道的數(shù)據(jù)。
進(jìn)一步地,所述檢測模塊1001還包括K組寄存器,每組寄存器用于存儲總線傳輸參數(shù)的一次統(tǒng)計結(jié)果,K為大于1的整數(shù)。
在對AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)進(jìn)行統(tǒng)計時,在L組寄存器被寫入統(tǒng)計結(jié)果時,讀取所述L組寄存器中的統(tǒng)計結(jié)果,L為小于K的整數(shù)。
進(jìn)一步地,所述接收模塊1000,還用于接收ACE總線信號。
在接收SoC總線信號之后,所述方法還包括:基于接收的ACE總線信號抓取ACE總線通道數(shù)據(jù)。
具體地,所述檢測模塊1001,用于在ACE總線信號AC通道傳輸?shù)男盘枬M足預(yù)設(shè)的第三觸發(fā)條件時,抓取ACE總線通道數(shù)據(jù)。
這里,所抓取的ACE總線通道數(shù)據(jù)為ACE總線信號中使能信號有效的各個通道的數(shù)據(jù)。
在實際應(yīng)用中,所述接收模塊1000和檢測模塊1001均可由位于終端設(shè)備中的中央處理器(Central Processing Unit,CPU)、微處理器(Micro Processor Unit,MPU)、數(shù)字信號處理器(Digital Signal Processor,DSP)、或現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)等實現(xiàn)。
第四實施例
為了能更加體現(xiàn)本發(fā)明的目的,在本發(fā)明第三實施例的基礎(chǔ)上,進(jìn)行進(jìn)一步的舉例說明。
圖11為本發(fā)明實施例SoC總線行為檢測裝置的第二組成結(jié)構(gòu)示意圖,如圖11所示,該裝置包括:第一時序調(diào)整單元1100、第二時序調(diào)整單元1101、AXI總線檢測單元1102、ACE總線檢測單元1103、統(tǒng)計單元1104、配置單元 1105、第一清除單元1106、第二清除單元1107、數(shù)據(jù)傳輸單元1108和第三時序調(diào)整單元1109;其中,
配置單元1105,用于配置總線數(shù)據(jù)抓取的參數(shù)和總線傳輸參數(shù)的統(tǒng)計參數(shù),將配置完成的總線數(shù)據(jù)抓取的參數(shù)發(fā)送至AXI總線檢測單元/ACE總線檢測單元,將配置完成的總線傳輸參數(shù)的統(tǒng)計參數(shù)發(fā)送至統(tǒng)計單元。這里,配置總線數(shù)據(jù)抓取的參數(shù)和總線傳輸參數(shù)的統(tǒng)計參數(shù)的過程已經(jīng)在本發(fā)明第二實施例中作出詳細(xì)說明,這里不再贅述。
進(jìn)一步地,配置單元1105可以接收來自外部設(shè)備的配置信息,并基于接收到的配置信息來配置相關(guān)參數(shù);配置單元1105與外部設(shè)備通過APB((Advanced High performance Bus)接口進(jìn)行交互。
第一時序調(diào)整單元1100,用于接收AXI總線各個通道的信號,對接收的各個通道的信號進(jìn)行時序調(diào)整,將時序調(diào)整的各個通道的信號分別發(fā)送至AXI總線檢測單元、第一清除單元、第二清除單元和統(tǒng)計單元;這里,第一時序調(diào)整單元1100可以采用基本邏輯單位slice實現(xiàn);圖1中,AW、AR、W、R、B分別表示AXI總線AW通道、AR通道、W通道、R通道和B通道。
第二時序調(diào)整單元1101,用于接收ACE總線各個通道的信號,對接收的各個通道的信號進(jìn)行時序調(diào)整,將時序調(diào)整的各個通道的信號分別發(fā)送至ACE總線檢測單元、第一清除單元和統(tǒng)計單元;這里,第二時序調(diào)整單元1100可以采用基本邏輯單位slice實現(xiàn);圖1中,AC、CR、CD分別表示AXI總線AC通道、CR通道和CD通道。
第一清除單元1106,用于實時監(jiān)控AXI總線行為和ACE總線行為,接收第一數(shù)據(jù)抓取信號和第二數(shù)據(jù)抓取信號,在第一數(shù)據(jù)抓取信號有效時,對第一數(shù)據(jù)抓取信號有效前AXI總線檢測單元接收的數(shù)據(jù)進(jìn)行清除;在第二數(shù)據(jù)抓取信號有效時,對第二數(shù)據(jù)抓取信號有效前ACE總線檢測單元接收的數(shù)據(jù)進(jìn)行清除;如此,可以防止對應(yīng)數(shù)據(jù)抓取信號有效前接收的總線數(shù)據(jù)對總線數(shù)據(jù)抓取造成影響。
第二清除單元1107,用于實時監(jiān)控AXI總線行為,接收統(tǒng)計觸發(fā)信號,在 統(tǒng)計觸發(fā)信號有效時,對統(tǒng)計觸發(fā)信號有效前統(tǒng)計單元接收的數(shù)據(jù)進(jìn)行清除;如此,可以防止統(tǒng)計觸發(fā)信號有效前統(tǒng)計單元接收的數(shù)據(jù)對后續(xù)的總線傳輸參數(shù)的統(tǒng)計過程造成影響。
AXI總線檢測單元1102,用于在第一數(shù)據(jù)抓取信號有效時,對接收的AXI總線各個通道的數(shù)據(jù)進(jìn)行抓取,將抓取的各個通道的數(shù)據(jù)發(fā)送至數(shù)據(jù)傳輸單元。這里,對AXI總線各個通道的數(shù)據(jù)進(jìn)行抓取的過程已經(jīng)在本發(fā)明第一實施例作出說明,這里不再重復(fù)。
ACE總線檢測單元1103,用于在第二數(shù)據(jù)抓取信號有效時,對接收的ACE總線各個通道的數(shù)據(jù)進(jìn)行抓取,將抓取的各個通道的數(shù)據(jù)發(fā)送至數(shù)據(jù)傳輸單元。這里,對ACE總線各個通道的數(shù)據(jù)進(jìn)行抓取的過程已經(jīng)在本發(fā)明第一實施例作出說明,這里不再重復(fù)。
統(tǒng)計單元1104,用于在統(tǒng)計觸發(fā)信號有效時,對進(jìn)行AXI總線數(shù)據(jù)傳輸時總線傳輸參數(shù)依次進(jìn)行至少一次統(tǒng)計,將得出的統(tǒng)計結(jié)果通過配置單元向外發(fā)送。這里,對總線傳輸參數(shù)的統(tǒng)計過程已經(jīng)在本發(fā)明第一實施例作出說明,這里不再重復(fù)。
數(shù)據(jù)傳輸單元1108,用于對接收的數(shù)據(jù)進(jìn)行打包處理,并將打包處理后的數(shù)據(jù)發(fā)送至第三時序調(diào)整單元。
具體地,數(shù)據(jù)傳輸單元1108包括先入先出隊列(First Input First Output,F(xiàn)IFO)子單元和數(shù)據(jù)處理子單元;其中,F(xiàn)IFO子單元用于接收來自AXI總線檢測單元1102和ACE總線檢測單元1103的數(shù)據(jù),在接收的至少一個通道的數(shù)據(jù)達(dá)到對應(yīng)的通道閾值時,啟動寫操作,將達(dá)到通道閾值的數(shù)據(jù)發(fā)送至數(shù)據(jù)處理子單元;示例性地,當(dāng)FIFO深度為16時,AW通道、AR通道和AC通道的通道閾值為4,W通道、R通道、B通道、CD通道和CR通道的閾值為8。這里,如果FIFO子單元中,如果多個通道的數(shù)據(jù)同時達(dá)到對應(yīng)的通道閾值,則采用預(yù)設(shè)的輪詢順序輪詢將對應(yīng)的多個通道的數(shù)據(jù)發(fā)送至數(shù)據(jù)處理子單元。
數(shù)據(jù)處理子單元,用于將接收的各個通達(dá)的數(shù)據(jù)按照約定的數(shù)據(jù)結(jié)構(gòu)組裝后輸出。這里,為了降低開發(fā)難道和驗證復(fù)雜程度,SoC總線行為檢測裝置向 外輸出數(shù)據(jù)的數(shù)據(jù)寬度規(guī)定為64位,這樣,數(shù)據(jù)處理子單元向外輸出的數(shù)據(jù)的數(shù)據(jù)寬度需要是恒定值。也就是說,數(shù)據(jù)處理子單元要將接收的數(shù)據(jù)組合成為固定長度的數(shù)據(jù)并向外輸出;特別地,當(dāng)AXI總線各個通道的數(shù)據(jù)抓取過程結(jié)束時,如果FIFO子單元中的至少一個通道的數(shù)據(jù)沒有達(dá)到對應(yīng)的通道閾值,這時,針對對應(yīng)通道的數(shù)據(jù)添入冗余數(shù)據(jù),使之達(dá)到對應(yīng)的通道閾值,這樣有利于數(shù)據(jù)處理子單元的數(shù)據(jù)處理過程。
為了高效地傳輸數(shù)據(jù),在該數(shù)據(jù)處理子單元占用中設(shè)置了兩個狀態(tài)機(jī),一個是地址狀態(tài)機(jī),用于地址的產(chǎn)生和拆分(比如跨4K傳輸時,需要將一個完整的數(shù)據(jù)結(jié)構(gòu)打斷),另一個是地址狀態(tài)機(jī),用于數(shù)據(jù)的合并和拆分,示例性地,AXI總線通道數(shù)據(jù)的數(shù)據(jù)寬度是32位時,數(shù)據(jù)處理子單元就需要將兩個AXI總線通道數(shù)據(jù)合并后向外輸出;在AXI總線的通道數(shù)據(jù)的數(shù)據(jù)寬度時32位時,數(shù)據(jù)處理子單元將一個AXI總線的通道數(shù)據(jù)拆分為兩組數(shù)據(jù)向外輸出;如此,數(shù)據(jù)處理子單元通過數(shù)據(jù)的合并和拆分,可以大大提高數(shù)據(jù)的傳輸效率。
第三時序調(diào)整單元1109,用于對接收的數(shù)據(jù)進(jìn)行時序調(diào)整,并將經(jīng)時序調(diào)整后的數(shù)據(jù)發(fā)送至外部的存儲單元中;這里,第三時序調(diào)整單元1109可以采用基本邏輯單位slice實現(xiàn)。
進(jìn)一步地,為了解決抓取的數(shù)據(jù)量大,外部的存儲單元無法存取的問題,在外部的存儲單元中為每個通道的數(shù)據(jù)設(shè)置一塊受限的地址空間,地址空間粒度為1K,在這塊地址空間上進(jìn)行寫操作,當(dāng)抓取的一個通道的數(shù)據(jù)的數(shù)據(jù)量達(dá)到對應(yīng)通道的地址空間的一半時,發(fā)出中斷,通知CPU將抓取的對應(yīng)通道的數(shù)據(jù)讀取。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用硬件實施例、軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品 的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。