欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

包括并行和串行訪問的片上系統(tǒng)的測試方法和裝置的制作方法

文檔序號:6479040閱讀:729來源:國知局
專利名稱:包括并行和串行訪問的片上系統(tǒng)的測試方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及印刷電路板領(lǐng)域,更具體地,涉及印刷電路板的測試。
背景技術(shù)
聯(lián)合測試行動組(JTAG)是指針對測試訪問端口的IEEE 1149標(biāo)準(zhǔn),用于使用邊界 掃描來測試印刷電路板。自動測試產(chǎn)生(ATG)工具使用JTAG來測試印刷電路板。已經(jīng)開發(fā) 了邊界掃描描述語言(BSDL)作為板級JTAG的IEEE 1149. 1標(biāo)準(zhǔn)的一部分,并且還已經(jīng)開 發(fā)了分級掃描描述語言(HSDL)作為BSDL的擴(kuò)展。BSDL/HSDL描述了在板上或板的組件上 可用的資源(其中,HSDL描述了由其他組件構(gòu)成的組件)。雖然BSDL/HSDL對于板級JTAG 是高效的,但是從板級JTAG至片級JTAG的發(fā)展突出了 BSDL/HSDL的局限性。正在對指令JTAG (IJTAG)進(jìn)行標(biāo)準(zhǔn)化(表示為P1687標(biāo)準(zhǔn)),來克服與從板級JTAG 至片級JTAG的轉(zhuǎn)換相關(guān)聯(lián)的現(xiàn)有JTAG局限性;然而,與IJTAG相關(guān)聯(lián)的進(jìn)行中的工作已經(jīng) 揭示出,BSDL/HSDL不能夠滿足片級JTAG測試的描述需求。BSDL/HSDL依賴于組成邊界掃 描寄存器的單元的有序列表,然而,這樣的靜態(tài)描述不適合描述IJTAG中所需的復(fù)雜動態(tài) 掃描鏈。此外,BSDL/HSDL不能提供用于描述系統(tǒng)的每個組件所需的測試過程的空間。

發(fā)明內(nèi)容
本發(fā)明提供了一種新的用于片級JTAG測試的硬件描述語言。這種新的硬件描述 語言也稱作被稱作新BSDL(NSDL),使得能夠描述片上系統(tǒng)的測試資源,從而使得能夠以便 于片上系統(tǒng)測試的方式來描述片上系統(tǒng)。本發(fā)明提供了一種自下至上的方法來描述片上系 統(tǒng)。本發(fā)明支持片上系統(tǒng)的每個組件的算法描述,并且支持片上系統(tǒng)的組件之間的互連的 算法描述,從而能夠產(chǎn)生整個片上系統(tǒng)或部分片上系統(tǒng)的算法描述。在一個實施例中,提供了一種用于測試片上系統(tǒng)的方法,該片上系統(tǒng)具有通過多 個互連而相互連接的多個組件。在一個這樣的實施例中,該方法包括接收片上系統(tǒng)的每個 組件的算法描述;接收片上系統(tǒng)的組件之間的多個互連的算法描述;接收片上系統(tǒng)的算法 描述,該算法描述使用組件的算法描述和互連的算法描述;以及存儲片上系統(tǒng)的算法描述。在一個實施例中,提供了一種用于測試片上系統(tǒng)的組件的方法,其中,組件包括至 少一個寄存器。在一個這樣的實施例中,該方法包括接收組件的算法描述,其中,對于由組 件支持的至少一個函數(shù)中的每一個,算法描述定義了該函數(shù)到針對組件的所述至少一個寄 存器的至少一個寄存器值的映射;以及存儲組件的算法描述。對于片上系統(tǒng)的每個組件可 以重復(fù)該方法。


結(jié)合附圖,通過考慮以下詳細(xì)描述,能夠容易理解本發(fā)明的教導(dǎo),在附圖中圖1示出了測試環(huán)境的高級框圖;圖2示出了圖1的測試環(huán)境的片上系統(tǒng)的高級框圖3示出了對“無訪問”組件的輸入-輸出認(rèn)識;圖4示出了對“受限訪問”或“全訪問”組件的輸入-輸出認(rèn)識;圖5示出了對組件的內(nèi)部掃描路徑的片(slice)的顯式引用;圖6示出了交叉器件的表示的高級框圖;圖7示出了使用通用交叉器件來動態(tài)修改片上系統(tǒng)的掃描路徑的高級框圖;圖8示出了可以使用NSDL描述的一個交叉器件的高級框圖;圖9示出了可以使用NSDL描述的一個交叉器件的高級框圖;圖10示出了可以使用NSDL描述的一個交叉器件的高級框圖;圖11示出了圖1的測試環(huán)境的測試系統(tǒng)的高級框圖;圖12示出了通過JTAG連接來測試系統(tǒng)的圖1的測試系統(tǒng)執(zhí)行的示例方法;圖13示出了通過JTAG連接來測試系統(tǒng)的圖1的測試系統(tǒng)執(zhí)行的示例方法;圖14示出了通過JTAG連接來測試系統(tǒng)的圖1的測試系統(tǒng)執(zhí)行的示例方法;圖15示出了使用圖2的片上系統(tǒng)的組件之一的描述來確定用于測試該組件的測 試過程的寄存器比特值;圖16示出了使用圖2的片上系統(tǒng)的組件的描述來確定用于測試圖2的片上系統(tǒng) 的組件之一的測試過程的比特流;圖17示出了在IJTAG/NSDL框架中測試系統(tǒng)的組件的圖1的測試系統(tǒng)執(zhí)行的示例 方法;圖18示出了示例片上系統(tǒng)的高級框圖;圖19示出了使用圖18的片上系統(tǒng)的組件之一的描述來確定用于測試該組件的測 試過程的寄存器比特值;圖20示出了使用圖18的片上系統(tǒng)的組件的描述來確定圖18的片上系統(tǒng)的組件 的描述;圖21示出了并行訪問接口的通用連接方案的高級框圖;圖22是示出了兩個示例并行訪問連接方案的高級框圖;圖23A示出了示例測試環(huán)境的高級框圖;圖23B示出了圖23A的示例測試環(huán)境內(nèi)的數(shù)據(jù)流的高級框圖;圖24示出了并行端口與片上系統(tǒng)的核心之間的示例連接的高級框圖;圖25示出了并行端口與片上系統(tǒng)的核心之間的示例連接的高級框圖;圖26示出了并行端口與片上系統(tǒng)的核心之間的示例連接的高級框圖;圖27示出了并行端口與片上系統(tǒng)的核心之間的示例連接的高級框圖;圖28示出了并行訪問接口的內(nèi)部連接方案的高級框圖;圖29示出了用于描述片上系統(tǒng)的測試資源的方法;以及圖30示出了適合于執(zhí)行本文描述的函數(shù)的通用計算機(jī)的高級框圖。為便于理解,在可能的情況下,使用相同的附圖標(biāo)記來指示附圖中相同的元件。
具體實施例方式如這里所述,正在將指令JTAG(IJTAG)標(biāo)準(zhǔn)化(被稱作P1687標(biāo)準(zhǔn),或備選地, IJTAG)來克服與從板級JTAG測試至片級JTAG測試的轉(zhuǎn)換相關(guān)聯(lián)的現(xiàn)有JTAG局限性;然而,與IJTAG相關(guān)聯(lián)的進(jìn)行中的工作已經(jīng)揭示出,BSDL/HSDL不能夠滿足片級邊界掃描的描 述需求。本發(fā)明提供了一種克服用于片級JTAG測試的BSDL/HSDL的局限性的新硬件描述 語言。這種新硬件描述語言在這里被稱作新BSDL(NSDL)。NSDL語言實現(xiàn)了片上系統(tǒng)的測 試資源的描述,從而便于片上系統(tǒng)的測試。從以下NSDL描述中可以看到NSDL描述語言的 許多優(yōu)點。如這里所述,新硬件描述語言NSDL還實現(xiàn)了基于JTAG的測試中的附加改進(jìn)。NSDL 描述語言使得能夠使用所謂的“交叉器件”來便于片上系統(tǒng)器件的測試。交叉器件實現(xiàn)了 對片上系統(tǒng)的系統(tǒng)掃描路徑的動態(tài)修改。NSDL描述語言還使得能夠使用并行訪問來便于片 上系統(tǒng)器件的測試??梢远喾N方式來提供對片上系統(tǒng)器件的并行訪問。此外,應(yīng)當(dāng)注意,雖 然這些改進(jìn)已由NSDL描述語言實現(xiàn),但是這些改進(jìn)也可以結(jié)合今后開發(fā)的其他描述語言 來利用。在硬件開發(fā)過程中,有三個主要參與方器件供應(yīng)商、系統(tǒng)架構(gòu)師、以及測試工程 師。器件供應(yīng)商制造特定器件。系統(tǒng)架構(gòu)師使用由器件供應(yīng)商提供的器件來構(gòu)成系統(tǒng)。測 試工程師對該系統(tǒng)進(jìn)行測試,以確保該系統(tǒng)正確運行(例如,測試系統(tǒng)器件之間的互連、器 件函數(shù)、系統(tǒng)函數(shù)等)。NSDL語言可以由器件供應(yīng)商使用(例如,來描述其器件),由系統(tǒng) 架構(gòu)師使用(例如,用于構(gòu)成系統(tǒng)),以及由測試工程師使用(例如,用于測試該系統(tǒng))。因 此,預(yù)期的是在整個硬件開發(fā)過程中使用NSDL語言。在片上系統(tǒng)開發(fā)過程中,組成系統(tǒng)的器件可以是“軟”器件,S卩,使用某種硬件描述 語言的器件描述。在該過程中,系統(tǒng)架構(gòu)師在系統(tǒng)級開發(fā)流中將軟器件與系統(tǒng)級代碼集成, 以獲得最終由測試工程師進(jìn)行測試的片上系統(tǒng)。由于片上系統(tǒng)的復(fù)雜度增加(例如,在器 件數(shù)目、器件之間的互連、器件內(nèi)依賴性、器件間依賴性等方面),測試片上系統(tǒng)的復(fù)雜度也 增加。NSDL語言使得能夠容易描述并從而容易測試任何復(fù)雜度的片上系統(tǒng)。圖1示出了測試環(huán)境的高級框圖。具體地,測試環(huán)境100包括片上系統(tǒng)(S-o-C)llO 和測試系統(tǒng)(TS) 120。TS 120測試S-O-C 110 (例如,測試S-o_C 110的各個單獨組件(包 括組件函數(shù))、S-o-C 110上器件之間的互連、S-o-C 110的系統(tǒng)級函數(shù)等,及其各種組合)。 TS 120經(jīng)由測試訪問端口 (TAP) 115測試S-o-C 110,該測試訪問端口(TAP) 115包括輸入 端口 115工(表示為TDI端口)以及輸出端口 115。(表示為TDO端口)。在一個實施例中,在P1687環(huán)境中,通過IEEE 1149. 1標(biāo)準(zhǔn)描述TAP115。盡管這 里主要使用TDI端口 115I*TD0端口 115。示出和描述,但是TAP 115可以包括其他控制端 口,例如,TCK端口、TMS端口、以及可選地,TRST端口(出于清楚描述目的已經(jīng)省略)。此 外,盡管主要關(guān)于由IEEE 1149. 1標(biāo)準(zhǔn)描述的TAP來示出和描述,但是TAP 115可以利用各 種其他端口(例如,由其他標(biāo)準(zhǔn)描述的端口等,及其各種組合)。TS 120使用測試過程(test procedure)對S-o-C 110進(jìn)行測試。TS 120可以使 用一個或多個測試過程來執(zhí)行一個或多個測試。測試過程可以用于測試組件的一部分(例 如,組件函數(shù)、組件函數(shù)集、組件內(nèi)依賴性等)、組件、一組組件(例如,組件之間的互連、組 件間依賴性等)、一個或多個系統(tǒng)級函數(shù)等,及其各種組合。TS 120產(chǎn)生測試過程來測試S-o-C 110。測試過程指定測試S-Q-CllO所需的信 息。針對S-o-C 110的測試過程可以指定S-o-C 110的描述(包括對S-o-C 110的各個單 獨組件中的每一個的描述,以及S-o-C 110的系統(tǒng)級描述)。測試過程可以指定輸入測試向
5量和預(yù)期輸出測試向量。測試過程可以包括與測試相關(guān)聯(lián)的其他信息,例如,測試所需的估 計的時間、針對測試輸出數(shù)據(jù)處理(例如,日志記錄、錯誤觸發(fā)、恢復(fù)動作等)等,及其各種組合。TS 120使用S-O-C 110的描述(包括對S_0_C 110的各個單獨組件中的每一個的 描述,以及S-O-C 110的系統(tǒng)級描述)來產(chǎn)生測試過程以測試S-O-C 110。可以使用NSDL 來指定對S-O-C 110的各個單獨組件的描述。單獨組件的描述可以描述該組件的內(nèi)部掃描 路徑。可以使用NSDL來指定S-O-C 110的系統(tǒng)級描述。S-O-C 110的系統(tǒng)級描述可以描述 S-O-C 110的拓?fù)?例如,組件之間的互連、組件間依賴性等)。S-O-C 110的描述信息(包括各個單獨組件的描述、系統(tǒng)級描述等)包括用于為 S-O-C 110產(chǎn)生測試過程的信息。例如,描述信息包括組件掃描路徑信息、系統(tǒng)拓?fù)湫畔⒌龋?可以對這些信息進(jìn)行處理以確定掃描路徑長度信息、掃描路徑分級信息等,及其各種組合。 S-O-C 110的描述信息可以包括這里描述的任何其他描述信息。TS 120通過對S-O-C 110執(zhí)行一個或多個測試過程來測試S-o-CllO。TS 120為 要執(zhí)行的測試產(chǎn)生輸入比特流和預(yù)期測試結(jié)果(例如,預(yù)期輸出比特值或輸出比特流)。TS 120向TDI端口 115工提供輸入比特流(被稱作輸入測試向量),并接收來自TDO端口 115。 的相應(yīng)輸出比特流(被稱作輸出測試向量)。TS 120將實際輸出比特流與預(yù)期輸出比特流 進(jìn)行比較,以確定測試結(jié)果。TS 120可以存儲測試結(jié)果。TS 120可以執(zhí)行一個或多個測試過程來測試S-O-C 110。TS 120可以以某種方式 組織對多個測試過程的執(zhí)行,來最小化總測試時間(由于對于相同的測試過程的集合,不 同調(diào)度決策會得到不同的測試完成時間)。TS 120可以指定測試調(diào)度(即,對執(zhí)行測試過 程所必須按照的順序進(jìn)行指定的調(diào)度)。TS 120可以執(zhí)行與片上系統(tǒng)的測試相關(guān)聯(lián)的多種 其他函數(shù)。圖2示出了圖1的測試環(huán)境的片上系統(tǒng)的高級框圖。如圖2所示,S-O-C 110包 括多個組件210A-210E(共同示為組件210),這些組件通過多個組件互連220 (共同示為組 件互連220)而相互連接。組件210可以包括可以包括在片上系統(tǒng)中的任何組件??梢允褂肗SDL來描述組 件210。組件210在這里也可以被稱作測試資源。在一個實施例中,在根據(jù)P1687標(biāo)準(zhǔn)的系統(tǒng)中,組件210可以包括IP、儀器 (instrument)、和/或選擇儀器比特(SIB)。知識產(chǎn)權(quán)(IP)器件是需要測試的正常器件。儀器是不需要測試的、提供適于幫助測試的功能(例如,讀取值、監(jiān)視值、提供有 用信息等,及其各種組合)的器件。例如,儀器可以是要用于對加速壽命測試進(jìn)行參數(shù)化的 溫度傳感器的輸出。例如,儀器可以是對于軟件定義的無線電裝置的獲取階段,用于校準(zhǔn)可 調(diào)諧濾波器的傳感器的參考值。換言之,儀器可以幫助在初始系統(tǒng)測試期間以及在整個系 統(tǒng)壽命期間進(jìn)行測試。由于IP/儀器可能非常類似,這里可以交換地使用這兩個術(shù)語。此外,由于IP和 儀器可以用作片上系統(tǒng)的組件,因此更一般地,IP和儀器在這里可以被稱作組件。IP/儀器可以包括分級掃描路徑。具有分級掃描路徑的組件包括內(nèi)部掃描路徑,當(dāng) 將該組件引入到系統(tǒng)中時,該內(nèi)部掃描路徑成為系統(tǒng)掃描路徑的一部分。
SIB是分級掃描路徑單元,其使得能夠動態(tài)地將掃描路徑的一部分包括在掃描路 徑中或從掃描路徑中去除(這取決于測試中將會使用哪個或哪些器件)。SIB形成當(dāng)前 P1687標(biāo)準(zhǔn)草案的硬件提議的一部分。一般而言,分級改善了對片上系統(tǒng)的組件的測試。例如,分級實現(xiàn)了測試期間對有 源系統(tǒng)掃描路徑的最小化以及對組件的隔離,從而減少了對片上系統(tǒng)的組件的訪問時間。在其他實施例中,在根據(jù)其他標(biāo)準(zhǔn)的系統(tǒng)中,組件210可以包括其他類型的組件。在一個實施例中,組件210可以包括一個或多個交叉器件。片上系統(tǒng)測試中對交 叉器件的使用是通過使用NSDL語言來實現(xiàn)的(即,大多數(shù)這樣的器件不能由BSDL/HSDL來 描述)。參照圖6-10可以更好地理解片上系統(tǒng)測試中對交叉器件的使用。如圖2所示,組件210中的每一個包括多個內(nèi)部寄存器。具體地,組件210A包括 三個寄存器(A。、A^ A2),組件210b包括六個寄存器(B。、B。B2、B3> B4, B5),組件210c包括五 個寄存器(Cc^CrCyCyC4),組件210d包括三個寄存器(D0,D1,D2),以及組件210E包括四個 寄存器(Ep E1, E2, E3)。每個組件210的寄存器形成針對該組件210的內(nèi)部掃描路徑。可 以使用NSDL來描述每個組件210的內(nèi)部掃描路徑。如圖2所示,每個組件210支持至少一個函數(shù)。具體地,組件210a支持三個函數(shù), 組件210b支持四個函數(shù),組件210。支持三個函數(shù),組件210d支持兩個函數(shù),組件210e支持 一個函數(shù)。由每個組件210支持的函數(shù)分別利用每個組件210的寄存器(即,內(nèi)部掃描路 徑)。因此,可以使用NSDL來描述每個組件210支持的函數(shù)。如圖2所示,S-O-C 110的組件210經(jīng)由S_0_C 110的組件互連220連接。組件 210(即,組件210的內(nèi)部掃描路徑)和組件210之間的組件互連220形成從S-O-C 110的輸 入測試端口(TDI)至S-O-C 110的輸出測試端口(TDO)的系統(tǒng)掃描路徑??梢允褂肗SDL來 定義系統(tǒng)掃描路徑(例如,通過使用NSDL來定義各個單獨組件中的每一個,以及使用NSDL 來定義系統(tǒng)的構(gòu)成,從而形成基于NSDL的總體系統(tǒng)描述)。如這里所述,基于NSDL的S-O-C 110的總體系統(tǒng)描述是算法描述(即,由于在使 用相湖關(guān)聯(lián)的算法的集合中,描述組件210、組件互連220、組件內(nèi)以及組件間依賴性等中 的每一個)。S-O-C 110的算法描述包括適于在測試S-O-C 110時由TS 120使用的信息 (例如,掃描路徑長度信息、掃描路徑分級信息等,及其各種組合)??梢酝ㄟ^以下方式來描述片上系統(tǒng)描述片上系統(tǒng)的每個組件(例如,描述IP、儀 器、交叉器件(當(dāng)使用時)等,及其各種組合),描述片上系統(tǒng)的拓?fù)?包括描述片上系統(tǒng)的 每個組件之間的互連、組件內(nèi)以及組件間依賴性等,及其各種組合)。在一個實施例中,在根據(jù)P1687標(biāo)準(zhǔn)的系統(tǒng)中,組件可以包括IP、儀器、和/或選擇 儀器比特(SIB),片上系統(tǒng)的描述需要每個IP/儀器的描述(例如,包括內(nèi)部寄存器的含 義、要應(yīng)用/觀察的過程/比特流集合等),每個SIB的描述(當(dāng)使用SIB時),系統(tǒng)掃描路 徑的構(gòu)成的描述(即,掃描路徑如何通過片上系統(tǒng),包括每個組件的內(nèi)部掃描路徑如何通 過組件等)等,及其各種組合。將IP插入到掃描鏈中,這能夠?qū)崿F(xiàn)通過掃描鏈對IP的測試。片上系統(tǒng)內(nèi)對IP的 使用是根據(jù)針對IP的訪問權(quán)限級別(APL)(例如,無訪問、受限訪問、全訪問)而改變的。如果針對IP的APL是“無訪問”,則測試工具不知道IP的內(nèi)部,因此必須依賴于由 IP的供應(yīng)商提供的信息。例如,必須提供針對IP的比特流集合(即,輸入比特流和預(yù)期輸
7出比特流)。在這種情況下,認(rèn)為該比特流為靜態(tài)比特流。測試工具必須將針對IP的靜態(tài) 輸入比特流插入到針對片上系統(tǒng)的系統(tǒng)比特流中,并對IP的供應(yīng)商所指定的相應(yīng)輸出比 特流進(jìn)行處理。如果針對IP的APL是“全訪問”,則測試工具完全知道IP的內(nèi)部,包括用NSDL描 述的IP的內(nèi)部掃描鏈以及用選擇的描述語言描述的IP的源。在這種情況下,測試工具能 夠直接計算針對IP的所需的輸入比特流和預(yù)期輸出比特流(例如,使用其自己的算法),或 者IP的供應(yīng)商能夠提供預(yù)先計算的比特流的集合(例如,作為靜態(tài)和/或動態(tài)比特流)。如果針對IP的APL是“受限訪問”,則測試工具僅有限地知道IP的內(nèi)部。提供IP 的NSDL描述。IP的NSDL描述包括IP的內(nèi)部掃描鏈的描述,以及可以用于測試IP的過程 集。在這種情況下,測試工具使用IP的描述,以產(chǎn)生在測試IP時使用的比特流(例如,輸 入比特流和預(yù)期輸出比特流)。將儀器插入到片上系統(tǒng)中,這能夠?qū)崿F(xiàn)了通過檢查一些值或條件來測試片上系 統(tǒng)。儀器可以支持可用于測試目的的一個或多個函數(shù)。因此,雖然IP的描述僅包括測試IP 所需的過程集,但是儀器的描述還包括可以用于訪問儀器的函數(shù)的過程(和/或比特流) 集。儀器的描述可以包括從構(gòu)成儀器的寄存器的寄存器的值方面對儀器的函數(shù)的描述。因 此,使用NSDL,IP和儀器之間的唯一不同在于過程集。如這里關(guān)于IP和儀器所述,可以使用過程來指定IP和儀器的描述。過程可以視 為每次調(diào)用過程時要執(zhí)行的原子指令的拼接。針對IP/儀器的過程描述可以取決于IP/儀器的APL。如果組件的APL是“無訪問”,則過程可以表示為比特流值(即,要寫入掃描路徑中 的值以及要從掃描路徑中讀取的值)。如果組件的APL是“受限訪問”或“全訪問”,則對IP/儀器的掃描路徑的知曉提供 了相對于IP/儀器的過程的表示的附加自由度,使得可以構(gòu)成過程。過程的空間構(gòu)成指示 可以如何使用不同過程的輸入/輸出來構(gòu)成片上系統(tǒng)的系統(tǒng)掃描路徑的輸入/輸出。時間 構(gòu)成指示可以如何將過程順序地應(yīng)用于相同組件(例如,IP/儀器),以執(zhí)行特定操作。此 外,過程可以嵌套至和/或嵌套自更大的過程和/或多個更小過程。過程包括過程屬性(即,過程的描述)以及過程體。過程的描述可以包括以下信 息例如長度、忙模式指示、進(jìn)入條件、退出條件、依賴性、內(nèi)部掃描路徑描述等,及其各種組
I=I O固定長度過程可以定義為始終占用相同量的時間來執(zhí)行的過程。可變長度過程可 以定義為占用可變量的時間來執(zhí)行的過程。可以使用其他時間值(例如,最佳和最差情況 時間、平均時間等,及其各種組合)來定義可變長度過程。在一個實施例中,必須為每個可 變長度過程提供至少一個退出條件。可以從周期角度來表達(dá)過程長度(或者,在不能夠用周期來表達(dá)的情況下,用諸 如秒等一些其他絕對項或時間的一些其他度量來表達(dá))。例如,對于采取物理度量的儀器、 異步儀器、在非同步時鐘域中進(jìn)行操作的儀器等,不能從周期角度來表達(dá)過程長度。如果以 時間來表達(dá)過程長度,則測試工具可以確定周期計數(shù)(例如,利用對實際測試時鐘周期的 知曉),或者估計周期計數(shù)(例如,使用參考時鐘周期)。過程應(yīng)當(dāng)聲明過程忙模式。如果在執(zhí)行過程期間,掃描鏈的值不得改變,則過程的忙模式為“保持”,(即,每次掃描訪問必須將其重置為相同值)。例如,處于“保持”模式的 儀器可以是組合(combinatorial)器件(即,每次修改都會影響結(jié)果)。如果在過程的執(zhí)行 期間,掃描鏈的值不重要,則過程的忙模式為“不理會”。例如,處于“不理會”模式的儀器可 以是僅當(dāng)被觸發(fā)時才對輸入進(jìn)行采樣的任何器件。片上系統(tǒng)的描述還包括與片上系統(tǒng)相關(guān)聯(lián)的依賴性的描述。片上系統(tǒng)的依賴性包 括組件內(nèi)依賴性(片上系統(tǒng)的一個組件的函數(shù)或過程之間),以及組件間依賴性(片上系統(tǒng) 的不同組件的函數(shù)或過程之間)??梢砸栽S多方式來指定依賴性的描述(例如,通過列出這 些依賴性、基于名稱的鏈接等,及其各種組合)。例如,函數(shù)X可以通過〃函數(shù)X依賴于函數(shù)XI,X2,…,Xn的完成〃這樣的指示 來描述,這意味著該函數(shù)X在每個所列的子函數(shù)完成之前不能開始其執(zhí)行。例如,過程X可 以通過"過程X依賴于過程Y"這樣的指示來描述,這意味著,出于多種原因,在執(zhí)行過程X 之前,必須完成過程Y??梢砸愿鞣N其他方式來描述片上系統(tǒng)的依賴性。應(yīng)當(dāng)聲明片上系統(tǒng)的組件內(nèi)和組件間依賴性。依賴性的聲明使得測試工具能夠執(zhí) 行測試調(diào)度。在一個實施例中,可以將依賴性聲明為該依賴性的過程的聲明部分的一部分。 在一個實施例中,可以使用顯式命名來聲明依賴性。在一個這樣的實施例中,通用參數(shù)可以 用于將外部依賴性與組件的符號名鏈接起來,其中該組件與該外部依賴性相關(guān)聯(lián)。使用NSDL,可以以各種其他方式來執(zhí)行依賴性的描述和聲明。針對組件(或組件組)的一個過程(或多個過程)的構(gòu)建基于組件的APL而變化, 組件的APL影響對與組件相關(guān)聯(lián)的輸入/輸出信息的認(rèn)知。圖3示出了對“無訪問”組件300的輸入-輸出認(rèn)知。如果組件的APL是“無訪 問”,則對于由組件支持的每個函數(shù),函數(shù)體包括輸入流信息(要用于構(gòu)成輸入比特流)、 函數(shù)長度和掃描路徑長度信息、以及輸出比特流信息(例如,預(yù)期的輸出比特流、所需的輸 出比特流處理等,及其各種組合)。圖4示出了對“受限訪問”或“全訪問”組件400的輸入-輸出認(rèn)知。如果組件的 APL是“受限訪問”或“全訪問”,則組件的內(nèi)部掃描路徑是已知的(即,組件的每個寄存器、 以及寄存器的拓?fù)涫且阎?。可以將組件的內(nèi)部掃描路徑分成多個片(slice),這些片可 以分布在一個或多個分級級別上??梢砸匀魏畏绞?例如,使用相鄰級別的一個或多個寄 存器)來控制對不同分級級別的訪問。參照圖4示出和描述的組件,可以更好地理解將組 件的內(nèi)部掃描路徑分成多個分級級別。如圖4所示,將內(nèi)部掃描路徑分成五個片(表示為片1、2、3、4、5)。內(nèi)部掃描路徑 的五個片分布在兩個分級級別(表示為級別0、1)上。片1、2、3、4、5分別包括4個、4個、3 個、3個和2個寄存器。片1、2、5位于分級級別0中。片3和4位于分級級別1中。寄存器 (表示為寄存器Hl)控制內(nèi)部掃描路徑分級的級別0和級別1之間的訪問。Hl寄存器控制 內(nèi)部掃描路徑,使得對片3和4旁路(即,從內(nèi)部掃描路徑中排除它們),或者不對片3和4 旁路(即,在內(nèi)部掃描路徑中包括它們)。如圖4所示,內(nèi)部掃描路徑的組成如下。片1的輸入是TDI,并且片1的輸出是片 2的輸入。片2的輸入是片1的輸出,并且片2的輸出是至Hl的第一輸入(級別0輸入)。 在級別0,H1的輸入是片2的輸出,并且Hl的輸出是片5的輸入。在級別1,H1的輸出是片 3的輸入,并且Hl的輸入是片4的輸出。片3的輸入是Hl的輸出(級別1輸出),片3的輸出是片4的輸入。片4的輸入是片3的輸出,片4的輸出是Hl的輸入(級別1輸入)。 片5的輸入是Hl的輸出(級別0輸出),以及片5的輸出是TD0。在一個實施例中,將組件的內(nèi)部掃描路徑分成多個片是函數(shù)性,S卩,內(nèi)部掃描路徑 的每個片具有在其上操作的一個或多個片函數(shù),可以使用一個或多個片過程來測試每個片 函數(shù),每個片函數(shù)是可由測試工具獨立調(diào)度的。在該實施例中,可以以類似于“無訪問”組 件的函數(shù)體的構(gòu)成方式,來構(gòu)成在內(nèi)部掃描路徑的給定片上操作的函數(shù)體(即,使用輸入 比特流信息、函數(shù)長度和掃描路徑長度信息、輸出比特流信息等、及其各種組合來描述函數(shù) 體)。因此,利用與內(nèi)部掃描路徑的不同片或片的組合一起操作的不同過程,可以以多 種方式來使用組件的內(nèi)部掃描路徑的劃分。例如(參照圖4),執(zhí)行與片1相關(guān)聯(lián)的第一過 程P1,以將數(shù)據(jù)寫入片1中,從而觸發(fā)組件中某個函數(shù)的執(zhí)行,這得到片2中的存儲或結(jié)果 數(shù)據(jù)以及片5中的差錯數(shù)據(jù)。然后,可以執(zhí)行兩個附加過程P2和P5(分別操作于片2和5 上)以分別讀取片2和5的值。因此,將內(nèi)部掃描路徑分成片(包括在多個分級級別上劃 分),這提供了片上系統(tǒng)測試的很大靈活性。TS 120可以容易將算法過程轉(zhuǎn)換成串行測試 比特流(例如,輸入比特流和預(yù)期輸出比特流)。由于可以開發(fā)用于使用組件的內(nèi)部掃描路徑的片的不同過程,所以利用內(nèi)部掃描 路徑的片的過程必須能夠引用片(包括片內(nèi)部的信號)。過程可以以任何方式引用片。在 一個實施例中,例如,過程可以使用顯式命名來引用片。在一個這樣的實施例中,向每個片 (即,寄存器或寄存器組)分配唯一名稱,從而使得能夠像訪問記錄一樣來訪問分級實例化 的片。關(guān)于圖5示出和描述了使用顯式命名來標(biāo)識組件的片的示例。圖5示出了對組件500的內(nèi)部掃描路徑的片的顯式引用。如圖5所示,組件500 包括具有六個片的12寄存器掃描路徑,其中每個片由唯一名稱指代。第一片是命名為BS_0 的單個寄存器。第二片是命名為BS_1的單個寄存器。第三片是命名為SCAN_4_BIT_0的四 個寄存器的串行鏈,該串行鏈包括命名為BS_0、BS_1、BS_2和BS_3的四個寄存器。第四片 是命名為An0ther_SCAN_4_BIT的四個寄存器的串行鏈,該串行鏈包括命名為BS_0、BS_1、 BS_2和BS_3的四個寄存器。第五片是命名為BS_2的單個寄存器。第六片是命名為BS_3 的單個寄存器。如這里所述,可以像訪問記錄一樣來訪問分級實例化的寄存器。例如,由箭頭1指 示的寄存器的唯一名稱為BS_1(即使兩個其他寄存器也命名為BS_1,但可以看出,使用分 級命名如何確保了寄存器的唯一命名)。例如,由箭頭2指示的片(即,寄存器組)的唯一 命名是SCAN_4_BIT_0。例如,由箭頭3指示的寄存器的唯一命名為another_SCAN_4_BIT. BS_1。換言之,對于片和寄存器的任意數(shù)目的分級級別,能夠使用唯一命名來引用內(nèi)部掃描 路徑的每個片、以及每個片的每個寄存器。盡管這里主要關(guān)于可以用于定義組件的過程或過程集合的特定過程屬性(例如, 過程長度、函數(shù)和過程依賴性、內(nèi)部掃描路徑描述、片描述、片引用屬性等)進(jìn)行示出和描 述,但是可以指定各種其他過程屬性。用于描述過程的過程屬性可以包括用于以支持片上 系統(tǒng)測試的方式來描述過程的任何信息。除了過程屬性以外,過程還包括過程體。過程體包括過程的細(xì)節(jié)。過程體可以以 任何方式來實現(xiàn)。過程體不具有掃描路徑的概念(而是,在片上并行進(jìn)行訪問,以及測試工具將這些操作合并成對系統(tǒng)掃描路徑的訪問)。過程體可以使用多種語句、斷言、嵌套過程 等,及其各種組合。在一個實施例中,其中,使用用VHDL語言實現(xiàn)的NSDL來描述片上系統(tǒng)(因此,使 用用VHDL語言實現(xiàn)的NSDL來描述與片上系統(tǒng)相關(guān)聯(lián)的每個過程),可以使用VHDL語法來 表達(dá)過程體。過程的過程體可以以其他方式來表達(dá),這取決于片上系統(tǒng)的描述的實現(xiàn)方式。通過NSDL容易提供組件的內(nèi)部掃描路徑的描述。在NSDL中,每個寄存器單元被認(rèn) 為是實體,可以將寄存器單元分組成包(package)(例如,使用VHDL規(guī)則,其中NSDL實現(xiàn)為 VHDL的超集)。在NSDL中,使用兩個通用參數(shù),“precedent” (在前)和“following”(在 后),來描述每個寄存器實體,這兩個參數(shù)可以用于通過顯式引用寄存器實例來表達(dá)掃描 路徑。寄存器實體的“precedent”參數(shù)指定至該寄存器實體的輸入的源。寄存器實體的 “following”參數(shù)指定來自該寄存器實體的輸出的目的地。因此,寄存器實體可以包括單個 寄存器、寄存器組(包括分級分組)等。針對與關(guān)于圖5示出和描述的內(nèi)部掃描鏈相對應(yīng)的以下樣本代碼,可以更好地理 解組件的內(nèi)部掃描路徑的描述。以下樣本代碼示出了包括串行布置的四個基本邊界掃描寄存器在內(nèi)的簡單掃描 路徑,其中,第一邊界掃描寄存器接收來自TDI端口的輸入,第四邊界掃描寄存器向TDO端 口提供輸出BS_0:BS generic map (precedent = > " TDI " , following = >" BS_1");BS_1:BS generic map (precedent = > " BS_0" , following = >" BS_2");BS_2:BS generic map (precedent = > " BS_1" , following = >" BS_3");BS_3:BS generic map (precedent = > " BS_2" , following = >" TDO");可以將該4寄存器掃描鏈封裝到實體中,并分級實例化。以下樣本代碼確切地示 出了如何將該4寄存器掃描鏈封裝到實體中并分級實例化(最終用于描述SCAN_4_BIT_0 和 another_SCAN_4_BIT 寄存器實體)Entity SCAN_4_BIT isGeneric (precedent: string: = " TDI “ ;following: string: = " TDO " ) ;End entity ;Architecture A of SCAN_4_BIT isbeginBS_0:BS generic map (precedent => precedent, following = >" BS_1");BS_1:BS generic map (precedent = > " BS_0 " , following = >"BS_2:BS generic map (precedent = > " BS_1" , following = >"BS_3:BS generic map (precedent = >" BS_2" , following => following);end ;以下樣本代碼示出了圖5的12寄存器掃描路徑的表示(描述)(其中,如關(guān)于圖5 示出和描述的,使用六個寄存器實體來表示12寄存器掃描路徑,包括四個單獨寄存器和由 4寄存器掃描鏈組成的兩個寄存器實體)。BS_0:BS generic map (precedent = > " TDI " , following = >" BS_1 〃 );BS_1:BS generic map(precedent = > “ BS_0 “ , following = > “ SCAN_4_
BS_2〃 ) BS_3〃 )ΒΙΤ_0〃 );SCAN_4_BIT_0:BS generic map(precedent = > “ BS_1 “ , following = >"another_SCAN_4_BIT〃 );another_SCAN_4_BIT:BS generic map (precedent = > “ SCAN_4_BIT_0 “, following = >" BS_2〃 );BS_2:BS generic map(precedent = >" another_SCAN_4_BIT" , following = >"BS_3");BS_3:BS generic map (precedent = > " BS_2" , following = >" TDO");使用這種類型的描述,測試工具可以在編譯時間(例如,使用上下文校驗)自動計 算與掃描路徑有關(guān)的信息(例如,其長度、其分級結(jié)構(gòu)等,及其各種組合)。此外,寄存器實 體的描述是高度可再用的(例如,用于其他設(shè)計)。由于能夠以許多不同方式來收集、存儲 以及校驗針對寄存器實體的描述信息(即,由于符號表的實現(xiàn)方式在編譯器之間可能發(fā)生 顯著變化,例如,在散列表、數(shù)據(jù)庫等方面),所以出于清楚和一般性的目的,省略其細(xì)節(jié)。此外,由于使用這種類型的描述,容易描述片上系統(tǒng)的每個組件,因此可以通過對 單獨組件的描述進(jìn)行組合來獲得片上系統(tǒng)的總體系統(tǒng)描述(包括組件之間互連的描述,組 件間依賴性的描述等,及其各種組合)。在其他工作中,NSDL為描述(因此,測試)片上系 統(tǒng)配置提供顯著靈活性。如這里所述,NSDL除了能夠描述形成片上系統(tǒng)的掃描路徑的一部分的典型組件以 外,NSDL還能夠描述能夠?qū)崿F(xiàn)片上系統(tǒng)掃描路徑的動態(tài)改變的器件。用NSDL術(shù)語,這種類 型的器件被稱作“交叉器件”。參照圖6示出和描述了交叉器件的通用表示。圖6示出了交叉器件的表示的高級框圖。具體地,交叉器件表示600代表能 夠動態(tài)修改片上系統(tǒng)的掃描路徑的交叉器件。交叉器件將一個或多個輸入(稱作支流 (affluent))路由至一個或多個輸出(稱作分支(tributarie))。如圖6所示,交叉器件表 示600包括多個支流(表示為path_in_0至path_in_m)以及多個分支(表示為path_out_0 至 path_out_n)。為了在測試片上系統(tǒng)時利用交叉器件,必須描述交叉器件。使用BSDL/HSDL很難 (如果不是不可能的話)實現(xiàn)交叉器件的動態(tài)可變掃描路徑的描述,BSDL/HSDL專門被設(shè)計 為處理靜態(tài)掃描路徑。相反,NSDL能夠容易提供交叉器件的動態(tài)可變掃描路徑的描述,NSDL 提供由測試工具容易理解的交叉器件的算法描述。使用NSDL的交叉器件的通用描述如下IP<entity name)isGeneric (precedent:strmg:="following:string:=affluent: string:="tributary:string:=);EncKentity name> ;從以上提供的交叉器件的通用描述可見,通用參數(shù)〃 affluent"(支流)
TDI"; “TD0";
deselected"; “deselected";
12和〃 tributary"(分支)可以用于訪問分級掃描路徑。首先將通用參數(shù)〃 affluent" 和〃 tributary"設(shè)置為〃 deselected"(取消選定),使得交叉器件僅僅操作為掃描路徑 內(nèi)的途經(jīng)通過的組件(即,支流和分支是不活動的,因此不對掃描路徑進(jìn)行動態(tài)修改)。通 過使用"affluent"和"tributary"參數(shù)來調(diào)用相關(guān)的選擇函數(shù),可以激活交叉器件以 動態(tài)修改掃描路徑。如果存在多于一個支流和/或多于一個分支,必須唯一地標(biāo)識支流和/或分 支中的每一個。在一個實施例中,例如,可以使用簡單的排序編號(例如,對于支流為 affluent_0、affluent_l 等;對于分支為 tributary_0、tributary_l 等)。使用基于 NSDL 的描述,測試工具能夠僅通過引用通用參數(shù)來理解通過交叉器件的連接??梢砸匀魏畏绞絹懋a(chǎn)生交叉器件的描述。在一個實施例中,使用經(jīng)由架構(gòu)而互連 的輸入連接集合和輸出連接集合的描述,來產(chǎn)生交叉器件的描述,其中該架構(gòu)適于動態(tài)控 制對片上系統(tǒng)的一個組件(或多個組件)的訪問。可以存儲交叉器件的描述以用于測試。 處理器可以接收或獲取交叉器件的描述(例如,從存儲器、另一系統(tǒng),或從這種描述的任何 其他源)以用于執(zhí)行測試。如這里所述,輸入連接集合包括掃描路徑輸入連接(沿著自TDI的方向,連接至片 上系統(tǒng)的掃描路徑),以及至組件的至少一個連接(表示為組件訪問輸入連接),輸出連接 集合包括掃描路徑輸出連接(沿著至TDO的方向,連接至片上系統(tǒng)的掃描路徑),以及至組 件的至少一個連接(表示為組件訪問輸出連接)。在一個實施例中,使用〃 precedent"參數(shù)(針對掃描路徑輸入連接)以及一 個或多個"affluent"參數(shù)(針對一個或多個組件訪問輸入連接),來指定輸入連接集 合。在一個實施例中,使用"following"參數(shù)(針對掃描路徑輸出連接)和一個或多 個"affluent"參數(shù)(這對一個或多個組件訪問輸出連接),來指定輸出連接集合。交叉器件可以以任何方式動態(tài)修改系統(tǒng)掃描路徑。架構(gòu)可以是用于經(jīng)由組件將輸 入連接集合中的輸入連接動態(tài)連接至輸出連接集合中的輸出連接的任何架構(gòu),其中選擇交 叉器件來將該組件添加至系統(tǒng)掃描路徑。例如,該架構(gòu)可以是開關(guān)架構(gòu)、總線架構(gòu)、網(wǎng)絡(luò)架 構(gòu)等。在一個實施例中,交叉器件的描述是算法描述,包括適于測試工具理解的至少一 個構(gòu)成規(guī)則??梢詫⒔徊嫫骷拿枋鰟討B(tài)修改為,將組件動態(tài)添加至掃描路徑,并從掃描路 徑中動態(tài)移除組件(例如,通過修改參數(shù)〃 affluent〃和〃 tributary")。使用NSDL來描述片上系統(tǒng)測試中的測試資源,這使得能夠以能夠在片上系統(tǒng) 測試中使用交叉器件的方式,來描述許多不同交叉器件??梢詫⒂蒒SDL描述的不同交 叉器件分組到三個寬泛類別中。具體地,交叉器件可以表示“有線”(wired)連接、“事
(transactional)_ ·#,, (wired-transactional) 3 _?!坝芯€”交叉器件是基本上有線連接到片上系統(tǒng)的掃描路徑的交叉器件(并可以根 據(jù)需要對其進(jìn)行選擇或取消選擇)?!坝芯€”交叉器件以類似于開關(guān)的方式進(jìn)行操作(即, 根據(jù)需要能夠在支流和分支之間對連接進(jìn)行動態(tài)編程)。由于“有線”交叉器件的掃描路徑 是有線地連接到片上系統(tǒng)的系統(tǒng)掃描路徑中的,所以需要顯式地取消選擇“有線”交叉器件 的掃描路徑。在圖8中示出并描述了“有線”交叉器件的第一示例(具體地,作為Ρ1687硬 件建議的一部分的選擇儀器比特(SIB)組件)。在圖9中示出和描述了“有線”交叉器件的第二示例?!笆聞?wù)”交叉器件是支持臨時連接(即,表示特定事務(wù)的連接)的交叉器件?!笆?務(wù)”交叉器件可以作為任何架構(gòu)(例如,作為總線、片上網(wǎng)絡(luò)等)進(jìn)行操作。事務(wù)可以是由 “事務(wù)”交叉器件的架構(gòu)支持的任何事務(wù)(例如,總線架構(gòu)中的總線訪問、網(wǎng)絡(luò)架構(gòu)中的路由 等)。由于“事務(wù)”交叉器件的掃描路徑僅在事務(wù)時間是活動的,因此不需要顯式地取消選 定“事務(wù)”交叉器件的掃描路徑。在圖10中示出和描述了 “事務(wù)”交叉器件的示例。在“有線”交叉器件中,至少一個組件訪問輸入連接和至少一個組件訪問輸入連接 是有線連接。因此,組件訪問輸入連接和組件訪問輸出連接是不同的物理連接。在“事務(wù)” 交叉器件中,至少一個組件訪問輸入連接和至少一個組件訪問輸入連接是事務(wù)連接,使得 一個物理連接可以用于支持多個事務(wù)(即,組件訪問輸入連接和組件訪問輸出連接可以共 享相同的物理連接,但是可以被認(rèn)為是不同的事務(wù)連接)。使用BSDL/HSDL,雖然可以描述特定的“有線”交叉器件(即,SIB組件),但是該 描述非常困難。此外,不可能使用BSDL/HSDL描述更復(fù)雜的“有線”交叉器件。此外,使用 BSDL/HSDL描述“事務(wù)”和“有線-事務(wù)”交叉器件更不可能。因此,出于上述原因,P1687 中標(biāo)準(zhǔn)化的交叉器件僅僅是SIB組件。相反,使用NSDL,明顯是支持對任何“有線”交叉器件、“事務(wù)”交叉器件以及“有 線-事務(wù)”交叉器件的描述的,并且測試工具容易對該描述進(jìn)行解釋。的確,事實上,可以使 用NSDL描述能夠動態(tài)修改片上系統(tǒng)的掃描路徑的任何復(fù)雜的交叉設(shè)備。為了示例NSDL的 能力,這里關(guān)于圖7-圖10提供了交叉器件的若干示例(及其使用NSDL表達(dá)的相應(yīng)描述)。圖7示出了使用通用交叉器件來動態(tài)修改片上系統(tǒng)的掃描路徑的高級框圖。如圖 7所示,片上系統(tǒng)700包括掃描路徑,該掃描路徑包括通用交叉器件710。掃描路徑包括兩 個永久掃描路徑部分(即,始終包括在掃描路徑中的部分)以及可選掃描路徑部分(即,可 以通過交叉器件710動態(tài)地包括在掃描路徑中并可以從該掃描路徑中移除的部分)。如圖7所示,在片上系統(tǒng)700的掃描路徑中,測試訪問輸入(TDI)耦合至第一永久 掃描路徑部分(包括一系列邊界掃描單元),第一永久掃描路徑部分耦合至交叉器件710的 第一輸入(即,precedent),交叉器件710的第一輸出(即,following)耦合至第二永久掃 描路徑部分,第二永久掃描路徑部分耦合至測試訪問輸出(TDO)。交叉器件710允許將可選掃描路徑部分動態(tài)地(有選擇地)并入片上系統(tǒng)70的 掃描路徑中。具體地,交叉器件710包括第二輸出(即,分支)和第二輸入(即,支流),可 以選擇該第二輸出將第一永久掃描路徑部分的輸出耦合至的可選掃描路徑部分的輸入,可 以選擇該第二輸入將可選掃描路徑部分的輸出耦合至第二永久掃描路徑部分的輸入。交叉器件710使得能夠通過選擇/取消選定輸入/輸出的特定組合,來動態(tài)修 改掃描路徑。當(dāng)將交叉器件710的第二輸出和第二輸入取消選定時,掃描路徑是TDI、 SCAN_4_BIT_0、BS_0、BS_1、交叉器件710、BS_2、TD0。當(dāng)將交叉器件710的第二輸出和第二 輸入選定時(即,第一輸入連接至第二輸出,第二輸入連接至第一輸出),掃描路徑是TDI、 SCAN_4_BIT_0、BS_0、BS_1、交叉器件 710、another_SCAN_4_BIT、BS_3、交叉器件 710、BS_2、 TDO。圖8示出了可以使用NSDL描述的一個交叉器件的高級框圖。具體地,圖8示出 了 SIB器件800。SIB器件800實現(xiàn)了對另一組件的選擇(即,使得將該組件添加至掃描路徑)。SIB器件受選擇比特的控制。當(dāng)選擇比特的值為“0”時,該單元不是活動的(其僅 是掃描路徑中的比特)。當(dāng)將選擇比特的值設(shè)置為“ 1”時,掃描路徑通過端口 WSIo (即,支 流)路由出,并通過端口 WSOi(即,分支)路由入,從而將與這些端口連接的任何器件添加 至掃描路徑。SIB器件800的基于NSDL的描述如下(出于清楚的目的,包括行號)1 IP SIB generic(precedentstring: = “ TDI“;2following: string: =〃 TDO〃 ;910 Procedure select11 Length 1 ;12 Selection wired ;13 {14 UpSib < = ' 1';15 tributary: =" TDI “;16 affluent: =〃 TDO〃 ;17 }1819 Procedure deselect20 Length 1 ;21 Selection wired ;22 {23 UpSib < = ' 0';24 tributary: =〃 deselected";25 affluent: =〃 deselected";26 }2728 End SIB ;在SIB器件800的描述中,6-9行聲明內(nèi)部寄存器(即,測試工具需要以便處理分 級的比特,在SIB器件800的情況下,僅為一個比特);以及10-17行示出了選擇過程,19-26 行示出了取消選定的過程(使用其相應(yīng)的名稱,測試工具能夠容易識別)。在描述體中,容易識別NSDL的兩個作用(1)掃描路徑的修改,從而由片處理來表 達(dá)比特流(見14和23行);以及⑵通過賦予串的值,來進(jìn)行拓?fù)涞男薷?例如,以類似
0159]3
0160]4
0161]5
0162]6
0163]7
0164]8
Begin
UpSIB REG generic map (precedent = >" TDI “,
tributary:string = " deselected affluent:string: = " deselected"
following = >" TDO" elements = > 1);于拓?fù)溆成渲?precedent〃和〃 following"的賦值的方式)。 圖9示出了可以使用NSDL描述的一個交叉器件的高級框圖。具體地,圖9示出了 分級開關(guān)器件900。分級開關(guān)器件900包括三個輸入支流和兩個輸出分支。盡管所描述的
具有三1個支流和兩個分支,但是可以支持任何數(shù)目的支流和分支。
分級開關(guān)器件900的基于NSDL的描述如下(為了清楚起見包括行號)
1IP Hierarchy_switch generic(precedentstring: = “ TDI“;
2following:string: = “ TD0";
3tributary_0string = “ deselected";
4tributary_lstring: = “ deselected";
5affluent_0string: = “ deselected";
6affluent_lstring: = “ deselected";
7affluent_2string: = “ deselected";
8)
9
10Begin
11
12Affl—map: Vector—REG generic map (precedent => " TDI “,
13following = >" Trib—map"
14elem—size = > 2 ;
15elements = > 3);
16Trib—map: Vector_REG generic map (precedent => 〃 Affl—map",
17following=〉" TD0"
18elem—size = > 2 ;
19elements = > 2);
20
21subtype name is string(1 to 11);
22type name_vector is array(natural rangeO)of name ;
23constant affluent—name:name_vector(0 to 2):=
24("affluent—0〃 , “ affluent—1〃 , “ affluent.
25constant tributary—name:name_vector(0 to 1):=
26("tributary—0”, “ tributary—1");
27
28
29Procedure select (affluent—nmb:in std_logic_vector(1 downto
30tributary—nmb:in std—logic)
31Length 1 ;
32Selection wired ;
33{
34Trib—map < = affluent—nmb ;
35 Aff l_map < = “ 0〃 &tributary_nmb ;3637 case(tributary_nmb)38 when' 0' => tributary_0)=39affluent—name(conv—integer(affluent一nmb));40 when' 1' = > tributary」=41affluent—name(conv—integer(affluent一nmb));42 end case ;4344 case(affluent_nmb)45 when" 00" => affluent_0:=46tributary—name(conv—integer(tributary一nmb));47 when" 01 〃=> affluent」=48tributary_name(conv_integer(tributary_nmb));49 when" 10" => affluent_2:=50tributary—name(conv—integer(tributary一nmb));51 when others => assert false report“ ERROR ! “ severity failure ;52 end case ;53 }5455 Procedure deselect_affluent56(affluent_nmb:in std_logic_vector(1 downto 0))57 Length 1 ;58 Selection wired ;59 {60 Aff l_map < = " 11〃 ;61 case(affluent_nmb)62 when" 00〃 => affluent_0: =" deselected";63 when" 01 〃 = > affluent_l: = 〃 deselected";64 when" 10〃 = > affluent_2: = 〃 deselected";65 when others => assert false report" ERROR ! “ severity warning ;66 end case ;6768 }6970 Procedure deselect_tributary(tributary一nmb:in std_logic)71 Length 1 ;72 Selection wired ;73 {
74/rib map<一”11”
75 case(tributary nmb)
76 when’0’一>tributary 0一”deselected”
77 when’ l’一>tributary l一”deselected”
78 end case;
79}
80 End hierarchy switch;
在分級開關(guān)器件900的描述中3—7行聲明支流和分支(其中每一個分別給定唯一名稱);12一19行聲明內(nèi)部掃描路徑(即,類似于開關(guān)矩陣);2卜26行通過定義一些定制類型來充分利用VHDL能力(從而,為分級描述符準(zhǔn)備了實質(zhì)上等同于開關(guān)矩陣的內(nèi)容)。
在分級開關(guān)器件900的描述中“select”(選擇)過程(29—53行)負(fù)責(zé)比特流修改,此外,利用VHDL算法能力(以及先前定義的定制類型),以描述動態(tài)掃描路徑修改。函數(shù)的參數(shù)是指要連接路徑的有序編號。
從分級開關(guān)器件900的描述所看到的,使通過分級開關(guān)器件90的連接為不活動,這不需要對該連接的兩端進(jìn)行取消選定;而是,僅對連接的一端取消選定就切斷了該連接。因此,取消選定可以由兩個過程來處理(1)”deselect—affluent”實現(xiàn)支流的取消選定(使用有序編號作為參數(shù)),以及(2)”deselect—tributary”實現(xiàn)分支的取消選定(使用有序編號作為參數(shù))。
圖lo示出了可以使用NSDL描述的一個交叉器件的高級框圖。具體地,圖lo示出了總線架構(gòu)器件1000。總線架構(gòu)器件1000包括經(jīng)由組件總線1012互連的主網(wǎng)關(guān)組件101l以及5個從組件lol3+一lol3。(共同示為從組件lol3)。
在總線架構(gòu)器件1000中,向每個從組件1012分配由網(wǎng)關(guān)組件101l使用的地址,以訪問從組件1012??偩€架構(gòu)器件1000必須支持特定的協(xié)議,以使得網(wǎng)關(guān)組件101l能夠訪問從組件lol2;然而,總線架構(gòu)器件1000的基于NSDL的描述不需要關(guān)于該協(xié)議的任何信息。
總線架構(gòu)器件1000的基于NSDL的描述如下(為了清楚起見包括行號)
網(wǎng)關(guān)包描述
l Package GW_package i S
2
3 Constant N SLAVESinteger一5
4 Constant ADDRESS DEP/Hinteger一3
5 subtype slave—name—type iS string(1 t。1);
6 subtype slave—address—type iS std—logic—vector
7(ADDRESS DEP/H—l downto 0)
8
9/ype slave_mapping一一type iS record
10 Slave nameSlave name type
l l Slave addressSlave address typr
12 end record
13
14Type network_mapping_type is array(1 to N_SLAVES)of
15slave_mapping_type ;
16
17Constant BUS_0P_FIELDS:integer: = 2 ;
18
19Constant BUS_READ:std_logic_vector(BUS_0P_FIELDS_1
downto 0) : = 〃 01〃 ;
20Constant BUS_WRITE:std_logic_vector(BUS_0P_FIELDS-1
downto 0) : = 〃 10〃 ;
21Constant BUS_IDLE:std_logic_vector(BUS_0P_FIELDS_1
downto 0) : = 〃 00 “;
22
23End Gff_package ;
網(wǎng)關(guān)描述
1 Use Gff_package. all ;
2
3:P Gff generic(precedent:string: = " TDI“;
4following:string: = " TDO“;
5tributary:string: = " deselected";
6affluent:string: = " deselected";
7network_mapping:network_mapping_type);
8
9
10Begin
11
12Address_map: REG generic map (precedent = >" TDI ",
13following = >" TDO"
14elements = > ADDRESS_DEPTH);
15Bus_operation:REG generic map(
16precedent = >" Address_map “;
17following = >" TDO〃 ;
18elements => BUS_0P_FIELDS);
19
20Function get_slave_address(name:in slave_name_type)
21return slave_address_type is
22Begin
23for k in N_SLAVES loop
24If network_mapping(k). slave_name = name then
25return network—mapping(k) · slave_address ;
26End loop ;
27assert false report" ERROR, slave" &name&" does not exist"
28severity failure ;
29end get_slave_address ;
30
31Procedure select_tributary(tributary—name:in slave—name_type)
32Length 10 ;
33Selection transaction ;
34{
35address—map < = get_slave_address(tributary—name);
36bus_operation < = BUS—WRITE ;
37tributary: = tributary—name ;
38ι
39
40Procedure select_affluent(affluent—name:in slave—name_type)
41Length 10 ;
42Selection transaction ;
43{
44address—map < = get_slave_address(affluent—name);
45bus_operation < = BUS_READ ;
46affluent: = affluent—name ;
47ι
48
49End Gff ;
為了更好的可讀性,已經(jīng)將總線架構(gòu)器件1000的基于NSDL的描述拆分成兩個文
件。具體地,將總線架構(gòu)器件1000的基于NSDL的描述拆分成以下部分(1)包括針對總線 架構(gòu)器件1000的所有類型的聲明的包;以及(2)總線架構(gòu)器件1000的描述??偩€架構(gòu)器件1000的基于NSDL的描述不需與總線架構(gòu)器件1000的總線協(xié)議的 實際實現(xiàn)方式有關(guān)的信息;而基于NSDL的描述僅需要與在總線架構(gòu)器件1000內(nèi)發(fā)起事 務(wù)所需的命令有關(guān)的信息。事務(wù)由包括在基于NSDL的描述中的"select_tributary〃 和"select_affluent"函數(shù)定義?!?select.tributary"函數(shù)(31-38行)將適宜地址寫入適宜寄存器(使用定制 類型和函數(shù)),以命令到總線的“寫入”操作。“selectjffluent"函數(shù)(40-47行)讀取 從適宜寄存器讀取適宜地址(使用定制類型和函數(shù)),以命令自總線的“讀取”操作。由于總線架構(gòu)器件1000是“事務(wù)”交叉器件,總線架構(gòu)器件1000的基于NSDL的 描述不需要“選擇”或“取消選擇”過程;而是,將“選擇”和“取消選擇”過程標(biāo)記為“事務(wù)”, 使得測試工具知道該連接只是活動一次,然后就將支流和分支設(shè)置回至“取消選定”。如這里所述,諸如總線架構(gòu)器件1000 (以及其他交叉器件)等交叉器件完全超出P1687標(biāo)準(zhǔn)的當(dāng)前能力范圍。只有使用NSDL,才可能對諸如總線體架構(gòu)器件1000(以及其 他交叉器件)等交叉器件進(jìn)行描述。如這里所述,可以使用NSDL來描述片上系統(tǒng),此外,用于測試片上系統(tǒng)的測試工 具可以利用片上系統(tǒng)的系統(tǒng)級描述。關(guān)于圖11示出和描述了適于測試使用NSDL描述的片 上系統(tǒng)的示例測試工具。此外,參照圖12-圖20可以更好地理解使用NSDL描述的片上系 統(tǒng)的測試。圖11示出了圖1的測試環(huán)境的測試系統(tǒng)的高級框圖。具體地,TS120包括處理 器1110、存儲器1120、輸入輸出(I/O)接口 1130、以及支持電路1140。處理器1110耦合至 存儲器1120、I/O接口 1130以及支持電路1140中的每一個。處理器1110與存儲器1120、 I/O接口 1130以及支持電路1140協(xié)作,來提供這里示出和描述的各種測試函數(shù)。如圖11所示,存儲器1120存儲適于在執(zhí)行系統(tǒng)測試時使用的資源。具體地,存儲 器1120存儲測試工具1121、測試資源描述1122、以及適于在執(zhí)行系統(tǒng)測試時使用的測試數(shù) 據(jù)1123。存儲器可以存儲用于執(zhí)行系統(tǒng)測試的任何其他程序、描述、數(shù)據(jù)等(表示為其他 1124)。測試工具1121控制系統(tǒng)測試。測試工具1121可以包括一個或多個測試過程。測 試過程可以由一個或多個測試編譯器產(chǎn)生。可以執(zhí)行測試過程以測試一個或多個系統(tǒng)。測 試工具1121包括可以用于控制系統(tǒng)測試的任何其他過程、程序等。測試資源描述1122可以包括適于在系統(tǒng)測試中使用的任何描述,例如組件描述、 系統(tǒng)描述等,及其各種組合。測試資源描述1122可以包括系統(tǒng)拓?fù)涞拿枋觥y試資源描述 1122可以包括被處理以用于執(zhí)行片上系統(tǒng)測試的任何其他描述。測試資源描述1122可以包括一個或多個庫,使得可以為不同類型的測試資源維 護(hù)描述模板(因此,可以根據(jù)需要進(jìn)行訪問和修改)。模板可以是組件級模板(例如,針對 特定IP的模板、針對特定儀器的模板等),系統(tǒng)拓?fù)淠0宓?,及其各種組合。測試數(shù)據(jù)1123包括適于在執(zhí)行系統(tǒng)測試時使用的任何數(shù)據(jù)。測試數(shù)據(jù)1123可以 包括輸入比特流數(shù)據(jù)、輸出比特流數(shù)據(jù)(例如,由測試系統(tǒng)的確定預(yù)期輸出比特流,以及從 片上系統(tǒng)捕獲的實際輸出比特流)等,及其各種組合。測試數(shù)據(jù)1123包括可以應(yīng)用于正被 測試的系統(tǒng)和/或可以從正被測試的系統(tǒng)中恢復(fù)的任何其他數(shù)據(jù)。I/O 接口 1130 提供從 TS 120 至 S-o-C 110 的接口。I/O 接口 1130 是基于 JTAG 的接口。I/O接口 1130支持TDI接口,通過該TDI接口,TS 120可以響應(yīng)于處理器1110執(zhí) 行的測試過程,來將輸入比特流應(yīng)用于S-o-CllO。I/O接口 1130支持TDO接口,通過該TDO 接口,TS 120可以響應(yīng)于處理器1110執(zhí)行的測試過程,來從S-o-C 110中恢復(fù)實際輸出比特流。盡管這里主要關(guān)于一個TDI和一個TDO接口進(jìn)行示出和描述,但是I/O接口 1130 可以支持用于測試不同片上系統(tǒng)配置所需或期望的任何數(shù)目和類型的測試接口。例如,對 于基于JTAG的測試,I/O接口 1130還可以支持針對TCK信號、TMS信號、以及可選地TRST 信號的接口。支持電路1140包括可以在執(zhí)行系統(tǒng)測試時使用的任何附加電路。例如,支持電路 1140可以包括附加處理器、附加存儲器、附加接口、測試比特流產(chǎn)生電路、測試比特流處理 電路等,及其各種組合。支持電路1140包括測試系統(tǒng)120可能需要的任何附加電路。
21
處理器1140與存儲器1120、1/0接口 1130、以及支持電路1140協(xié)作,以提供這里 描述的各種片上系統(tǒng)測試函數(shù)。處理器1140產(chǎn)生描述(例如,函數(shù)級描述、組件描述等)。處理器1140處理來自 測試資源描述1122的描述,以產(chǎn)生描述(例如,使用組件描述來分析組件互連、產(chǎn)生系統(tǒng)描 述等)。處理器1140存儲該描述,作為測試資源描述1122的一部分。處理器1140產(chǎn)生用于測試片上系統(tǒng)的測試過程,并存儲該測試過程作為測試工 具1121的一部分。處理器1140使用來自測試工具1121的測試過程產(chǎn)生測試數(shù)據(jù),并存儲 該測試數(shù)據(jù)作為測試數(shù)據(jù)1123的一部分。處理器可以與存儲器1120、I/O接口 1130、以及支持電路1140協(xié)作,以提供這里 描述的任何其他片上系統(tǒng)測試函數(shù)。參照圖12-14可以更好地理解使用片上系統(tǒng)的基于NSDL的描述的片上系統(tǒng)測試, 圖12-14提供了用于使用片上系統(tǒng)的基于NSDL的描述來測試片上系統(tǒng)的方法。也可以參 照圖15和16(提供示出了片上系統(tǒng)的一個組件的測試的示例)、圖17 (提供用于測試片上 系統(tǒng)的組件的方法)、以及圖18-圖20 (提供示出了片上系統(tǒng)測試的示例)理解使用片上系 統(tǒng)的基于NSDL的描述的片上系統(tǒng)測試。圖12示出了由圖1的測試系統(tǒng)執(zhí)行的、用于通過JTAG連接測試系統(tǒng)的示例方法。 盡管示出和描述了以串行方式執(zhí)行,但是可以同時地或者以與關(guān)于圖12示出和描述的順 序不同的順序來執(zhí)行圖12的方法1200的步驟的至少一部分。方法1200開始于步驟1202, 并前進(jìn)至步驟1204。在步驟1204,為片上系統(tǒng)確定測試比特流。測試比特流包括輸入比特流和預(yù)期輸 出比特流。可以按照這里描述的任何方式確定測試比特流。在一個實施例中,使用關(guān)于圖 13示出和描述的方法確定測試比特流。在步驟1206,將輸入比特流應(yīng)用于片上系統(tǒng)??梢越?jīng)由片上系統(tǒng)的TDI接口將輸 入比特流應(yīng)用于片上系統(tǒng)。在步驟1208,從片上系統(tǒng)捕獲實際輸出比特流??梢越?jīng)由片上 系統(tǒng)的TDO接口從片上系統(tǒng)捕獲實際輸出比特流。在步驟1210,使用實際輸出比特流和預(yù)期輸出比特流,來確定測試結(jié)果。通過將實 際輸出比特流和預(yù)期輸出比特流比較,來確定測試結(jié)果(例如,確定在測試期間是否存在 任何錯誤)。在步驟1212,存儲測試結(jié)果。在步驟1214,方法1200結(jié)束。圖13示出了由圖1的測試系統(tǒng)執(zhí)行、用于通過JTAG連接測試系統(tǒng)的示例方法。具 體地,圖13的方法1300包括用于確定在測試片上系統(tǒng)時使用的測試比特流的方法。盡管 示出和描述了以串行方式執(zhí)行,但是可以同時地或者以與關(guān)于圖13示出和描述的順序不 同的順序來執(zhí)行圖13的方法1300的步驟的至少一部分。方法1300開始于步驟1302,并前 進(jìn)至步驟1304。在步驟1304,確定片上系統(tǒng)的描述(這里表示為系統(tǒng)描述)??梢砸赃@里描述的 任何方式來確定系統(tǒng)描述。系統(tǒng)描述是片上系統(tǒng)的基于NSDL的描述。在一個實施例中,使 用關(guān)于圖14示出和描述的方法來確定系統(tǒng)描述。在步驟1306,根據(jù)片上系統(tǒng)的系統(tǒng)描述,來確定用于測試片上系統(tǒng)的測試比特流。 測試比特流包括要應(yīng)用于片上系統(tǒng)的輸入比特流,以及可以與從片上系統(tǒng)捕獲的實際輸出比特流進(jìn)行比較的預(yù)期輸出比特流。在步驟1308,方法1300結(jié)束。圖14示出了由圖1的測試系統(tǒng)執(zhí)行、用于通過JTAG連接測試系統(tǒng)的示例方法。具 體地,圖14的方法1304包括用于確定片上系統(tǒng)的系統(tǒng)描述的方法。盡管示出和描述了以 串行方式執(zhí)行,但是可以同時地或者以與關(guān)于圖14示出和描述的順序不同的順序來執(zhí)行 圖14的方法1304的步驟的至少一部分。方法1304開始于步驟1402,并前進(jìn)至步驟1404。在步驟1404,標(biāo)識片上系統(tǒng)的組件??梢砸匀魏畏绞絹順?biāo)識片上系統(tǒng)的組件。在 一個實施例中,可以標(biāo)識片上系統(tǒng)的組件作為片上系統(tǒng)提供的測試資源。在一個實施例中, 可以通過分析片上系統(tǒng)來標(biāo)識片上系統(tǒng)的組件??梢砸匀魏纹渌绞絹順?biāo)識片上系統(tǒng)的組 件。在步驟1406,為片上系統(tǒng)的每個組件確定組件描述??梢砸匀魏畏绞絹泶_定組件 描述。在一個實施例中,其中,組件描述是預(yù)定義的,可以通過簡單讀取預(yù)定義的描述來 確定組件描述。在一個實施例中,其中組件描述不是預(yù)定義的,可以通過分析每個組件來在 運行中定義組件描述。組件的描述指定組件的內(nèi)部掃描路徑。在一個實施例中,組件的描述從寄存器值 方面來表示組件。在一個這樣的實施例中,其中,組件支持多個函數(shù),組件的每個函數(shù)可從 寄存器值方面來表示。關(guān)于圖15可以更好地理解從寄存器值方面的組件描述。使用NSDL 指定組件描述。在步驟1408,確定片上系統(tǒng)的拓?fù)?。片上系統(tǒng)的拓?fù)涿枋隽似舷到y(tǒng)的組件之間 的互連。通過分析片上系統(tǒng)的組件之間的互連,來確定片上系統(tǒng)的拓?fù)?。在步驟1410,確定片上系統(tǒng)的系統(tǒng)描述。使用組件描述和系統(tǒng)拓?fù)鋪泶_定系統(tǒng)描 述。片上系統(tǒng)的系統(tǒng)描述表示片上系統(tǒng)的掃描路徑,包括片上系統(tǒng)的各個組件中每一個的 內(nèi)部掃描路徑以及片上系統(tǒng)的組件之間的互連。系統(tǒng)描述可以包括用于描述片上系統(tǒng)的任 何其他信息。在步驟1412,存儲片上系統(tǒng)的系統(tǒng)描述。在步驟1414,方法1304結(jié)束。圖15示出了使用圖2的片上系統(tǒng)的組件之一的描述來確定用于測試該組件的測 試過程的寄存器值。具體地,將S-O-C 110(為了清楚起見省略)的組件210A的描述轉(zhuǎn)換 成針對S-O-C 110的組件210a的寄存器值的集合(表示為寄存器值1510)。組件210A的 寄存器值1510包括針對由組件210A支持的三個函數(shù)中每一個的寄存器值??梢詫︶槍τ?組件210A提供的三個函數(shù)中每一個的寄存器值進(jìn)行處理,以確定用于測試組件210A的測試 比特流的值。如圖15所示,從組成組件210a的組件寄存器ApApA2的寄存器值方面,來描述組 件210A的函數(shù)。第一函數(shù)定義為“000”,等待4個周期,“001”。第二函數(shù)定義為:“111”,等 待1個周期,“010”,等待5個周期,“101”。第三函數(shù)定義為:“000”,等待2個周期,“100”, 等待10個周期,“000”。換言之,寄存器值1510指定了針對組件210a的從函數(shù)到組件寄存 器值的映射。該描述(即,從函數(shù)到寄存器值的映射)示出了,可以容易地處理組件的描述, 以確定測試比特流。如圖15所示,對于組件21(^的每個函數(shù),寄存器值1510指示(1)如何針對函數(shù)寫入和讀取組件寄存器,以及(2)針對函數(shù),必須如何解釋組件寄存器值。因此,在諸如 NSDL等描述語言中,組件的描述包括組件函數(shù)的描述,然后可以將該組件函數(shù)的描述轉(zhuǎn)換 成寄存器值,以在用于測試片上系統(tǒng)上下文內(nèi)的組件的測試過程中使用。盡管出于清楚目的,在描述從函數(shù)到寄存器值的映射時被省略了,但是根據(jù)NSDL 的組件210a的特定描述是算法描述,該描述是以如關(guān)于圖3-圖5所示出和描述的方式構(gòu) 成的。組件210A的基于NSDL的描述使得能夠確定從函數(shù)到寄存器值的映射。盡管出于清 楚的目的進(jìn)行了省略,但是可以為S-O-C 110的其他組件(S卩,組件210b-組件210e)中的 每一個定義類似描述。圖16示出了使用圖2的片上系統(tǒng)的組件的描述來確定用于測試圖2的片上系統(tǒng) 的組件之一的測試過程的測試比特流。如圖16所示,產(chǎn)生測試比特流1610,以用于測試至 少一部分S-O-C 110。具體地,測試比特流1610包括應(yīng)用于S-O-C 110的TDI端口的輸 入比特流16111;以及從S-O-C 110的TDO端口接收的輸出比特流1611。。TS 120使用S-O-C 110的描述(使用NSDL指定的)產(chǎn)生測試比特流1610。S_0_C 110的描述(這里也被稱作系統(tǒng)描述)包括S-O-C 110的測試資源的描述(例如,組件210 的描述、組件互連220的描述等,及其各種組合)。S-O-C 110的系統(tǒng)描述描述了 S-O-C 110 的拓?fù)洌亩枋隽?S-O-C 110的系統(tǒng)掃描路徑。如這里所述,TS 120基于S-O-C 110的系統(tǒng)描述(提供了系統(tǒng)掃描路徑的描述) 來產(chǎn)生測試比特流1610。因此,由于S-O-C 110的系統(tǒng)描述提供了 S-O-C 110的系統(tǒng)掃描路 徑的描述,因此TS 120能夠確定為S-O-C 110產(chǎn)生的測試比特流1610的哪些部分與S-O-C 110的系統(tǒng)掃描路徑的哪些部分相對應(yīng)。在圖16中示出了這一點。如圖16所示,已經(jīng)定位了輸入比特流Ieil1和輸出比特流1611。內(nèi)的特定比特位 置(即,與組件210a相對應(yīng)的比特位置)。通過使用S-O-C110的基于NSDL的描述(提供 了與S-O-C 110的系統(tǒng)掃描路徑有關(guān)的信息,包括S-O-C 110內(nèi)組件210的相應(yīng)位置),能 夠?qū)崿F(xiàn)對輸入比特流Ieil1和輸出比特流1611。內(nèi)的與組件210a內(nèi)的寄存器相對應(yīng)的特定 位置的定位。盡管為了清楚起見,在描述從組件寄存器到比特流的轉(zhuǎn)換時被省略了,但是根據(jù) NSDL的S-O-C 110的特定描述是算法描述,其描述了 S-O-C 110的拓?fù)洌瑥亩枋隽?S_0_C 110的系統(tǒng)掃描路徑。S-O-C 110的該基于NSDL的描述使得能夠執(zhí)行從寄存器值到比特流 的轉(zhuǎn)換。圖17示出了由圖1的測試系統(tǒng)執(zhí)行、在IJTAG/NSDL框架中測試系統(tǒng)的組件的示 例方法。具體地,圖17的方法1700包括用于測試片上系統(tǒng)的一個組件的方法。盡管示出 和描述了以串行方式執(zhí)行,但是可以同時地或者以與關(guān)于圖17示出和描述的順序不同的 順序來執(zhí)行圖17的方法1700的步驟的至少一部分。方法1700開始于步驟1702,并前進(jìn)至 步驟1704。在步驟1704,選擇片上系統(tǒng)的組件(即,選作要被測試的片上系統(tǒng)的組件)。在步驟1706,獲得所選組件的描述。在步驟1708,對于組件所支持的每個函數(shù),將該函數(shù)轉(zhuǎn)換成與組件的寄存器相關(guān) 聯(lián)的寄存器值。使用組件的描述將組件的函數(shù)轉(zhuǎn)換成寄存器值。在步驟1710,獲得片上系統(tǒng)的系統(tǒng)描述。片上系統(tǒng)的系統(tǒng)描述指定了片上系統(tǒng)的系統(tǒng)掃描路徑,其是根據(jù)片上系統(tǒng)的組件描述和片上系統(tǒng)的拓?fù)涞拿枋龆_定的。系統(tǒng)描 述可以用于指定用于片上系統(tǒng)的測試比特流。在步驟1712,使用片上系統(tǒng)的拓?fù)鋪泶_定片上系統(tǒng)的測試比特流內(nèi)的所選組件位 置。測試比特流內(nèi)所選組件位置指定了輸入比特流內(nèi)的一個或多個比特位置以及實際輸出 比特流內(nèi)一個或多個比特位置。在步驟1713 (可選步驟),驅(qū)動交叉器件(即,如果對組件的訪問受交叉器件的控 制)。通過對交叉器件的算法描述進(jìn)行處理,來驅(qū)動交叉器件。驅(qū)動交叉器件使得能夠選擇 交叉器件,以動態(tài)地將相關(guān)聯(lián)的組件添加至片上系統(tǒng)的掃描路徑。在不再需要對組件進(jìn)行 訪問之后,可以取消選定該交叉器件,以從片上系統(tǒng)的掃描路徑中移除相關(guān)聯(lián)的組件。該步 驟是可選的,這是由于對組件的訪問可以受交叉器件的控制,也可以不受交叉器件的控制。在步驟1714,將寄存器值插入到輸入比特流的定位位置中。然后可以將輸入比特 流應(yīng)用于片上系統(tǒng)的輸入測試訪問端口(即,用于測試片上系統(tǒng)的至少一部分)。在步驟 1716,從輸出比特流(即,從由測試系統(tǒng)從片上系統(tǒng)的輸出測試訪問端口捕獲的輸出比特 流)的定位位置中恢復(fù)結(jié)果值。然后可以對恢復(fù)的結(jié)果值進(jìn)行處理,以便于確定各種測試 結(jié)果。在步驟1718,方法1700結(jié)束。圖18示出了示例片上系統(tǒng)的高級框圖。如圖18所示,片上系統(tǒng)1800包括濾波 器和三個儀器,這三個儀器包括模數(shù)轉(zhuǎn)換器(ADC)、數(shù)模轉(zhuǎn)換器(DAC)、以及天線訪問單 元(AAU)。AAU支持模擬至數(shù)字至模擬轉(zhuǎn)換。濾波器支持至ADC的輸出連接(表示為RX_ out)和來自DAC的輸入連接(表示為TX_in)。濾波器支持與AAU的雙向連接(表示為AN_ inout)ο如圖18所示,經(jīng)由從TDI輸入至TDO輸出的掃描路徑,來提供對三個儀器的訪問。 該掃描路徑包括致動器寄存器集合和三個SIB單元(每一個分別針對三個儀器中一個,使 得能夠?qū)⑾鄳?yīng)儀器添加至掃描路徑)。致動器寄存器與濾波器相接口。第一 SIB單元提供 對ADC儀器的訪問(經(jīng)由支流和分支)。第二 SIB單元提供對DAC儀器的訪問(經(jīng)由支流 和分支)。第三SIB單元提供對AAU儀器的訪問(經(jīng)由支流和分支)。隨后是掃描路徑的描述。TDI輸入耦合至致動器寄存器集合的輸入。致動器寄存 器集合的輸出耦合至第一 SIB單元的輸入。第一 SIB的輸出耦合至第二 SIB單元的輸入。 第二 SIB單元的輸出耦合至第三SIB單元的輸入。第三SIB單元的輸出耦合至TDO輸出。 當(dāng)取消選定每個SIB時(即,如果沒有“選擇”任何SIB,以使得它們相應(yīng)的儀器不能被添加 至掃描路徑),從TDI輸入至TDO輸出的序列形成了片上系統(tǒng)1800的掃描路徑。如圖18所示,通過選擇與三個儀器相關(guān)聯(lián)的相應(yīng)SIB單元的支流和分支接口,可 以容易地將三個儀器中的每一個添加至掃描路徑。例如,可以選擇第一 SIB,使得可以將 ADC儀器添加至掃描路徑以用于測試。例如,可以選擇第一 SIB和第三SIB,使得可以將ADC 和AAU儀器均添加至掃描路徑以用于測試。如這里所述,片上系統(tǒng)1800的基于NSDL的描 述簡化了片上系統(tǒng)1800的測試。圖19示出了使用圖18的片上系統(tǒng)的組件之一的描述來確定用于測試該組件的測 試過程的寄存器比特值。具體地,圖19示出了 ADC儀器的描述(表示為描述1910)到與ADC 儀器的寄存器(表示為寄存器1920)相關(guān)聯(lián)的寄存器值的映射。如圖19所示,描述1910包括掃描路徑的描述(表示為掃描路徑描述1911),以及由ADC儀器執(zhí)行的函數(shù)的算法表 示(表示為函數(shù)算法1912)。描述1910是基于NSDL的(算法)描述。掃描路徑描述1911標(biāo)識出ADC儀 器的寄存器(包括數(shù)據(jù)寄存器和控制寄存器),并描述了如何布置寄存器(例如,標(biāo) 識〃 precedent"、“ following"、以及長度信息)。函數(shù)算法1912描述了由ADC儀器執(zhí) 行的函數(shù)的操作。根據(jù)描述1910,測試工具能夠容易確定可以用于測試ADC儀器的比特流值。圖20示出了使用圖18的片上系統(tǒng)的組件描述來確定圖18的片上系統(tǒng)的組件描 述。具體地,圖20示出了圖18的片上系統(tǒng)的構(gòu)成的描述(表示為拓?fù)?010)。使用片上系 統(tǒng)1800的每個組件(例如,致動器寄存器、SIB、以及儀器)的輸入和輸出中的每一個的通 用映射來指定拓?fù)?010。例如,致動器寄存器的描述指示,至致動器寄存器的輸入是TDI輸入 (〃 precedent = > “ TDI ‘),自致動器寄存器的輸出是第一 SIB,該輸出表示為RX enable,這是由于其使能了對ADC儀器的RX_register的訪問(following = > “ RX_ enable")。換言之,根據(jù)與其相接口的組件來描述致動器寄存器組件。例如,第一 SIB的描述(即,RX_enable組件)指示,至RX_enable組件的輸入是 致動器寄存器(precedent =>〃 actuator_registers〃),第一 SIB 的輸出是第二 SIB,該 輸出表示為TX_enable,這是由于其使能了對DAC儀器的TX_regiSter的訪問(following =>"Tx_enable〃)。此夕卜,由于第一 SIB使能了對ADC儀器的訪問,因此第一 SIB的描述還描述了對 ADC儀器的訪問。具體地,第一 SIB的描述指示了,經(jīng)由一個輸入(affluent=〉" Rx_ register)以及一個輸出(tributary => 〃 Rx_enable〃),使能了從第一 SIB 至 ADC 儀器 的訪問。根據(jù)這些示例,清楚的是,使用NSDL可以容易描述片上系統(tǒng)的整個拓?fù)洹4送?,?于該拓?fù)涮峁┝似舷到y(tǒng)的組件之間的互連的描述,因此可以容易確定片上系統(tǒng)的拓?fù)鋬?nèi) 片上系統(tǒng)的每個組件的定位。如這里所述,使用片上系統(tǒng)的組件描述(提供了從組件的函數(shù)到該組件的寄存器 的寄存器值的映射)以及片上系統(tǒng)的拓?fù)涿枋?,可以對片上系統(tǒng)執(zhí)行各種類型的測試。因 此,圖18-20示出了使用NSDL描述片上系統(tǒng)的優(yōu)點。根據(jù)以上描述,使用NSDL語言來描述片上系統(tǒng)的各種優(yōu)點和好處是顯而易見的。 NSDL的算法本質(zhì)特點實現(xiàn)了片上系統(tǒng)的算法描述(無論拓?fù)溆卸鄰?fù)雜),可以對該算法描 述進(jìn)行處理以確定測試比特流,該測試比特流適于測試片上系統(tǒng)(例如,測試多個組件、測 試一個組件,測試組件的函數(shù)的子集等,及其各種組合)。因此,使用NSDL,可以確定片上系 統(tǒng)的系統(tǒng)掃描路徑的分級描述,以用于測試片上系統(tǒng)。NSDL語言以BSDL/HSDL無法支持的方式來支持IJTAG的特征,包括提供片上系 統(tǒng)組件(例如,IP、儀器、交叉器件等)的算法描述、片上系統(tǒng)拓?fù)?例如,組件之間的互連、 組件間依賴性等)等,及其各種組合,從而實現(xiàn)片上系統(tǒng)的算法系統(tǒng)級描述。因此,NSDL語 言實現(xiàn)了分級掃描路徑組織,從而實現(xiàn)了將寄存器值轉(zhuǎn)換成測試比特流,該測試比特流可 以用于測試片上系統(tǒng)。
可以以許多方式來實現(xiàn)NSDL語言。在一個實施例中,使用VHDL的現(xiàn)有特征來實現(xiàn)NSDL。BSDL定義為VHDL的子集,而 NSDL利用VHDL的超集。由于VHDL是主要的寄存器傳送級(RTL)描述語言,因此其適于表 達(dá)其描述的組件的測試需求。通過保持與VHDL的兼容,NSDL可以由現(xiàn)有編譯器支持,只需 要最小改變。此外,VHDL的使用確保了至NSDL的轉(zhuǎn)換對于習(xí)慣VHDL的操作員而言是一種 平滑的體驗過程,此外,確保了對現(xiàn)有源和工具的轉(zhuǎn)換和改變也是容易的。因此,利用VHDL 的NSDL最小化了對現(xiàn)有用戶群體的影響,從而簡化了現(xiàn)有用戶群體對NSDL的采用。相反,曾開發(fā)BSDL作為VHDL的子集,以努力使BSDL即與VHDL后向兼容也與VHDL 前向兼容。子集指示了無任何添加(即,由嵌入到現(xiàn)有VHDL規(guī)則中的結(jié)構(gòu)性語法規(guī)則承載 所有信息,然后以與正常方式不同的方式來解釋)。雖然后向兼容是自動的,但是定義新結(jié) 構(gòu)的不可能性使得演進(jìn)很困難。該結(jié)構(gòu)性限制導(dǎo)致開發(fā)者通常以反直覺方式,過度使用兩 個最通用的結(jié)構(gòu)(屬性和特性串)。換言之,將BSDL有效地限制在VHDL的一小部分內(nèi),從 而消除了 VHDL具有上下文意義的任何可能性。如這里所述,NSDL提供了片上系統(tǒng)測試中的許多優(yōu)點。類似地,使用VHDL來實現(xiàn) NSDL在片上系統(tǒng)測試中提供了許多優(yōu)點??梢栽赩HDL實體組件偶聯(lián)體(couplet)上,對片上系統(tǒng)的組件進(jìn)行建模,從而實 現(xiàn)由片上系統(tǒng)的組件支持的各個單獨函數(shù)的描述。因此,可以通過組件的內(nèi)部掃描路徑 (可以包括分級)來提供對每個組件的訪問。此外,組件可以與相應(yīng)的測試過程集合一同提 供,測試系統(tǒng)可以使用該測試過程集合來測試該組件,其中,使用NSDL指定過程的屬性(例 如,長度、依賴性等),而使用VHDL指定過程體。因此,這使得系統(tǒng)體系結(jié)構(gòu)能夠以類似于組 件體系結(jié)構(gòu)處理組件級描述的方式的方式來處理系統(tǒng)級描述??梢詫⑵舷到y(tǒng)的掃描路徑構(gòu)成為可以像VHDL組件一樣實例化的一系列實體, 從而容易地將其重新分組到包或庫中。此外,容易處理許多更復(fù)雜的表示(例如,給定類型 組件的多個實例化、組件間依賴性等,及其各種組合)。此外,NSDL以改善經(jīng)典VDL信號映 射的方式實現(xiàn)了對系統(tǒng)掃描鏈的構(gòu)建。開發(fā)用于測試片上系統(tǒng)的測試過程可以引用系統(tǒng)掃 描路徑或系統(tǒng)掃描路徑的一部分(被稱作片,可以包括組件組,或者甚至包括一個組件的 子集)。盡管這里主要關(guān)于使用VHDL實現(xiàn)的NSDL的實施例進(jìn)行示出和描述,但是可以使 用其他硬件描述語言(可以包括還沒有開發(fā)的硬件描述語言)來實現(xiàn)NSDL。如這里所述,除了改善基于JTAG的測試,以及實現(xiàn)在基于JTAG的測試中使用交叉 器件以外,NSDL語言還實現(xiàn)了對片上系統(tǒng)的組件的并行訪問,從而實現(xiàn)片上系統(tǒng)測試的改 善(例如,改善的測試調(diào)度、改善的測試效率等,及其各種組合)。在一個實施例中,例如P1687,并行訪問主要用作優(yōu)化數(shù)據(jù)傳輸帶寬的方式,而串 行訪問仍保持對測試的控制。NSDL語言能夠描述這些輔助資源,并將它們插入到測試流中 (例如,分別插入到關(guān)于圖12和17示出和描述的方法1200和1700中)。此外,也可以對NSDL進(jìn)行擴(kuò)展以描述更復(fù)雜的測試訪問機(jī)制(TAM),例如,使用交 叉器件來提供用于測試片上系統(tǒng)的并行訪問,使用扇出-扇入方案來提供用于測試片上系 統(tǒng)的并行訪問等,及其各種組合??梢詤⒄請D21-28更好理解用于測試一個片上系統(tǒng)(或多個片上系統(tǒng))的并行訪
27問的使用。圖21示出了并行訪問接口的一般連接方案的高級框圖。具體地,一般連接方案 2100提供了至片上系統(tǒng)2120的并行訪問接口 2110。并行訪問接口 2110包括內(nèi)部并行端 口 2111、外部并行端口 2112、以及內(nèi)部接口 2113。片上系統(tǒng)2120包括并行端口 2121。如圖21所示,通過內(nèi)部并行端口 2111與并行端口 2121之間的連接,提供對片上 系統(tǒng)2120的并行訪問。利用并行端口 2121需要(1)并行端口 2121與片上系統(tǒng)2120的 連接和同步(可以在實例化時間進(jìn)行),以及(2)通過測試系統(tǒng)(為了清楚起見而省略)對 并行端口 2121的處理。如圖21所示,內(nèi)部并行端口 2111和外部并行端口 2112使得η個輸入連接(η > 0)和m個輸出連接(m> 0)連接至片上系統(tǒng)2120的并行端口 2121。以兩種方式提供對片上系統(tǒng)2120的并行訪問。外部地提供對片上系統(tǒng)2120的并行訪問。使用外部并行端口 2112提供從測試系 統(tǒng)到片上系統(tǒng)2120的外部訪問。外部并行端口 2112用作測試系統(tǒng)與內(nèi)部并行端口 2111 之間的接口。外部并行端口 2112支持η個輸入連接以及m個輸出連接(分別與內(nèi)部并行 端口 2111的η個輸入/m個輸出連接相對應(yīng))。內(nèi)部地提供對片上系統(tǒng)2120的并行訪問。使用內(nèi)部接口 2113提供從測試系統(tǒng)到 片上系統(tǒng)2120的內(nèi)部訪問。在一個實施例中,可以使用連接至系統(tǒng)掃描路徑的一個或多個 內(nèi)部寄存器來實現(xiàn)內(nèi)部接口 2113。在該實施例中,內(nèi)部寄存器可以用于控制并行訪問接口 2110的行為,或者查詢并行訪問接口 2110的狀態(tài)。如上所述,為了清楚起見,省略了可以經(jīng)由內(nèi)部接口 2112或外部接口 2113訪問內(nèi) 部并行端口 2111的測試系統(tǒng)。使用NSDL描述并行訪問接口 2110。并行訪問接口 2110的NSDL描述包括(1)內(nèi)部端口的描述(例如,寬度信息、數(shù) 據(jù)流方向等信息),以及(2)并行訪問函數(shù)/過程。并行訪問接口 2110的NSDL描述也可以可選地包括(3)外部并行端口 2112的描 述(例如,寬度信息、數(shù)據(jù)流方向等信息)。并行訪問接口 2110的NSDL描述也可以可選地包括(4)內(nèi)部接口 2113的描述 (例如,用于控制函數(shù)和/或狀態(tài)函數(shù)的寄存器的描述)。在一個實施例中,可以使用串行測試訪問接口的描述以及并行測試訪問接口的描 述,來描述從測試系統(tǒng)到具有多個組件的片上系統(tǒng)的并行訪問,串行測試訪問接口用于在 測試系統(tǒng)與組件之間耦合測試比特流(其中,串行測試訪問接口使用片上系統(tǒng)的串行掃描 路徑來提供對組件的訪問),并行測試訪問接口用于在測試系統(tǒng)與組件之間耦合測試比特 流(其中,并行測試訪問接口提供對組件的訪問,而不使用片上系統(tǒng)的串行掃描路徑,即, 即使串行掃描路徑的一個或多個值可以控制訪問,也不直接經(jīng)由串行掃描路徑提供訪問)。 可以存儲串行測試訪問接口和并行測試訪問接口,用于測試。在一個實施例中,可以使用并行接口模塊的描述來描述從測試系統(tǒng)到片上系統(tǒng)的 并行訪問,并行接口模塊適于將測試系統(tǒng)耦合至片上系統(tǒng)的核心模塊,并存儲并行接口模 塊的描述,其中,并行接口包括至少一個串行寄存器和至少一個并行寄存器,該至少一個串 行寄存器適于使用片上系統(tǒng)的掃描路徑來訪問核心模塊,該至少一個并行寄存器適于訪問核心模塊,而不使用片上系統(tǒng)的掃描路徑??梢源鎯υ撁枋鲆杂糜跍y試。在一個實施例中,可以通過使用串行測試訪問端口的描述、并行測試訪問端口的 描述、以及接口端口的描述來描述從測試系統(tǒng)到片上系統(tǒng)的并行訪問,串行測試訪問端口 適于在測試系統(tǒng)與組件之間耦合測試比特流,并行測試訪問端口適于在測試系統(tǒng)與組件之 間耦合測試比特流,接口端口適于將串行測試訪問端口和并行測試訪問端口耦合至片上系 統(tǒng)的至少一部分組件??梢源鎯υ撁枋觯杂糜跍y試片上系統(tǒng)。如這里所述,存儲所產(chǎn)生的描述。這樣,處理器可以接收該描述(例如,從存儲器、 從另一系統(tǒng)、或者從這種描述的任何其他源),以使用并行訪問執(zhí)行各種測試(例如,組件 級測試、系統(tǒng)級測試等,及其各種組合)。可以以其他方式來描述從測試系統(tǒng)到片上系統(tǒng)的并行訪問。并行接口 2110與片上系統(tǒng)2120之間的通信可以為同步或異步。在一個實施例中,并行接口 2110與片上系統(tǒng)2120之間的通信與掃描鏈同步。在 一個這樣的實施例中,在1149. 1 “更新”信號的上升沿,對并行端口 2121上的值進(jìn)行采樣。 在該實施例中,測試系統(tǒng) 僅僅必須向端口提供值(用于輸入),和/或從端口收集值(用于 輸出)。在一個實施例中,并行接口 2110與片上系統(tǒng)2120之間的通信可以實現(xiàn)為同步 突發(fā)。在一個這樣的實施例中,為了優(yōu)化帶寬,將數(shù)據(jù)突發(fā)發(fā)送至并行端口 2121(對于輸 入),和/或從并行端口 2121讀取數(shù)據(jù)突發(fā)(對于輸出)。在一個這樣的實施例中,可以在 1149. 1 “更新”信號的上升沿處開始突發(fā)數(shù)據(jù)的發(fā)送/讀取。并行接口 2110指定至測試系 統(tǒng)的數(shù)據(jù)突發(fā)的特性。在一個實施例中,并行接口 2110和片上系統(tǒng)2120之間的通信為異步。在該實施 例中,并行端口 2121自己進(jìn)行操作,對其自身用于操作連接的協(xié)議進(jìn)行處理。在該實施例 中,測試系統(tǒng)僅允許高級訪問(發(fā)送數(shù)據(jù)和接收數(shù)據(jù))。事務(wù)的協(xié)議由測試系統(tǒng)的并行接口 驅(qū)動器進(jìn)行處理。在一個實施例中,片上系統(tǒng)1220可以支持多個這種與并行接口 2110通信的模式。 在這樣的實施例中,可以使用函數(shù)集合在不同通信模式之間切換。例如,函數(shù)集合可以包 括‘‘disable_p0rt",禁用并行端口 ; ‘‘ set_scan_synchr0",切換至掃描鏈同步訪問 模式;“set_burst",切換至突發(fā)訪問模式;以及"set.asynchro",切換至異步模式。圖22示出了兩個示例并行訪問連接方案的高級框圖。如圖22所示,在圖1的測試環(huán)境的上下文內(nèi)描述示例并行訪問連接方案。示例的 并行訪問連接方案用于將測試系統(tǒng)120連接至片上系統(tǒng)110。具體地,示例的并行訪問連接 方案用于將測試系統(tǒng)120連接至片上系統(tǒng)110的JTAG接口 2201和并行接口 2202。如圖22所示,第一并行訪問連接方案2210針對JTAG和并行訪問利用公共纜線。 第一并行訪問連接方案2210針對至片上系統(tǒng)110的掃描路徑的JTAG接口 2201以及片上 系統(tǒng)110的并行連接2202,利用單個連接器件(表示為JTAG并行接口器件)2111。如圖22所示,第二并行訪問連接訪問方案2220利用分離的JTAG和并行連接。第 二并行訪問連接方案2210針對至片上系統(tǒng)110的掃描路徑的JTAG接口 2201,利用第一連 接器件(表示為JTAG接口器件2121),以及針對片上系統(tǒng)110的并行接口 2202,利用第二 連接器件(表示為并行接口器件2122)。
關(guān)于第二并行訪問連接方案2210,盡管參照測試系統(tǒng)120是針對JTAG接口 2201 和并行接口 2202兩者的測試源/宿的實施例進(jìn)行示出和描述,但是在其他實施例中,針對 JTAG接口 2201和并行接口 2202的測試源和/或宿可以是不同的。例如,JTAG接口 2201 或并行接口 2202可以使用除了測試系統(tǒng)120以外的其它測試源和/或宿。一般而言,根據(jù)并行接口的實現(xiàn)方式,經(jīng)由并行接口執(zhí)行片上系統(tǒng)測試的測試系 統(tǒng)可以直接訪問片上系統(tǒng)的并行端口,例如,這是由于在測試系統(tǒng)與片上系統(tǒng)的并行端口 之間放置有許多結(jié)構(gòu)。在圖23A和23B中示出和描述了示例。圖23A示出了示例測試環(huán)境的高級框圖。示例測試環(huán)境2300使得測試系統(tǒng)能夠 使用并行訪問接口執(zhí)行對片上系統(tǒng)的測試,該并行訪問接口提供對片上系統(tǒng)的并行訪問。 具體地,測試環(huán)境2300包括經(jīng)由接口器件(ID) 2320互連的測試系統(tǒng)(TS) 2310和芯片/板 (C/B)2330οTS 2310是測試系統(tǒng),適于經(jīng)由并行訪問接口執(zhí)行片上系統(tǒng)的測試。TS 2310可以 以任何方式實現(xiàn),以實現(xiàn)使用對片上系統(tǒng)的并行訪問來測試片上系統(tǒng)的系統(tǒng)。在一個實施 例中,TS 2310可以實現(xiàn)為圖11示出和描述的TS 120的適配版本(例如,適于支持并行測 試言旨力)OTS 2310包括適于在經(jīng)由并行訪問接口執(zhí)行片上系統(tǒng)測試時使用的軟件。具體地, TS 2310包括控制測試工具2312和并行接口驅(qū)動器2313的操作系統(tǒng)2311。TS 2310包括 適于執(zhí)行片上系統(tǒng)測試的其他硬件和軟件(例如,處理器、存儲器、支持電路,等)(為了清 楚起見而省略)。在一個實施例中,測試工具2312可以與測試工具1121相同,或者至少與關(guān)于測試 工具2312示出和描述的函數(shù)可以實現(xiàn)為測試工具1121的一部分。C/B 2330包括片上系統(tǒng)2331以及并行接口 2332。片上系統(tǒng)2331可以是這里描 述的任何片上系統(tǒng)。并行接口 2332是關(guān)于圖21和22示出和描述的并行接口。關(guān)于圖21 可以更好理解并行接口 2332與片上系統(tǒng)2331之間的交互。如圖23Α所示,使用NSDL分別 描述片上系統(tǒng)2331和并行接口 2332。ID 2320 用作 TS 2310 與 C/B 2330 之間的接口。TS 2310 與 ID 2320 之間的接口 可以使用TS 2310所支持的任何類型的接口(例如,USB纜線或可以由TS 2310支持的任 何其他類型的接口)來實現(xiàn)。ID2320與C/B 2330之間的接口可以實現(xiàn)為由C/B 2330支 持的任何類型的接口。在一個實施例中,ID 2320支持至C/B 2330的分離的數(shù)據(jù)和控制接 口,使得可以獨立地從TS 2310向C/B 2330應(yīng)用數(shù)據(jù)信號和控制信號。如這里所述,測試工具2312處理與并行接口 2332 (以及,從而與片上系統(tǒng)2331) 的數(shù)據(jù)交換,并且并行接口驅(qū)動器2313處理與并行接口 2332 (以及,從而與片上系統(tǒng)2331) 的協(xié)議交換。換言之,并行接口驅(qū)動器2313防止了必須由測試工具2312管理與并行接口 2332的協(xié)議交換。如圖23Α所示,ID 2320支持TS 2310與C/B 2330之間的數(shù)據(jù)交換和協(xié) 議交換。在一個實施例中,并行接口驅(qū)動器2313使用操作系統(tǒng)2311所支持的函數(shù)(例如, 使用緩沖器、信號量、郵箱等,及其各種組合)來處理與并行接口 2332的協(xié)議交換。在該實 施例中,測試工具2312不直接控制片上系統(tǒng)的JTAG端口 ;而是,測試工具2312與向測試工 具2312提供各種函數(shù)(例如,使用由驅(qū)動器聲明并且由測試工具2312導(dǎo)入的函數(shù))的驅(qū)動器交互。圖23B示出了圖23A的示例測試環(huán)境內(nèi)的數(shù)據(jù)流的高級框圖。如圖23B所示,數(shù) 據(jù)從TS 2310流向C/B 2330 (表示為數(shù)據(jù)流2315)并且從C/B 2330流向TS 2310 (表示為 數(shù)據(jù)流2352)。在數(shù)據(jù)流2351中,數(shù)據(jù)從測試工具2312流至并行接口驅(qū)動器2313、至接口 器件2320、至并行接口 2332、至片上系統(tǒng)2331。在數(shù)據(jù)流2352中,數(shù)據(jù)沿著反向路徑從片 上系統(tǒng)2330到測試工具2312流動。如這里所述,在測試環(huán)境2300的上下文內(nèi),僅有數(shù)據(jù) 流是重要的。片上系統(tǒng)2331的基于NSDL的描述包括(例如,在實例化時)連接至相應(yīng)并行接 口的一個或多個并行端口,一個或多個并行片(其中存儲用于并行事務(wù)的數(shù)據(jù)),以及適于 在并行端口發(fā)起事務(wù)的一個或多個并行事務(wù)函數(shù)??梢允褂锰囟?例如,"parallel, XXXX“)來標(biāo)識并行片??梢允褂锰囟?例如,‘‘sencLparallel_data〃和〃 get_ parallel.data")來標(biāo)識并行事務(wù)函數(shù)。例如,并行事務(wù)函數(shù)的原型可以包括function send—parallel—data(sending—slicein string)return boolean ;function get_parallel_data(receiving_slice:in string)return boolean ;這里描述的示例的并行事務(wù)函數(shù)宣告并行端口上的活動,并且還指示對串行測試 比特流的修改,以控制串行測試比特流?!安⑿衅钡膶崿F(xiàn)向測試系統(tǒng)(示意性地,TS 2310 的測試工具2312)通知片上系統(tǒng)的并行端口與片上系統(tǒng)的剩余部分(這里被稱作片上系統(tǒng) 的“核心”)之間數(shù)據(jù)流的細(xì)節(jié)??梢砸栽S多方式來實現(xiàn)片上系統(tǒng)的并行端口與片上系統(tǒng)的 核心之間的連接(圖24-27示出和描述了該連接的示例)。圖24示出了片上系統(tǒng)的并行端口與核心之間的示例連接的高級框圖。如圖24所 示,示例連接利用完全獨立的并行端口(獨立于串行掃描路徑)。具體地,連接2400包括 TAP端口 2410和提供對片上系統(tǒng)2430的并行訪問的外部并行端口 2420。片上系統(tǒng)2430 包括可以經(jīng)由TAP端口 2410或經(jīng)由外部并行端口 2420訪問的核心2439??梢允褂闷舷到y(tǒng)2433的串行掃描路徑中的串行寄存器2431,經(jīng)由TAP端口 2410來訪問核心2439。串行寄存器2431控制經(jīng)由第一接口 2433對核心2439的訪問。使 用并行寄存器2434經(jīng)由外部并行端口 2420來訪問核心2439,其中并行寄存器2434在片上 系統(tǒng)2430的串行掃描路徑的外部。并行寄存器2434控制經(jīng)由第二接口 2435對核心2439 的訪問。如圖24所示,經(jīng)由并行寄存器2434訪問核心2439完全獨立于串行寄存器2431。 因此,通過并行邏輯對所有控制信號進(jìn)行處理,不需要來自片上系統(tǒng)2430的串行掃描路徑 的干預(yù)。函數(shù)〃 get_parallel_data〃簡單采取并行片的名稱(示意性地,“parallel, reg")作為自變量,由于不需要對比特流進(jìn)行修改,因此函數(shù)體為空。圖25示出了片上系統(tǒng)的并行端口與核心之間的示例連接的高級框圖。如圖25所 示,示例連接利用獨立于串行控制的并行端口。具體地,連接2500包括TAP端口 2510以及 提供對片上系統(tǒng)2530的并行訪問的外部并行端口 2520。片上系統(tǒng)2530包括可以經(jīng)由TAP 端口 2510或經(jīng)由外部并行端口 2520訪問的核心2539。可以使用片上系統(tǒng)2530的串行掃描路徑中的串行寄存器2531,經(jīng)由TAP端口2510來訪問核心2539。串行寄存器2531控制經(jīng)由第一接口 2533對核心2539的訪問???以使用并行寄存器2534經(jīng)由外部并行端口 2520來訪問核心2539,其中并行寄存器2534在 片上系統(tǒng)2530的串行掃描路徑的外部。并行寄存器2534控制經(jīng)由第二接口 2535對核心 2539的訪問。如圖25所示,使用片上系統(tǒng)2530的串行掃描路徑中的附加使能寄存器2531,來 控制經(jīng)由并行寄存器2534和關(guān)聯(lián)的第二接口 2535對核心2539的訪問。使能寄存器2532 使用從使能寄存器2532至核心2539的控制接口 2537,來控制經(jīng)由并行寄存器2534對核心 2539的訪問。因此,片上系統(tǒng)2530的串行掃描路徑包括TDI_>使能寄存器2532_>串行寄 存器 2531->TD0。因此,如圖25所示,從片上系統(tǒng)2530的串行掃描路徑,以串行方式控制經(jīng)由并行 寄存器2534對核心2539的訪問。在該實施例中,函數(shù)〃 get_parallel_data〃采取并行片 的名稱(示意性地,"paralleling")作為自變量,并且由于需要對比特流進(jìn)行修改,函 數(shù)體包括將使能寄存器2532的值設(shè)置為所需值的指令。圖26示出了片上系統(tǒng)的并行端口與核心之間的示例連接的高級框圖。如圖26所 示,對于串行和并行數(shù)據(jù),示例連接利用至核心的共享訪問端口。具體地,連接2600包括 TAP端口 2610,以及提供對片上系統(tǒng)2630的并行訪問的外部并行端口 2620。片上系統(tǒng)2630 包括核心2639,可以經(jīng)由TAP端口 2610或經(jīng)由外部并行端口 2620來訪問核心2639??梢允褂闷舷到y(tǒng)2630的串行掃描路徑中的串行寄存器2631,經(jīng)由TAP端口 2610來訪問核心2639。串行寄存器2631控制經(jīng)由第一接口 2633對核心2639的訪問???以使用并行寄存器2634經(jīng)由外部并行端口 2620來訪問核心2639,該并行寄存器2634在 片上系統(tǒng)2630的串行掃描路徑的外部。并行寄存器2634控制經(jīng)由第二接口 2635對核心 2639的訪問。如圖26所示,使用共享訪問端口 2636控制經(jīng)由串行寄存器2631和并行寄存器 2634對核心2639的訪問。共享訪問端口 2636采用來自串行寄存器2631的第一接口 2633 作為第一輸入,并且采用來自并行寄存器2634的第二接口 2635作為第二輸入。共享訪問 端口 2636選擇輸入之一,并經(jīng)由共享訪問接口 2638向核心2639提供所選的一個輸入。如圖26所示,使用片上系統(tǒng)2630的串行掃描路徑中的附加使能寄存器2632來控 制共享訪問端口 2636對輸入之一的選擇。使能寄存器2632使用從使能寄存器2632至共 享訪問端口 2636的控制接口 2637,控制經(jīng)由共享訪問端口 2636和共享訪問接口 2638對核 心2539的訪問。因此,片上系統(tǒng)2630的串行掃描路徑包括TDI_>串行寄存器2631_>使 能寄存器2632->TD0。因此,如圖26所示,從片上系統(tǒng)2630的串行掃描路徑,以串行方式來控制經(jīng)由并 行寄存器2634對核心2639的訪問。在該實施例中,片上系統(tǒng)2539宣告對分(dichotomy) (例如,通過將串行寄存器2631和并行寄存器2634標(biāo)記為“交替”)。在這樣的實施例中, 測試系統(tǒng)獲知,當(dāng)并行接口活動時,串行寄存器2631對核心2639沒有影響(即,效果上,它 們是“死存儲”)。該規(guī)則的關(guān)聯(lián)之處在于,許多寄存器可以共享相同的并行端口。圖27示出了片上系統(tǒng)的并行端口與核心之間的示例連接的高級框圖。如圖27所 示,串行寄存器和提供對片上系統(tǒng)的核心的并行訪問的并行寄存器共享相同的觸發(fā)器,從 而最小化提供對片上系統(tǒng)的核心的并行訪問所需的資源。具體地,連接2700利用使能寄存器2732、多個數(shù)據(jù)寄存器2731i-27318(共同為,數(shù)據(jù)寄存器2731)、以及多個共享訪問端口 2733r27338 (共同為,共享訪問端口 2733)。如圖27所示,使能寄存器2732的數(shù)據(jù)輸入是TDI輸入,使能寄存器2732的數(shù)據(jù) 輸出是第一共享訪問端口 273h的輸入之一,第一共享訪問端口 2733i的數(shù)據(jù)輸出是第一數(shù) 據(jù)寄存器273^的數(shù)據(jù)輸入,第一數(shù)據(jù)寄存器273^的第一數(shù)據(jù)輸出是第二共享訪問端口 27332的輸入之一,第二共享訪問端口 27332的數(shù)據(jù)輸出是第二數(shù)據(jù)寄存器27312的數(shù)據(jù)輸 入,第二數(shù)據(jù)寄存器27312的第一數(shù)據(jù)輸出是第三共享訪問端口 27333的輸入之一,第三共 享訪問端口 27333的數(shù)據(jù)輸出是第三數(shù)據(jù)寄存器27313的數(shù)據(jù)輸入,依此類推,直到第八數(shù) 據(jù)寄存器27318的第一數(shù)據(jù)輸出是TDO輸出為止。還如圖27所示,每個共享訪問端口 2733包括第二數(shù)據(jù)輸入(還耦合至掃描路徑 中在前寄存器的數(shù)據(jù)輸出)。共享訪問端口 27331i-27338的第二數(shù)據(jù)輸入分別耦合至來自 外部并行端口 2720的相應(yīng)數(shù)據(jù)輸入(這里表示為并行輸入連接)。因此,每個共享訪問端 口 2733選擇來自其兩個數(shù)據(jù)輸入之一的數(shù)據(jù)(即,選擇來自串行掃描路徑中的在前寄存器 的數(shù)據(jù)輸入或來自外部并行端口 2720的并行輸入連接之一的數(shù)據(jù)輸入,該外部并行端口 2720連接至共享訪問端口 2733)。如圖27所示,使能寄存器2732的輸出應(yīng)用于每個共享訪問端口 2733,作為針對每 個共享訪問端口 2733的輸入選擇信號,從而由每個共享訪問端口 2733控制數(shù)據(jù)選擇。如果使能寄存器2732的值指示,應(yīng)當(dāng)將串行數(shù)據(jù)(來自TAP端口 2710)提供給核 心2739,則從使能寄存器2732向每個共享訪問端口 2733提供的輸入選擇信號指引每個共 享訪問端口 2733來選擇來自掃描路徑中在前寄存器的輸入(而不是來自并行輸入連接的 輸入,該并行輸入連接連接至來自外部并行端口 2720的共享訪問端口)。在這種情況下,共享訪問端口 2733i選擇來自使能寄存器2732的輸入(而不是來 自外部并行端口 2720的并行輸入連接的輸入),從而使得將使能寄存器2732的值讀入到第 一數(shù)據(jù)寄存器(并因此提供給核心2739)。類似地,在這種情況下,共享訪問端口 27332選擇來自第一數(shù)據(jù)寄存器2731i的輸入(而不是來自外部并行端口 2720的并行輸入 連接的輸入),從而使得將第一數(shù)據(jù)寄存器273^的值讀入到第二數(shù)據(jù)寄存器27312中(并 因此提供給核心2739)。換言之,盡管為了清楚起見,省略了對剩余數(shù)據(jù)轉(zhuǎn)移的描述,但是其 他數(shù)據(jù)寄存器2731的類似數(shù)據(jù)轉(zhuǎn)移使得能夠?qū)⒋袛?shù)據(jù)提供給核心2739。如果使能寄存器2732的值指示,應(yīng)當(dāng)將并行數(shù)據(jù)(來自外部并行端口 2720)提供 給核心2739,則從使能寄存器2732提供給每個共享訪問端口 2733的輸入選擇信號指引每 個共享訪問端口 2733來選擇來自并行輸入連接的輸入(而不是來自掃描路徑中在前寄存 器的輸入),該并行輸入連接連接至來自外部并行端口 2720的共享訪問端口。在這種情況下,共享訪問端口 2733i選擇來自外部并行端口 2720的并行輸入連接 的輸入(而不是來自使能寄存器2732的輸入),該輸入連接至共享訪問端口 27311;從而使 得將來自外部并行端口 2720的并行輸入連接的值讀入到第一數(shù)據(jù)寄存器2731i中(并因 此提供給核心2739)。類似地,在這種情況下,共享訪問端口 27332選擇來自外部并行端口 2720的并行輸入連接的輸入(而不是來自第一數(shù)據(jù)寄存器273^的輸入),該輸入連接至 共享訪問端口 27332,從而使得將來自外部并行端口 2720的并行輸入連接的值讀入到第二 數(shù)據(jù)寄存器27312中(并因此提供給核心2739)。換言之,盡管為了清楚起見,省略了對剩余數(shù)據(jù)轉(zhuǎn)移的描述,但是其他數(shù)據(jù)寄存器2731的類似數(shù)據(jù)轉(zhuǎn)移使得能夠?qū)⒉⑿袛?shù)據(jù)提供 給核心2739。此外,盡管連接2700的直接NSDL描述可能會十分復(fù)雜,但是應(yīng)注意,這種類型的 連接在功能上等同于關(guān)于圖26示出和描述的連接2600。在連接2600和2700中,“選擇” 片的值決定是串行數(shù)據(jù)到達(dá)核心還是并行數(shù)據(jù)到達(dá)核心。連接2600與連接2700之間的唯 一不同在于預(yù)期值在連接2700中,共享寄存器,從而在并行訪問的情況下,要預(yù)期的值是 并行值,而串行數(shù)據(jù)被蓋寫。盡管這里主要關(guān)于向具有一個并行端口的片上系統(tǒng)提供并行訪問進(jìn)行了示出和 描述(為了清楚起見),但是可以向具有多個并行端口的片上系統(tǒng)提供并行訪問。類似地, 盡管這里主要關(guān)于向具有一個并行片的片上系統(tǒng)提供并行訪問進(jìn)行了示出和描述(為了 清楚起見),但是可以向具有多個并行片的片上系統(tǒng)提供并行訪問。在這樣的實施例中,可以以任何方式來標(biāo)識多個并行端口。例如,可以使用有序編 號(例如,關(guān)于交叉器件所描述的)來標(biāo)識多個并行端口。例如,具有η個并行輸入和m個并 行輸出的片上系統(tǒng)具有以下端口 ‘‘ parallel_in_<i>",i = 0,1,…,n_l ; ‘‘ parallel, out_<k>",k = 0,l,…,m-1。此外,每個并行端口具有其自己的函數(shù),可以以任何方式來 標(biāo)識每一個函數(shù)(例如,通過使用附加在結(jié)尾處的相應(yīng)端口名稱,例如“get_parallel_ data_parallel_in_0“ 、 “ set_scan_synchro_parallel_out_3“等)。相反,對于多個并行片的命名不存在限制,只要并行片的相應(yīng)名稱指示該片是并 行片(例如,名稱可以以"parallel"開始)。在一個實施例中,其中"sencLparallel data"和〃 get_parallel_data〃采用片名稱作為參數(shù),可以將任何端口與任何并行寄存 器相連接。在另一實施例中,其中,‘‘send_parallel_data〃 和〃 get_parallel_data〃 不采用片名稱作為參數(shù),片上系統(tǒng)可以確切地聲明每個端口是如何“連接至”一個或多個并 行片的。并行接口的NSDL描述包括掃描路徑及其相關(guān)函數(shù)的描述。NSDL描述指示與并行 接口連接的實際物理端口(并行管腳)。這可以由頂層文件中經(jīng)典BSDL/HSDL規(guī)則來處理 (例如,采用BSDL識別TAP信號的方式)。將并行通信協(xié)議的實現(xiàn)委托給并行接口驅(qū)動器。 告知測試系統(tǒng)哪些并行管腳受到哪些并行接口驅(qū)動器的控制。盡管這里主要關(guān)于針對并行端口的輸入數(shù)據(jù)流進(jìn)行示出和描述,但是針對并行端 口的輸出數(shù)據(jù)流是對稱的。換言之,對于可以針對至片上系統(tǒng)的輸入數(shù)據(jù)流而實現(xiàn)的每個 輸入連接類型(如關(guān)于圖24-圖27示出和描述的),可以為來自片上系統(tǒng)的輸出數(shù)據(jù)流實 現(xiàn)相應(yīng)的對稱的輸出連接類型。盡管這里主要關(guān)于支持并行訪問接口的內(nèi)部并行端口與片上系統(tǒng)的并行端口之 間的簡單內(nèi)部連接的并行訪問接口進(jìn)行示出和描述,但是并行訪問接口可以支持并行訪問 接口的內(nèi)部并行端口與片上系統(tǒng)的并行端口之間的更復(fù)雜的內(nèi)部連接。這樣,不管復(fù)雜性 如何,NSDL能夠描述任何測試訪問機(jī)制(TAM)。 在一個實施例中,可以使用一個或多個交叉器件來提供并行訪問接口的內(nèi)部并行 端口與片上系統(tǒng)的并行端口之間的內(nèi)部連接。在一個這樣的實施例中,選取和取消選定函 數(shù)可以用于處理內(nèi)部連接,無論來自串行掃描路徑還是來自并行端口。
在另一實施例中,可以使用扇入/扇出方案來提供并行訪問接口的內(nèi)部并行端口與片上系統(tǒng)的并行端口之間的內(nèi)部連接。在這樣的實施例中,并行端口的比特可以用于驅(qū) 動多個片上系統(tǒng)器件(即,通過內(nèi)部并行端口在多個片上系統(tǒng)器件之間共享外部并行端口 的帶寬)。因此,盡管這里主要關(guān)于提供對一個片上系統(tǒng)的器件的并行訪問的并行訪問器件 進(jìn)行示出和描述,但是在其他實施例中,并行訪問接口可以提供對多個片上系統(tǒng)器件的并 行訪問。關(guān)于圖28示出和描述了這種并行訪問接口的一般連接方案。圖28示出了并行訪問接口的內(nèi)部連接方案的高級框圖。具體地,內(nèi)部連接方案 2800提供至三個片上系統(tǒng)2820廠28203(共同為片上系統(tǒng)2820)的并行訪問接口 2810。并 行訪問接口 2810包括內(nèi)部并行端口 2811、外部并行端口 2812、以及內(nèi)部接口 2813。外部 并行端口 2812和內(nèi)部并行端口 2811支持從測試系統(tǒng)至片上系統(tǒng)2820的η個輸入連接,并 且支持從片上系統(tǒng)2820至測試系統(tǒng)的m個輸出連接。如圖28所示,每個片上系統(tǒng)2820包括支持并行輸入連接和并行輸出連接的并行 端口。并行訪問接口 2810的內(nèi)部端口支持(1)至每個片上系統(tǒng)2120的輸入數(shù)據(jù)流的扇 出,以及⑵來自每個片上系統(tǒng)2120的輸出數(shù)據(jù)流的扇入。外部并行端口 2812的η個輸 入連接扇出到至片上系統(tǒng)2820i的i個輸入連接,至片上系統(tǒng)28202的j個輸入連接,以及 至片上系統(tǒng)28203的1^個輸入連接(即,η = i+j+k)。外部并行端口 2812的m個輸出連接 扇入自來自于片上系統(tǒng)2820i的ρ個輸出連接,來自于片上系統(tǒng)28202的q個輸出連接,以 及來自于片上系統(tǒng)28203的r個輸出連接(即,m = p+q+r)。因此,使用NSDL描述語言,可以容易描述任何復(fù)雜度的片上系統(tǒng)器件。可以描述 片上系統(tǒng)器件的任何測試資源,包括組件(例如,IP、儀器、交叉器件等),組件之間的互連 等,及其各種組合。在NSDL中,片上系統(tǒng)的測試資源的描述是算法描述,其中,每個算法描 述包括以適于測試工具理解的格式而定義的一個或多個構(gòu)成規(guī)則。圖29示出了用于描述片上系統(tǒng)的測試資源的方法。盡管示出和描述了以串行方 式執(zhí)行,但是可以同時地或者以與關(guān)于圖29示出和描述的順序不同的順序來執(zhí)行圖29的 方法2900的步驟的至少一部分。方法2900開始于步驟2902,并前進(jìn)至步驟2904。在步驟2904,產(chǎn)生片上系統(tǒng)的每個組件的算法描述。每個組件的算法描述描述了組件所支持的至少一個函數(shù)到針對該組件的至少一 個寄存器值的映射。每個組件的算法描述描述了組件的內(nèi)部掃描路徑。在一個實施例中,通過以下方式來產(chǎn)生片上系統(tǒng)的組件的算法描述標(biāo)識由組件 支持的至少一個函數(shù);產(chǎn)生組件的算法描述,其為至少一個函數(shù)中的每一個,定義該函數(shù)至 針對組件的至少一個寄存器的至少一個寄存器值的映射;以及存儲組件的算法描述。在步驟2906,產(chǎn)生片上系統(tǒng)的組件之間的互連的算法描述。組件之間互連的算法 描述指定片上系統(tǒng)的系統(tǒng)級拓?fù)?。在步驟2908,使用組件的算法描述和組件之間互連的算法描述來產(chǎn)生片上系統(tǒng)的 算法描述。片上系統(tǒng)的算法描述描述了片上系統(tǒng)的拓?fù)?,根?jù)該拓?fù)洌梢詷?gòu)建片上系統(tǒng)的 掃描路徑的描述。在步驟2910,存儲片上系統(tǒng)的算法描述??梢源鎯γ總€組件的各個單獨算法描述。 存儲組件之間互連的算法描述??梢砸匀魏畏绞酱鎯λ惴枋觥T诓襟E2912,方法2900結(jié)束。算法描述適于測試工具理解,以用于測試片上系統(tǒng)。這樣,處理器可以接收算法描 述(例如,從存儲器、從另一系統(tǒng)、或者從這種描述的任何其他源),以執(zhí)行各種測試(例如, 組件級測試、系統(tǒng)級測試等,及其各種組合)。如這里所述,在一個實施例中,可以使用VHDL實現(xiàn)NSDL語言。在一個這樣的實施 例中,可以通過上下文巴克斯范式(BNF)語法來形式化針對NSDL的語法規(guī)則。例如,BNF容 易描述語法結(jié)構(gòu)的產(chǎn)生,如以下示例<entity_declaration>=ENTITY<identifier>IS<entity_header><entity_declarative_part>[BEGIN<entity_statement_part>]END[ENTITY][<entity_simple_name>];在該示例中,符號'='指示,可以將左側(cè)元素派生至右側(cè)結(jié)構(gòu)中。右側(cè)可以
由更多派生詞素(以大寫字符指示的不可再派生的原子元素)構(gòu)成。節(jié)點是派生點,而葉 節(jié)點是不能再派生的節(jié)點(即,右側(cè)僅包含詞素)。方括號'['和‘Γ用于表達(dá)可選的 派生(它們用于定義遞歸規(guī)則)。符號' <'和' >'用于指示進(jìn)一步派生。與VHDL規(guī)則 一致,引號用于指示串。這種類型的語法能夠產(chǎn)生在結(jié)構(gòu)上匹配語言的任何可能“短語”,并能夠用于驗證 給定文本是否屬于該語言(即,其是否遵照規(guī)則)。這僅僅是結(jié)構(gòu)性描述,且不能夠傳遞與 其“含義”有關(guān)的任何信息,而是,必須添加屬性,以考慮到上下文信息Left_hand 個(H) J, (L) = right_hand_0 個(HO) J, (LO) [right_ hand_l (HI)丨(Ll)],其中:丨(L)指示從低級派生導(dǎo)出并傳輸至高級派生的信息;丨(H)指示從高級派生導(dǎo)出并傳輸至低級派生的信息;每個節(jié)點可以定義一組規(guī)則,以定義如何從HO…Hn開始計算H,以及如何從L開 始來獲得不同的LO…Ln;以及每個級別能夠為定義對于H、L、Hi以及Li的一組條件,以使短語在該語言中具有
"合々,,—以下規(guī)則(編號[1]至[14])描述IP和儀器的聲明[l]<IP_declaration> (H, η) (P_info) (Ext) (Cross) (Par)::=IP<identifier>IS<device_header> 個(Ext)個(Cross_decl)個(Par)BEGIN<IP_instrument_archi_body> 個(H,η) I (Ext)個(P_info)個(Sel_Cross)個(Par_dec)END [IP] [<device_simple_name>];規(guī)則=Cross = Cross_decl U Sel_Cross
如果Cross_decl /二0,檢查對于每個“有線”元件是否存在“選擇” / “取消選定” 語句,以及對于每個“事務(wù)”元件是否至少存在“選擇”。NB Cross—decl =0 G Sel—Cross =0,否則錯誤檢查是否已經(jīng)解決了〃 architecturejiody"中的所有模塊間依賴性。如果Par/二0,檢查在(H,η)內(nèi)是否存在至少一個并行寄存器,并且在(Pjnfo) 內(nèi)是否存在相應(yīng)〃 get_parallel_data〃 /〃 send_parallel_data〃 的聲明。如果Par_dec/=0,檢查其與Par中信息(端口名稱、并行寄存器、連接,扇入扇出 等)的一致性。NB: Par—decl =0 G Par=0,否則錯誤。[2] <instrument_declaration> 個(H, η)個(Ρ_ info)個(Ext)個(Cross)個(Par)=INSTRUMENIXidentifier>IS<device_header> 個(Ext)個(Cross一decl)個(Par)個(Cross_decl)BEGIN<IP_instrument_archi_body> 個(H,η) I (Ext)個(P_info)個(Sel_Cross)個(Par_dec)END[instrument][device_simple_name];規(guī)貝1J :Cross = Cross_decl U Sel_Cross [Same as rule 1][3]<IP_instrument_archi_body> 個(P_info) I (Ext)個(Sel_Cross)個(Par dec)::=ARCHITECTURE<architecture_simple_name>OF<entity_name>ISarchitecture_declarative_partBEGIN<IP_instr_stat_part> 個(H, η)個(P_info) J, (Ext)個(Sel. Cross) (Par_dec)END[ARCHITECTURE][<architecture_simple_name>];[4] <IP_instr_stat_part> 個(HIn)個(P_info) I (Ext)個(Sel_Cross)個(Par dec)::=<intemal_scan_path> 個(H, η)[<parallel_declarations> (Par—dec)]<IP_instrument_statement_part> I (Ext)個(P_info)個(Sel_Cross)[5]<device_header> 個(Ext)個(Cross_decl)個(Par)::=GENERIC ([<crossroad_information> 個(Cross_decl)][ ;<parallel_information> (Par)][ ;<external_dependencies> 個(Ext)]);該規(guī)則實現(xiàn)與掃描路徑的鏈接的定義以及最終外部引用的聲明。
NB :<crossroad_information> 在規(guī)則[10]中導(dǎo)出。[6]<external_dependencies> 個(Ext)::=<external_reference> 個(New一Ξχ )[ ;<external_dependencies> 個(Old一Ext)]規(guī)貝Ij =Ext = New_Ext U 01d_Ext[7]<external_reference> 個(Ext):: = <string_identifier>:stringRule:個(Ext) = string_identifier這些入口中的每一個定義針對外部元素的符號名稱。該符號用于針對外部函數(shù)依 賴性來引用該元素。[8]IP_instrument_statement_part I (Ext)個(P_info)=<proc_func_list> I (Ext)個(P_use)個(Sel_Cross)[TEST_SET<proc_func_list> 丨(Ext)丨(P_test)END TEST_SET ;]該規(guī)則描述關(guān)于儀器使用的強(qiáng)制過程集合以及可選測試過程集合。P_Info = P_ Test UP_use。[9]<internal_scan_path> 個(H,η)=<component_nstantiation_statement>[<internal_scan_path>]在〃 Partial Access (部分訪問)〃或〃 Full Access (全訪問)〃的情況下,掃 描路徑由其組件的直接實例化來描述(見針對(H,n)的上下文規(guī)則的規(guī)則[37]-[41])。注 意該規(guī)則實現(xiàn)儀器和IP嵌套。如果不存在該派生,則標(biāo)識"無訪問"器件。[10]<crossroad_information> (Cross)=PRECEDENT: STRING: =〃 TDI 〃 ;FOLLOWING:STRING: =〃 TDO〃[〈tributaries〉個(Affls)][〈affluents〉個(Tribs)];規(guī)貝丨J =Cross = Affls U Tribs[11]〈tributaries〉個(Tribs)::=TRIBUTARY:STRING: =" deselected";<numbered_tributaries> (num_tribs);規(guī)則Tribs=" tributary"I Tribs = num_tribs[12]<numbered_tributaries> 個(Tribs)::=TRIBUTARY<numeral>:STRING: =" deselected"[;<numbered_tributaries> (01d_Tribs)]規(guī)貝lJ:Tribs=〃 tributary_<numeral>" U 01d_tribs[13]〈affluents〉個(Affls)::=AFFLUENT:STRING: =〃 deselected";<numbered_affluents> (num_affIs);規(guī)則Affls=" affluent"
Affls = num_affls[14]<numbered_affluents> 個(Affls)::=AFFLUENT_<numeral>STRING: =〃 deselected"[ ;<numbered_affluents)個(01d_Affls)]規(guī)則Affls=" affluent_<numeral>〃 U 01d_Affls規(guī)則[1]-[14]的儀器和IP的定義允許對IP/儀器多次實例化(例如,像利用經(jīng)典VHDL組件所進(jìn)行的那樣)。這在規(guī)則[15]中示出。[15]component_instantiation_statement=instantiation labelinstantiated unit「generic map aspect]「port map aspect];從語法觀點來看,該實例化規(guī)則(規(guī)則[15])與經(jīng)典VHDL中的確切地相同。所有
新穎性都在上下文側(cè)(1)實例化將器件的拷貝創(chuàng)建到掃描路徑中。編譯器可以容易地從編譯庫獲取其 信息,并使用它們來完成系統(tǒng)掃描路徑。(2)通用映射負(fù)責(zé)指定精確掃描路徑插入點(“precedent"、“ following", 支流和分支)。(3)其他通用映射將外部元素的符號名稱分解成實際名稱(即相應(yīng)實例的標(biāo)簽)。 測試工具還必須檢查所引用的過程實際存在于實例化的元素中。以下規(guī)則(編號[16]至[33])描述了示例過程[16]<proc_func_list> J, (Ext) (P_info)=[<proc_func_proto_list>]<complete_proc_func_list> I (Ext)個(P一info)[17]<proc_func_proto_list>=<proc_func_prototype>[ ; <proc_func_proto_li st>][18]<proc_func_prototype>:: = <procedure_prototype><function_prototype>[19]<procedure_prototype>::=procedure<procedure_name>(<formal_parameter_list>)[DEPENDENCIES(<dep_list>);]LENGTH(<length_descriptor>);BUSY_M0DE(<mode_identifier>);[C0NNECTI0N<connection_type> ;]規(guī)則過程原型僅僅是語法手段,以使得代碼對于人類用戶而言更加可讀。它們不
攜帶上下文信息。NB 僅針對選擇過程,允許“連接”派生。[20]<function_prototype>:=FUNCT10N<prο c e dure_name >(<formal_parameter_list>)[DEPENDENCIES(<dep_list>);]
39
LENGTH(<length_descriptor>);BUSY_M0DE(<mode_identifier>);[<optional_attributes>]RETURN<type> ;規(guī)則過程原型就是僅僅是語法手段,以使得代碼對于人類用戶而言更加可讀。它 們不攜帶上下文信息。NB 僅針對選擇過程,允許“連接”派生。[21]<formal_parameter_list>規(guī)則參數(shù)遵照正常VHDL參數(shù)的語法。通過顯式命令來進(jìn)行對掃描路徑片的引用。[22]<complete_proc_func_list> I (Ext)個(P_info)個(Cross)::=〈complete一procedure〉 I (Ext)個(new一P)個(Cross一Info)[;<complete_proc_func_list> I (Ext)個(OldP)個(01d_Cross)]<complete_function> I (Ext)個(new_P)[;<complete_proc_func_list> I (Ext)個(OldP)]規(guī)則P_info = 01d_P U New_PCross = 01d_Cross U Cross_info[23]〈complete一procedure〉 I (Ext)個(Proc_info)個(Cross一info)::=PR0CEDURE<prοcedure_name 個(Sel_info)>(<formal_parameter_list> 個(P))[DEPENDENCIES (<dep_list>)丨(Ext)丨(D);]LENGTH(<length_descriptor> 個(L));BUSY_M0DE(<mode_identifier>)丨(M);[C0NNECTI0N<connection_type> 丨(C_type);]ISbegin<procedure_body>END<procedure_name> ;規(guī)則P =參數(shù)信息(標(biāo)準(zhǔn)VHDL)。一個參數(shù)至少應(yīng)當(dāng)指代片或靜態(tài)比特流。L =過程長度信息D =依賴性信息M=忙模式信息<procedure_name> 是字面標(biāo)識符<procedure_body> 類似正常 VHDL 中的派生Proc_info = PULUDUMCross_info =如果Sel—info/=0 (SeL[l]_SeL[6]中的命名規(guī)則)則 Cross_info = Sel_info U C_type0677]NB: Sel_info=0GC_type=0,否則出錯0678][24]<complete_function> I (Ext)個(Proc_info)=0679]FUNCTION<function_name>(<formal_parameter_list> 個(P))0680][DEPENDENCIES(<dep_li st>) I(Ext) (D);]0681]LENGTH(<length_descriptor> 個(L));0682]BUSY_M0DE(<mode_identifier>)個(M);0683]RETURN<type>IS0684]BEGIN0685]<function_b°dy>0686]END<function_name> ;0687]規(guī)則0688]P =參數(shù)信息(標(biāo)準(zhǔn)VHDL)。一個參_女至少應(yīng)當(dāng)指代片或靜態(tài)比特流。0689]L=過程長度信息0690]D=依賴性信息0691]M=忙模式信息0692]<function_name>是字面標(biāo)識符0693]<function_body>類似正常VHDL中的派生0694]Proc_info = PULUDUM0695][25]<dep_list> 丨(Ext)丨(D_new)=0696]<dependence> I (Ext) (D)[ ; dep_list I (Ext) (D_old)]0697]規(guī)貝"J :D_new = D_old U D 或 D_new ==D0698][26]<dependence> J, (Ext)個(D)::=〈string—identifier〉 (P)0699]<string_identifier> (Ε). <string_identifier> (P)0700]規(guī)則0701]P=依賴過程的名稱0702]E =在檢查E e Ext中定義外部器件P的名稱,否則錯誤0703]D = PUE0704][27]<mode_identifier> 丨(M)=HOLD IDONT—CARE0705]規(guī)則M=〃 hold"或〃 dont care"0706][28]<length_descriptor> 個(L)==〈length—exp> 個(T) [:〈end—cond>0707]規(guī)則L = T U C0708][29]<length_exp> (T):: = 〈time_exp> 丨(T) I0709]<time_exp> 個(L) , <time_exp> 個(A) , <time_exp> 個(U)0710]規(guī)則T = T或LUAUU0711]L=函數(shù)長度的下限0712]A=平均函數(shù)長度0713]U=函數(shù)長度的上限0714][30]<time_exp> 個(T) = <numeral>〈time_type>〈numeral〉0715]規(guī)則τ包含絕對時間或時鐘計數(shù)(如果不指定時間單位)
[31]<end_cond> 個(C):: = <boolean_expression>規(guī)則布爾表達(dá)指示過程的結(jié)束條件。其應(yīng)當(dāng)使用來自由顯式命名標(biāo)識的片的信號。[32]<connection_type> = WIRED|TRANSACTION[33]<optional_attributes>=規(guī)則有意地將該派生保留為開放的。通過定義可選的參數(shù),任何兩個操作員能夠 交換他們所偏好的格式的信息,而不是在標(biāo)準(zhǔn)化時間選擇的任意一種。例如,這能夠用于給 出用于功率管理的開關(guān)活動的估計,或者直接給出焦耳/瓦。測試工具忽略其未實現(xiàn)的派 生,最后產(chǎn)生警告。如這里所述,選擇過程由它們的名稱標(biāo)識。以下規(guī)則(編號Sel [1]至Sel [6])說 明了對使用類似BNF語法的選擇過程的命名的控制。這里關(guān)于圖8、圖9示出和描述了示例 交叉器件,并且圖10示出了這些規(guī)則的示例應(yīng)用。
0722]sel [1]<procedure_name> 個(Sel_info)=
0723]<radix>[<extentions> 個(Affls)個(Tribs)]
0724]規(guī)則:Sel_info= (Affls) U (Tribs)
0725]sel [2]<radix> = SELECT|DESELECT
0726]sel [3]〈extensions〉=
0727]〈affluents 個(Affls)>|〈tributariest 個(Tribs)>
0728]sel[4]<affIuents (Affls)>: = AFFLUENT
0729]<numbered_affIuents (Nmb_Affls)>
0730]
0
0731]規(guī)則如果(affluent)Affls=〃 All";
0732]如果(numbered_affluents)Affls = Nmb_Affls
0733]如果(0) AfflS= 0;
0734]說明該規(guī)則檢測函數(shù)命令的支流,函數(shù)進(jìn)行命令。可以為無(即,規(guī)則以空集結(jié)
束)、所有支流(非指定)、或僅僅為子集(一個或多個affluentjnmb ;
0735]sel[5]<numbered_affluents 個(New_Affls)>=
0736]AFFLUENT_<nmb>[;<numbered_affluents 個(01d_Affls)>]
0737]規(guī)則<nmb>可以是任何自然數(shù)
0738]New_Affls = 01d_Affls U afflunent_<nmb> ;
0739]sel[6]<tributariess 個(Tribs)> = TRIBUTARY
0740]<numbered_tributaries (Nmb_Tribs)>
0741]
0
0742]規(guī)則如果(tributary)Tribs=" All";
0743]如果(numbered_tributaries) Tribs = Nmb_Tribs
0744]如果(0) Tribs=0;
0745]說明該規(guī)則檢測函數(shù)命令的分支。可以為無(即,規(guī)則以空集結(jié)束)、所有分支(非指定)、或僅僅為子集(一個或多個tributary_<nmb>);對于自動測試產(chǎn)生工具所要使用的選擇過程,還需要標(biāo)準(zhǔn)化的自變量,使得自動 測試產(chǎn)生工具知道如何處理選擇過程。遵照實際選擇算法,存在兩種引用派生的方式(1) 通過顯示命名,即,使用“串”或等同類型;(2)通過對派生的有序編號,即,使用適宜大小的 std—logic—vector。自變量隨著過程控制的派生而改變(從選擇規(guī)則Sel[l]_Sel[6]看出)。以下原 型與最一般的情況有關(guān)(NB 即使該示例為“選擇”,相同規(guī)則對于“取消選定”當(dāng)然也是有 效的)1)select(tributary—nmbin std_logic_vector,affluent—nmb:in std_logic_vector)2)select (tributary—name:in string,affluent—name:in string)自動測試產(chǎn)生工具只須填入相應(yīng)的名稱/編號。在更精確的選擇函數(shù)的情況下, 僅需要使用一些自變量(例如,圖9的分級開關(guān)器件的取消選定函數(shù)),如果名稱本身已經(jīng) 唯一標(biāo)識了目標(biāo)(例如,圖8的SIB),則最終為空。以下規(guī)則(規(guī)則[34]至[41])基于VHDL 93,并與VHDL 93兼容,但是明顯更簡 單。已經(jīng)移除與NSDL不直接相關(guān)的所有派生。應(yīng)注意規(guī)則[34]至[39]是經(jīng)典VHDL語法 規(guī)則,這里所示的僅用于描述新的上下文規(guī)則。[34]library_unit:=primary_unitIsecondary_unit[35]primary_unit (H, η) (P_info) (Cross) (Par)::=entity_declaration 個(H, η)I configuration—declarationpackage_declarationIP_declaration (H, η) (P_info) (Ext) (Cross) (Par)I lnstrument_declaration 個(H,η)個(P_info)個(Ext)個(Cross)個(Par)注意這是NSDL與VHDL集成的規(guī)則,允許IP和儀器定義為頂層實體;這也是如下 所在的點測試工具完成分級分析,將分級分析的信息存儲在(H,n)、(P_info)、(Cross)以 及(Par)中。規(guī)則Ext = 0,否則出錯(其是頂層模塊)[36] secondary—unit =architecture—body I package—body[37]entity—declaration 個(H,η)::=ENTITY<identifier>ISentity—headerentity_dec larat ive_part[BEGIN
architecture—body (H,η)]
END [entity] [entity_simple—name];規(guī)則該規(guī)則描述由編譯器在實例化時使用的所定義實體的掃描路徑內(nèi)部。該規(guī) 則能夠用于描述非P1687兼容的實體,該實體具有掃描路徑,但不具有函數(shù)/過程集合。注 意,實體保持為與在經(jīng)典VHDL中類似,從而他們不允許外部依賴性。[38]architecture—body 個(H,η)=ARCHITECTURE<architecture_simple_name>OF entity_name ISarchitecture_declarative_partBEGINarchitecture一statement一part (H, η) (P, F)END[architecture][<architecture_simple_name>];規(guī)則檢查(P,F(xiàn))所定義的掃描鏈的完整性(以TDI開始,以TDO結(jié)束,沒有漏洞、 線性而非分級等)。[39]architecture_statement_part 個(H,η)個(P,F(xiàn))=[component一instantiation一statement 個(HijIii)個(P, FOi]規(guī)則H = U Hi+ (H_in,H_out) j(P,F(xiàn)) =U (P,F(xiàn))i,η = Σ[40]<scan_path> (SP_info)=<component_instantiation_statement> 個(C_info)[<scan_path> 個(S_old)]規(guī)則也可以將該規(guī)則解釋為,在并發(fā)語句上對VHDL規(guī)則的上下文檢查,這將規(guī) 則的開發(fā)限制到掃描鏈相關(guān)的單元實例的實例。SP_info = S_old U C_infor使用C_info內(nèi)的P和F來檢查掃描路徑完整性。[41]component_instantiation_statement 個(C_info)=instantiation_labelinstantiated_unit (H, η) (P, F[, H_in, H_out])[generic_map_aspect][port_map_aspect];規(guī)則n(單元數(shù)目),H(分級信息),P(在前),F(xiàn)在后),從數(shù)據(jù)庫中 的"instatiated_unit〃描述中獲取H_in, H_out,由控制單元引入的分級掃描路徑C_info = (H, η) U (P,F(xiàn)[,H_in,H_out])以下規(guī)則(編號[42]至[57])包括用于并行訪問的示例正式規(guī)則[42]<p£ir£illel_inform£ition> 個(Par):: =[<parallel_inputs> (par—in)][<parallel_outputs> (par—out)]
;
規(guī)則Par = par_in U par_out[43]<parallel_declarations> (Par—dec)::=[<parallel_connection> 個(par_connection)][<alternates> 個(alter—info)][<fanning> (fanning_info)]規(guī)貝1J :Par_dec = par_connection · fanning_info · alter_info[44]<paralle_inputs> (par—in)::=<single_parallel_input> (idf)<numbered_par_inputs> (par_ins);規(guī)則par_in = idfI par_in = par_ins[45]<single_parallel_input> (idf)::=PARALLEL_IN:STRING: =〃 deselected";規(guī)則idf="parallel_in"[46]<numbered_par_inputs> (par_in)::=<numbered_par_input> (idf)[;<numbered_parjnputs> (par_ins)]規(guī)則par_in = idf U par_ins[47]<numbered_par_input> (idf)::=PARALLEL_IN_<numeral>:STRING: =〃 deselected"規(guī)則idf= 〃 parallel_in_<numeral>〃[48]<parallel_outputs> (par—out)::=<single_parallel output) (idf)<numbered_par_outputs> (par_outs);規(guī)則par_out = idfI par—out = par—outs[49]<single_parallel_output> 個(idf)::=PARALLEL_0UT:STRING: =〃 deselected";規(guī)則idf=〃 parallel_out〃[50]<numbered_par_outputs> (par_outs)::=<numbered_par_output> (idf)[;<numbered_par_outputs> (old_par_outs)]規(guī)則par_outs = idf U old_par_outs[51]<numbered_par_output> 個(idf)::=PARALLEL_0UT_<numeral>:STRING: =〃 deselected"規(guī)貝U:idf=〃 paral 1 el_out_<numeral>"[52]<fanning> (fanning_info)::=<port_name> 個(idf) PAN<proveriMice> 個(provenance一info);
規(guī)貝1J :fanning_info = idf U provenance_info[53]<port_name>(idf):: = <single_parallel_output> 個(idf)<numbered_par_outputs> (idf)|<single一parallel—input〉個(idf)
<numbered_par_inputs> (idf)[54]<provenance> (provenance_info)::=<port_name> 個(idf) [&<proven£ince> 個(old_prov)]規(guī)貝1J :provenance_info = old_prov U idfNB: 〃標(biāo)識符〃該規(guī)則允許扇入和扇出的描述(關(guān)于圖28所示出和描述的),而不具有對用于該 構(gòu)成的并行端口的任何約束。使用全部端口,遵照VHDL信號的拼接規(guī)則(‘&'符號)進(jìn) 行構(gòu)成。[55]<alternates>(alter_info)=<serial_reg> 丨(idf)IS ALTERNATE 0F<alter_regs> 丨(idf_list);規(guī)則alter_info = idf U idf_list[56]<register_list> (idf_list)=<parallel_reg> 個(idf)[,<register_list> 個(old_idf_list)];規(guī)貝丨J:idf_list = idf U old_idf_list“ parallel_reg〃 是經(jīng)典 VHDL 標(biāo)識符。[57]<parallel_connection> 個(par_connection)=<port_name> (idf)C0NNECTS<register_list> (idf_list);規(guī)則par_connection = idf U idf_list如這里所述,以類似于交叉器件的方式,并行接口使用一些命名規(guī)則來標(biāo)識關(guān)鍵 資源。需要命名的元素包括并行片可以由并行連接訪問的片,其名稱以“parallel”開始。遵照連接方案,這 些片完全獨立于串行掃描路徑或串行掃描路徑的一部分。并行函數(shù)通過兩個特定函數(shù)‘‘get_parallel_data〃和〃send_parallel_ data",來獲得對并行資源的訪問。如這里所述,對于并行接口存在三種可能的同步模式與掃描鏈同步、突發(fā)、以及 異步。在一個實施例中,通過特定函數(shù)在這些模式之間切換,該特定函數(shù)正如交叉選擇函數(shù) 一樣,在需要時指定必須如何改變比特流。這些函數(shù)包括function set—scan—synchro return boolean ;function set—burst(length:in burst—length—type)return boolean ;function set_asynchro return boolean ;function disable—port return boolean ;測試工具通過跟蹤對這些函數(shù)的調(diào)用,能夠容易獲知哪個模式是活動的。器件僅 聲明針對其實際實現(xiàn)的模式的函數(shù)。必須在并行接口內(nèi)部將類型〃 bUrSt_length_type〃定義為整數(shù)子類型,使得開 發(fā)人員能夠指出允許用于突發(fā)的值的范圍。示例包括"subtype burst_length_type is3到10的整數(shù)范圍",“typeburSt_length_type是(6,8,10) 〃等。該解決方案意味著 每個并行接口聲明其自己的"bUrSt_length_type",這僅在局部是有效的,從而不會干涉 最終的其他接口。
在并行接口具有多于一個端口的實施例中,函數(shù)所引用的端口的名稱被附加至函 ■^l^oT^i^J^ll :" set_scan_synchro_parallel_out_0 “ , “ disable_port_parallel_ in"等。上述BNF規(guī)則僅組成了可以用于實現(xiàn)NSDL的規(guī)則的示例。本發(fā)明并不意在受限 于這樣的規(guī)則。圖30示出了適合于執(zhí)行這里描述的函數(shù)的通用計算機(jī)的高級框圖。如圖30所示, 系統(tǒng)3000包括處理器元件3002 (例如,CPU)、存儲器3004 (例如,隨機(jī)存取存儲器(RAM) 和/或只讀存儲器(ROM))、測試模塊3005、以及各種輸入/輸出設(shè)備3006 (例如,存儲設(shè)備, 包括但不限于磁帶驅(qū)動、軟盤驅(qū)動、硬盤驅(qū)動或光盤驅(qū)動、接收器、發(fā)送器、揚聲器、顯示器、 輸出端口以及用戶輸入設(shè)備(例如,鍵盤、鍵區(qū)、鼠標(biāo)等))。應(yīng)注意,本發(fā)明可以以軟件和/或軟件和硬件的組合來實現(xiàn),例如,使用專用集成 電路(ASIC)、通用計算機(jī)或任何其他硬件等同物。在一個實施例中,能夠?qū)⒈景l(fā)明測試過 程3005加載到存儲器3004中,并由處理器3002執(zhí)行,以實現(xiàn)如上所述的功能。這樣,能夠 將本發(fā)明的測試過程3005 (包括關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu))存儲在計算機(jī)可讀介質(zhì)或載體上,例如 RAM存儲器、磁或光驅(qū)動或磁盤等。盡管這里主要關(guān)于可以使用NSDL描述和測試的片上系統(tǒng)器件的特定實現(xiàn)方式進(jìn) 行了示出和描述,但是可以使用NSDL描述和測試各種其他片上系統(tǒng)器件。盡管這里主要示 出和描述了關(guān)于使用NSDL來描述和測試片上系統(tǒng),但是可以使用NSDL描述和測試各種其 他電子電路。本發(fā)明并不意在僅限于描述和測試這里示出和描述的特定電子電路。盡管這里主要關(guān)于可以用于使用NSDL來描述和測試片上系統(tǒng)的測試系統(tǒng)的特定 實現(xiàn)方式進(jìn)行了示出和描述,但是測試系統(tǒng)的各種其他實現(xiàn)方式可以用于使用NSDL來描 述和測試片上系統(tǒng)。本發(fā)明并不意在僅限于這里示出和描述的測試系統(tǒng)的特定實現(xiàn)方式。這里作為軟件方法討論的一些步驟可以在硬件內(nèi)實現(xiàn),例如,作為與處理器協(xié)作 以執(zhí)行各種方法步驟的電路。本發(fā)明的一部分可以實現(xiàn)為計算機(jī)程序產(chǎn)品,其中,當(dāng)由計算 機(jī)處理時,計算機(jī)指令適配計算機(jī)的操作,使得能夠調(diào)用或以其他方式提供本發(fā)明的方法 和/或技術(shù)。可以將用于調(diào)用本發(fā)明的方法的指令存儲在固定或可拆卸的介質(zhì)中、經(jīng)由廣 播的數(shù)據(jù)流或其他信號承載介質(zhì)進(jìn)行傳輸、和/或存儲在根據(jù)指令進(jìn)行操作的計算設(shè)備內(nèi) 的存儲器中。盡管這里已經(jīng)詳細(xì)示出并描述了結(jié)合本發(fā)明的教導(dǎo)的各種實施例,但是本領(lǐng)域技 術(shù)人員能夠容易設(shè)想同樣結(jié)合這些教導(dǎo)的其他改變的實施例。
權(quán)利要求
一種用于測試片上系統(tǒng)的方法,所述片上系統(tǒng)具有通過多個互連而相互連接的多個組件,所述方法包括接收片上系統(tǒng)的每個組件的算法描述;接收片上系統(tǒng)的組件之間的多個互連的算法描述;接收片上系統(tǒng)的算法描述,包括組件的算法描述和互連的算法描述;以及存儲片上系統(tǒng)的算法描述。
2.根據(jù)權(quán)利要求1所述的方法,其中,對于片上系統(tǒng)的每個組件,該組件的算法描述描 述了由該組件支持的至少一個函數(shù)中的每一個到針對該組件的至少一個寄存器值的映射。
3.根據(jù)權(quán)利要求2所述的方法,其中,對于片上系統(tǒng)的每個組件,所述至少一個函數(shù)包 括如下函數(shù)中的至少一個用于測試該組件的函數(shù)、以及用于執(zhí)行對該組件的操作的函數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其中,對于每個組件,該組件的算法描述描述了該組件 的內(nèi)部掃描路徑。
5.根據(jù)權(quán)利要求1所述的方法,其中,片上系統(tǒng)的算法描述包括片上系統(tǒng)的拓?fù)涞拿枋觥?br> 6.根據(jù)權(quán)利要求5所述的方法,其中,片上系統(tǒng)的拓?fù)涞拿枋霭ㄆ舷到y(tǒng)的系統(tǒng)掃 描路徑的描述。
7.根據(jù)權(quán)利要求6所述的方法,其中,系統(tǒng)掃描路徑的描述包括掃描路徑長度信息和 掃描路徑分級信息。
8.根據(jù)權(quán)利要求1所述的方法,其中,算法描述包括以適于測試工具理解的格式的至 少一個組成規(guī)則。
9.一種用于測試片上系統(tǒng)的組件的方法,其中,所述組件包括至少一個寄存器,所述方 法包括接收組件的算法描述,其中,對于由組件支持的至少一個函數(shù)中的每一個,該算法描述 定義了該函數(shù)到針對組件的所述至少一個寄存器的至少一個寄存器值的映射;以及 存儲組件的算法描述。
10.一種用于測試片上系統(tǒng)的方法,所述方法包括使用片上系統(tǒng)的算法描述來確定針對片上系統(tǒng)的測試比特流,其中,測試比特流包括 輸入比特流和預(yù)期輸出比特流;將輸入比特流應(yīng)用于片上系統(tǒng)的輸入測試訪問端口; 從片上系統(tǒng)的輸出測試訪問端口捕獲實際輸出比特流;以及 使用實際輸出比特流和預(yù)期輸出比特流來確定測試結(jié)果。
全文摘要
本發(fā)明提供了一種用于片級JTAG測試的新硬件描述語言。這種新硬件描述語言也稱作新BSDL(NSDL),使得能夠描述片上系統(tǒng)的測試資源,從而使得能夠以便于片上系統(tǒng)測試的方式來描述片上系統(tǒng)。本發(fā)明提供了一種自下至上的方法來描述片上系統(tǒng)。本發(fā)明支持片上系統(tǒng)的每個組件的算法描述,并且支持片上系統(tǒng)的組件之間的互連的算法描述,從而能夠產(chǎn)生整個片上系統(tǒng)或部分片上系統(tǒng)的算法描述。
文檔編號G06F11/26GK101884031SQ200880118834
公開日2010年11月10日 申請日期2008年11月25日 優(yōu)先權(quán)日2007年12月4日
發(fā)明者塔潘·喬蒂·查克拉伯蒂, 姜辰煥, 布拉德?!ぜ鳌し短乇R勒, 米歇爾·波多蘭, 蘇勒什·戈雅爾 申請人:阿爾卡特朗訊美國公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
普定县| 南川市| 万载县| 浦城县| 酉阳| 吉安县| 兴和县| 临潭县| 个旧市| 静安区| 基隆市| 新绛县| 黄陵县| 和平县| 巍山| 通榆县| 平泉县| 宁德市| 辉南县| 天峻县| 湖南省| 定结县| 高州市| 清丰县| 沁水县| 资中县| 玉环县| 山阴县| 建水县| 阆中市| 磴口县| 江口县| 牙克石市| 嘉黎县| 渝中区| 安国市| 庐江县| 五华县| 巧家县| 方山县| 平安县|