專利名稱:包括并行和串行訪問的片上系統的測試方法和裝置的制作方法
技術領域:
本發明涉及印刷電路板領域,更具體地,涉及印刷電路板的測試。
背景技術:
聯合測試行動組(JTAG)是指針對測試訪問端口的IEEE 1149標準,用于使用邊界 掃描來測試印刷電路板。自動測試產生(ATG)工具使用JTAG來測試印刷電路板。已經開發 了邊界掃描描述語言(BSDL)作為板級JTAG的IEEE 1149. 1標準的一部分,并且還已經開 發了分級掃描描述語言(HSDL)作為BSDL的擴展。BSDL/HSDL描述了在板上或板的組件上 可用的資源(其中,HSDL描述了由其他組件構成的組件)。雖然BSDL/HSDL對于板級JTAG 是高效的,但是從板級JTAG至片級JTAG的發展突出了 BSDL/HSDL的局限性。正在對指令JTAG (IJTAG)進行標準化(表示為P1687標準),來克服與從板級JTAG 至片級JTAG的轉換相關聯的現有JTAG局限性;然而,與IJTAG相關聯的進行中的工作已經 揭示出,BSDL/HSDL不能夠滿足片級JTAG測試的描述需求。BSDL/HSDL依賴于組成邊界掃 描寄存器的單元的有序列表,然而,這樣的靜態描述不適合描述IJTAG中所需的復雜動態 掃描鏈。此外,BSDL/HSDL不能提供用于描述系統的每個組件所需的測試過程的空間。
發明內容
本發明提供了一種用于片級JTAG測試的新硬件描述語言。這種新硬件描述語言 被稱作新BSDL(NSDL),使得能夠描述片上系統的測試資源,從而使得能夠以便于片上系統 測試的方式來描述片上系統。本發明提供了一種自下至上的方法來描述片上系統。本發明 支持片上系統的每個組件的算法描述,并且支持片上系統的組件之間的互連的算法描述, 從而能夠產生整個片上系統或部分片上系統的算法描述。本發明支持對一個或多個片上系 統器件的并行訪問,包括用于描述和使用并行訪問進行測試的方法。在一個實施例中,一種方法,包括接收對串行測試訪問接口的描述,該串行測試 訪問接口用于在測試系統與組件之間耦合測試比特流;接收對并行測試訪問接口的描述, 該并行測試訪問接口用于在測試系統與組件之間耦合測試比特流;以及存儲對串行測試訪 問接口的描述以及對并行測試訪問接口的描述,其中,串行測試訪問接口使用片上系統的 串行掃描路徑來提供對組件的訪問,并行測試訪問接口提供對組件的訪問,而不使用片上 系統的串行掃描路徑。在一個實施例中,一種方法,包括接收對并行接口模塊的描述,該并行接口模塊 適于將測試系統耦合至片上系統的核心模塊;以及存儲對并行接口模塊的描述,其中,并行 接口包括至少一個串行寄存器,適于經由片上系統的掃描路徑對核心模塊進行訪問;以 及至少一個并行寄存器,適于對核心模塊進行訪問,而不使用片上系統的掃描路徑。在一個實施例中,一種方法,包括接收對串行測試訪問端口的描述,該串行測試 訪問端口適于在測試系統與組件之間耦合測試比特流;接收對并行測試訪問端口的描述, 該并行測試訪問端口適于在測試系統與組件之間耦合測試比特流;接收對接口端口的描述,該接口端口適于將串行測試訪問端口和并行測試訪問端口耦合至片上系統的至少一部 分組件;以及對描述進行存儲,以在測試片上系統時使用。
結合附圖,通過考慮以下詳細描述,能夠容易理解本發明的教導,在附圖中圖1示出了測試環境的高級框圖;圖2示出了圖1的測試環境的片上系統的高級框圖;圖3示出了對“無訪問”組件的輸入-輸出認識;圖4示出了對“受限訪問”或“全訪問”組件的輸入-輸出認識;圖5示出了對組件的內部掃描路徑的片(slice)的顯式引用;圖6示出了交叉器件的表示的高級框圖;圖7示出了使用通用交叉器件來動態修改片上系統的掃描路徑的高級框圖;圖8示出了可以使用NSDL描述的一個交叉器件的高級框圖;圖9示出了可以使用NSDL描述的一個交叉器件的高級框圖;圖10示出了可以使用NSDL描述的一個交叉器件的高級框圖;圖11示出了圖1的測試環境的測試系統的高級框圖;圖12示出了通過JTAG連接來測試系統的圖1的測試系統執行的示例方法;圖13示出了通過JTAG連接來測試系統的圖1的測試系統執行的示例方法;圖14示出了通過JTAG連接來測試系統的圖1的測試系統執行的示例方法;圖15示出了使用圖2的片上系統的組件之一的描述來確定用于測試該組件的測 試過程的寄存器比特值;圖16示出了使用圖2的片上系統的組件的描述來確定用于測試圖2的片上系統 的組件之一的測試過程的比特流;圖17示出了在IJTAG/NSDL框架中測試系統的組件的圖1的測試系統執行的示例 方法;圖18示出了示例片上系統的高級框圖;圖19示出了使用圖18的片上系統的組件之一的描述來確定用于測試該組件的測 試過程的寄存器比特值;圖20示出了使用圖18的片上系統的組件的描述來確定圖18的片上系統的組件 的描述;圖21示出了并行訪問接口的通用連接方案的高級框圖;圖22是示出了兩個示例并行訪問連接方案的高級框圖;圖23A示出了示例測試環境的高級框圖;圖23B示出了圖23A的示例測試環境內的數據流的高級框圖;圖24示出了并行端口與片上系統的核心之間的示例連接的高級框圖;圖25示出了并行端口與片上系統的核心之間的示例連接的高級框圖;圖26示出了并行端口與片上系統的核心之間的示例連接的高級框圖;圖27示出了并行端口與片上系統的核心之間的示例連接的高級框圖;圖28示出了并行訪問接口的內部連接方案的高級框圖29示出了用于描述片上系統的測試資源的方法;以及圖30示出了適合于執行本文描述的函數的通用計算機的高級框圖。為便于理解,在可能的情況下,使用相同的附圖標記來指示附圖中相同的元件。
具體實施例方式如這里所述,正在將指令JTAG(IJTAG)標準化(被稱作P1687標準,或備選地, IJTAG)來克服與從板級JTAG測試至片級JTAG測試的轉換相關聯的現有JTAG局限性;然 而,與IJTAG相關聯的進行中的工作已經揭示出,BSDL/HSDL不能夠滿足片級邊界掃描的描 述需求。本發明提供了一種克服用于片級JTAG測試的BSDL/HSDL的局限性的新硬件描述 語言。這種新硬件描述語言在這里被稱作新BSDL(NSDL)。NSDL語言實現了片上系統的測 試資源的描述,從而便于片上系統的測試。從以下NSDL描述中可以看到NSDL描述語言的 許多優點。如這里所述,新硬件描述語言NSDL還實現了基于JTAG的測試中的附加改進。NSDL 描述語言使得能夠使用所謂的“交叉器件”來便于片上系統器件的測試。交叉器件實現了 對片上系統的系統掃描路徑的動態修改。NSDL描述語言還使得能夠使用并行訪問來便于片 上系統器件的測試。可以多種方式來提供對片上系統器件的并行訪問。此外,應當注意,雖 然這些改進已由NSDL描述語言實現,但是這些改進也可以結合今后開發的其他描述語言 來利用。在硬件開發過程中,有三個主要參與方器件供應商、系統架構師、以及測試工程 師。器件供應商制造特定器件。系統架構師使用由器件供應商提供的器件來構成系統。測 試工程師對該系統進行測試,以確保該系統正確運行(例如,測試系統器件之間的互連、器 件函數、系統函數等)。NSDL語言可以由器件供應商使用(例如,來描述其器件),由系統 架構師使用(例如,用于構成系統),以及由測試工程師使用(例如,用于測試該系統)。因 此,預期的是在整個硬件開發過程中使用NSDL語言。在片上系統開發過程中,組成系統的器件可以是“軟”器件,S卩,使用某種硬件描述 語言的器件描述。在該過程中,系統架構師在系統級開發流中將軟器件與系統級代碼集成, 以獲得最終由測試工程師進行測試的片上系統。由于片上系統的復雜度增加(例如,在器 件數目、器件之間的互連、器件內依賴性、器件間依賴性等方面),測試片上系統的復雜度也 增加。NSDL語言使得能夠容易描述并從而容易測試任何復雜度的片上系統。圖1示出了測試環境的高級框圖。具體地,測試環境100包括片上系統(S-o-C)llO 和測試系統(TS) 120。TS 120測試S-O-C 110 (例如,測試S-o_C 110的各個單獨組件(包 括組件函數)、S-o-C 110上器件之間的互連、S-o-C 110的系統級函數等,及其各種組合)。 TS 120經由測試訪問端口 (TAP) 115測試S-o-C 110,該測試訪問端口(TAP) 115包括輸入 端口 115工(表示為TDI端口)以及輸出端口 115。(表示為TDO端口)。在一個實施例中,在P1687環境中,通過IEEE 1149. 1標準描述TAP115。盡管這 里主要使用TDI端口 115I*TD0端口 115。示出和描述,但是TAP 115可以包括其他控制端 口,例如,TCK端口、TMS端口、以及可選地,TRST端口(出于清楚描述目的已經省略)。此 外,盡管主要關于由IEEE 1149. 1標準描述的TAP來示出和描述,但是TAP 115可以利用各 種其他端口(例如,由其他標準描述的端口等,及其各種組合)。
TS 120使用測試過程(test procedure)對S-o-C 110進行測試。TS 120可以使 用一個或多個測試過程來執行一個或多個測試。測試過程可以用于測試組件的一部分(例 如,組件函數、組件函數集、組件內依賴性等)、組件、一組組件(例如,組件之間的互連、組 件間依賴性等)、一個或多個系統級函數等,及其各種組合。TS 120產生測試過程來測試S-o-C 110。測試過程指定測試S-Q-CllO所需的信 息。針對S-o-C 110的測試過程可以指定S-o-C 110的描述(包括對S-o-C 110的各個單 獨組件中的每一個的描述,以及S-o-C 110的系統級描述)。測試過程可以指定輸入測試向 量和預期輸出測試向量。測試過程可以包括與測試相關聯的其他信息,例如,測試所需的估 計的時間、針對測試輸出數據處理(例如,日志記錄、錯誤觸發、恢復動作等)等,及其各種 組合。TS 120使用S-o-C 110的描述(包括對S_0_C 110的各個單獨組件中的每一個的 描述,以及S-o-C 110的系統級描述)來產生測試過程以測試S-o-C 110。可以使用NSDL 來指定對S-o-C 110的各個單獨組件的描述。單獨組件的描述可以描述該組件的內部掃描 路徑。可以使用NSDL來指定S-o-C 110的系統級描述。S-o-C 110的系統級描述可以描述 S-o-C 110的拓撲(例如,組件之間的互連、組件間依賴性等)。S-o-C 110的描述信息(包括各個單獨組件的描述、系統級描述等)包括用于為 S-o-C 110產生測試過程的信息。例如,描述信息包括組件掃描路徑信息、系統拓撲信息等, 可以對這些信息進行處理以確定掃描路徑長度信息、掃描路徑分級信息等,及其各種組合。 S-o-C 110的描述信息可以包括這里描述的任何其他描述信息。TS 120通過對S-o-C 110執行一個或多個測試過程來測試S-o-CllO。TS 120為 要執行的測試產生輸入比特流和預期測試結果(例如,預期輸出比特值或輸出比特流)。TS 120向TDI端口 115工提供輸入比特流(被稱作輸入測試向量),并接收來自TDO端口 115。 的相應輸出比特流(被稱作輸出測試向量)。TS 120將實際輸出比特流與預期輸出比特流 進行比較,以確定測試結果。TS 120可以存儲測試結果。TS 120可以執行一個或多個測試過程來測試S-o-C 110。TS 120可以以某種方式 組織對多個測試過程的執行,來最小化總測試時間(由于對于相同的測試過程的集合,不 同調度決策會得到不同的測試完成時間)。TS 120可以指定測試調度(即,對執行測試過 程所必須按照的順序進行指定的調度)。TS 120可以執行與片上系統的測試相關聯的多種 其他函數。圖2示出了圖1的測試環境的片上系統的高級框圖。如圖2所示,S-o-C 110包 括多個組件210A-210E(共同示為組件210),這些組件通過多個組件互連220 (共同示為組 件互連220)而相互連接。組件210可以包括可以包括在片上系統中的任何組件。可以使用NSDL來描述組 件210。組件210在這里也可以被稱作測試資源。在一個實施例中,在根據P1687標準的系統中,組件210可以包括IP、儀器 (instrument)、和/或選擇儀器比特(SIB)。知識產權(IP)器件是需要測試的正常器件。儀器是不需要測試的、提供適于幫助測試的功能(例如,讀取值、監視值、提供有 用信息等,及其各種組合)的器件。例如,儀器可以是要用于對加速壽命測試進行參數化的溫度傳感器的輸出。例如,儀器可以是對于軟件定義的無線電裝置的獲取階段,用于校準可 調諧濾波器的傳感器的參考值。換言之,儀器可以幫助在初始系統測試期間以及在整個系 統壽命期間進行測試。由于IP/儀器可能非常類似,這里可以交換地使用這兩個術語。此外,由于IP和 儀器可以用作片上系統的組件,因此更一般地,IP和儀器在這里可以被稱作組件。IP/儀器可以包括分級掃描路徑。具有分級掃描路徑的組件包括內部掃描路徑,當 將該組件引入到系統中時,該內部掃描路徑成為系統掃描路徑的一部分。SIB是分級掃描路徑單元,其使得能夠動態地將掃描路徑的一部分包括在掃描路 徑中或從掃描路徑中去除(這取決于測試中將會使用哪個或哪些器件)。SIB形成當前 P1687標準草案的硬件提議的一部分。一般而言,分級改善了對片上系統的組件的測試。例如,分級實現了測試期間對有 源系統掃描路徑的最小化以及對組件的隔離,從而減少了對片上系統的組件的訪問時間。在其他實施例中,在根據其他標準的系統中,組件210可以包括其他類型的組件。在一個實施例中,組件210可以包括一個或多個交叉器件。片上系統測試中對交 叉器件的使用是通過使用NSDL語言來實現的(即,大多數這樣的器件不能由BSDL/HSDL來 描述)。參照圖6-10可以更好地理解片上系統測試中對交叉器件的使用。如圖2所示,組件210中的每一個包括多個內部寄存器。具體地,組件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的內部掃描路徑。可 以使用NSDL來描述每個組件210的內部掃描路徑。如圖2所示,每個組件210支持至少一個函數。具體地,組件210a支持三個函數, 組件210b支持四個函數,組件210。支持三個函數,組件210d支持兩個函數,組件210e支持 一個函數。由每個組件210支持的函數分別利用每個組件210的寄存器(即,內部掃描路 徑)。因此,可以使用NSDL來描述每個組件210支持的函數。如圖2所示,S-O-C 110的組件210經由S_0_C 110的組件互連220連接。組件 210(即,組件210的內部掃描路徑)和組件210之間的組件互連220形成從S-O-C 110的輸 入測試端口(TDI)至S-O-C 110的輸出測試端口(TDO)的系統掃描路徑。可以使用NSDL來 定義系統掃描路徑(例如,通過使用NSDL來定義各個單獨組件中的每一個,以及使用NSDL 來定義系統的構成,從而形成基于NSDL的總體系統描述)。如這里所述,基于NSDL的S-O-C 110的總體系統描述是算法描述(即,由于在使 用相湖關聯的算法的集合中,描述組件210、組件互連220、組件內以及組件間依賴性等中 的每一個)。S-O-C 110的算法描述包括適于在測試S-O-C 110時由TS 120使用的信息 (例如,掃描路徑長度信息、掃描路徑分級信息等,及其各種組合)。可以通過以下方式來描述片上系統描述片上系統的每個組件(例如,描述IP、儀 器、交叉器件(當使用時)等,及其各種組合),描述片上系統的拓撲(包括描述片上系統的 每個組件之間的互連、組件內以及組件間依賴性等,及其各種組合)。在一個實施例中,在根據P1687標準的系統中,組件可以包括IP、儀器、和/或選擇 儀器比特(SIB),片上系統的描述需要每個IP/儀器的描述(例如,包括內部寄存器的含義、要應用/觀察的過程/比特流集合等),每個SIB的描述(當使用SIB時),系統掃描路 徑的構成的描述(即,掃描路徑如何通過片上系統,包括每個組件的內部掃描路徑如何通 過組件等)等,及其各種組合。將IP插入到掃描鏈中,這能夠實現通過掃描鏈對IP的測試。片上系統內對IP的 使用是根據針對IP的訪問權限級別(APL)(例如,無訪問、受限訪問、全訪問)而改變的。如果針對IP的APL是“無訪問”,則測試工具不知道IP的內部,因此必須依賴于由 IP的供應商提供的信息。例如,必須提供針對IP的比特流集合(即,輸入比特流和預期輸 出比特流)。在這種情況下,認為該比特流為靜態比特流。測試工具必須將針對IP的靜態 輸入比特流插入到針對片上系統的系統比特流中,并對IP的供應商所指定的相應輸出比 特流進行處理。如果針對IP的APL是“全訪問”,則測試工具完全知道IP的內部,包括用NSDL描 述的IP的內部掃描鏈以及用選擇的描述語言描述的IP的源。在這種情況下,測試工具能 夠直接計算針對IP的所需的輸入比特流和預期輸出比特流(例如,使用其自己的算法),或 者IP的供應商能夠提供預先計算的比特流的集合(例如,作為靜態和/或動態比特流)。如果針對IP的APL是“受限訪問”,則測試工具僅有限地知道IP的內部。提供IP 的NSDL描述。IP的NSDL描述包括IP的內部掃描鏈的描述,以及可以用于測試IP的過程 集。在這種情況下,測試工具使用IP的描述,以產生在測試IP時使用的比特流(例如,輸 入比特流和預期輸出比特流)。將儀器插入到片上系統中,這能夠實現了通過檢查一些值或條件來測試片上系 統。儀器可以支持可用于測試目的的一個或多個函數。因此,雖然IP的描述僅包括測試IP 所需的過程集,但是儀器的描述還包括可以用于訪問儀器的函數的過程(和/或比特流) 集。儀器的描述可以包括從構成儀器的寄存器的寄存器的值方面對儀器的函數的描述。因 此,使用NSDL,IP和儀器之間的唯一不同在于過程集。如這里關于IP和儀器所述,可以使用過程來指定IP和儀器的描述。過程可以視 為每次調用過程時要執行的原子指令的拼接。針對IP/儀器的過程描述可以取決于IP/儀器的APL。如果組件的APL是“無訪問”,則過程可以表示為比特流值(即,要寫入掃描路徑中 的值以及要從掃描路徑中讀取的值)。如果組件的APL是“受限訪問,,或“全訪問”,則對IP/儀器的掃描路徑的知曉提供 了相對于IP/儀器的過程的表示的附加自由度,使得可以構成過程。過程的空間構成指示 可以如何使用不同過程的輸入/輸出來構成片上系統的系統掃描路徑的輸入/輸出。時間 構成指示可以如何將過程順序地應用于相同組件(例如,IP/儀器),以執行特定操作。此 外,過程可以嵌套至和/或嵌套自更大的過程和/或多個更小過程。過程包括過程屬性(即,過程的描述)以及過程體。過程的描述可以包括以下信 息例如長度、忙模式指示、進入條件、退出條件、依賴性、內部掃描路徑描述等,及其各種組 合。固定長度過程可以定義為始終占用相同量的時間來執行的過程。可變長度過程可 以定義為占用可變量的時間來執行的過程。可以使用其他時間值(例如,最佳和最差情況 時間、平均時間等,及其各種組合)來定義可變長度過程。在一個實施例中,必須為每個可變長度過程提供至少一個退出條件。可以從周期角度來表達過程長度(或者,在不能夠用周期來表達的情況下,用諸 如秒等一些其他絕對項或時間的一些其他度量來表達)。例如,對于采取物理度量的儀器、 異步儀器、在非同步時鐘域中進行操作的儀器等,不能從周期角度來表達過程長度。如果以 時間來表達過程長度,則測試工具可以確定周期計數(例如,利用對實際測試時鐘周期的 知曉),或者估計周期計數(例如,使用參考時鐘周期)。過程應當聲明過程忙模式。如果在執行過程期間,掃描鏈的值不得改變,則過程的 忙模式為“保持”,(即,每次掃描訪問必須將其重置為相同值)。例如,處于“保持”模式的 儀器可以是組合(combinatorial)器件(即,每次修改都會影響結果)。如果在過程的執行 期間,掃描鏈的值不重要,則過程的忙模式為“不理會”。例如,處于“不理會”模式的儀器可 以是僅當被觸發時才對輸入進行采樣的任何器件。片上系統的描述還包括與片上系統相關聯的依賴性的描述。片上系統的依賴性包 括組件內依賴性(片上系統的一個組件的函數或過程之間),以及組件間依賴性(片上系統 的不同組件的函數或過程之間)。可以以許多方式來指定依賴性的描述(例如,通過列出這 些依賴性、基于名稱的鏈接等,及其各種組合)。例如,函數X可以通過〃函數X依賴于函數XI,X2,...,Xn的完成〃這樣的指示 來描述,這意味著該函數X在每個所列的子函數完成之前不能開始其執行。例如,過程X可 以通過"過程X依賴于過程Y"這樣的指示來描述,這意味著,出于多種原因,在執行過程X 之前,必須完成過程Y。可以以各種其他方式來描述片上系統的依賴性。應當聲明片上系統的組件內和組件間依賴性。依賴性的聲明使得測試工具能夠執 行測試調度。在一個實施例中,可以將依賴性聲明為該依賴性的過程的聲明部分的一部分。 在一個實施例中,可以使用顯式命名來聲明依賴性。在一個這樣的實施例中,通用參數可以 用于將外部依賴性與組件的符號名鏈接起來,其中該組件與該外部依賴性相關聯。使用NSDL,可以以各種其他方式來執行依賴性的描述和聲明。針對組件(或組件組)的一個過程(或多個過程)的構建基于組件的APL而變化, 組件的APL影響對與組件相關聯的輸入/輸出信息的認知。圖3示出了對“無訪問”組件300的輸入-輸出認知。如果組件的APL是“無訪 問”,則對于由組件支持的每個函數,函數體包括輸入流信息(要用于構成輸入比特流)、 函數長度和掃描路徑長度信息、以及輸出比特流信息(例如,預期的輸出比特流、所需的輸 出比特流處理等,及其各種組合)。圖4示出了對“受限訪問”或“全訪問”組件400的輸入-輸出認知。如果組件的 APL是“受限訪問”或“全訪問”,則組件的內部掃描路徑是已知的(即,組件的每個寄存器、 以及寄存器的拓撲是已知的)。可以將組件的內部掃描路徑分成多個片(slice),這些片可 以分布在一個或多個分級級別上。可以以任何方式(例如,使用相鄰級別的一個或多個寄 存器)來控制對不同分級級別的訪問。參照圖4示出和描述的組件,可以更好地理解將組 件的內部掃描路徑分成多個分級級別。如圖4所示,將內部掃描路徑分成五個片(表示為片1、2、3、4、5)。內部掃描路徑 的五個片分布在兩個分級級別(表示為級別0、1)上。片1、2、3、4、5分別包括4個、4個、3 個、3個和2個寄存器。片1、2、5位于分級級別0中。片3和4位于分級級別1中。寄存器(表示為寄存器Hl)控制內部掃描路徑分級的級別0和級別1之間的訪問。Hl寄存器控制 內部掃描路徑,使得對片3和4旁路(即,從內部掃描路徑中排除它們),或者不對片3和4 旁路(即,在內部掃描路徑中包括它們)。如圖4所示,內部掃描路徑的組成如下。片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。在一個實施例中,將組件的內部掃描路徑分成多個片是函數性,S卩,內部掃描路徑 的每個片具有在其上操作的一個或多個片函數,可以使用一個或多個片過程來測試每個片 函數,每個片函數是可由測試工具獨立調度的。在該實施例中,可以以類似于“無訪問”組 件的函數體的構成方式,來構成在內部掃描路徑的給定片上操作的函數體(即,使用輸入 比特流信息、函數長度和掃描路徑長度信息、輸出比特流信息等、及其各種組合來描述函數 體)。因此,利用與內部掃描路徑的不同片或片的組合一起操作的不同過程,可以以多 種方式來使用組件的內部掃描路徑的劃分。例如(參照圖4),執行與片1相關聯的第一過 程P1,以將數據寫入片1中,從而觸發組件中某個函數的執行,這得到片2中的存儲或結果 數據以及片5中的差錯數據。然后,可以執行兩個附加過程P2和P5(分別操作于片2和5 上)以分別讀取片2和5的值。因此,將內部掃描路徑分成片(包括在多個分級級別上劃 分),這提供了片上系統測試的很大靈活性。TS 120可以容易將算法過程轉換成串行測試 比特流(例如,輸入比特流和預期輸出比特流)。由于可以開發用于使用組件的內部掃描路徑的片的不同過程,所以利用內部掃描 路徑的片的過程必須能夠引用片(包括片內部的信號)。過程可以以任何方式引用片。在 一個實施例中,例如,過程可以使用顯式命名來引用片。在一個這樣的實施例中,向每個片 (即,寄存器或寄存器組)分配唯一名稱,從而使得能夠像訪問記錄一樣來訪問分級實例化 的片。關于圖5示出和描述了使用顯式命名來標識組件的片的示例。圖5示出了對組件500的內部掃描路徑的片的顯式引用。如圖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。換言之,對于片和寄存器的任意數目的分級級別,能夠使用唯一命名來引用內部掃描路徑的每個片、以及每個片的每個寄存器。盡管這里主要關于可以用于定義組件的過程或過程集合的特定過程屬性(例如, 過程長度、函數和過程依賴性、內部掃描路徑描述、片描述、片引用屬性等)進行示出和描 述,但是可以指定各種其他過程屬性。用于描述過程的過程屬性可以包括用于以支持片上 系統測試的方式來描述過程的任何信息。除了過程屬性以外,過程還包括過程體。過程體包括過程的細節。過程體可以以 任何方式來實現。過程體不具有掃描路徑的概念(而是,在片上并行進行訪問,以及測試工 具將這些操作合并成對系統掃描路徑的訪問)。過程體可以使用多種語句、斷言、嵌套過程 等,及其各種組合。在一個實施例中,其中,使用用VHDL語言實現的NSDL來描述片上系統(因此,使 用用VHDL語言實現的NSDL來描述與片上系統相關聯的每個過程),可以使用VHDL語法來 表達過程體。過程的過程體可以以其他方式來表達,這取決于片上系統的描述的實現方式。通過NSDL容易提供組件的內部掃描路徑的描述。在NSDL中,每個寄存器單元被認 為是實體,可以將寄存器單元分組成包(package)(例如,使用VHDL規則,其中NSDL實現為 VHDL的超集)。在NSDL中,使用兩個通用參數,“precedent” (在前)和“following”(在 后),來描述每個寄存器實體,這兩個參數可以用于通過顯式引用寄存器實例來表達掃描 路徑。寄存器實體的“precedent”參數指定至該寄存器實體的輸入的源。寄存器實體的 “following”參數指定來自該寄存器實體的輸出的目的地。因此,寄存器實體可以包括單個 寄存器、寄存器組(包括分級分組)等。針對與關于圖5示出和描述的內部掃描鏈相對應的以下樣本代碼,可以更好地理 解組件的內部掃描路徑的描述。以下樣本代碼示出了包括串行布置的四個基本邊界掃描寄存器在內的簡單掃描 路徑,其中,第一邊界掃描寄存器接收來自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 generic map (precedent = > " BS_0 " , following = >"BS_2:BS generic map (precedent = > " BS_1" , following = >'
//
“BS_1") BS_2〃 ); BS_3〃 );
BS_3:BS generic map (precedent = >" BS_2" , following => following);end ;以下樣本代碼示出了圖5的12寄存器掃描路徑的表示(描述)(其中,如關于圖5 示出和描述的,使用六個寄存器實體來表示12寄存器掃描路徑,包括四個單獨寄存器和由 4寄存器掃描鏈組成的兩個寄存器實體)。BS_0:BS generic map (precedent = > " TDI “ , following = >" BS_1");BS_1:BS generic map(precedent = > “ BS_0 “ , following = > “ SCAN_4_ BIT_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");使用這種類型的描述,測試工具可以在編譯時間(例如,使用上下文校驗)自動計 算與掃描路徑有關的信息(例如,其長度、其分級結構等,及其各種組合)。此外,寄存器實 體的描述是高度可再用的(例如,用于其他設計)。由于能夠以許多不同方式來收集、存儲 以及校驗針對寄存器實體的描述信息(即,由于符號表的實現方式在編譯器之間可能發生 顯著變化,例如,在散列表、數據庫等方面),所以出于清楚和一般性的目的,省略其細節。此外,由于使用這種類型的描述,容易描述片上系統的每個組件,因此可以通過對 單獨組件的描述進行組合來獲得片上系統的總體系統描述(包括組件之間互連的描述,組 件間依賴性的描述等,及其各種組合)。在其他工作中,NSDL為描述(因此,測試)片上系 統配置提供顯著靈活性。如這里所述,NSDL除了能夠描述形成片上系統的掃描路徑的一部分的典型組件以 外,NSDL還能夠描述能夠實現片上系統掃描路徑的動態改變的器件。用NSDL術語,這種類 型的器件被稱作“交叉器件”。參照圖6示出和描述了交叉器件的通用表示。圖6示出了交叉器件的表示的高級框圖。具體地,交叉器件表示600代表能 夠動態修改片上系統的掃描路徑的交叉器件。交叉器件將一個或多個輸入(稱作支流 (affluent))路由至一個或多個輸出(稱作分支(tributarie))。如圖6所示,交叉器件表 示600包括多個支流(表示為path_in_0至path_in_m)以及多個分支(表示為path_out_0 至 path_out_n)。為了在測試片上系統時利用交叉器件,必須描述交叉器件。使用BSDL/HSDL很難 (如果不是不可能的話)實現交叉器件的動態可變掃描路徑的描述,BSDL/HSDL專門被設計 為處理靜態掃描路徑。相反,NSDL能夠容易提供交叉器件的動態可變掃描路徑的描述,NSDL 提供由測試工具容易理解的交叉器件的算法描述。使用NSDL的交叉器件的通用描述如下IP<entity name)isGeneric (
precedentstring:=following:string:=affluent: string:="tributary:string:=);EncKentity name> ;從以上提供的交叉器件的通用描述可見,通用參數〃 affluent"(支流) 和〃 tributary"(分支)可以用于訪問分級掃描路徑。首先將通用參數〃 affluent" 和〃 tributary"設置為〃 deselected"(取消選定),使得交叉器件僅僅操作為掃描路徑 內的途經通過的組件(即,支流和分支是不活動的,因此不對掃描路徑進行動態修改)。通 過使用"affluent"和"tributary"參數來調用相關的選擇函數,可以激活交叉器件以 動態修改掃描路徑。如果存在多于一個支流和/或多于一個分支,必須唯一地標識支流和/或分 支中的每一個。在一個實施例中,例如,可以使用簡單的排序編號(例如,對于支流為 affluent_0、affluent_l 等;對于分支為 tributary_0、tributary_l 等)。使用基于 NSDL 的描述,測試工具能夠僅通過引用通用參數來理解通過交叉器件的連接。可以以任何方式來產生交叉器件的描述。在一個實施例中,使用經由架構而互連 的輸入連接集合和輸出連接集合的描述,來產生交叉器件的描述,其中該架構適于動態控 制對片上系統的一個組件(或多個組件)的訪問。可以存儲交叉器件的描述以用于測試。 處理器可以接收或獲取交叉器件的描述(例如,從存儲器、另一系統,或從這種描述的任何 其他源)以用于執行測試。如這里所述,輸入連接集合包括掃描路徑輸入連接(沿著自TDI的方向,連接至片 上系統的掃描路徑),以及至組件的至少一個連接(表示為組件訪問輸入連接),輸出連接 集合包括掃描路徑輸出連接(沿著至TDO的方向,連接至片上系統的掃描路徑),以及至組 件的至少一個連接(表示為組件訪問輸出連接)。在一個實施例中,使用〃 precedent"參數(針對掃描路徑輸入連接)以及一 個或多個"affluent"參數(針對一個或多個組件訪問輸入連接),來指定輸入連接集 合。在一個實施例中,使用"following"參數(針對掃描路徑輸出連接)和一個或多 個"affluent"參數(這對一個或多個組件訪問輸出連接),來指定輸出連接集合。交叉器件可以以任何方式動態修改系統掃描路徑。架構可以是用于經由組件將輸 入連接集合中的輸入連接動態連接至輸出連接集合中的輸出連接的任何架構,其中選擇交 叉器件來將該組件添加至系統掃描路徑。例如,該架構可以是開關架構、總線架構、網絡架 構等。在一個實施例中,交叉器件的描述是算法描述,包括適于測試工具理解的至少一 個構成規則。可以將交叉器件的描述動態修改為,將組件動態添加至掃描路徑,并從掃描路 徑中動態移除組件(例如,通過修改參數〃 affluent〃和〃 tributary")。使用NSDL來描述片上系統測試中的測試資源,這使得能夠以能夠在片上系統 測試中使用交叉器件的方式,來描述許多不同交叉器件。可以將由NSDL描述的不同交 叉器件分組到三個寬泛類別中。具體地,交叉器件可以表示“有線”(wired)連接、“事
“TDI"; “TD0";
deselected"; “deselected";(transactional)_ ·#,, (wired-transactional) 3 _。“有線”交叉器件是基本上有線連接到片上系統的掃描路徑的交叉器件(并可以根 據需要對其進行選擇或取消選擇)。“有線”交叉器件以類似于開關的方式進行操作(即, 根據需要能夠在支流和分支之間對連接進行動態編程)。由于“有線”交叉器件的掃描路徑 是有線地連接到片上系統的系統掃描路徑中的,所以需要顯式地取消選擇“有線”交叉器件 的掃描路徑。在圖8中示出并描述了“有線”交叉器件的第一示例(具體地,作為Ρ1687硬 件建議的一部分的選擇儀器比特(SIB)組件)。在圖9中示出和描述了“有線”交叉器件的 第二示例。“事務”交叉器件是支持臨時連接(即,表示特定事務的連接)的交叉器件。“事 務”交叉器件可以作為任何架構(例如,作為總線、片上網絡等)進行操作。事務可以是由 “事務”交叉器件的架構支持的任何事務(例如,總線架構中的總線訪問、網絡架構中的路由 等)。由于“事務”交叉器件的掃描路徑僅在事務時間是活動的,因此不需要顯式地取消選 定“事務”交叉器件的掃描路徑。在圖10中示出和描述了 “事務”交叉器件的示例。在“有線”交叉器件中,至少一個組件訪問輸入連接和至少一個組件訪問輸入連接 是有線連接。因此,組件訪問輸入連接和組件訪問輸出連接是不同的物理連接。在“事務” 交叉器件中,至少一個組件訪問輸入連接和至少一個組件訪問輸入連接是事務連接,使得 一個物理連接可以用于支持多個事務(即,組件訪問輸入連接和組件訪問輸出連接可以共 享相同的物理連接,但是可以被認為是不同的事務連接)。使用BSDL/HSDL,雖然可以描述特定的“有線”交叉器件(即,SIB組件),但是該 描述非常困難。此外,不可能使用BSDL/HSDL描述更復雜的“有線”交叉器件。此外,使用 BSDL/HSDL描述“事務”和“有線-事務”交叉器件更不可能。因此,出于上述原因,Ρ1687 中標準化的交叉器件僅僅是SIB組件。相反,使用NSDL,明顯是支持對任何“有線”交叉器件、“事務”交叉器件以及“有 線-事務”交叉器件的描述的,并且測試工具容易對該描述進行解釋。的確,事實上,可以使 用NSDL描述能夠動態修改片上系統的掃描路徑的任何復雜的交叉設備。為了示例NSDL的 能力,這里關于圖7-圖10提供了交叉器件的若干示例(及其使用NSDL表達的相應描述)。圖7示出了使用通用交叉器件來動態修改片上系統的掃描路徑的高級框圖。如圖 7所示,片上系統700包括掃描路徑,該掃描路徑包括通用交叉器件710。掃描路徑包括兩 個永久掃描路徑部分(即,始終包括在掃描路徑中的部分)以及可選掃描路徑部分(即,可 以通過交叉器件710動態地包括在掃描路徑中并可以從該掃描路徑中移除的部分)。如圖7所示,在片上系統700的掃描路徑中,測試訪問輸入(TDI)耦合至第一永久 掃描路徑部分(包括一系列邊界掃描單元),第一永久掃描路徑部分耦合至交叉器件710的 第一輸入(即,precedent),交叉器件710的第一輸出(即,following)耦合至第二永久掃 描路徑部分,第二永久掃描路徑部分耦合至測試訪問輸出(TDO)。交叉器件710允許將可選掃描路徑部分動態地(有選擇地)并入片上系統70的 掃描路徑中。具體地,交叉器件710包括第二輸出(即,分支)和第二輸入(即,支流),可 以選擇該第二輸出將第一永久掃描路徑部分的輸出耦合至的可選掃描路徑部分的輸入,可 以選擇該第二輸入將可選掃描路徑部分的輸出耦合至第二永久掃描路徑部分的輸入。交叉器件710使得能夠通過選擇/取消選定輸入/輸出的特定組合,來動態修改掃描路徑。當將交叉器件710的第二輸出和第二輸入取消選定時,掃描路徑是TDI、 SCAN_4_BIT_0、BS_0、BS_1、交叉器件710、BS_2、TD0。當將交叉器件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實現了對另一組件的選擇(即,使得將該組件添加至掃描路 徑)。SIB器件受選擇比特的控制。當選擇比特的值為“0”時,該單元不是活動的(其僅 是掃描路徑中的比特)。當將選擇比特的值設置為“ 1”時,掃描路徑通過端口 WSIo (即,支 流)路由出,并通過端口 WSOi(即,分支)路由入,從而將與這些端口連接的任何器件添加 至掃描路徑。SIB器件800的基于NSDL的描述如下(出于清楚的目的,包括行號)1 IP SIB generic(precedentstring: = “ TDI“;2following: string: =〃 TDO〃 ;
0162]5 Begin
0163]6 UpSIBREG generic map(precedent = > " TDI〃,
0166]9
0167]10 Procedure select
0168]11 Length 1 ;
0169]12 Selection wired ;
0170]13 {
0171]14 UpSib < = ' 1';
0172]15 tributary: =〃 TDI 〃 ;
0173]16 affluent: =〃 TDO〃 ;
0174]17 }
0175]18
0176]19 Procedure deselect
0177]20 Length 1 ;
0178]21 Selection wired ;
0179]22 {
0180]23 UpSib < = ' 0';
0181]24 tributary: =〃 deselected";
0182]25 affluent: =〃 deselected";
0183]26 }
0160]3
0161]4
tributary:string: = " deselected affluent:string: = " deselected"
0164]7
0165]8
following = >" TDO elements = > 1);
2728 End SIB ;在SIB器件800的描述中,6-9行聲明內部寄存器(即,測試工具需要以便處理分 級的比特,在SIB器件800的情況下,僅為一個比特);以及10-17行示出了選擇過程,19-26 行示出了取消選定的過程(使用其相應的名稱,測試工具能夠容易識別)。在描述體中,容易識別NSDL的兩個作用(1)掃描路徑的修改,從而由片處理來表 達比特流(見14和23行);以及⑵通過賦予串的值,來進行拓撲的修改(例如,以類似 于拓撲映射中"precedent〃和〃 following"的賦值的方式)。圖9示出了可以使用NSDL描述的一個交叉器件的高級框圖。具體地,圖9示出了 分級開關器件900。分級開關器件900包括三個輸入支流和兩個輸出分支。盡管所描述的
具有三個支流和兩個分支,但是可以支持任何數目的支流和分支。
分級開關器件900的基于NSDL的描述如下(為了清楚起見包括行號)
1:P Hierarchy_switch generic (precedent:string:=丨 TDI “;
2following:string: = " TDO“;
3tributary_0:string: = " deselected"
4tributary_l:string: = " deselected"
5affluent_0:string: = " deselected"
6affluent_l:string: = " deselected"
7affluent_2:string: = " 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 range < > )ofname ;
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_nmbin std_logic_vector(1 downto 0);
30tributary_nmb:in std_logic)
31Length 1 ;
32Selection wired ;
33{
34Trib_map < = affluent—nmb ;
35Affl—map< = " 0" &tributary_nmb ;
36
37case (tributary—nmb)
38when' 0; => tributary_0):=
39affluent_name(conv_integer(affluent_nmb));
40when' 1! => tributary_l:=
41affluent—name(conv_integer(affluent_nmb));
42end case ;
43
44case (affluent—nmb)
45when" 00〃 = > affluent_0:=
46tributary—name(conv_integer(tributary—nmb));
47when" 01〃 = > affluent_l:=
48tributary—name(conv_integer(tributary—nmb));
49when" 10〃 = > affluent_2:=
50tributary—name(conv_integer(tributary—nmb));
51when others = > assert false report" ERROR ! “ severity failure
52end case ;
53ι
54
55Procedure deselect_affluent
56(affluent—nmb:in std_logic_vector(1 downto 0))
57Length 1 ;
58Selection wired ;
59{
60Aff l_map < = " 11〃 ;
61case(affluent_nmb)
62when" 00〃 => affluent_0: = " deselected";
63when" 01〃 => affluent_l: = " deselected";
64when" 10" => affluent_2: =" deselected";
65when others = > assert false report" ERROR ! “ severity warning
66end case ;
6768 }6970 Procedure deselect_tributary(tributary_nmbin std_logic)71 Length 1 ;72 Selection wired ;73 {74 Trib_map < = " 11〃 ;75 case(tributary_nmb)76 when' 0' => tributary_0: =" deselected";77 when' 1' = > tributary」="deselected";78 end case ;79 }80 End hierarchy_switch ;在分級開關器件900的描述中3_7行聲明支流和分支(其中每一個分別給定唯 一名稱);12-19行聲明內部掃描路徑(即,類似于開關矩陣);21-26行通過定義一些定制 類型來充分利用VHDL能力(從而,為分級描述符準備了實質上等同于開關矩陣的內容)。在分級開關器件900的描述中“SeleCt”(選擇)過程(29-53行)負責比特流修 改,此外,利用VHDL算法能力(以及先前定義的定制類型),以描述動態掃描路徑修改。函 數的參數是指要連接路徑的有序編號。從分級開關器件900的描述所看到的,使通過分級開關器件90的連接為不活動, 這不需要對該連接的兩端進行取消選定;而是,僅對連接的一端取消選定就切斷了該連接。 因此,取消選定可以由兩個過程來處理(1)〃 deselect_affluent"實現支流的取消選定 (使用有序編號作為參數),以及(2)" deselect_tributary"實現分支的取消選定(使用 有序編號作為參數)。圖10示出了可以使用NSDL描述的一個交叉器件的高級框圖。具體地,圖10示出 了總線架構器件1000。總線架構器件1000包括經由組件總線1012互連的主網關組件1011 以及5個從組件1013A-1013E(共同示為從組件1013)。在總線架構器件1000中,向每個從組件1012分配由網關組件1011使用的地址, 以訪問從組件1012。總線架構器件1000必須支持特定的協議,以使得網關組件1011能夠 訪問從組件1012 ;然而,總線架構器件1000的基于NSDL的描述不需要關于該協議的任何
fn息ο總線架構器件1000的基于NSDL的描述如下(為了清楚起見包括行號)網關包描述1 Package Gff_package is23 Constant N_SLAVES: integer = 5 ;4 Constant ADDRESS_DEPTH:integer: = 3 ;5 subtype slave_name_type is string(1 to 1);
6 subtype slave—address—type is std_logic_vector
7(ADDRESS一DEPTH-I downto 0);
8
9 Type slave_mapping_type is record
10slave_name:slave_name_type ;
11slave_address:slave_address_typr ;
12end 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 ;
網關描述
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);1920 Function get_slave_address(name:in slave_name_type)21return slave_address_type is22 Begin23 for kin N_SLAVES loop24 If network_mapping(k). slave_name = name then25 return network—mapping(k) · slave—address ;26 End loop ;27 assert false report" ERROR, slave" &name&" does not exist"28severity failure ;29 end get_slave_address ;3031 Procedure select—tributary(tributary—name:in slave_name_type)32 Length 10 ;33 Selection transaction ;34 {35 address_map <= get_slave_address (tributary_name);36 bus_operation <= BUS_WRITE ;37 tributary: = tributary—name ;38 }3940 Procedure select—affluent(affluent—name:in slave_name_type)41 Length 10 ;42 Selection transaction ;43 {44 address_map <= get_slave_address (aff luent_name);45 bus_operation <= BUS_READ ;46 affluent: = affluent—name ;47 }4849 End Gff ;為了更好的可讀性,已經將總線架構器件1000的基于NSDL的描述拆分成兩個文 件。具體地,將總線架構器件1000的基于NSDL的描述拆分成以下部分(1)包括針對總線 架構器件1000的所有類型的聲明的包;以及(2)總線架構器件1000的描述。總線架構器件1000的基于NSDL的描述不需與總線架構器件1000的總線協議的 實際實現方式有關的信息;而基于NSDL的描述僅需要與在總線架構器件1000內發起事 務所需的命令有關的信息。事務由包括在基于NSDL的描述中的"select_tributary〃 和"select_affluent"函數定義。
“ select.tributary"函數(31-38行)將適宜地址寫入適宜寄存器(使用定制 類型和函數),以命令到總線的“寫入”操作。“selectjffluent"函數(40-47行)讀取 從適宜寄存器讀取適宜地址(使用定制類型和函數),以命令自總線的“讀取”操作。由于總線架構器件1000是“事務”交叉器件,總線架構器件1000的基于NSDL的 描述不需要“選擇”或“取消選擇”過程;而是,將“選擇”和“取消選擇”過程標記為“事務”, 使得測試工具知道該連接只是活動一次,然后就將支流和分支設置回至“取消選定”。如這里所述,諸如總線架構器件1000 (以及其他交叉器件)等交叉器件完全超出 P1687標準的當前能力范圍。只有使用NSDL,才可能對諸如總線體架構器件1000(以及其 他交叉器件)等交叉器件進行描述。如這里所述,可以使用NSDL來描述片上系統,此外,用于測試片上系統的測試工 具可以利用片上系統的系統級描述。關于圖11示出和描述了適于測試使用NSDL描述的片 上系統的示例測試工具。此外,參照圖12-圖20可以更好地理解使用NSDL描述的片上系 統的測試。圖11示出了圖1的測試環境的測試系統的高級框圖。具體地,TS120包括處理 器1110、存儲器1120、輸入輸出(I/O)接口 1130、以及支持電路1140。處理器1110耦合至 存儲器1120、I/O接口 1130以及支持電路1140中的每一個。處理器1110與存儲器1120、 I/O接口 1130以及支持電路1140協作,來提供這里示出和描述的各種測試函數。如圖11所示,存儲器1120存儲適于在執行系統測試時使用的資源。具體地,存儲 器1120存儲測試工具1121、測試資源描述1122、以及適于在執行系統測試時使用的測試數 據1123。存儲器可以存儲用于執行系統測試的任何其他程序、描述、數據等(表示為其他 1124)。測試工具1121控制系統測試。測試工具1121可以包括一個或多個測試過程。測 試過程可以由一個或多個測試編譯器產生。可以執行測試過程以測試一個或多個系統。測 試工具1121包括可以用于控制系統測試的任何其他過程、程序等。測試資源描述1122可以包括適于在系統測試中使用的任何描述,例如組件描述、 系統描述等,及其各種組合。測試資源描述1122可以包括系統拓撲的描述。測試資源描述 1122可以包括被處理以用于執行片上系統測試的任何其他描述。測試資源描述1122可以包括一個或多個庫,使得可以為不同類型的測試資源維 護描述模板(因此,可以根據需要進行訪問和修改)。模板可以是組件級模板(例如,針對 特定IP的模板、針對特定儀器的模板等),系統拓撲模板等,及其各種組合。測試數據1123包括適于在執行系統測試時使用的任何數據。測試數據1123可以 包括輸入比特流數據、輸出比特流數據(例如,由測試系統的確定預期輸出比特流,以及從 片上系統捕獲的實際輸出比特流)等,及其各種組合。測試數據1123包括可以應用于正被 測試的系統和/或可以從正被測試的系統中恢復的任何其他數據。I/O 接口 1130 提供從 TS 120 至 S-o-C 110 的接口。I/O 接口 1130 是基于 JTAG 的接口。I/O接口 1130支持TDI接口,通過該TDI接口,TS 120可以響應于處理器1110執 行的測試過程,來將輸入比特流應用于S-o-CllO。I/O接口 1130支持TDO接口,通過該TDO 接口,TS 120可以響應于處理器1110執行的測試過程,來從S-o-C 110中恢復實際輸出比特流。
盡管這里主要關于一個TDI和一個TDO接口進行示出和描述,但是I/O接口 1130 可以支持用于測試不同片上系統配置所需或期望的任何數目和類型的測試接口。例如,對 于基于JTAG的測試,I/O接口 1130還可以支持針對TCK信號、TMS信號、以及可選地TRST 信號的接口。支持電路1140包括可以在執行系統測試時使用的任何附加電路。例如,支持電路 1140可以包括附加處理器、附加存儲器、附加接口、測試比特流產生電路、測試比特流處理 電路等,及其各種組合。支持電路1140包括測試系統120可能需要的任何附加電路。處理器1140與存儲器1120、1/0接口 1130、以及支持電路1140協作,以提供這里 描述的各種片上系統測試函數。處理器1140產生描述(例如,函數級描述、組件描述等)。處理器1140處理來自 測試資源描述1122的描述,以產生描述(例如,使用組件描述來分析組件互連、產生系統描 述等)。處理器1140存儲該描述,作為測試資源描述1122的一部分。處理器1140產生用于測試片上系統的測試過程,并存儲該測試過程作為測試工 具1121的一部分。處理器1140使用來自測試工具1121的測試過程產生測試數據,并存儲 該測試數據作為測試數據1123的一部分。處理器可以與存儲器1120、I/O接口 1130、以及支持電路1140協作,以提供這里 描述的任何其他片上系統測試函數。參照圖12-14可以更好地理解使用片上系統的基于NSDL的描述的片上系統測試, 圖12-14提供了用于使用片上系統的基于NSDL的描述來測試片上系統的方法。也可以參 照圖15和16(提供示出了片上系統的一個組件的測試的示例)、圖17 (提供用于測試片上 系統的組件的方法)、以及圖18-圖20 (提供示出了片上系統測試的示例)理解使用片上系 統的基于NSDL的描述的片上系統測試。圖12示出了由圖1的測試系統執行的、用于通過JTAG連接測試系統的示例方法。 盡管示出和描述了以串行方式執行,但是可以同時地或者以與關于圖12示出和描述的順 序不同的順序來執行圖12的方法1200的步驟的至少一部分。方法1200開始于步驟1202, 并前進至步驟1204。在步驟1204,為片上系統確定測試比特流。測試比特流包括輸入比特流和預期輸 出比特流。可以按照這里描述的任何方式確定測試比特流。在一個實施例中,使用關于圖 13示出和描述的方法確定測試比特流。在步驟1206,將輸入比特流應用于片上系統。可以經由片上系統的TDI接口將輸 入比特流應用于片上系統。在步驟1208,從片上系統捕獲實際輸出比特流。可以經由片上 系統的TDO接口從片上系統捕獲實際輸出比特流。在步驟1210,使用實際輸出比特流和預期輸出比特流,來確定測試結果。通過將實 際輸出比特流和預期輸出比特流比較,來確定測試結果(例如,確定在測試期間是否存在 任何錯誤)。在步驟1212,存儲測試結果。在步驟1214,方法1200結束。圖13示出了由圖1的測試系統執行、用于通過JTAG連接測試系統的示例方法。具 體地,圖13的方法1300包括用于確定在測試片上系統時使用的測試比特流的方法。盡管 示出和描述了以串行方式執行,但是可以同時地或者以與關于圖13示出和描述的順序不同的順序來執行圖13的方法1300的步驟的至少一部分。方法1300開始于步驟1302,并前 進至步驟1304。在步驟1304,確定片上系統的描述(這里表示為系統描述)。可以以這里描述的 任何方式來確定系統描述。系統描述是片上系統的基于NSDL的描述。在一個實施例中,使 用關于圖14示出和描述的方法來確定系統描述。在步驟1306,根據片上系統的系統描述,來確定用于測試片上系統的測試比特流。 測試比特流包括要應用于片上系統的輸入比特流,以及可以與從片上系統捕獲的實際輸 出比特流進行比較的預期輸出比特流。在步驟1308,方法1300結束。圖14示出了由圖1的測試系統執行、用于通過JTAG連接測試系統的示例方法。具 體地,圖14的方法1304包括用于確定片上系統的系統描述的方法。盡管示出和描述了以 串行方式執行,但是可以同時地或者以與關于圖14示出和描述的順序不同的順序來執行 圖14的方法1304的步驟的至少一部分。方法1304開始于步驟1402,并前進至步驟1404。在步驟1404,標識片上系統的組件。可以以任何方式來標識片上系統的組件。在 一個實施例中,可以標識片上系統的組件作為片上系統提供的測試資源。在一個實施例中, 可以通過分析片上系統來標識片上系統的組件。可以以任何其他方式來標識片上系統的組 件。在步驟1406,為片上系統的每個組件確定組件描述。可以以任何方式來確定組件 描述。在一個實施例中,其中,組件描述是預定義的,可以通過簡單讀取預定義的描述來 確定組件描述。在一個實施例中,其中組件描述不是預定義的,可以通過分析每個組件來在 運行中定義組件描述。組件的描述指定組件的內部掃描路徑。在一個實施例中,組件的描述從寄存器值 方面來表示組件。在一個這樣的實施例中,其中,組件支持多個函數,組件的每個函數可從 寄存器值方面來表示。關于圖15可以更好地理解從寄存器值方面的組件描述。使用NSDL 指定組件描述。在步驟1408,確定片上系統的拓撲。片上系統的拓撲描述了片上系統的組件之間 的互連。通過分析片上系統的組件之間的互連,來確定片上系統的拓撲。在步驟1410,確定片上系統的系統描述。使用組件描述和系統拓撲來確定系統描 述。片上系統的系統描述表示片上系統的掃描路徑,包括片上系統的各個組件中每一個的 內部掃描路徑以及片上系統的組件之間的互連。系統描述可以包括用于描述片上系統的任 何其他信息。在步驟1412,存儲片上系統的系統描述。在步驟1414,方法1304結束。圖15示出了使用圖2的片上系統的組件之一的描述來確定用于測試該組件的測 試過程的寄存器值。具體地,將S-O-C 110(為了清楚起見省略)的組件210A的描述轉換 成針對S-O-C 110的組件210a的寄存器值的集合(表示為寄存器值1510)。組件210A的 寄存器值1510包括針對由組件210A支持的三個函數中每一個的寄存器值。可以對針對由 組件210A提供的三個函數中每一個的寄存器值進行處理,以確定用于測試組件210A的測試 比特流的值。
如圖15所示,從組成組件210A的組件寄存器A。、、、A2的寄存器值方面,來描述組 件210A的函數。第一函數定義為“000”,等待4個周期,“001”。第二函數定義為:“111”,等 待1個周期,“010”,等待5個周期,“101”。第三函數定義為:“000”,等待2個周期,“100”, 等待10個周期,“000”。換言之,寄存器值1510指定了針對組件210a的從函數到組件寄存 器值的映射。該描述(即,從函數到寄存器值的映射)示出了,可以容易地處理組件的描述, 以確定測試比特流。如圖15所示,對于組件21(^的每個函數,寄存器值1510指示(1)如何針對函 數寫入和讀取組件寄存器,以及(2)針對函數,必須如何解釋組件寄存器值。因此,在諸如 NSDL等描述語言中,組件的描述包括組件函數的描述,然后可以將該組件函數的描述轉換 成寄存器值,以在用于測試片上系統上下文內的組件的測試過程中使用。盡管出于清楚目的,在描述從函數到寄存器值的映射時被省略了,但是根據NSDL 的組件210a的特定描述是算法描述,該描述是以如關于圖3-圖5所示出和描述的方式構 成的。組件210A的基于NSDL的描述使得能夠確定從函數到寄存器值的映射。盡管出于清 楚的目的進行了省略,但是可以為S-O-C 110的其他組件(S卩,組件210b-組件210e)中的 每一個定義類似描述。圖16示出了使用圖2的片上系統的組件的描述來確定用于測試圖2的片上系統 的組件之一的測試過程的測試比特流。如圖16所示,產生測試比特流1610,以用于測試至 少一部分S-O-C 110。具體地,測試比特流1610包括應用于S-O-C 110的TDI端口的輸 入比特流16111;以及從S-O-C 110的TDO端口接收的輸出比特流1611。。TS 120使用S-O-C 110的描述(使用NSDL指定的)產生測試比特流1610。S_0_C 110的描述(這里也被稱作系統描述)包括S-O-C 110的測試資源的描述(例如,組件210 的描述、組件互連220的描述等,及其各種組合)。S-O-C 110的系統描述描述了 S-O-C 110 的拓撲,并從而描述了 S-O-C 110的系統掃描路徑。如這里所述,TS 120基于S-O-C 110的系統描述(提供了系統掃描路徑的描述) 來產生測試比特流1610。因此,由于S-O-C 110的系統描述提供了 S-O-C 110的系統掃描路 徑的描述,因此TS 120能夠確定為S-O-C 110產生的測試比特流1610的哪些部分與S-O-C 110的系統掃描路徑的哪些部分相對應。在圖16中示出了這一點。如圖16所示,已經定位了輸入比特流Ieil1和輸出比特流1611。內的特定比特位 置(即,與組件210a相對應的比特位置)。通過使用S-O-C110的基于NSDL的描述(提供 了與S-O-C 110的系統掃描路徑有關的信息,包括S-O-C 110內組件210的相應位置),能 夠實現對輸入比特流Ieil1和輸出比特流1611。內的與組件210a內的寄存器相對應的特定 位置的定位。盡管為了清楚起見,在描述從組件寄存器到比特流的轉換時被省略了,但是根據 NSDL的S-O-C 110的特定描述是算法描述,其描述了 S-O-C 110的拓撲,從而描述了 S_0_C 110的系統掃描路徑。S-O-C 110的該基于NSDL的描述使得能夠執行從寄存器值到比特流 的轉換。圖17示出了由圖1的測試系統執行、在IJTAG/NSDL框架中測試系統的組件的示 例方法。具體地,圖17的方法1700包括用于測試片上系統的一個組件的方法。盡管示出 和描述了以串行方式執行,但是可以同時地或者以與關于圖17示出和描述的順序不同的順序來執行圖17的方法1700的步驟的至少一部分。方法1700開始于步驟1702,并前進至 步驟1704。在步驟1704,選擇片上系統的組件(即,選作要被測試的片上系統的組件)。在步驟1706,獲得所選組件的描述。在步驟1708,對于組件所支持的每個函數,將該函數轉換成與組件的寄存器相關 聯的寄存器值。使用組件的描述將組件的函數轉換成寄存器值。在步驟1710,獲得片上系統的系統描述。片上系統的系統描述指定了片上系統的 系統掃描路徑,其是根據片上系統的組件描述和片上系統的拓撲的描述而確定的。系統描 述可以用于指定用于片上系統的測試比特流。在步驟1712,使用片上系統的拓撲來確定片上系統的測試比特流內的所選組件位 置。測試比特流內所選組件位置指定了輸入比特流內的一個或多個比特位置以及實際輸出 比特流內一個或多個比特位置。在步驟1713 (可選步驟),驅動交叉器件(即,如果對組件的訪問受交叉器件的控 制)。通過對交叉器件的算法描述進行處理,來驅動交叉器件。驅動交叉器件使得能夠選擇 交叉器件,以動態地將相關聯的組件添加至片上系統的掃描路徑。在不再需要對組件進行 訪問之后,可以取消選定該交叉器件,以從片上系統的掃描路徑中移除相關聯的組件。該步 驟是可選的,這是由于對組件的訪問可以受交叉器件的控制,也可以不受交叉器件的控制。在步驟1714,將寄存器值插入到輸入比特流的定位位置中。然后可以將輸入比特 流應用于片上系統的輸入測試訪問端口(即,用于測試片上系統的至少一部分)。在步驟 1716,從輸出比特流(即,從由測試系統從片上系統的輸出測試訪問端口捕獲的輸出比特 流)的定位位置中恢復結果值。然后可以對恢復的結果值進行處理,以便于確定各種測試 結果。在步驟1718,方法1700結束。圖18示出了示例片上系統的高級框圖。如圖18所示,片上系統1800包括濾波 器和三個儀器,這三個儀器包括模數轉換器(ADC)、數模轉換器(DAC)、以及天線訪問單 元(AAU)。AAU支持模擬至數字至模擬轉換。濾波器支持至ADC的輸出連接(表示為RX_ out)和來自DAC的輸入連接(表示為TX_in)。濾波器支持與AAU的雙向連接(表示為AN_ inout)ο如圖18所示,經由從TDI輸入至TDO輸出的掃描路徑,來提供對三個儀器的訪問。 該掃描路徑包括致動器寄存器集合和三個SIB單元(每一個分別針對三個儀器中一個,使 得能夠將相應儀器添加至掃描路徑)。致動器寄存器與濾波器相接口。第一 SIB單元提供 對ADC儀器的訪問(經由支流和分支)。第二 SIB單元提供對DAC儀器的訪問(經由支流 和分支)。第三SIB單元提供對AAU儀器的訪問(經由支流和分支)。隨后是掃描路徑的描述。TDI輸入耦合至致動器寄存器集合的輸入。致動器寄存 器集合的輸出耦合至第一 SIB單元的輸入。第一 SIB的輸出耦合至第二 SIB單元的輸入。 第二 SIB單元的輸出耦合至第三SIB單元的輸入。第三SIB單元的輸出耦合至TDO輸出。 當取消選定每個SIB時(即,如果沒有“選擇”任何SIB,以使得它們相應的儀器不能被添加 至掃描路徑),從TDI輸入至TDO輸出的序列形成了片上系統1800的掃描路徑。如圖18所示,通過選擇與三個儀器相關聯的相應SIB單元的支流和分支接口,可以容易地將三個儀器中的每一個添加至掃描路徑。例如,可以選擇第一 SIB,使得可以將 ADC儀器添加至掃描路徑以用于測試。例如,可以選擇第一 SIB和第三SIB,使得可以將ADC 和AAU儀器均添加至掃描路徑以用于測試。如這里所述,片上系統1800的基于NSDL的描 述簡化了片上系統1800的測試。圖19示出了使用圖18的片上系統的組件之一的描述來確定用于測試該組件的測 試過程的寄存器比特值。具體地,圖19示出了 ADC儀器的描述(表示為描述1910)到與ADC 儀器的寄存器(表示為寄存器1920)相關聯的寄存器值的映射。如圖19所示,描述1910 包括掃描路徑的描述(表示為掃描路徑描述1911),以及由ADC儀器執行的函數的算法表 示(表示為函數算法1912)。描述1910是基于NSDL的(算法)描述。掃描路徑描述1911標識出ADC儀 器的寄存器(包括數據寄存器和控制寄存器),并描述了如何布置寄存器(例如,標 識〃 precedent"、“ following"、以及長度信息)。函數算法1912描述了由ADC儀器執 行的函數的操作。根據描述1910,測試工具能夠容易確定可以用于測試ADC儀器的比特流值。圖20示出了使用圖18的片上系統的組件描述來確定圖18的片上系統的組件描 述。具體地,圖20示出了圖18的片上系統的構成的描述(表示為拓撲2010)。使用片上系 統1800的每個組件(例如,致動器寄存器、SIB、以及儀器)的輸入和輸出中的每一個的通 用映射來指定拓撲2010。例如,致動器寄存器的描述指示,至致動器寄存器的輸入是TDI輸入 (“precedent = > “ TDI'),自致動器寄存器的輸出是第一 SIB,該輸出表示為RX_ enable,這是由于其使能了對ADC儀器的RX_register的訪問(following = > “ RX_ enable")。換言之,根據與其相接口的組件來描述致動器寄存器組件。例如,第一 SIB的描述(即,RX_enable組件)指示,至RX_enable組件的輸入是 致動器寄存器(precedent =>〃 actuator_registers〃),第一 SIB 的輸出是第二 SIB,該 輸出表示為TX_enable,這是由于其使能了對DAC儀器的TX_regiSter的訪問(following =>"Tx_enable〃)。此夕卜,由于第一 SIB使能了對ADC儀器的訪問,因此第一 SIB的描述還描述了對 ADC儀器的訪問。具體地,第一 SIB的描述指示了,經由一個輸入(affluent=〉" Rx_ register)以及一個輸出(tributary => 〃 Rx_enable〃),使能了從第一 SIB 至 ADC 儀器 的訪問。根據這些示例,清楚的是,使用NSDL可以容易描述片上系統的整個拓撲。此外,由 于該拓撲提供了片上系統的組件之間的互連的描述,因此可以容易確定片上系統的拓撲內 片上系統的每個組件的定位。如這里所述,使用片上系統的組件描述(提供了從組件的函數到該組件的寄存器 的寄存器值的映射)以及片上系統的拓撲描述,可以對片上系統執行各種類型的測試。因 此,圖18-20示出了使用NSDL描述片上系統的優點。根據以上描述,使用NSDL語言來描述片上系統的各種優點和好處是顯而易見的。 NSDL的算法本質特點實現了片上系統的算法描述(無論拓撲有多復雜),可以對該算法描 述進行處理以確定測試比特流,該測試比特流適于測試片上系統(例如,測試多個組件、測試一個組件,測試組件的函數的子集等,及其各種組合)。因此,使用NSDL,可以確定片上系 統的系統掃描路徑的分級描述,以用于測試片上系統。NSDL語言以BSDL/HSDL無法支持的方式來支持IJTAG的特征,包括提供片上系 統組件(例如,IP、儀器、交叉器件等)的算法描述、片上系統拓撲(例如,組件之間的互連、 組件間依賴性等)等,及其各種組合,從而實現片上系統的算法系統級描述。因此,NSDL語 言實現了分級掃描路徑組織,從而實現了將寄存器值轉換成測試比特流,該測試比特流可 以用于測試片上系統。可以以許多方式來實現NSDL語言。在一個實施例中,使用VHDL的現有特征來實現NSDL。BSDL定義為VHDL的子集,而 NSDL利用VHDL的超集。由于VHDL是主要的寄存器傳送級(RTL)描述語言,因此其適于表 達其描述的組件的測試需求。通過保持與VHDL的兼容,NSDL可以由現有編譯器支持,只需 要最小改變。此外,VHDL的使用確保了至NSDL的轉換對于習慣VHDL的操作員而言是一種 平滑的體驗過程,此外,確保了對現有源和工具的轉換和改變也是容易的。因此,利用VHDL 的NSDL最小化了對現有用戶群體的影響,從而簡化了現有用戶群體對NSDL的采用。相反,曾開發BSDL作為VHDL的子集,以努力使BSDL即與VHDL后向兼容也與VHDL 前向兼容。子集指示了無任何添加(即,由嵌入到現有VHDL規則中的結構性語法規則承載 所有信息,然后以與正常方式不同的方式來解釋)。雖然后向兼容是自動的,但是定義新結 構的不可能性使得演進很困難。該結構性限制導致開發者通常以反直覺方式,過度使用兩 個最通用的結構(屬性和特性串)。換言之,將BSDL有效地限制在VHDL的一小部分內,從 而消除了 VHDL具有上下文意義的任何可能性。如這里所述,NSDL提供了片上系統測試中的許多優點。類似地,使用VHDL來實現 NSDL在片上系統測試中提供了許多優點。可以在VHDL實體組件偶聯體(couplet)上,對片上系統的組件進行建模,從而實 現由片上系統的組件支持的各個單獨函數的描述。因此,可以通過組件的內部掃描路徑 (可以包括分級)來提供對每個組件的訪問。此外,組件可以與相應的測試過程集合一同提 供,測試系統可以使用該測試過程集合來測試該組件,其中,使用NSDL指定過程的屬性(例 如,長度、依賴性等),而使用VHDL指定過程體。因此,這使得系統體系結構能夠以類似于組 件體系結構處理組件級描述的方式的方式來處理系統級描述。可以將片上系統的掃描路徑構成為可以像VHDL組件一樣實例化的一系列實體, 從而容易地將其重新分組到包或庫中。此外,容易處理許多更復雜的表示(例如,給定類型 組件的多個實例化、組件間依賴性等,及其各種組合)。此外,NSDL以改善經典VDL信號映 射的方式實現了對系統掃描鏈的構建。開發用于測試片上系統的測試過程可以引用系統掃 描路徑或系統掃描路徑的一部分(被稱作片,可以包括組件組,或者甚至包括一個組件的 子集)。盡管這里主要關于使用VHDL實現的NSDL的實施例進行示出和描述,但是可以使 用其他硬件描述語言(可以包括還沒有開發的硬件描述語言)來實現NSDL。如這里所述,除了改善基于JTAG的測試,以及實現在基于JTAG的測試中使用交叉 器件以外,NSDL語言還實現了對片上系統的組件的并行訪問,從而實現片上系統測試的改 善(例如,改善的測試調度、改善的測試效率等,及其各種組合)。
在一個實施例中,例如P1687,并行訪問主要用作優化數據傳輸帶寬的方式,而串 行訪問仍保持對測試的控制。NSDL語言能夠描述這些輔助資源,并將它們插入到測試流中 (例如,分別插入到關于圖12和17示出和描述的方法1200和1700中)。此外,也可以對NSDL進行擴展以描述更復雜的測試訪問機制(TAM),例如,使用交 叉器件來提供用于測試片上系統的并行訪問,使用扇出-扇入方案來提供用于測試片上系 統的并行訪問等,及其各種組合。可以參照圖21-28更好理解用于測試一個片上系統(或多個片上系統)的并行訪 問的使用。圖21示出了并行訪問接口的一般連接方案的高級框圖。具體地,一般連接方案 2100提供了至片上系統2120的并行訪問接口 2110。并行訪問接口 2110包括內部并行端 口 2111、外部并行端口 2112、以及內部接口 2113。片上系統2120包括并行端口 2121。如圖21所示,通過內部并行端口 2111與并行端口 2121之間的連接,提供對片上 系統2120的并行訪問。利用并行端口 2121需要(1)并行端口 2121與片上系統2120的 連接和同步(可以在實例化時間進行),以及(2)通過測試系統(為了清楚起見而省略)對 并行端口 2121的處理。如圖21所示,內部并行端口 2111和外部并行端口 2112使得η個輸入連接(η > 0)和m個輸出連接(m> 0)連接至片上系統2120的并行端口 2121。以兩種方式提供對片上系統2120的并行訪問。外部地提供對片上系統2120的并行訪問。使用外部并行端口 2112提供從測試系 統到片上系統2120的外部訪問。外部并行端口 2112用作測試系統與內部并行端口 2111 之間的接口。外部并行端口 2112支持η個輸入連接以及m個輸出連接(分別與內部并行 端口 2111的η個輸入/m個輸出連接相對應)。內部地提供對片上系統2120的并行訪問。使用內部接口 2113提供從測試系統到 片上系統2120的內部訪問。在一個實施例中,可以使用連接至系統掃描路徑的一個或多個 內部寄存器來實現內部接口 2113。在該實施例中,內部寄存器可以用于控制并行訪問接口 2110的行為,或者查詢并行訪問接口 2110的狀態。如上所述,為了清楚起見,省略了可以經由內部接口 2112或外部接口 2113訪問內 部并行端口 2111的測試系統。使用NSDL描述并行訪問接口 2110。并行訪問接口 2110的NSDL描述包括⑴內部端口的描述(例如,寬度信息、數 據流方向等信息),以及(2)并行訪問函數/過程。并行訪問接口 2110的NSDL描述也可以可選地包括(3)外部并行端口 2112的描 述(例如,寬度信息、數據流方向等信息)。并行訪問接口 2110的NSDL描述也可以可選地包括(4)內部接口 2113的描述 (例如,用于控制函數和/或狀態函數的寄存器的描述)。在一個實施例中,可以使用串行測試訪問接口的描述以及并行測試訪問接口的描 述,來描述從測試系統到具有多個組件的片上系統的并行訪問,串行測試訪問接口用于在 測試系統與組件之間耦合測試比特流(其中,串行測試訪問接口使用片上系統的串行掃描 路徑來提供對組件的訪問),并行測試訪問接口用于在測試系統與組件之間耦合測試比特流(其中,并行測試訪問接口提供對組件的訪問,而不使用片上系統的串行掃描路徑,即, 即使串行掃描路徑的一個或多個值可以控制訪問,也不直接經由串行掃描路徑提供訪問)。 可以存儲串行測試訪問接口和并行測試訪問接口,用于測試。在一個實施例中,可以使用并行接口模塊的描述來描述從測試系統到片上系統的 并行訪問,并行接口模塊適于將測試系統耦合至片上系統的核心模塊,并存儲并行接口模 塊的描述,其中,并行接口包括至少一個串行寄存器和至少一個并行寄存器,該至少一個串 行寄存器適于使用片上系統的掃描路徑來訪問核心模塊,該至少一個并行寄存器適于訪問 核心模塊,而不使用片上系統的掃描路徑。可以存儲該描述以用于測試。在一個實施例中,可以通過使用串行測試訪問端口的描述、并行測試訪問端口的 描述、以及接口端口的描述來描述從測試系統到片上系統的并行訪問,串行測試訪問端口 適于在測試系統與組件之間耦合測試比特流,并行測試訪問端口適于在測試系統與組件之 間耦合測試比特流,接口端口適于將串行測試訪問端口和并行測試訪問端口耦合至片上系 統的至少一部分組件。可以存儲該描述,以用于測試片上系統。如這里所述,存儲所產生的描述。這樣,處理器可以接收該描述(例如,從存儲器、 從另一系統、或者從這種描述的任何其他源),以使用并行訪問執行各種測試(例如,組件 級測試、系統級測試等,及其各種組合)。可以以其他方式來描述從測試系統到片上系統的并行訪問。并行接口 2110與片上系統2120之間的通信可以為同步或異步。在一個實施例中,并行接口 2110與片上系統2120之間的通信與掃描鏈同步。在 一個這樣的實施例中,在1149. 1 “更新”信號的上升沿,對并行端口 2121上的值進行采樣。 在該實施例中,測試系統僅僅必須向端口提供值(用于輸入),和/或從端口收集值(用于 輸出)。在一個實施例中,并行接口 2110與片上系統2120之間的通信可以實現為同步 突發。在一個這樣的實施例中,為了優化帶寬,將數據突發發送至并行端口 2121(對于輸 入),和/或從并行端口 2121讀取數據突發(對于輸出)。在一個這樣的實施例中,可以在 1149. 1 “更新”信號的上升沿處開始突發數據的發送/讀取。并行接口 2110指定至測試系 統的數據突發的特性。在一個實施例中,并行接口 2110和片上系統2120之間的通信為異步。在該實施 例中,并行端口 2121自己進行操作,對其自身用于操作連接的協議進行處理。在該實施例 中,測試系統僅允許高級訪問(發送數據和接收數據)。事務的協議由測試系統的并行接口 驅動器進行處理。在一個實施例中,片上系統1220可以支持多個這種與并行接口 2110通信的模式。 在這樣的實施例中,可以使用函數集合在不同通信模式之間切換。例如,函數集合可以包 括‘‘disable_p0rt",禁用并行端口 ; ‘‘ set_scan_synchr0",切換至掃描鏈同步訪問 模式;“set_burst",切換至突發訪問模式;以及"set.asynchro",切換至異步模式。圖22示出了兩個示例并行訪問連接方案的高級框圖。如圖22所示,在圖1的測試環境的上下文內描述示例并行訪問連接方案。示例的 并行訪問連接方案用于將測試系統120連接至片上系統110。具體地,示例的并行訪問連接 方案用于將測試系統120連接至片上系統110的JTAG接口 2201和并行接口 2202。
如圖22所示,第一并行訪問連接方案2210針對JTAG和并行訪問利用公共纜線。 第一并行訪問連接方案2210針對至片上系統110的掃描路徑的JTAG接口 2201以及片上 系統110的并行連接2202,利用單個連接器件(表示為JTAG并行接口器件)2111。如圖22所示,第二并行訪問連接訪問方案2220利用分離的JTAG和并行連接。第 二并行訪問連接方案2210針對至片上系統110的掃描路徑的JTAG接口 2201,利用第一連 接器件(表示為JTAG接口器件2121),以及針對片上系統110的并行接口 2202,利用第二 連接器件(表示為并行接口器件2122)。關于第二并行訪問連接方案2210,盡管參照測試系統120是針對JTAG接口 2201 和并行接口 2202兩者的測試源/宿的實施例進行示出和描述,但是在其他實施例中,針對 JTAG接口 2201和并行接口 2202的測試源和/或宿可以是不同的。例如,JTAG接口 2201 或并行接口 2202可以使用除了測試系統120以外的其它測試源和/或宿。一般而言,根據并行接口的實現方式,經由并行接口執行片上系統測試的測試系 統可以直接訪問片上系統的并行端口,例如,這是由于在測試系統與片上系統的并行端口 之間放置有許多結構。在圖23A和23B中示出和描述了示例。圖23A示出了示例測試環境的高級框圖。示例測試環境2300使得測試系統能夠 使用并行訪問接口執行對片上系統的測試,該并行訪問接口提供對片上系統的并行訪問。 具體地,測試環境2300包括經由接口器件(ID) 2320互連的測試系統(TS) 2310和芯片/板 (C/B)2330οTS 2310是測試系統,適于經由并行訪問接口執行片上系統的測試。TS 2310可以 以任何方式實現,以實現使用對片上系統的并行訪問來測試片上系統的系統。在一個實施 例中,TS 2310可以實現為圖11示出和描述的TS 120的適配版本(例如,適于支持并行測 試言旨力)OTS 2310包括適于在經由并行訪問接口執行片上系統測試時使用的軟件。具體地, TS 2310包括控制測試工具2312和并行接口驅動器2313的操作系統2311。TS 2310包括 適于執行片上系統測試的其他硬件和軟件(例如,處理器、存儲器、支持電路,等)(為了清 楚起見而省略)。在一個實施例中,測試工具2312可以與測試工具1121相同,或者至少與關于測試 工具2312示出和描述的函數可以實現為測試工具1121的一部分。C/B 2330包括片上系統2331以及并行接口 2332。片上系統2331可以是這里描 述的任何片上系統。并行接口 2332是關于圖21和22示出和描述的并行接口。關于圖21 可以更好理解并行接口 2332與片上系統2331之間的交互。如圖23Α所示,使用NSDL分別 描述片上系統2331和并行接口 2332。ID 2320 用作 TS 2310 與 C/B 2330 之間的接口。TS 2310 與 ID 2320 之間的接口 可以使用TS 2310所支持的任何類型的接口(例如,USB纜線或可以由TS 2310支持的任 何其他類型的接口)來實現。ID2320與C/B 2330之間的接口可以實現為由C/B 2330支 持的任何類型的接口。在一個實施例中,ID 2320支持至C/B 2330的分離的數據和控制接 口,使得可以獨立地從TS 2310向C/B 2330應用數據信號和控制信號。如這里所述,測試工具2312處理與并行接口 2332 (以及,從而與片上系統2331) 的數據交換,并且并行接口驅動器2313處理與并行接口 2332 (以及,從而與片上系統2331)的協議交換。換言之,并行接口驅動器2313防止了必須由測試工具2312管理與并行接口 2332的協議交換。如圖23A所示,ID 2320支持TS 2310與C/B 2330之間的數據交換和協 議交換。在一個實施例中,并行接口驅動器2313使用操作系統2311所支持的函數(例如, 使用緩沖器、信號量、郵箱等,及其各種組合)來處理與并行接口 2332的協議交換。在該實 施例中,測試工具2312不直接控制片上系統的JTAG端口 ;而是,測試工具2312與向測試工 具2312提供各種函數(例如,使用由驅動器聲明并且由測試工具2312導入的函數)的驅 動器交互。圖23B示出了圖23A的示例測試環境內的數據流的高級框圖。如圖23B所示,數 據從TS 2310流向C/B 2330 (表示為數據流2315)并且從C/B 2330流向TS 2310 (表示為 數據流2352)。在數據流2351中,數據從測試工具2312流至并行接口驅動器2313、至接口 器件2320、至并行接口 2332、至片上系統2331。在數據流2352中,數據沿著反向路徑從片 上系統2330到測試工具2312流動。如這里所述,在測試環境2300的上下文內,僅有數據 流是重要的。片上系統2331的基于NSDL的描述包括(例如,在實例化時)連接至相應并行接 口的一個或多個并行端口,一個或多個并行片(其中存儲用于并行事務的數據),以及適于 在并行端口發起事務的一個或多個并行事務函數。可以使用特定命名(例如,"parallel, XXXX“)來標識并行片。可以使用特定命名(例如,‘‘sencLparallel_data〃和〃 get_ parallel.data")來標識并行事務函數。例如,并行事務函數的原型可以包括function send—parallel—data(sending—slicein string)return boolean ;function get_parallel_data(receiving_slice:in string)return boolean ;這里描述的示例的并行事務函數宣告并行端口上的活動,并且還指示對串行測試 比特流的修改,以控制串行測試比特流。“并行片”的實現向測試系統(示意性地,TS 2310 的測試工具2312)通知片上系統的并行端口與片上系統的剩余部分(這里被稱作片上系統 的“核心”)之間數據流的細節。可以以許多方式來實現片上系統的并行端口與片上系統的 核心之間的連接(圖24-27示出和描述了該連接的示例)。圖24示出了片上系統的并行端口與核心之間的示例連接的高級框圖。如圖24所 示,示例連接利用完全獨立的并行端口(獨立于串行掃描路徑)。具體地,連接2400包括 TAP端口 2410和提供對片上系統2430的并行訪問的外部并行端口 2420。片上系統2430 包括可以經由TAP端口 2410或經由外部并行端口 2420訪問的核心2439。可以使用片上系統2433的串行掃描路徑中的串行寄存器2431,經由TAP端口 2410來訪問核心2439。串行寄存器2431控制經由第一接口 2433對核心2439的訪問。使 用并行寄存器2434經由外部并行端口 2420來訪問核心2439,其中并行寄存器2434在片上 系統2430的串行掃描路徑的外部。并行寄存器2434控制經由第二接口 2435對核心2439 的訪問。如圖24所示,經由并行寄存器2434訪問核2439完全獨立于串行寄存器2431。 因此,通過并行邏輯對所有控制信號進行處理,不需要來自片上系統2430的串行掃描路徑的干預。函數〃 get_parallel_data〃簡單采取并行片的名稱(示意性地,“parallel, reg")作為自變量,由于不需要對比特流進行修改,因此函數體為空。圖25示出了片上系統的并行端口與核心之間的示例連接的高級框圖。如圖25所 示,示例連接利用獨立于串行控制的并行端口。具體地,連接2500包括TAP端口 2510以及 提供對片上系統2530的并行訪問的外部并行端口 2520。片上系統2530包括可以經由TAP 端口 2510或經由外部并行端口 2520訪問的核心2539。可以使用片上系統2530的串行掃描路徑中的串行寄存器2531,經由TAP端口 2510來訪問核心2539。串行寄存器2531控制經由第一接口 2533對核心2539的訪問。可 以使用并行寄存器2534經由外部并行端口 2520來訪問核心2539,其中并行寄存器2534在 片上系統2530的串行掃描路徑的外部。并行寄存器2534控制經由第二接口 2535對核心 2539的訪問。如圖25所示,使用片上系統2530的串行掃描路徑中的附加使能寄存器2531,來 控制經由并行寄存器2534和關聯的第二接口 2535對核心2539的訪問。使能寄存器2532 使用從使能寄存器2532至核心2539的控制接口 2537,來控制經由并行寄存器2534對核心 2539的訪問。因此,片上系統2530的串行掃描路徑包括TDI->使能寄存器2532->串行 寄存器 2531- > TDO0因此,如圖25所示,從片上系統2530的串行掃描路徑,以串行方式控制經由并行 寄存器2534對核心2539的訪問。在該實施例中,函數〃 get_parallel_data〃采取并行片 的名稱(示意性地,"paralleling")作為自變量,并且由于需要對比特流進行修改,函 數體包括將使能寄存器2532的值設置為所需值的指令。圖26示出了片上系統的并行端口與核心之間的示例連接的高級框圖。如圖26所 示,對于串行和并行數據,示例連接利用至核心的共享訪問端口。具體地,連接2600包括 TAP端口 2610,以及提供對片上系統2630的并行訪問的外部并行端口 2620。片上系統2630 包括核心2639,可以經由TAP端口 2610或經由外部并行端口 2620來訪問核心2639。可以使用片上系統2630的串行掃描路徑中的串行寄存器2631,經由TAP端口 2610來訪問核心2639。串行寄存器2631控制經由第一接口 2633對核心2639的訪問。可 以使用并行寄存器2634經由外部并行端口 2620來訪問核心2639,該并行寄存器2634在 片上系統2630的串行掃描路徑的外部。并行寄存器2634控制經由第二接口 2635對核心 2639的訪問。如圖26所示,使用共享訪問端口 2636控制經由串行寄存器2631和并行寄存器 2634對核心2639的訪問。共享訪問端口 2636采用來自串行寄存器2631的第一接口 2633 作為第一輸入,并且采用來自并行寄存器2634的第二接口 2635作為第二輸入。共享訪問 端口 2636選擇輸入之一,并經由共享訪問接口 2638向核心2639提供所選的一個輸入。如圖26所示,使用片上系統2630的串行掃描路徑中的附加使能寄存器2632來控 制共享訪問端口 2636對輸入之一的選擇。使能寄存器2632使用從使能寄存器2632至共 享訪問端口 2636的控制接口 2637,控制經由共享訪問端口 2636和共享訪問接口 2638對核 心2539的訪問。因此,片上系統2630的串行掃描路徑包括TDI- >串行寄存器2631- > 使能寄存器2632- > TDO0因此,如圖26所示,從片上系統2630的串行掃描路徑,以串行方式來控制經由并
33行寄存器2634對核心2639的訪問。在該實施例中,片上系統2539宣告對分(dichotomy) (例如,通過將串行寄存器2631和并行寄存器2634標記為“交替”)。在這樣的實施例中, 測試系統獲知,當并行接口活動時,串行寄存器2631對核心2639沒有影響(即,效果上,它 們是“死存儲”)。該規則的關聯之處在于,許多寄存器可以共享相同的并行端口。圖27示出了片上系統的并行端口與核心之間的示例連接的高級框圖。如圖27所 示,串行寄存器和提供對片上系統的核心的并行訪問的并行寄存器共享相同的觸發器,從 而最小化提供對片上系統的核心的并行訪問所需的資源。具體地,連接2700利用使能寄存 器2732、多個數據寄存器2731i-27318(共同為,數據寄存器2731)、以及多個共享訪問端口 2733r27338 (共同為,共享訪問端口 2733)。如圖27所示,使能寄存器2732的數據輸入是TDI輸入,使能寄存器2732的數據 輸出是第一共享訪問端口 273h的輸入之一,第一共享訪問端口 2733i的數據輸出是第一數 據寄存器273^的數據輸入,第一數據寄存器273^的第一數據輸出是第二共享訪問端口 27332的輸入之一,第二共享訪問端口 27332的數據輸出是第二數據寄存器27312的數據輸 入,第二數據寄存器27312的第一數據輸出是第三共享訪問端口 27333的輸入之一,第三共 享訪問端口 27333的數據輸出是第三數據寄存器27313的數據輸入,依此類推,直到第八數 據寄存器27318的第一數據輸出是TDO輸出為止。還如圖27所示,每個共享訪問端口 2733包括第二數據輸入(還耦合至掃描路徑 中在前寄存器的數據輸出)。共享訪問端口 27331i-27338的第二數據輸入分別耦合至來自 外部并行端口 2720的相應數據輸入(這里表示為并行輸入連接)。因此,每個共享訪問端 口 2733選擇來自其兩個數據輸入之一的數據(即,選擇來自串行掃描路徑中的在前寄存器 的數據輸入或來自外部并行端口 2720的并行輸入連接之一的數據輸入,該外部并行端口 2720連接至共享訪問端口 2733)。如圖27所示,使能寄存器2732的輸出應用于每個共享訪問端口 2733,作為針對每 個共享訪問端口 2733的輸入選擇信號,從而由每個共享訪問端口 2733控制數據選擇。如果使能寄存器2732的值指示,應當將串行數據(來自TAP端口 2710)提供給核 心2739,則從使能寄存器2732向每個共享訪問端口 2733提供的輸入選擇信號指引每個共 享訪問端口 2733來選擇來自掃描路徑中在前寄存器的輸入(而不是來自并行輸入連接的 輸入,該并行輸入連接連接至來自外部并行端口 2720的共享訪問端口)。在這種情況下,共享訪問端口 2733i選擇來自使能寄存器2732的輸入(而不是來 自外部并行端口 2720的并行輸入連接的輸入),從而使得將使能寄存器2732的值讀入到第 一數據寄存器(并因此提供給核心2739)。類似地,在這種情況下,共享訪問端口 27332選擇來自第一數據寄存器2731i的輸入(而不是來自外部并行端口 2720的并行輸入 連接的輸入),從而使得將第一數據寄存器273^的值讀入到第二數據寄存器27312中(并 因此提供給核心2739)。換言之,盡管為了清楚起見,省略了對剩余數據轉移的描述,但是其 他數據寄存器2731的類似數據轉移使得能夠將串行數據提供給核心2739。如果使能寄存器2732的值指示,應當將并行數據(來自外部并行端口 2720)提供 給核心2739,則從使能寄存器2732提供給每個共享訪問端口 2733的輸入選擇信號指引每 個共享訪問端口 2733來選擇來自并行輸入連接的輸入(而不是來自掃描路徑中在前寄存 器的輸入),該并行輸入連接連接至來自外部并行端口 2720的共享訪問端口。
在這種情況下,共享訪問端口 2733i選擇來自外部并行端口 2720的并行輸入連接 的輸入(而不是來自使能寄存器2732的輸入),該輸入連接至共享訪問端口 27311;從而使 得將來自外部并行端口 2720的并行輸入連接的值讀入到第一數據寄存器2731i中(并因 此提供給核心2739)。類似地,在這種情況下,共享訪問端口 27332選擇來自外部并行端口 2720的并行輸入連接的輸入(而不是來自第一數據寄存器273^的輸入),該輸入連接至 共享訪問端口 27332,從而使得將來自外部并行端口 2720的并行輸入連接的值讀入到第二 數據寄存器27312中(并因此提供給核心2739)。換言之,盡管為了清楚起見,省略了對剩 余數據轉移的描述,但是其他數據寄存器2731的類似數據轉移使得能夠將并行數據提供 給核心2739。此外,盡管連接2700的直接NSDL描述可能會十分復雜,但是應注意,這種類型的 連接在功能上等同于關于圖26示出和描述的連接2600。在連接2600和2700中,“選擇” 片的值決定是串行數據到達核心還是并行數據到達核心。連接2600與連接2700之間的唯 一不同在于預期值在連接2700中,共享寄存器,從而在并行訪問的情況下,要預期的值是 并行值,而串行數據被蓋寫。盡管這里主要關于向具有一個并行端口的片上系統提供并行訪問進行了示出和 描述(為了清楚起見),但是可以向具有多個并行端口的片上系統提供并行訪問。類似地, 盡管這里主要關于向具有一個并行片的片上系統提供并行訪問進行了示出和描述(為了 清楚起見),但是可以向具有多個并行片的片上系統提供并行訪問。在這樣的實施例中,可以以任何方式來標識多個并行端口。例如,可以使用有序編 號(例如,關于交叉器件所描述的)來標識多個并行端口。例如,具有η個并行輸入和m個并 行輸出的片上系統具有以下端口 〃 parallel_in_<i>",i = 0,1,· · ·,n_l ; ” parallel, out_<k>",k = 0,1,...,m-1。此外,每個并行端口具有其自己的函數,可以以任何方式 來標識每一個函數(例如,通過使用附加在結尾處的相應端口名稱,例如"get_parallel_ data_parallel_in_0“ 、 “ set_scan_synchro_parallel_out_3“ ·)。相反,對于多個并行片的命名不存在限制,只要并行片的相應名稱指示該片是并 行片(例如,名稱可以以"parallel"開始)。在一個實施例中,其中"sencLparallel data"和〃 get_parallel_data〃采用片名稱作為參數,可以將任何端口與任何并行寄存 器相連接。在另一實施例中,其中,‘‘send_parallel_data〃 和〃 get_parallel_data〃 不采用片名稱作為參數,片上系統可以確切地聲明每個端口是如何“連接至”一個或多個并 行片的。并行接口的NSDL描述包括掃描路徑及其相關函數的描述。NSDL描述指示與并行 接口連接的實際物理端口(并行管腳)。這可以由頂層文件中經典BSDL/HSDL規則來處理 (例如,采用BSDL識別TAP信號的方式)。將并行通信協議的實現委托給并行接口驅動器。 告知測試系統哪些并行管腳受到哪些并行接口驅動器的控制。盡管這里主要關于針對并行端口的輸入數據流進行示出和描述,但是針對并行端 口的輸出數據流是對稱的。換言之,對于可以針對至片上系統的輸入數據流而實現的每個 輸入連接類型(如關于圖24-圖27示出和描述的),可以為來自片上系統的輸出數據流實 現相應的對稱的輸出連接類型。盡管這里主要關于支持并行訪問接口的內部并行端口與片上系統的并行端口之間的簡單內部連接的并行訪問接口進行示出和描述,但是并行訪問接口可以支持并行訪問 接口的內部并行端口與片上系統的并行端口之間的更復雜的內部連接。這樣,不管復雜性 如何,NSDL能夠描述任何測試訪問機制(TAM)。在一個實施例中,可以使用一個或多個交叉器件來提供并行訪問接口的內部并行 端口與片上系統的并行端口之間的內部連接。在一個這樣的實施例中,選取和取消選定函 數可以用于處理內部連接,無論來自串行掃描路徑還是來自并行端口。在另一實施例中,可以使用扇入/扇出方案來提供并行訪問接口的內部并行端口 與片上系統的并行端口之間的內部連接。在這樣的實施例中,并行端口的比特可以用于驅 動多個片上系統器件(即,通過內部并行端口在多個片上系統器件之間共享外部并行端口 的帶寬)。因此,盡管這里主要關于提供對一個片上系統的器件的并行訪問的并行訪問器件 進行示出和描述,但是在其他實施例中,并行訪問接口可以提供對多個片上系統器件的并 行訪問。關于圖28示出和描述了這種并行訪問接口的一般連接方案。圖28示出了并行訪問接口的內部連接方案的高級框圖。具體地,內部連接方案 2800提供至三個片上系統2820廠28203(共同為片上系統2820)的并行訪問接口 2810。并 行訪問接口 2810包括內部并行端口 2811、外部并行端口 2812、以及內部接口 2813。外部 并行端口 2812和內部并行端口 2811支持從測試系統至片上系統2820的η個輸入連接,并 且支持從片上系統2820至測試系統的m個輸出連接。如圖28所示,每個片上系統2820包括支持并行輸入連接和并行輸出連接的并行 端口。并行訪問接口 2810的內部端口支持(1)至每個片上系統2120的輸入數據流的扇 出,以及⑵來自每個片上系統2120的輸出數據流的扇入。外部并行端口 2812的η個輸 入連接扇出到至片上系統2820i的i個輸入連接,至片上系統28202的j個輸入連接,以及 至片上系統28203的1^個輸入連接(即,η = i+j+k)。外部并行端口 2812的m個輸出連接 扇入自來自于片上系統2820i的ρ個輸出連接,來自于片上系統28202的q個輸出連接,以 及來自于片上系統28203的r個輸出連接(即,m = p+q+r)。因此,使用NSDL描述語言,可以容易描述任何復雜度的片上系統器件。可以描述 片上系統器件的任何測試資源,包括組件(例如,IP、儀器、交叉器件等),組件之間的互連 等,及其各種組合。在NSDL中,片上系統的測試資源的描述是算法描述,其中,每個算法描 述包括以適于測試工具理解的格式而定義的一個或多個構成規則。圖29示出了用于描述片上系統的測試資源的方法。盡管示出和描述了以串行方 式執行,但是可以同時地或者以與關于圖29示出和描述的順序不同的順序來執行圖29的 方法2900的步驟的至少一部分。方法2900開始于步驟2902,并前進至步驟2904。在步驟2904,產生片上系統的每個組件的算法描述。每個組件的算法描述描述了組件所支持的至少一個函數到針對該組件的至少一 個寄存器值的映射。每個組件的算法描述描述了組件的內部掃描路徑。在一個實施例中,通過以下方式來產生片上系統的組件的算法描述標識由組件 支持的至少一個函數;產生組件的算法描述,其為至少一個函數中的每一個,定義該函數至 針對組件的至少一個寄存器的至少一個寄存器值的映射;以及存儲組件的算法描述。在步驟2906,產生片上系統的組件之間的互連的算法描述。組件之間互連的算法描述指定片上系統的系統級拓撲。在步驟2908,使用組件的算法描述和組件之間互連的算法描述來產生片上系統的 算法描述。片上系統的算法描述描述了片上系統的拓撲,根據該拓撲,可以構建片上系統的 掃描路徑的描述。在步驟2910,存儲片上系統的算法描述。可以存儲每個組件的各個單獨算法描述。 存儲組件之間互連的算法描述。可以以任何方式存儲算法描述。在步驟2912,方法2900結
束ο算法描述適于測試工具理解,以用于測試片上系統。這樣,處理器可以接收算法描 述(例如,從存儲器、從另一系統、或者從這種描述的任何其他源),以執行各種測試(例如, 組件級測試、系統級測試等,及其各種組合)。如這里所述,在一個實施例中,可以使用VHDL實現NSDL語言。在一個這樣的實施 例中,可以通過上下文巴克斯范式(BNF)語法來形式化針對NSDL的語法規則。例如,BNF容 易描述語法結構的產生,如以下示例
ENTITY<identifier>IS <entity_header> <entity_declarative_part> [BEGIN<entity_statement_part>] END[ENTITY][<entity_simple_name>];在該示例中,符號'='指示,可以將左側元素派生至右側結構中。右側可以 由更多派生詞素(以大寫字符指示的不可再派生的原子元素)構成。節點是派生點,而葉 節點是不能再派生的節點(即,右側僅包含詞素)。方括號'['和‘Γ用于表達可選的 派生(它們用于定義遞歸規則)。符號' <'和' >'用于指示進一步派生。與VHDL規則 一致,引號用于指示串。這種類型的語法能夠產生在結構上匹配語言的任何可能“短語”,并能夠用于驗證 給定文本是否屬于該語言(即,其是否遵照規則)。這僅僅是結構性描述,且不能夠傳遞與 其“含義”有關的任何信息,而是,必須添加屬性,以考慮到上下文信息Left_hand 個(H) J, (L) = right_hand_0 個(HO) J, (LO) [right_ hand_l (HI)丨(Ll)],其中:丨(L)指示從低級派生導出并傳輸至高級派生的信息;丨(H)指示從高級派生導出并傳輸至低級派生的信息;每個節點可以定義一組規則,以定義如何從HO. . . Hn開始計算H,以及如何從L開 始來獲得不同的L0... Ln ;以及每個級別能夠為定義對于H、L、Hi以及Li的一組條件,以使短語在該語言中具有含義”。以下規則(編號[1]至[14])描述IP和儀器的聲明[l]<IP_declaration> (H, η) (P_info) (Ext) (Cross) (Par)::=
<IP_instrument_archi_body> (H, η) I (Ext) (P_info) 個(Sel一Cross)個(Pa:r_dec) END[IP][<device_simple_name>];
BEGIN
IP<identifier>IS
<device_header> (Ext) (Cross一decl) (Par)規則=Cross = Cross_decl U Sel_Cross如果Cross_decl /=0,檢查對于每個“有線”元件是否存在“選擇” / “取消選定”語句,以及對于每個“事務”元件是否至少存在“選擇”。NB Cross_decl =0 ο Sel_Cross 二0,否則錯誤檢查是否已經解決
了〃 architecture_body〃中的所有模塊間依賴性。如果Par/=0,檢查在(H,η)內是否存在至少一個并行寄存器,并且在(Pjnfo) 內是否存在相應〃 get_parallel_data〃 /〃 send_parallel_data〃 的聲明。如果Par_dec/=0,檢查其與Par中信息(端口名稱、并行寄存器、連接,扇入扇出 等)的一致性。NB :Par_decl =0 Par=0,否則錯誤。[2] <instrument_declaration> 個(H, η)個(Ρ_ info)個(Ext)個(Cross)個(Par):: = INSTRUMENT<identifier>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];規貝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) I (Ext)個(Sel_Cross)個(Par_ dec)
END[ARCHITECTURE][<architecture_simple_name>];[4] <IP_instr_stat_part> 個(HIn)個(P_info) J, (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)]);該規則實現與掃描路徑的鏈接的定義以及最終外部引用的聲明。NB:〈crossroad—information〉在規貝Ij [10]中導出。[6] <external_dependencies> 個(Ext)::=〈external一reference〉個(Nei_Ext) [ ;〈external—dependencies〉個(01d_Ext)]規貝丨J :Ext = New—Ext U Old—Ext[7]〈external—reference〉個(Ext):: = 〈string—identifier〉stringRule: (Ext) = string—identifier這些入口中的每一個定義針對外部元素的符號名稱。該符號用于針對外部函數依 賴性來引用該元素。[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 ;]該規則描述關于儀器使用的強制過程集合以及可選測試過程集合。P_Info = P_ Test UP_use。[9]<internal_scan_path> 個(H,η)=<component_instantiation_statement>[<internal_scan_path>]在〃 Partial Access (部分訪問)〃或〃 Full Access (全訪問)〃的情況下,掃 描路徑由其組件的直接實例化來描述(見針對(H,n)的上下文規則的規則[37]-[41])。注 意該規則實現儀器和IP嵌套。如果不存在該派生,則標識"無訪問"器件。[10]<crossroad_information> (Cross)=PRECEDENT: STRING: =〃 TDI 〃 ;FOLLOWING:STRING: =〃 TDO〃[〈tributaries〉個(Affls)][〈affluents〉個(Tribs)];規貝丨J =Cross = Affls U Tribs[11]〈tributaries〉個(Tribs)::=TRIBUTARY:STRING: =" deselected";<numbered_tributaries> (num_tribs);規則Tribs=" tributary"I Tribs = num_tribs[12]<numbered_tributaries> 個(Tribs)::=TRIBUTARY_<numeral>:STRING: =〃 deselected"
規貝U:Tribs=" tributary_<numeral>" U 01d_tribs [13]〈affluents〉個(Affls)::=
AFFLUENT:STRING: =" deselected";
<numbered_affluents> (num_affIs); 規則Affls=" affluent"
Affls = num_affIs [14]<numbered_affluents> 個(Affls)::=
AFFLUENT_<numeral>:STRING: =" deselected [;<numbered_affluents) (01d_Affls)]規則Affls = " affluent_<numeral>" U 01d_Affls 規則[1]-[14]的儀器和 IP 的定義允許對IP/儀器多次實例化(例如,像利用經典VHDL組件所進行的那樣)。這在規 則[15]中示出。從語法觀點來看,該實例化規則(規則[15])與經典VHDL中的確切地相同。所有 新穎性都在上下文側(1)實例化將器件的拷貝創建到掃描路徑中。編譯器可以容易地從編譯庫獲取其 信息,并使用它們來完成系統掃描路徑。(2)通用映射負責指定精確掃描路徑插入點(“precedent"、“ following", 支流和分支)。(3)其他通用映射將外部元素的符號名稱分解成實際名稱(即相應實例的標簽)。 測試工具還必須檢查所引用的過程實際存在于實例化的元素中。以下規則(編號[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>);[CONNECTION<connection_type> ;]
component_instantiation_statement
instantiation label: instantiated unit 「Reneric map aspect] 「port map aspect];
規則過程原型僅僅是語法手段,以使得代碼對于人類用戶而言更加可讀。它們不 攜帶上下文信息。NB 僅針對選擇過程,允許“連接”派生。[20]<function_prototype>:=FUNCT10N<prο c e dure_name >(<formal_parameter一list [DEPENDENCIES(<d印一list ;]LENGTH(<length_descriptor>);BUSY_M0DE(<mode_identifier>);[<optional_attributes>]RETURN<type> ;規則過程原型就是僅僅是語法手段,以使得代碼對于人類用戶而言更加可讀。它 們不攜帶上下文信息。NB 僅針對選擇過程,允許“連接”派生。[21]<formal_parameter_list>規則參數遵照正常VHDL參數的語法。通過顯式命令來進行對掃描路徑片的引 用O
<complete_proc_func_list>I (Ext)個(P一info)個(Cross)::= 〈complete一procedure〉 I (Ext)個(new一P)個(Cross一Info) 〈complete一function〉 i (Ext)個(new一P) 規則P_info = 01d_P U New_P Cross = 01d_Cross U Cross_info〈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));
(M); (C_type);]
BUSY_M0DE(<mode_identifier>) [C0NNECTI0N<connectiorn_type> IS
begin
<procedure_body> END<procedure_name> ; 規則
P=參數信息(標準VHDL)。一個參數至少應當指代片或靜態比特流 L=過程長度信息 D=依賴性信息 M=忙模式信息
<procedure_name> 是字面標識符<procedure_body> 類似正常 VHDL 中的派生Proc_info = PULUDUMCross_info =如果Sel_info/=0 (SeL[l]-SeL[6]中的命名規則)則 Cross_info = Sel_info U C_typeNB :Sel—info=0<">c_type=0,否則出錯[24]<complete_function> I (Ext)個(Proc_info)::=FUNCTION<function_name> formal_parameter_list> (P))[DEPENDENCIES (<dep_list>)丨(Ext)丨(D);]LENGTH(<length_descriptor> 個(L));BUSY_M0DE(<mode_identifier>)丨(M);RETURN<type>ISBEGIN<function_b°dy>END<function_name> ;規則P =參數信息(標準VHDL)。一個參數至少應當指代片或靜態比特流。L=過程長度信息D =依賴性信息M =忙模式信息<function_name> 是字面標識符<function_body> 類似正常 VHDL 中的派生Proc_info = PULUDUM[25]<dep_list> I (Ext) (D_new)=<dependence> I (Ext) (D)[ ; dep_list I (Ext) (D_old)]規則D_new = D_old U D 或 D_new = D[26]<dependence> I (Ext) (D):: = <string_identifier> (P)<string_identifier> 個(E) · <string一identifier〉個(P)規則P =依賴過程的名稱E =在檢查E e Ext中定義外部器件P的名稱,否則錯誤D = PUE[27]<mode_identifier> 丨(M) = HOLD|D0NT_CARE規則M=〃 hold〃或〃 dont_care"[28]<length_descriptor> 個(L) = <length_exp> 個(T)[<end_cond> 個(C)]規則L= T U C[29]<length_exp> (T) = <time_exp> (T)<time_exp> 個(L) ,<time_exp> 個(A), <time_exp> 個(U)規則T= T 或 LUAUU
L=函數長度的下限
A =平均函數長度U=函數長度的上限[30]<time_exp> 個(T):: = <numeral><time_type>|<numeral>規則T包含絕對時間或時鐘計數(如果不指定時間單位)[31]<end_cond> 個(C):: = <boolean_expression>規則布爾表達指示過程的結束條件。其應當使用來自由顯式命名標識的片的信號。[32]<connection_type> = WIRED|TRANSACTION[33]<optional_attributes>=規則有意地將該派生保留為開放的。通過定義可選的參數,任何兩個操作員能夠交換他們所偏好的格式的信息,而不是在標準化時間選 擇的任意一種。例如,這能夠用于給出用于功率管理的開關活動的估計,或者直接給出焦耳 /瓦。測試工具忽略其未實現的派生,最后產生警告。如這里所述,選擇過程由它們的名稱標識。以下規則(編號Sel [1]至Sel [6])說 明了對使用類似BNF語法的選擇過程的命名的控制。這里關于圖8、圖9示出和描述了示例 交叉器件,并且圖10示出了這些規則的示例應用。sel[1]<procedure_name> 個(Sel_info)=<radix>[<extentions> 個(Affls)個(Tribs)]規則:Sel_info= (Affls) U (Tribs)sel [2]<radix> = SELECT|DESELECTsel [3]〈extensions〉=〈affluents 個(Affls) > <tributariest 個(Tribs) >sel [4]<affIuents (Affls)>: = AFFLUENT<numbered_affIuents (Nmb_Affls)>
0規則如果(affluent)Affls=〃 All";如果(numbered_affluents)Affls = Nmb_Affls如果(0) AfflS= 0;說明該規則檢測函數命令的支流,函數進行命令。可以為無(即,規則以空集結 束)、所有支流(非指定)、或僅僅為子集(一個或多個affluenthmb ;sel[5]<numbered_affIuents 個(New_Affls) > =AFFLUENT_<nmb>[; <numbered_affluents 個(01d_Affls) > ]規則<nmb>可以是任何自然數New_Affls = 01d_Affls U afflunent_<nmb> ;sel[6]<tributariess (Tribs) > = TRIBUTARY<numbered_tributaries (Nmb_Tribs) >
規則如果(tributary)Tribs=" All";如果(numbered_tributaries) Tribs = Nmb_Tribs如果(0) Tribs=0;說明該規則檢測函數命令的分支。可以為無(即,規則以空集結束)、所有分支 (非指定)、或僅僅為子集(一個或多個tributary_<nmb>);對于自動測試產生工具所要使用的選擇過程,還需要標準化的自變量,使得自動 測試產生工具知道如何處理選擇過程。遵照實際選擇算法,存在兩種引用派生的方式(1) 通過顯示命名,即,使用“串”或等同類型;(2)通過對派生的有序編號,即,使用適宜大小的 std—logic—vector。自變量隨著過程控制的派生而改變(從選擇規則Sel [1]-Sel [6]看出)。以下原 型與最一般的情況有關(NB 即使該示例為“選擇”,相同規則對于“取消選定”當然也是有 效的)1)select(tributary—nmbin std_logic_vector,affluent—nmb:in std_logic_vector)2)select (tributary—name:in string,affluent—name: in string)自動測試產生工具只須填入相應的名稱/編號。在更精確的選擇函數的情況下, 僅需要使用一些自變量(例如,圖9的分級開關器件的取消選定函數),如果名稱本身已經 唯一標識了目標(例如,圖8的SIB),則最終為空。以下規則(規則[34]至[41])基于VHDL 93,并與VHDL 93兼容,但是明顯更簡 單。已經移除與NSDL不直接相關的所有派生。應注意規則[34]至[39]是經典VHDL語法 規則,這里所示的僅用于描述新的上下文規則。[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)lnstrument_ddeclaration 個 (H, η) 個 (Ρ_ info)丨(Ext)丨(Cross)丨(Par)注意這是NSDL與VHDL集成的規則,允許IP和儀器定義為頂層實體;這也是如下 所在的點測試工具完成分級分析,將分級分析的信息存儲在(H,n)、(P_info)、(Cross)以 及(Par)中。規則Ext = 0,否則出錯(其是頂層模塊)[36] secondary—unit =
architecture—body
I package—body[37]entity—declaration 個(H,η)::=ENTITY<identifier>ISentity—headerent ity_dec larat ive—part[BEGINarchitecture—body (H,η)]END [entity][entity_simple—name];規則該規則描述由編譯器在實例化時使用的所定義實體的掃描路徑內部。該規 則能夠用于描述非P1687兼容的實體,該實體具有掃描路徑,但不具有函數/過程集合。注 意,實體保持為與在經典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>];規則檢查(P,F)所定義的掃描鏈的完整性(以TDI開始,以TDO結束,沒有漏洞、 線性而非分級等)。[39]architecture_statement_part 個(H,η)個(P,F)=[component一instantiation一statement 個(HijIii)個(P, FOi]規則H = U Hi+ (H_in,H_out) j(P, F) =U (P,F)i,η = Σ[40]<scan_path> (SP_info)=<component_instantiation_statement> 個(C_info)[<scan_path> 個(S_old)]規則也可以將該規則解釋為,在并發語句上對VHDL規則的上下文檢查,這將規 則的開發限制到掃描鏈相關的單元實例的實例。SP_info = S_old U C_infor使用C_info內的P和F來檢查掃描路徑完整性。[41]component_instantiation_statement 個(C_info)=instantiation_label instantiated_unit (H, η) (P, F[, H_in, H_out])[generic_map_aspect][port_map_aspect];規則n(單元數 目),H(分級信息),P(在前),F在后),從數據庫中 的"instatiated_unit〃描述中獲取
H_in, H_out,由控制單元引入的分級掃描路徑C_info = (H, η) U (P,F[,H_in,H_out])以下規則(編號[42]至[57])包括用于并行訪問的示例正式規則[42]<p£ir£illel_inform£ition> 個(Par):: =[<parallel_inputs> (par—in)]
[<parallel_outputs> 個(par_out)];規則Par = par_in U par_out[43]<parallel_declarations> (Par—dec)::=[<parallel_connection> 個(par_connection)][<alternates> 個(alter—info)][<fanning> (fanning_info)]規貝1J :Par_dec = par_connection · fanning_info · alter_info[44]<paralle_inputs> (par—in)::=<single_parallel_input> 個(idf)<numbered_par_inputs> (par_ins);規則par_in = idfI par_in = par_ins[45]<single_parallel_input> (idf):: =PARALLEL_IN:STRING: =〃 deselected";規則idf="parallel_in"[46]<numbered_par_inputs> (par_in)::=<numbered_par_input> (idf)[;<numbered_parjnputs> (par_ins)]規則par_in = idf U par_ins[47]<numbered_par_input> (idf)::=PARALLEL_IN_<numeral>:STRING: =〃 deselected"規則idf= 〃 parallel_in_<numeral>〃[48]<parallel_outputs> (par—out)::=<single_parallel_output> 個(idf)I<numbered_par_outputs> (par_outs);規則par_out = idfI par—out = par—outs[49]<single_parallel_output> 個(idf)::=PARALLEL_0UT:STRING: =〃 deselected";規則idf=〃 parallel_out〃[50]<numbered_par_outputs> (par_outs)::=<numbered_par_output> (idf)[;<numbered_par_outputs> (old_par_outs)]
規則par_outs = idf U old_par_outs
[51]<numbered_par_output> 個(idf)::=PARALLEL_OUT_<numeral>:STRING: =〃 deselected"規貝U:idf=〃 paral 1 el_out_<numeral>"[52]<fanning> (fanning_info)::=<port_name> 個(idf) PAN<proveriMice> 個(provenance一info);規貝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)[&<provenance> 個(old_prov)]規則:provenance_info = old_prov U idfNB: 〃標識符〃該規則允許扇入和扇出的描述(關于圖28所示出和描述的),而不具有對用于該 構成的并行端口的任何約束。使用全部端口,遵照VHDL信號的拼接規則(‘&'符號)進 行構成。[55]<alternates>(alter_info)=<serial_reg> 丨(idf) IS ALTERNATE 0F<alter_regs> 丨(idf_list);規則 alter_info = idf U idf_list[56]<register_list> (idf_list)=<parallel_reg> 個(idf) [,<register_list> 個(old_idf_list)];規貝丨J:idf_list = idf U old_idf_list‘‘ parallel_reg〃 是經典 VHDL 標識符。[57]<parallel_connection> 個(par_connection)=<port_name> (idf)C0NNECTS<register_list> (idf_list);規則par_connection = idf U idf_list如這里所述,以類似于交叉器件的方式,并行接口使用一些命名規則來標識關鍵 資源。需要命名的元素包括并行片可以由并行連接訪問的片,其名稱以“parallel”開始。遵照連接方案,這 些片完全獨立于串行掃描路徑或串行掃描路徑的一部分。并行函數通過兩個特定函數‘‘get_parallel_data〃和〃send_parallel_ data",來獲得對并行資源的訪問。如這里所述,對于并行接口存在三種可能的同步模式與掃描鏈同步、突發、以及 異步。在一個實施例中,通過特定函數在這些模式之間切換,該特定函數正如交叉選擇函數 一樣,在需要時指定必須如何改變比特流。這些函數包括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 ; 測試工具通過跟蹤對這些函數的調用,能夠容易獲知哪個模式是活動的。器件僅 聲明針對其實際實現的模式的函數。必須在并行接口內部將類型"bUrSt_length_type"定義為整數子類型,使得開 發人員能夠指出允許用于突發的值的范圍。示例包括“subtype burst_length_type is 3到10的整數范圍〃,“typeburSt_length_type是(6,8,10) 〃等。該解決方案意味著 每個并行接口聲明其自己的"bUrSt_length_type",這僅在局部是有效的,從而不會干涉 最終的其他接口。在并行接口具有多于一個端口的實施例中,函數所引用的端口的名稱被附加至函 ■^l^oT^i^J^ll :" set_scan_synchro_parallel_out_0 “ , “ disable_port_parallel_ in"等。上述BNF規則僅組成了可以用于實現NSDL的規則的示例。本發明并不意在受限 于這樣的規則。圖30示出了適合于執行這里描述的函數的通用計算機的高級框圖。如圖30所示, 系統3000包括處理器元件3002 (例如,CPU)、存儲器3004 (例如,隨機存取存儲器(RAM) 和/或只讀存儲器(ROM))、測試模塊3005、以及各種輸入/輸出設備3006 (例如,存儲設備, 包括但不限于磁帶驅動、軟盤驅動、硬盤驅動或光盤驅動、接收器、發送器、揚聲器、顯示器、 輸出端口以及用戶輸入設備(例如,鍵盤、鍵區、鼠標等))。應注意,本發明可以以軟件和/或軟件和硬件的組合來實現,例如,使用專用集成 電路(ASIC)、通用計算機或任何其他硬件等同物。在一個實施例中,能夠將本發明測試過 程3005加載到存儲器3004中,并由處理器3002執行,以實現如上所述的功能。這樣,能夠 將本發明的測試過程3005 (包括關聯的數據結構)存儲在計算機可讀介質或載體上,例如 RAM存儲器、磁或光驅動或磁盤等。盡管這里主要關于可以使用NSDL描述和測試的片上系統器件的特定實現方式進 行了示出和描述,但是可以使用NSDL描述和測試各種其他片上系統器件。盡管這里主要示 出和描述了關于使用NSDL來描述和測試片上系統,但是可以使用NSDL描述和測試各種其 他電子電路。本發明并不意在僅限于描述和測試這里示出和描述的特定電子電路。盡管這里主要關于可以用于使用NSDL來描述和測試片上系統的測試系統的特定 實現方式進行了示出和描述,但是測試系統的各種其他實現方式可以用于使用NSDL來描 述和測試片上系統。本發明并不意在僅限于這里示出和描述的測試系統的特定實現方式。這里作為軟件方法討論的一些步驟可以在硬件內實現,例如,作為與處理器協作 以執行各種方法步驟的電路。本發明的一部分可以實現為計算機程序產品,其中,當由計算 機處理時,計算機指令適配計算機的操作,使得能夠調用或以其他方式提供本發明的方法 和/或技術。可以將用于調用本發明的方法的指令存儲在固定或可拆卸的介質中、經由廣 播的數據流或其他信號承載介質進行傳輸、和/或存儲在根據指令進行操作的計算設備內 的存儲器中。盡管這里已經詳細示出并描述了結合本發明的教導的各種實施例,但是本領域技 術人員能夠容易設想同樣結合這些教導的其他改變的實施例。
權利要求
一種使用從測試系統到片上系統的并行訪問來測試片上系統的至少一部分的方法,所述片上系統包括多個組件,所述方法包括接收對串行測試訪問接口的描述,所述串行測試訪問接口用于在測試系統與組件之間耦合測試比特流,其中,所述串行測試訪問接口使用片上系統的串行掃描路徑來提供對組件的訪問;以及接收對并行測試訪問接口的描述,所述并行測試訪問接口用于在測試系統與組件之間耦合測試比特流,其中,所述并行測試訪問接口提供對組件的訪問,而不使用片上系統的串行掃描路徑;以及存儲對串行測試訪問接口的描述以及對并行測試訪問接口的描述。
2.根據權利要求1所述的方法,其中,串行測試訪問接口包括串行測試訪問端口以及 至少一個串行寄存器。
3.根據權利要求1所述的方法,其中,并行測試訪問接口包括并行測試訪問端口以及 至少一個并行寄存器。
4.根據權利要求1所述的方法,其中,從并行接口對組件的訪問與片上系統的串行掃 描路徑無關。
5.根據權利要求1所述的方法,其中,從并行接口對組件的訪問受到片上系統的串行 掃描路徑的至少一個值的控制。
6.根據權利要求1所述的方法,其中,串行測試訪問接口包括至少一個串行寄存器,并 行測試訪問接口包括至少一個并行寄存器,其中,至少一個串行寄存器和至少一個并行寄 存器經由公共訪問端口來訪問片上系統的組件。
7.根據權利要求6所述的方法,其中,公共訪問端口受到片上系統的串行掃描路徑的 至少一個值的控制。
8.根據權利要求6所述的方法,其中,公共訪問端口適于響應于控制信號,選擇來自 所述至少一個串行寄存器和所述至少一個并行寄存器之一的值。
9.一種使用從測試系統到片上系統的并行訪問來測試片上系統的至少一部分的方法, 所述方法包括接收對并行接口模塊的描述,所述并行接口模塊適于將測試系統耦合至片上系統的核 心模塊,其中,并行接口包括適于經由片上系統的掃描路徑來訪問核心模塊的至少一個串 行寄存器,以及適于訪問核心模塊而不使用片上系統的掃描路徑的至少一個并行寄存器; 以及存儲對并行接口模塊的描述。
10.一種使用從測試系統到片上系統的并行訪問來測試片上系統的至少一部分的方 法,所述片上系統包括多個組件,所述方法包括接收對串行測試訪問端口的描述,所述串行測試訪問端口適于在測試系統與組件之間 耦合測試比特流;接收對并行測試訪問端口的描述,所述并行測試訪問端口適于在測試系統與組件之間 耦合測試比特流;接收對接口端口的描述,所述接口端口適于將串行測試訪問端口和并行測試訪問端口 耦合至片上系統的至少一部分組件;以及存儲所述描述,以在測試片上系統時使用。
全文摘要
本發明提供了一種用于片級JTAG測試的新硬件描述語言。這種新硬件描述語言被稱作新BSDL(NSDL),使得能夠描述片上系統的測試資源,從而使得能夠以便于片上系統測試的方式來描述片上系統。本發明提供了一種自下至上的方法來描述片上系統。本發明支持片上系統的每個組件的算法描述,并且支持片上系統的組件之間的互連的算法描述,從而能夠產生整個片上系統或部分片上系統的算法描述。本發明支持對一個或多個片上系統器件的并行訪問,包括用于描述和使用并行訪問進行測試的方法。
文檔編號G01R31/3183GK101884032SQ200880118846
公開日2010年11月10日 申請日期2008年11月24日 優先權日2007年12月4日
發明者塔潘·喬蒂·查克拉伯蒂, 姜辰煥, 布拉德福·吉恩·范特盧勒, 米歇爾·波多蘭, 蘇勒什·戈雅爾 申請人:阿爾卡特朗訊美國公司