新四季網

用於使用多個處理器進行系統測試的方法與設備的製作方法

2023-04-30 16:15:26

專利名稱:用於使用多個處理器進行系統測試的方法與設備的製作方法
技術領域:
本發明涉及系統測試領域,更具體地但並不限於涉及生成並控制用於系統測試的指令。
背景技術:
電子電路一般是以印刷電路板(PCB)的形式構建而成,該印刷電路板包括焊接於電路板基板上的多個電子元器件,其中電路板基板具有互連各種設備終端以形成電路的導電跡線。因為PCB以及其實現的電路通常都很複雜,製造商對電路板測試正日益變得自動化。在這方面,電路板測試設備已經由連接到密集PCB的I/O連接器並用於高級自動化功能測試的簡單I/O功能測試儀,演化為包括用於和被測試電路板上的所有或者一些電路節點進行電連接的探針引腳以用於執行高級和低級測試的測試固定裝置,再演化為不需要外部探查被測試電路板的單個電路節點就能提供PCB自動測試的集成測試設備。電路板和設備中的電路測試一般受到測試自動化工具(Testing Automation Tools)的控制,該測試自動化工具支持從定義測試算法到實際測試操作的處理所需的步驟。為了便於測試自動化,測試資源經常嵌入在電路板和設備中,並可以利用通常稱為測試訪問埠(TAP)的標準化接口進行訪問。這樣會造成對於引腳數以及合理資源訪問和管理的限制。通常,大多數現有標準提供能用於描述被測系統(SUT :SyStem under test)內資源的一種或多種語言,這些資源能用作測試自動化工具的輸入。這些測試自動化工具能應用他們自己的算法以便生成利用TAP的測試序列。然後,由測試控制單元(TCU :Test Control Unit)使用這些測試序列以控制TAP並執行測試操作。測試操作的特徵和性能取決於這些因素中的每一個,即,訪問標準、數據格式以及TCU實施。聯合測試行動組(JTAG)已開發出命名為IEEE 1149. 1的電路板測試標準。IEEE 1149. 1指定用於測試電路板的測試訪問埠(TAP)。IEEE 1149. 1支持經由被測試電路板上包括的測試設備來對硬體的邊界掃描(BQ測試。邊界掃描測試包括在軟體的控制下控制和監視JTAG可兼容設備的邊界引腳以提供超過其他情況下所能達到的測試覆蓋率。而且,正在對指令JTAG(IJTAG)進行標準化(命名為P1687),來克服與從板級JTAG至片級 JTAG的轉換相關聯的現有JTAG局限性。
自動測試生成(ATG =Automated Test Generation)工具能使用 JTAG 和 IJTAG 來測試晶片和電子設備。JTAG提供簡單的5線TAP,其能使用最少的負載串行訪問晶片內所實施的資源。然後將訪問構架描述成諸如邊界掃描描述語言(BSDL)的特定語言,這種特定語言能被許多商用TGT用於生成測試矢量。這些測試矢量一般以稱為串行矢量格式(SVF) 的格式保存,這樣提供1149. ITAP基本操作的高級描述。對於SVF更複雜的替換是STAPL, 該STAPL擴展SVF的矢量操作以允許對測試矢量的基本流程控制(if-then-else)以及算術操作。遵從JTAG的TAP接收來自SVF或STAPL播放器的命令,並生成能以後離線解釋的簡單Go/NoGo結果。遺憾的是,這些現有的方法具有許多限制。第一個限制在於數據格式,因為測試播放器對於被測系統一無所知,因此,只能執行最基本的操作。第二個限制在於不支持(本地或遠程的)交互性測試;而是任何測試結果必須離線檢查。而且,這些現有方法是依賴實施的並一般具有專有性。

發明內容
通過用於經由被配置用於訪問被測系統的測試訪問埠(TAP)對該被測系統的至少一部分執行測試方法和設備能解決現有技術中的各種缺陷。在一個實施例中,提供一種用於經由測試訪問埠(TAP)對被測系統的至少一部分執行測試的設備,所述測試訪問埠被配置用於訪問所述被測系統。該設備包括第一處理器和第二處理器,所述第一處理器用於執行適於經由所述TAP控制對所述被測系統的至少一部分的測試的指令,所述第二處理器用於支持到所述TAP的接口。所述第一處理器被配置用於在執行所述測試指令期間檢測與控制所述TAP相關的TAP相關指令,並將所述TAP 相關指令傳播向所述第二處理器。所述第二處理器被配置用於接收由所述第一處理器檢測的所述TAP相關指令並處理所述TAP相關指令。所述第一處理器被配置用於在由第二處理器處理所述TAP相關指令的同時執行至少一個任務。在一個實施例中,提供一種用於對被測系統的至少一部分執行測試的方法,其中所述被測系統經由測試訪問埠(TAP)可被訪問。該方法包括由第一處理器執行適於控制所述被測系統的至少一部分的測試的指令、在執行適於控制對所述被測系統的至少一部分的測試的指令期間,檢測與控制所述TAP相關的TAP相關指令,從所述第一處理器向第二處理器提供TAP相關指令,並由所述第二處理器執行與控制所述TAP相關的所述TAP相關指令,其中所述第一處理器被配置用於在由所述第二處理器處理所述TAP相關指令的同時執行至少一個任務。


結合附圖,通過考慮以下詳細描述,能夠容易理解本發明的教導,在附圖中圖1示出了包括測試系統和被測系統的系統測試環境的高級框圖;圖2示出了圖1的測試系統的一個實施例的高級框圖,包括協作生成用於被測系統的測試指令的測試生成工具和軟體編譯器;圖3示出了圖1的測試系統的一個實施例的高級框圖,包括協作生成用於被測系統的測試指令的測試生成工具和軟體編譯器;
圖4A-4E示出了利用SPARC V8 ISA實施TISA,說明用於利用SPARC V8 ISA實施 TISA的指令編碼的細節;圖5示出了利用SPARC V8 ISA實施TISA,說明用於利用SPARC V8 ISA實施TISA 的示例性TISA結構;圖6示出了支持交互測試能力的基於TISA測試環境的實施例;圖7示出了圖6的基於TISA測試環境的示例性實施例;圖8示出了用於執行圖5A的被測系統的傳送-接收信道的優化的示例性程序結構;圖9示出了用於修改適配處理器的指令集體系結構(ISA)流以形成測試指令集體系結構(TISA)流程的方法的一個實施例;圖10示出了用於生成適用於測試至少部分被測系統的指令的方法的一個實施例;圖IlA示出了用於生成適用於測試至少部分被測系統的指令的方法的一個實施例;圖IlB示出了用於生成適用於測試至少部分被測系統的指令的方法的一個實施例;圖12示出了 TISA處理器體系結構的示例性實施例;圖13示出了利用多個處理器提供系統測試能力的測試處理器體系結構的示例性實施例;圖14示出了測試協處理器體系結構的示例性實施例;圖15示出了測試輔助處理器體系結構的示例性實施例;圖16示出了能由TISA處理器使用的示例性寄存器集合;圖17示出了被測系統的高級框圖,說明被測系統的示例性掃描鏈的示例性分解;圖18示出了利用掃描鏈的掃描段層抽象經由被測系統的掃描鏈用以測試部分被測系統的方法的一個實施例的高級框圖;以及圖19示出了適用於執行在此所述功能中的計算機的高級框圖;為便於理解,在可能的情況下,使用相同的附圖標記來指示附圖中相同的元件。
具體實施例方式提供各種系統測試能力用於執行被測系統(SUT system under test)的測試。在一個實施例中,提供了測試指令集體系結構(TISA)。提供TISA用於執行系統測試。TISA將計算機科學能力與系統測試能力相結合以提供改進的系統測試能力,包括交互測試能力、遠程測試能力和在此所述的各種其他能力。通過利用系統測試能力適配基於軟體的指令集體系結構(ISA)形成TISA。基於軟體的ISA能使用任一合適的軟體程式語言 (例如,C++、Java等,及其各種組合)並能使用任何合適的處理器進行實施。系統測試能力可以使用任何合適的TAP,諸如IEEE1149. 1 (也稱為JTAG)TAP或任何其他合適的TAP。一般而言,通過結合軟體處理的原子操作和測試過程的原子測試操作形成TISA。在TISA中, 測試過程的算法部分由軟體流程處理,諸如測試過程的算法部分被翻譯成原子測試操作。 通過結合軟體處理的原子操作和測試過程的原子測試操作形成TISA,以使原子測試操作以與處理測試過程的算法部分的的軟體處理的原子操作相同的方式被處理。這使得能夠細粒度地控制內嵌測試執行、遠程測試執行和在此所示出並描述的各種其他改進的系統測試能力。圖1示出了包括測試系統和被測系統的系統測試環境的高級框圖。如圖1所示,系統測試環境100包括測試系統(TS) 110和被測系統(SUT) 120。TSllO可以是適於測試SUT120的任何系統。TSllO被配置用於測試SUT120。TSllO 能執行SUT120的任何測試,例如,測試SUT120的一個或多個單獨組件,SUT120的組件的一個或多個組合,SUT120的組件之間的一個或多個互連,SUT120的一個或多個系統級功能等,及其各種組合。TSllO能執行一般與測試被測系統相關的任何功能,諸如執行測試過程、 向被測系統提供輸入數據、從被測系統接收輸出數據、處理從被測系統接收的輸出數據用於確定系統測試結果以及類似功能,及其各種組合。下文將更詳細地解釋用於測試被測系統的TSllO的設計和使用。SUT120可以是可利用TSllO測試的任何系統。SUT120包括至少其部分由TSllO單獨地和/或組合地測試的任何組件。TSllO包括一個或多個掃描鏈,具有一個或多個相關輸入和輸出訪問引腳集合,提供由SUT120測試的組件的訪問。本領域普通技術人員能理解其中在SUT120中利用掃描鏈用於測試SUT120的方式。例如,SUT120包括一個或多個電路板, 利用具有相關輸入和輸出訪問引腳的一個或多個掃描鏈執行該電路板的測試,其中該輸入和輸出訪問引腳能用於將輸入測試信號應用於SUT120並從SUT120收集輸出測試信號。如圖1所示,TSllO經過測試訪問接口(TAI) 115訪問SUT120。可以使用任何合適的測試訪問接口實施測試訪問接口,這取決於如下因素的一個或多個TS110、SUT120、要執行的測試類型等,及其各種組合。例如,TAI115包括在IEEEl 149. 1標準中標準化為聯合測試行動組(JTAG)測試訪問埠(TAP),該標準以全文引用方式包含在此。IEEE1149. 1標準定義支持如下信號集合的TAP 測試數據流入(TDI)、測試數據流出(TDO)、測試模式選擇(TMS)、測試時鐘(TCK)以及可選地測試復位信號(TRST)。SUT120的TDI和TDO引腳在邊界掃描鏈中互連,通過該邊界掃描鏈,TSllO能訪問SUT120以用於測試至少部分的SUT120。TAI115可以包括任何其他合適的測試訪問接口。本領域普通技術人員可以理解,TS110、TAI115和SUT120能以適於提供在此所覆蓋實施例的特徵的任何方式實施。如在此所述,TISA能利用計算機科學能力以及系統測試能力以提供系統測試中的顯著改進。系統測試能力和計算機科學能力的一般性描述如下,接著是其中一起利用計算機科學能力和系統測試能力提供TISA的方式的描述。TISA通過利用計算機科學能力以改進系統測試能力。系統測試能力包括在「自動化測試」流程的所有階段中通常支持的能力(該流程一般包括從定義測試算法到實際測試操作所需要獲得的所有步驟和資源)。為了有助於測試自動化,測試資源經常嵌入在電路板和設備內,並能使用一般稱為測試訪問埠(TAP)的標準化接口進行訪問。這樣會造成對引腳數量以及合理化資源訪問和管理的限制。能使用多種語言描述被測系統內的資源,並因此,被測設備內的資源能用作測試生成工具(TGT)的輸入。TGT能應用算法以生成測試序列,測試控制單元(TCU)能使用這些測試序列以控制TAP並執行相關測試操作。測試操作的特徵和性能取決於如下三個因素訪問標準、數據格式和TCU實施。。TISA能利用計算機科學能力以提供改進的系統測試能力。該過程包括利用在「軟體開發流程」的所有階段中可用到的計算機科學能力(該流程一般包括從以選擇的軟體語言編碼的軟體算法到在目標處理器上最終調試和執行中所需要的任一或所有步驟,諸如編譯、指令集體系結構(ISA)、交互調試等,及其各種組合)。計算機科學中使用編譯將以程式設計師友好的高級抽象定義的算法簡化為一系列的機器可執行指令。這個過程差異很大,取決於輸入的程序語言和項目的複雜度;然而,即使不是所有,大部分的方法共享同樣的基本假設不管算法有多複雜,任何算法都可以被分解為基本的指令。該假設不但運用於經典的語言,也運用於更多的現代高級語言和面向對象語言,諸如,例如C++,Java, Python等。指令集體系結構(ISA)是任何處理器的核心,也是編譯之所以有效的原因。一般而言,每個處理器都提供一套指令,這些指令定義了其中處理器運行的方式。這些指令形成處理器的至少部分ISA。可以理解的是ISA可被認為包括和指令相關的各種結構,諸如寄存器、尋址模式、操作碼、存儲結構等,及其各種組合。ISA能使處理器執行簡單的指令,諸如讀 /寫值自/至於存儲器、在寄存器上執行邏輯或算術操作、處理中斷等。該基本性能可以隨著時間保持基本不變,由於現代處理器能高效利用大量資源而實現優越的性能,並因此能在大致相同的時間量內完成更大量的基本指令。而且,從使用協處理器能達到更高的性能 (例如,浮點協處理器、圖形協處理器等),其能夠通過硬編碼複雜操作來幫助主處理器。計算機科學中調試的使用允許監視並驗證軟體開發和執行處理。一般而言,軟體開發是個長期並困難的過程,需要對該過程進行嚴格監視和驗證以保證最後的產品沒有缺陷,或者說沒有一般稱為的「缺陷」。為了幫助測試軟體程序,軟體開發流程提供許多強大的調試特性。例如,通用的軟體開發流程調試特性包括逐步執行;所有寄存器和存儲器位置的可觀察性/可控制性,斷點和觀察點的使用等。這些調試特性以及各種其他調試特性更經常地由軟體編譯器嵌入到最終代碼中的算法和結構提供,但也能由處理器內用到的硬體資源輔助。根據這些信息,調試器能重建原始代碼並將ISA-層操作關聯到編程抽象層。通過參考圖2和圖3能更好地理解一起使用自動測試執行能力和計算機科學軟體能力以提供改進的系統測試能力。圖2示出了圖1的測試系統的一個實施例的高級框圖,包括協作生成被測系統的測試指令的測試生成工具和軟體編譯器。如圖2所示,TSllO包括測試生成工具(TGT) 210和軟體編譯器(SC) 220。TGT210 包括 TGT 構成器 212 和 TGT 算法 214。TGT構成器212接收系統描述文件211作為輸入。系統描述文件211包括TGT能用於生成測試指令/矢量用於測試被測系統的所有合適的描述文件。例如,系統描述文件 211包括電路描述文件、電路/固定裝置網表文件、其他描述文件等,及其各種組合。系統描述文件211能在TGT210上獲得和/或從一個或多個遠程組件和/或系統獲取。系統描述文件211包括一個或多個電路描述文件。可以使用任何合適的諸如邊界掃描描述語言(BSDL,已開發該語言作為IEEE1149. 1標準部分以用於板級JTAG)、分級掃描描述語言(HSDL,已開發該語言作為BSDL的擴展)、新掃描描述語言(NSDL)等,及其各種組
8合的描述語言指定該電路描述文件。系統描述文件211包括一個或多個電路板/固定裝置網表文件。該電路板/固定裝置網表文件包括和設備的物理描述相關的文件,用於描述網表、連接及類似信息。可以以任何合適的格式,諸如PCB、Gerber和/或適於電路板/固定裝置網表文件的任何其他格式,指定電路板/固定裝置網表文件。系統描述文件211包括一個或多個其他描述文件。該其他描述文件可以包括用作生成電路模型的輸入的任何其他合適的描述文件。例如,其他描述文件包括任何合適的應用特定和/或工具特定的描述語言文件,諸如Asset的Macro語言、Go印el的CASLAN語言和/或任何其他合適的描述語言文件。TGT構成器212對系統描述文件211進行處理以生成電路模型213。能以任何合適的方式執行TGT構成器212對系統描述文件211的處理以生成電路模型213。電路模型 213指定對其運行TGT210的被測系統或部分被測系統的模型。TGT構成器212向TGT算法 214提供電路模型213。TGT算法214接收電路模型213。TGT算法214處理該電路模型213以生成TGT原子測試操作216。可以以任何合適的方式執行由TGT算法214對電路模型213的處理以生成TGT原子測試操作216。SC220包括SC前端算法222和SC後端算法224。SC前端算法222接收計算機科學源文件221作為輸入。該計算機科學源文件221 包括能由編譯器編譯的任何合適的計算機科學源文件。例如,計算機科學源文件221能包括用於任何合適的計算機程式語言的計算機科學源文件,諸如C++、Java, Python等,及其各種組合。例如,計算機科學源文件221能包括一個或多個C文件、一個或多個C++文件和 /或任何其他合適的計算機科學源文件。SC前端算法222處理計算機科學源文件221以生成程序模型223。該程序模型 223指定計算機科學源文件221的中間表示。SC前端算法222向SC後端算法2M提供程序模型223。SC後端算法2M接收程序模型223作為輸入。該SC後端算法2M處理該程序模型223以生成包括ISA原子操作226的一個或多個ISA 二進位文件225。可以以任何合適的方式執行由SC後端算法2M對程序模型223的處理以形成該ISA 二進位文件225。ISA 原子操作2 是實施TISA的處理器支持的彙編級指令。如圖2所示,除了 TGT210和SC220的各自處理流程,也能利用TGT210和SC220之間的其他交互以用於控制TISA原子操作235的生成。在一個實施例中,SC後端算法2M能初始化一個或多個矢量計算請求230至TGT算法214。當SC後端算法需要訪問TAP時,SC 後端算法2M初始化矢量計算請求230。TGT算法214 —旦從SC後端算法2M接收矢量計算請求230,則根據所接收的矢量計算請求230生成對於TAP的一個或多個TGT原子測試操作216。然後以受到SC後端算法2M控制的方式將一個或多個TGT原子測試操作216應用於TAP,這是因為TGT原子測試操作216和ISA原子操作2 結合能使用ISA原子操作2 對TGT原子測試操作216進行算法控制。這樣,SC220提供對TAP的訪問的算法控制。如圖2所示,除了 TGT210和SC220,TSllO進一步包括TISA構成器240。TISA構成器240接收TGT原子測試操作216和ISA原子操作226。TISA構成器240將TGT原子測試操作216轉換為TISA指令並將該TISA指令插入到ISA 二進位文件225 ( S卩,結合TISA指令和ISA原子操作226以形成包括TISA原子操作M6的TISA 二進位文件M5)。TISA構成器240可以是TGT210的一部分、SC220的一部分、拆分到TGT210和SC220、獨立於TGT210 和SC220實施等。可以理解的是,可以以任何其他合適的方式及其組合存儲、顯示、執行、傳播和/ 或處理參考圖2所示出和描述的各種輸入和輸出。圖3示出了圖1的測試系統的一個實施例的高級框圖,包括協作生成用於被測系統的測試指令的測試生成工具和軟體編譯器。如圖3所示,圖3的TSllO以類似於圖2的TSllO的方式運行,在於利用測試生成工具和軟體編譯器之間的交互生成包括TISA原子操作的TISA 二進位文件;然而,圖3的 TSllO中測試生成工具和軟體編譯器之間的交互不同於圖2的TSllO中測試生成工具和軟體編譯器之間的交互。如圖3所示,TSllO包括測試生成工具(TGT) 310和軟體編譯器(SC) 320。TGT310並包括TGT構成器312和TGT算法314。TGT構成器312接收系統描述文件311作為輸入。系統描述文件311包括TGT能用於生成測試指令/矢量以用於測試被測系統的所有合適的描述文件。例如,系統描述文件311包括電路描述文件、電路板/固定裝置網表文件、其他描述文件等,及其各種組合。圖 3的系統描述文件311包括類似於參考圖2所示和描述的系統描述文件211(例如,一個或多個電路描述文件、一個或多個電路板/固定裝置網表文件、一個或多個其他描述文件等, 及其各種組合)。系統描述文件311能在TGT310上獲得和/或從一個或多個遠程組件和/ 或系統獲取。TGT構成器312接收一個或多個測試操作描述文件3311-331N (統稱為測試操作描述文件331)作為輸入。由SC320生成該測試操作描述文件331。下文將詳細描述由SC320 對測試操作描述文件331的生成。TGT構成器312處理該系統描述文件311和該測試操作描述文件331以生成電路模型313。能以任何合適的方式執行由TGT構成器312對系統描述文件311的處理以生成電路模型313。電路模型313指定對其運行TGT310的被測系統或部分被測系統的模型。系統描述文件311結合測試操作描述文件331的處理使TGT構成器312生成電路模型313,以使TGT310生成合適的TAP原子操作。該TGT構成器312向TGT算法314提供該電路模型 313。TGT算法314接收電路模型313。TGT算法314處理該電路模型313以生成TGT原子測試操作316。能以任何合適的方式執行由TGT算法314對電路模型313的處理以生成 TGT原子測試操作316。如圖3所示,除了 TGT310和SC320,TSllO還包括TISA翻譯器340。該TISA翻譯器340接收TGT原子測試操作316。TISA翻譯器340翻譯TGT原子測試操作316以形成 TISA原子測試操作346。TISA翻譯器340向SC320提供TISA原子測試操作346以包括在軟體編譯處理中。下文將詳細描述SC320對TISA原子測試操作346的使用。TISA翻譯器 340可以是TGT310的一部分、SC320的一部分、拆分到TGT310和SC320、獨立於TGT310和 SC320實施等。
SC320包括SC預編譯器330、SC前端算法322和SC後端算法324。SC預編譯器330接收計算機科學源文件321。計算機科學源文件321包括能由編譯器編譯的任何合適的計算機編程源文件。例如,計算機科學源文件321包括用於任何合適的計算機程式語言的計算機編程源文件,諸如C++、Java、Pyth0n等,及其各種組合。例如,計算機科學源文件321包括一個或多個C文件、一個或多個C++文件和/或任何其他合適的計算機科學源文件。SC預編譯器330對該計算機科學源文件321進行處理。SC預編譯器330處理計算機科學源文件321,生成預處理的計算機科學源文件 321P。可以以任何合適的方式由SC預編譯器330預處理計算機科學源文件321以形成預處理的計算機科學源文件321P。SC預編譯器330向前端算法322提供該預處理的計算機科學源文件321P。SC預編譯器330在計算機科學源文件321的處理過程中檢測測試操作,並生成測試操作描述文件331。能使用任何合適的測試描述語言指定該測試操作描述文件331 (例如,利用一個或多個標準測試描述語言、利用TGT310特定的測試描述語言等,及其各種組合)。SC預編譯器330向TGT310提供測試操作描述文件331 (示意性地,提供到TGT310的 TGT構成器312),該TGT構成器312結合系統描述文件311處理測試操作描述文件331以生成電路模型313。SC前端算法322接受預處理的計算機科學源文件321P。SC前端算法322還接受 TISA原子測試操作346,該TISA原子測試操作346由TISA翻譯器340利用TGT310從測試操作描述文件331生成的TGT原子測試操作316生成。SC前端算法322編譯預處理的計算機科學源文件321P和TISA原子測試操作346以生成程序模型323。該程序模型323指定預處理的計算機科學源文件321P的中間表示,該中間表示包括TISA原子測試操作346,以使在ISA原子操作中集成TISA原子測試操作346以形成TISA原子操作。SC前端算法322 向SC後端算法3M提供給程序模型323。SC後端算法3 接受程序模型323。SC後端算法3 對程序模型323進行處理以生成包括TISA原子操作356的一個或多個TISA 二進位文件355。可以以任何合適的方式執行由SC後端算法3M對程序模型323的處理以形成包括TISA原子操作356的TISA 二進位文件355。TISA原子操作356包括ISA原子操作(即,對其實施TISA的處理器所支持的彙編級指令)以及TISA原子測試操作346。TISA原子操作356提供對於TGT原子測試操作316 (即以TISA原子測試操作346 的方式)的算法控制(使用ISA原子操作),藉此對應用TISA原子操作356的被測系統能夠提供改進的系統測試。因此,以受到SC後端算法324的控制的方式將TGT原子測試操作 316 (即以TISA原子測試操作346的方式)應用於TAP,這是因為TGT原子測試操作316和 ISA原子操作結合以能夠利用ISA原子操作對TGT原子測試操作316進行算法控制。這樣, SC220提供訪問TAP的算法控制。可以理解的是,參考圖3所示出並描述的各種輸入和輸出可以以任何其他合適的方式及其組合存儲、顯示、執行、傳播和/或處理。參考圖2和圖3,雖然主要參考特定數量的輸入文件、中間文件、模型、輸出文件等示出並描述圖2和圖3的實施例,但可以理解的是可以使用任何合適數量的輸入文件、中間文件、模型、輸出文件等實施圖2和圖3的實施例以及在此提供的各種相關教導。圖2和圖3示出了其中利用計算機科學能力以改進系統測試能力的方式(例如, 提供系統測試的更細粒度控制、實現交互系統測試、實現系統測試期間的交互調試,並提供在此示出並描述的各種其他優勢)。圖2和圖3的系統測試方案提供對諸如STAPL的現有方法的改進,其目標在於向矢量格式添加編程特徵,並因此從頭開始增加調試、遠程訪問和交互特徵。相比而言,TISA利用來自計算機編程和嵌入式應用的信息量以控制系統測試的測試訪問。參考圖2和圖3,可以理解的是TISA的能力和特性由其抽象層確定,即,TISA原子操作的定義越精細,TISA的性能越優異。在一個實施例中,其中TISA實施在JTAG架構中,支持用於掃描操作三個抽象層。第一個抽象層是矢量層。矢量層是三個抽象層中最粗粒度的,其中,原子操作是掃描矢量的輸入和輸出。矢量層最好以矢量格式表示,諸如串行矢量格式(SVF)或任何其他合適的矢量格式,並給與最高級別的控制。第二個抽象層是TAP層。在TAP層中,對原子操作進行升級以允許完全控制TAP 狀態機。這樣能更精確地控制掃描操作、支持非標準序列(例如,如在可尋址陰影協議或其他類似協議中需要的非標準序列)。第三個抽象層是掃描段層。掃描段層是三個抽象層中最細粒度的。矢量層和TAP 層抽象層使用掃描矢量作為原子數據格式,該原子數據格式對於涉及整個掃描鏈的常規一致性測試是足夠的,但對於基於設備的測試來說是繁重的,其中,需要精細控制幾十或幾百個構成掃描鏈的設備。掃描段層允許定義整個掃描路徑內的「掃描段」,該操作能單獨處理, 藉此提供靈活強大的原語集合,該原語集合能用於直接定義問題空間中的掃描操作並在實施時解決掃描操作。本方法優選在嵌入式應用中,其中可用的計算資源是十分有限的。下文將詳細描述掃描段層的使用。如圖2和圖3所示,無論掃描操作的抽象層,TGT計算生成的TAP原子操作(示例性地,TGT原子測試操作216和TGT原子測試操作316)都被轉換為對應的TISA原子測試操作並插入到二進位可執行文件(即,插入到SC生成的ISA原子操作中)。參見圖2,TGT原子測試操作216和ISA原子操作2 經處理形成TISA 二進位可執行文件(示例性地,TISA 二進位文件M5)中的TISA原子操作M6。TISA原子操作246 包括TISA原子測試操作和ISA原子操作。參見圖3,在不需要修改SC310的SC前端3M的情況下,可以將TISA原子測試操作(該TISA原子測試操作由TISA翻譯器340從TGT310生成的TGT原子測試操作316生成)作為預編譯彙編指令輸入到SC前端324。可以理解的是基本上所有的程式語言都允許該操作。例如,在C語言中,利用「asm」命令獲取該操作。在一個實施例中,需要對SC後端算法3M進行細微修改(例如,以處理TISA彙編指令的二進位轉換)。在此參考圖IlA和 IlB示出並描述該處理的示例。雖然已主要參考JTAG架構中TISA原子操作的粒度級別示出並描述,但本領域普通技術人員可以理解的是在其他架構中能使用相同粒度級別的TISA原子操作,在JTAG架構和/或其他架構中能使用不同粒度級別的TISA原子操作等,及其各種組合。
如以上所述,能利用任何合適的指令集體系結構(ISA)實施TISA。例如,能使用 SPARC V8 ISA、INTEL ISA 等實施 TISA。為了便於清楚描述TISA的實施,在此參考圖4A-4E示出並描述利用SPARC V8 ISA 的TISA的示例性實施例。在該示例性實施例中,TISA實施為矢量層TISA,其允許直接編碼構成SVF格式的指令;然而,如上文所述,可以理解的是,也可以執行利用SPARC V8 ISA實施TISA,其中TISA被實施為TAP層TISA或掃描段層TISA。SPARC V8 ISA在許多產品中實施,諸如開源軟處理器系列Leon 2和Leon 3。回顧由SPARC國際公司在1992年發布的「SPARC結構手冊版本8」(下文稱為 「SPARC結構手冊」)表明存在許多沒被SPARC V8 ISA利用的碼字。至少從附錄F的「操作碼和條件代碼」可以明顯看出。圖4A示出了 SPARC V8 ISA的未被利用的碼字。圖4所示出的未被利用碼字能用於編碼TISA的「測試」指令。更具體而言,當「op」和「op2」都設置為零時,該指令在「The SPARC Manual Version 8」中標記為未實施的,以使該指令能用於TISA。圖4B示出了能表示所有十三個SVF指令的編碼格式。如圖4B所示,比特位30-25 包括指令自身的編碼,如有TAP狀態與該指令一起使用,則比特位21-18可用於編碼該TAP 狀態,以及當需要時每個指令可以使用比特位17-14來指定可選信息。圖4C示出了 IEEE1149. 1 TAP的TAP狀態的示例性比特位編碼。使用第一列、第二列和第三列表示TAP狀態的比特位編碼,其中第一列表示IEEE1149. 1 TAP狀態名,第二列表示和IEEE1149. 1 TAP狀態名相關的SVF TAP狀態名,以及第三列表示圖4B的比特位 21-18的位編碼。可以理解的是,能以各種其他方式將比特位編碼分配給TAP狀態。SVF指令允許使用多個參數,需要在最後代碼中編碼這些參數。為了表示這些參數,並符合保持指令和數據分離的通常架構最佳實踐,為此矢量層TISA的示例性實施定義基於寄存器的參數傳遞。因此,矢量層TISA提供六個專用32位寄存器GENERIC1、 GENERIC1、TDI、TDO、MASK和SMASK。在圖4D中示出了這六個專用32-位寄存器。下文中將詳細描述這六個專用32-位寄存器的使用,但作為一般規則,這些寄存器或用於存儲參數或用於指向存儲參數的存儲器位置。因此,在編譯時,在TISA指令被調用前,標準的ISA 指令能用於加載這些寄存器。更具體而言,在TISA的SPARC V8 ISA實施中,協處理器寄存器能直接用作通常加載/存儲指令的參數。在TISA的SPARC V8 ISA實施中可能使用的SVF指令包括ENDDR、ENDIR、STATE、 FREQUENCY、ΡΙΟ、PIOMAP, HDR、HIR、TDR、TIR、SDR、SIR 和 RUNTEST。通過參考 ASSETI InterTech公司1997年發布的「串行矢量格式參考」(下文中稱為「SVF手冊」)能更好的理解這些SVF指令,該SVF手冊以全文引用的方式包含於此。下文將更詳細地描述在TISA 的SPARC V8 ISA實施中這些SVF指令的使用。ENDDR, ENDIR, STATEENDDR和ENWR指令指示TAP接口結束其操作時的TAP狀態。STATE指令使TAP 接口進入特定狀態。在這個TISA的示例性實施中,如圖4E所示,ENDDR,ENDIR, STATE指令的SVF編碼分別是「000000」、「000001」和「000010」。當需要時,可以使用「TAP STATE」 文件(即,圖4C所示的TAP狀態的示例性比特位編碼)執行這些SVF指令的SVF編碼。根據對SVF手冊的回顧至少可以理解,STATE指令可以可選地採用顯式的序列狀態作為參數。
13在TISA的此示例性實施中,將顯式的序列狀態作為參數將通過一系列指令進行編碼,一個指令用於序列中的每個狀態。FREQUENCYFREQUENCY指令用於指定TAP接口的工作頻率。FREQUENCY指令表示為32位整數的赫茲周期。在TISA的此示例性實施中,如圖4E所示,FREQUENCY指令的SVF編碼是 「000011」。FREQUENCY指令的值存儲在GENERIC1寄存器中。ΡΙ0, PIOMAPPIO指令用於處理並行矢量,以之前通過調用PIOMAP設置的格式。在RISA的此示例性實施例中,將PIOMAP看作生成合適命令以建立TAP接口的預處理器指示。因此,PIO 指令僅僅需要表示並行矢量,可以通過(在GERERIC1寄存器中)指示其中存儲並行矢量的地址來表示。在指令的比特位13-0指定組成矢量的字數「n」,並因此,該矢量具有的尺寸上限為213 = 8K字=3 字節。如果矢量大小不是字的精確倍數,當需要時可以在存儲器中提供填充和重對齊。在TISA的此示例性實施例中,PIO指令的SVF編碼是「000100」。HDR, HIR, TDR, TIRHDR,HIR,TDR和IlR指令的作用各不相同。在此,一起考慮這些SVF指令是因為 ⑴這些SVF指令功能上類似(S卩,即使它們是不同的類型,但它們都控制位移操作),以及 (2)這些SVF指令接受相同的參數(1)長度表示位移的比特位數的32位數字;(2) TDI (可選)輸入位移矢量;(3)TD0(可選)期望的輸出位移矢量;(4)MASK(可選)當將實際值和TDO比較時使用的掩碼,「1」表示關心,「0」表示不關心;(5)SMASK(可選)標記在TDI中要考慮哪些比特位的掩碼,「 1」表示關心,「0」表示不關心。在TISA的此示例性實施例中,如圖4E所示,HDR、HIR、TDR和IlR指令的SVF編碼分別是「000110」、「000111」、「001010」 禾口 「001011」。在TISA的此示例性實施例中,可使用如下額外的編碼(1)長度被保存在GENERIC1寄存器中;(2)當TDI出現時01為「1」,否則為零。如果設置,TDI寄存器包含存儲輸入矢量的地址;(3)當TDO出現時02為「1」,否則為零。如果設置,TDO寄存器包含存儲期望輸出的地址;(4)當MASK出現時03為「1」,否則為零。如果設置,MASK寄存器包含存儲輸出掩碼的地址;以及(5)當SMASK出現時04為「1」,否則為零。如果設置,SMASK寄存器包含存儲輸出掩碼的地址。SDR, SIRSDR和S^指令具有與HDR、HIR、TDR和IlR指令相同的語法,但功能上不同SDR 和S^觸發TAP上的實際掃描操作。在交互測試中,從系統讀取的實際輸出矢量是算法的基礎,因此,TISA提供了在存儲器中存儲實際輸出矢量的可能性。當「TAP STATE」欄位(如圖4B所示,比特位21-18)不同於零時,GENERIC2寄存器指示實際輸出矢量的存儲位置。因此,SDR和S^可以支持最大七個參數。如SPARC結構手冊的4. 2章所描述的,如果指定TDO 並且實際輸出矢量不同於期望輸出矢量,則在處理器狀態寄存器(PSR Processor State Register)中設置溢出標誌。RUNTESTRUNTEST指令使得TAP接口在特定的狀態運行特定的時間長度的測試,並主要用於控制RUNBIST操作(例如,如IEEE1149. 1所定義)。RUNTEST指令接受如下參數中的一個或多個(所有這些參數都是可選的)(l)run_state 接口在測試執行期間必須維護的狀態;(2)run_count 測試必須採用的時鐘周期數量;(3)run_clk :run_count 參考哪個時鐘(TCK =TAP 時鐘,SCK 系統時鐘);(4)min_time 以秒計的最小運行時間,表示為實數;(5)maX_time 以秒計的最大運行時間,表示為實數;以及(6)endstate 在命令結束時接口必須達到的狀態。在TISA的此示例性實施例中,RUNTEST指令的SVF編碼可以是「000101」或者 「100101」。在TISA的此示例性實施例中,可使用如下額外的編碼(1)TAP_STATE 其包含被定義的 run_state ;(2)01 如果定義 TAP_STATE 則為 『1,,否則為 『0,;(3)02 如果指定mirucount則為『1,,否則為『0,。如果設置,GENERIC1寄存器包含min_count的32位無符號表示;(4)03 如果設置max_COunt則為『1,,否則為『0,。如果設置,GENERIC2寄存器包含max_count的32位無符號表示;(5)04 如果設置endstate則為『1,,否則為『0,。如果設置,比特位13-10包含該
結束狀態。(6)比特位9-0 如果指定rurucount,則表示為無符號整數(run_COimt最大值= 210 = 1024) ο 如果該欄位不是「0」,則比特位 30 指示 run_clock( 『 1,= TCK,『0,= SCK)。雖然在TISA的此SPARC V8 ISA實施例中主要參考特定的SVF指令的使用進行示出和描述(即,ENDDR、ENDIR、STATE、FREQUENCY、ΡΙΟ、PIOMAP、HDR、HIR、TDR、TIR、SDR、SIR 和RUNTEST),但可以理解的是也能使用更少或更多的SVF指令。雖然在此主要參考利用SPARC V8 ISA的TISA的實施例進行示出並描述,但可以理解的是根據在此所示出並描述的TISA教導也能使用各種其他ISA。在交互性測試方法中,數據切換(handoff)點非常重要。如上文所述,測試程序由兩個主要部分組成算法部分(表示為軟體編譯器)和測試訪問部分(表示為測試生成工具)。在使用測試程序的測試操作中,會出現如下時刻測試程序正訪問被測系統的時刻, 以及當測試程序正檢查測試結果並決定所需下一步驟的時刻。這兩個操作之間的切換對於獲取高效的交互性測試非常重要。在諸如SVF和STAPL的現有基於腳本的方法中,腳本處理矢量層的所有TAP操作。在該層中,接口(或「播放器」)能與TAP協議進行通信,並發送/接收矢量至/自被測系統。 而且,STAPL也允許某些對位矢量的基本流程控制(if-then-else)以及算法操作。如果需要更複雜的處理(例如,識別所接收矢量內的寄存器,或計算矢量以訪問特定設備),播放器將控制權交給算法部分。在STAPL中,可通過「導出」(「export」)命令進行該操作。然而,遺憾的是,SVF和STAPL都不具有它的標準格式(例如,對於STAPL,切換處理通常是某些廠家專有的)。在現有的嵌入式方法中,如Ericsson的主測試控制器(MTC)和系統BIST處理器, 在算法部分和測試訪問部分使用相同的劃分。在這樣的嵌入式方法中,算法部分和測試訪問部分由必須單獨編程的不同協處理器執行。而且,算法部分和測試訪問部分的存儲空間是物理上不同的,因此生成的切換機制類似於STAPL的切換機制。結果使得用於測試訪問部分的協處理器在切換到算法部分之前存儲許多掃描操作,考慮到增加的掃描鏈大小,該協處理器會需要大量資源。與現有的集成測試方法相比(例如,諸如SVF和STAPL的基於腳本的方法,以及諸如MTC和系統BIST處理器的嵌入式方法),TISA在算法部分(即常規ISA)中集成測試訪問部分(即測試操作),以使測試訪問部分和算法部分共享相同的物理存儲空間,因此使得測試訪問部分和算法部分之間的切換(以及由此的數據傳遞)自動化。在TISA中,在指令層執行測試訪問部分和算法部分之間的切換,以使處理器能根據相關的調度策略當需要時靈活地混合掃描和算法(即,靈活地混合測試操作和算法操作)。在TISA的此示例性實施例中,使用SPARC V8 ISA,處理矢量的所有操作使用絕對尋址(如上述參考SVF指令所描述的)。結果,可以像ISA程序中的標準變量一樣使用測試矢量,由此使得測試訪問部分和算法部分之間的接口自動化。作為示例,根據上文所述的使用SPARC V8 ISA的TISA的示例性實施例,如下步驟舉例說明典型的測試序列(I)SDR指令用於從被測系統獲取測試輸出數據。生成的輸出數據置於特定的存儲器位置(例如,GENERIC2寄存器中的「實際」參數);(2)常規LOAD指令傳輸該將被加載到寄存器中的輸出數據;(3) 一旦輸出數據被加載到寄存器中,可使用算術操作和/或邏輯操作處理輸出數據(注意因為SPARC V8 ISA是加載/存儲結構,所有的數據在被處理前都必須加載到處理器中);(4)常規STORE指令用於將算法結果傳輸到存儲器中;(5) SDR指令將新的測試輸入數據發送到TAP (例如,使用TDI寄存器中的「TDI 」參數)。注意,常規算術操作(2)44)對於任何ISA算術實施都是標準的,絕不能由TISA 修改。因此,從這個簡單示例可以看出,使用在算法部分和測試訪問部分之間具有正常有效的切換的任何給定算法或電腦程式都能支持TISA。在TISA的此示例性實施例中,使用SPARC V8 ISA,採用絕對尋址(為了清楚描述 TISA);然而,本領域普通技術人員根據在此的教導告知可以修改TISA的此示例性實施例以支持在SPARC結構手冊中描述的所有合法SPARC V8尋址模式。雖然在此主要參考其中利用SVF的TISA的示例性實施例進行示出並描述,在示例性實施例中利用SVF是因為它是已被證實能提供完整甚至基礎的1149. ITAP處理的眾所周知的格式,但本領域技術人員根據在此的教導告知可以理解,能夠使用任何其他合適的控制格式實施TISA,其中許多格式允許更精細的TAP狀態機控制並支持更複雜的測試操作。雖然在此主要參考其中抽象層是矢量層的TISA的示例性實施例進行示出並描述,但本領域技術人員根據在此的教導告知可以理解,可以修改在此示出並描述的示例性 TISA實施例,以使TISA的抽象層是TAP層或掃描段層。為了清楚地描述TISA,在此參考圖5和圖6示出並描述在示例性被測系統上執行測試的TISA的示例性使用。在TISA的此示例性使用中,TISA被實施為使用SPARC V8ISA 和SVF的矢量層TISA(即,繼參考圖4A-4E所示出並描述的示例性實施例)。圖5A和圖5B示出了對被測系統執行測試的TISA的示例性使用。圖5A示出了包括JTAG TAP510和被測系統520的系統測試環境500。JTAG TAP510提供到被測系統520的測試訪問。JTAG TAP510提供到被測系統520 的測試訪問,用於向被測系統520發送輸入數據並從被測系統520接收輸出數據。JTAG TAP510包括指令寄存器(1 512,該寄存器是8位指令寄存器。JTAG TAP510由測試系統控制(例如,諸如參考圖3示出並描述的測試系統110, 為了清楚起見,在此將其省略)。被測系統520包括第一電路板521(表示為Bi)和第二電路板525 (表示為B2)。 第一電路板521包括發送器522 (表示為T)。第二電路板525包括接收器5 (表示為R)。 發送器522在連接5 上將數據發送到接收器526。在本示例中,連接5 是8位連接。如圖5A所示,從JTAG TAP510經由每個電路板自身的掃描鏈可訪問每個電路板。 即,經由第一掃描鏈523可訪問第一電路板521並經由第二掃描鏈527可訪問第二電路板 525。第一掃描鏈523和第二掃描鏈527可由JTAG TAP510的IR512選擇(即,IR = 0選擇第一電路板Bi,IR = 1選擇第二電路板B》。發送器522和接收器5 在它們的電路板上都不是孤立的,而是更大的掃描鏈的一部分(例如,對於該示例,分別具有M比特位和16 比特位)。在測試程序中,經由第一掃描鏈523將輸入數據發往發送器522,並通過利用第二掃描鏈527從接收器5 收集生成的輸出數據。為了執行詳盡的測試,通過連接5 發送所有可能的值,以使通過連接5 發送觀=256個矢量。使用C語言的示例性程序如下1include
2include
3
4char sent一value, received value;
5
6define MAX_COUNT 256;
7
8void main(void)
9{
10for (sent_value=0;sent_value<MAX_COUNT;sent_value++) H{
12apply_JTAG(sent_value,Bl .T);
13read—JTAG (received_value,B2.R);
14if (sent_value != received value) exit (0);
15}
16exit(l);
17}在該程序中,第2行包括處理JTAG操作的C模塊,其中定義了分別用在12行和 13行的函數「apply_JTAG」和「Read_JTAG」。SC320的預編譯器330識別這些函數並生成 TGT310的測試操作描述文件331。測試操作描述文件331的格式取決於第一電路板521 和第二電路板525的實際實施而變化。例如,如果第一電路板521和第二電路板525都是 IJTAG兼容的,則可以例如利用新掃描描述語言(NSDL)編碼指定測試操作描述文件331。 TGT310利用測試操作描述文件331生成TGT原子測試操作316,TISA翻譯器340將這些 TGT原子測試操作316翻譯為TISA原子測試操作346。TISA原子測試操作346被提供給 SC320的前端324。圖5B所示為TGT原子測試操作316、TISA原子測試操作346和生成的 TISA 二進位編碼。圖5B示出了由執行圖5A的系統測試環境500的測試的測試系統使用的從C命令到TISA編碼的映射。如圖5B所示,使用具有如下四列的表格540表示從C命令到TISA編碼的映射「C 命令」列541、「SVF指令」列542、「TISA彙編程序」列543以及「TISA編碼」列544。表格 540從左到右示例性示出C命令被翻譯成SVF指令、SVF指令被翻譯成TISA彙編程序、TISA 彙編程序被編碼為TISA 二進位編碼的方式。Apply_JTAG (value, Bi. Τ)命令被翻譯成兩個 SVF 命令SIR 8 TDI (00)和 SDR 24 TDI (value)。
18
SIR 8 TDI (00) SVF指令被翻譯成TISA彙編程序的如下三個操作SET 8,% cGENERIClSET 00,% cTDISIR TDI,其被翻譯成 TISA 編碼 12010000。SDR 24 TDI (value) SVF指令被翻譯成TISA彙編程序的如下三個操作SET 24,% cGENERIClSET value, % cTDISDR TDI,其被翻譯成 TISA 編碼 10010000。Read JTAG (value, Β2· R)命令被翻譯成兩個 SVF 指令SIR 8 TDI (01)和 SDR 16 ACTUAL(value)。SIR 8 TDI (01) SVF指令被翻譯成TISA彙編程序的如下三個操作SET 8,% cGENERIClSET 01,% cTDISIR TDI,其被翻譯成 TISA 編碼 12010000。SDR 16 ACTUAL (value) SVF指令被翻譯為TISA彙編程序的如下三個操作SET 16,% cGENERIClSET 「value」,% cGENERIC2SDR ACTUAL,其被翻譯成 TISA 編碼 10008000。沒有指定SET操作的TISA編碼,這是因為SPARC V8手冊將它們識別為「偽指令」, 隨著處理器的實施,偽指令具有不同的編碼。利用所確定的TISA編碼,預編譯器330現在可用高級JTAG訪問相關的TISA彙編指令取代該高級JTAG訪問。結果是下列用C指定的編碼,其中調用JTAG TAP已經由相關的TISA彙編編碼代替1include
2include
3
4char sent_value, received value;
5
6define MAX_COUNT 256;
7
8void main(void)
9{
10for (sent_value=0;sent_value<MAX_COUNT;sent_value++)
H {
12asm volatile ("SET 8,%cGENERICl;
13SET 00, %cTDI;
14SIR TDI;
15SET 24, %cGENERICl;
16SET &sent_value, %cTDI;
17SDR TDI;");
18asm volatile ("SET 8,%cGENERICl;
19SET 01, %cTDI;
20SIR TDI;
21SET 16, %cGENERIC 1 ;
22SET &received—value, %cGENERIC2;
23SDR ACTUAL");
24if (sent—value != received value) exit (0);
25}
26exit(l);
27} 可將這些編碼輸入到前端算法322,該前端算法322將生成程序模型323。可將該程序模型323輸入到後端算法324,該後端算法3M將生成包括TISA原子操作356的可執行TISA 二進位文件355。表格MO的「TISA編碼」列示出了 TISA彙編指令的二進位編碼(例如,如參考圖 4A-4E所示出並描述的,使用參考利用SPARC V8 ISA的TISA的示例性實施例定義的各種規則)。如在此描述的,TISA提供在執行被測系統的測試中關於測試粒度的完全自由 (即,從TAP層到掃描段層)。如圖2和圖3所示,並使用圖4A-4E和圖5A-5B的示例性TISA 實施進一步解釋,使用由軟體編譯器到測試生成工具的顯式查詢可以計算測試模式,以使對軟體算法的唯一限制是查詢本身的清晰度。作為示例,在粗糙層,從SC到TGT的查詢包括被測系統的整個掃描鏈(例如,諸如在常規的基於BSDL邊界掃描測試中)。作為示例,在精細層,從SC到TGT的查詢包括寄存器或偶數比特。例如,專用掃描段原語可以顯著加快設備訪問和TAP重新配置,促進編碼重用以及提供各種其他好處。作為示例,在粗糙層和精細層之間某處的中間層,功能性地執行從SC到TGT的查詢(例如,使用諸如IJTAG的標準和其他合適的標準,並使用諸如NSDL和其他合適的面向對象描述語言的描述語言)。如此,TISA使得不在模型空間(即,在TGT中)推行有待解決的設備/寄存器訪問,而是允許開發者在問題空間(即,在SC中)處理設備/寄存器訪問,藉此使得開發者能夠根據他們的需要和可用的資源調整分析粒度。而且,在TISA處理器具有足夠資源的實施例中,例如,諸如對於自動測試設備 (ATE)的情況,能在程序模型中實施至少一部分電路模型,因此能使TISA器直接計算矢量模式。而且,TISA能支持之前沒有TISA時不可能具有的各種其他系統測試能力,諸如包括交互調試(本地和/或遠程)的交互測試、並發性、可移植性等,及其各種組合。現在將詳細闡述這些額外的能力。圖6示出了支持交互性測試能力的基於TISA測試環境的實施例。如圖6所示,基於TISA的測試環境600包括主機(HC) 601、測試系統(TS) 610和被測系統(SUT) 620。HC601被配置用於控制TS610以控制SUT620的測試。HC601包括耦接到存儲器 604的處理器602。處理器602和存儲器604可以是任何合適的處理器和存儲器。存儲器604存儲一個或多個調試控制程序605。調試控制程序605能使HC601跟蹤,並在需要或必要時變更運行在TS610上電腦程式執行。例如,調試控制程序605包括一個或多個GNU調試器(⑶B)、dbx調試器、Perl調試器、Bash調試器、Python調試器,及類似的合適的調試程序及其各種組合。存儲器604也能存儲一個或多個調試顯示程序606。調試顯示程序606能使HC601 顯示和調試控制程序605相關聯的信息。能以任何合適的方式由調試顯示程序606顯示和調試控制程序605相關聯的信息(例如,使用一個或多顯示設備)。例如,調試顯示程序606 包括一個或多個hsight (其是到⑶B的圖形用戶接口)、數據顯示調試器(DDD,其為各種命令行調試器提供圖形用戶接口,諸如GDB及其他)、及類似合適的調試器顯示程序,及其各種組合。TS610由HC601控制用於測試SUT620。TS610被配置用於與TISA —致的方式運行(例如,諸如參考圖1-圖3的TSllO示出並描述的)以及,進一步被配置用於支持交互性測試(例如,通過啟動由HC601上運行的調試器訪問)。TS610包括耦接到存儲器614的TISA處理器612。可以利用任何合適的處理器, 諸如SPARC V8(如參考圖4A-4E和圖5示出並描述的)、INTEL等實現TISA處理器612。存儲器604可以是任何合適的存儲器。存儲器614存儲一個或多個調試程序餘段(stub) 615。調試程序餘段615獲知在 HC601上運行的對應調試控制程序的調試協議,因此能使HC601與TS610通信。例如,調試餘段615包括一個或多個⑶B餘段、DBX餘段、Perl餘段、Bash餘段、Python餘段,及類似合適的調試程序餘段,及其各種組合。存儲器614存儲TISA 二進位文件616。以參考圖2和圖3所示並描述的方式由 TS610生成該TISA 二進位文件。由TISA處理器612執行該TISA 二進位文件616以對SUT 620進行測試。TS610還包括耦接到TISA處理器612的測試訪問埠(TAP)618。TAP 618提供 TISA處理器612和SUT 620之間的測試接口以使TISA處理器612執行在由HC601控制時的SUT 620的測試。TAP618可以是任何合適的TAP(例如,1149. 1TAP)。TISA處理器612使用接口 617與TAP 618連接。接口 617可以是TAP和被測系統之間任何合適的接口(例如,諸如支持TCK,TMS, TDI, TDO和可選地TRST的接口,其中TAP 618 被實施為 1149. 1 TAP)。如圖6所示,HC 601和TS 610之間具有接口 609。接口 609可以支持HC601和 TS610之間的本地通信和/或遠程通信。因此,HC 601可經由TS610本地和/或遠程地控制SUT 620的交互性測試。例如,對於本地測試,接口 609能實施為一個或多個通用異步收發器(UART)接口、 串行接口等,及其各種組合。例如,對於遠程測試,可利用任何合適的通信能力,諸如傳輸控制協議(TCP)/網絡協議(IP)或任何其他合適的通信協議實現接口 609。這樣能遠程測試,其中HC601和 TS610分隔很遠的地理距離,並且HC601仍能控制TS610以執行SUT620的測試。在基於TISA的測試環境600中,HC601通過經由標準連接(例如UART、TCP/IP 等)控制TS610的操作而能逐步地控制對SUT620的測試執行,因此實現交互性測試和調試能力。雖然為了清楚起見而省略,但可以理解的是HC601和TS 610可包括各種其他組件,諸如其他處理器、其他存儲器、內部通信總線、輸入/輸出模塊、其他支持電路(例如,電源)等,及其各種組合。雖然為了清楚起見而省略,但可以理解的是SUT620可以是利用TISA測試的任何被測系統。雖然主要參考特定類型的調試控制程序、調試顯示程序、接口等示出並描述,但可以理解的是能使用各種其他調試控制程序、調試顯示程序、接口等、及其各種組合以實現完全交互性測試的方式實施基於TISA的測試環境600。
圖7示出了圖6的基於TISA測試環境的示例性實施例。如圖7所示,圖7的示例性基於TISA測試環境是圖6的基於TISA的測試環境600 的實施,其中GNU工具套件用於支持圖5A的示例性系統測試環境的交互性測試。如圖7所示,示例性基於TISA的測試環境700包括主機(HC) 701、測試系統 (TS) 710 和被測系統(SUT) 720。HC701包括處理器702和存儲器704。圖7的HC 701是圖6的HC 601的實施,其中使用⑶B (⑶B 705)實施調試控制程序605並使用DDD (DDD 706)實施調試顯示程序606。TS710包括TISA處理器712和存儲器714。圖7的TS 710是圖6的TS 610的實施,其中使用SPARC V8 ISA(表示為SPARC V8 TISA處理器712)實施該TISA處理器 612,使用⑶B餘段(⑶B餘段715)實施調試程序餘段615,並基於和SPARC V8 TISA處理器 712 (TlSA 二進位文件716)相關聯的SPARC V8 ISA生成TISA 二進位文件616。TS710還包括耦接到SPARC V8 TISA處理器712的測試訪問埠(TAP) 718。圖7 的 TS 710 是圖 6 的 TS 610 的實施,其中使用 1149. 1 TAP (1149. 1 TAP 718)實施 TAP618。SPARC V8 TISA 處理器 712 利用接口 717 與 1149. 1 TAP718 連接。接口 717 是標準1149. 1接口,它能支持TCK、TMS、TDI、TD0以及可選地TRST。SUT720是圖5A的SUT 520。如同圖5A的SUT520 —樣,SUT720包括不同電路板上的發送器和接收器。1149.1 TAP718提供SPARC V8 TISA處理器712和SUT 720之間的測試接口,用於在受到HC701的控制下,使SPARC V8 TISA處理器712執行SUT720的測試。如圖7所示,在HC701和TS710之間具有接口 709。接口 709支持HC701和TS710 之間的本地通信和/或遠程通信(例如,經由網絡)。因此,HC701經由TS710本地和/或遠程地控制SUT720的交互性測試。在示例的基於TISA的測試環境700中,HC 701能通過經由於接口 709控制TS710 的操作而逐步地控制SUT720的測試執行,因此實現交互性測試和調試能力。可以理解的是圖7左手邊的大多數元件重用現有的計算機科學元件S卩,整個 HC701,以及TS 710上的⑶B餘段(stub) 715。對於圖7的中間部分同樣如此,HC 701和 TS710之間(以及它們相關的子元件之間)的相似之處很明顯。TISA允許利用整個架構以提供系統測試。作為示例,參考圖5A的系統測試環境500 (包括相關示例性的C程序、SVF指令、 TISA彙編指令及TISA編碼),通過利用⑶B (或任何其他合適的調試器),TISA可以實現許多交互性測試操作,諸如(a)在監視變量「sentjalue」和「receivecLvalue」的情況下逐步執行;(b)飛速修改要發送到tap的值(變量「sentjalue」); (c)修改循環結束條件; (d)監視所有變量等,及其各種組合。如上文所述,這些交互性測試操作是標準⑶B操作,由於TISA能在算法和測試訪問部分之間自動切換控制,因此TISA能直接使用它們。在沒有 TISA的情況下,需要開發特殊工具以適於每個切換實施。雖然在此主要參考使用GNU工具套件示出並描述圖7的示例性基於TISA的測試環境700以支持具體被測系統的交互性測試,但本領域技術人員根據在此的教導告知可以理解,可以使用任何合適的工具套件來實現基於TISA的測試環境中的交互性測試能力以用於測設任何類型的被測系統。
雖然在此主要參考線性測試進程示出並描述了圖6的基於TISA的測試環境600 和圖7的示例性的基於TISA的測試環境700,該線性測試進程遵循預定算法逐步執行測試 (為了便於清楚描述TISA實現的交互性測試能力),但可以理解的是通過利用TISA實現的計算機科學經驗和技術,其他更複雜的交互性測試場景也是可能的。在此參考圖8示出並描述了 TISA實現的更加複雜的交互性測試場景的示例。可以理解,這僅僅是個示例,本領域普通技術人員根據在此的教導告知能在許多其他交互性測試場景和應用中使用TISA。如在此所述,除了支持粒度和交互性,TISA也支持並發性。TISA內在完全地合併系統測試流程和計算機科學軟體流程,並因此能利用這兩個流程的最佳方面。作為示例,諸如STAPL的方法難以處理設備的並發控制,這是因為該方法由定義可知是完全順序執行的。而且,諸如MTC和SystemBIST的方法本質是順序執行並且是單任務的,因此難以對該方法編程以支持並發性。相比之下,並發執行在計算機科學中是公知問題,並現在例如是所有作業系統的基礎。可獲得大量支持並發執行的庫(例如, POSIX套件、BOOST套件等),並且大多數現代處理器都被設計為高效支持多任務和環境切換(例如,SPARC V8支持旋轉寄存器窗口)。TISA實現的系統測試流程和計算機科學軟體流程之間的內在交互允許TISA完全利用該計算機科學的並發性方法。通過示例能更好的理解TISA對並發能力的支持。作為示例,考慮圖5A和圖7的被測系統520的發送器522和接收器5 之間的T-R信道的優化數據傳輸率的問題。其包括從第一電路板521上的發送器522發送數據模式流,在第二電路板525上的接收器5 上接收對應的數據模式流,並比較發送和接收的數據模式流以計算比特位/誤差率以及相應地調整發送器522和/或接收器5 的參數。利用並發運行的三個程序能高效地執行該優化。FIG. 8示出了用於執行圖5A和圖7的被測系統的發送器-接收器信道優化的示例性程序架構。如圖8所示,示例性程序架構包括模式生成器802、模式接收器804以及比較器 806。模式生成器802、模式接收器804以及比較器806協作優化圖5A和圖7的被測系統 520的發送器522和接收器5 之間的T-R信道傳輸率。模式生成器802向第一電路板521上的發送器522 (T)發送合適的輸入數據模式。 模式生成器802可訪問TAP (示例性的,圖5A中的TAP510,圖7中的TAP718)以便經由第一電路板521 (Bi)的掃描鏈523向發送器522提供輸入數據模式。模式生成器802能以任何合適的方式(例如在此參考圖5A描述的代碼的12-13行所指定的)向發送器522提供輸入數據模式。輸入數據模式可以是適於優化發送器522和接收器5 之間T-R信道的任何數據模式。例如,輸入數據模式可以是預計算的模式、隨機模式等,及其各種組合。模式接收器804從第二電路板525的接收器526(R)收集合適的輸出數據模式。模式接收器804能訪問TAP (示意性的,圖5A中的TAP 510,圖7中的TAP 718)以便經由第二電路板525 (B2)的掃描鏈527從接收器5 收集輸出數據模式。模式接收器804能以任何合適的方式從接收器526收集輸出數據模式(例如在此參考圖5A描述的代碼的14-15行所指定的)。比較器806與模式生成器802和模式接收器804進行通信。比較器比較輸入數據模式和輸出數據模式。比較器806評估T-R信道的比特位傳輸率和比特位誤差率,並根據該比較結果,訪問發送器522和接收器526的控制寄存器(為了清楚起見,在圖5A和圖7 中省略該部件)以優化T-R信道的參數。為了執行該優化測試進程,模式生成器802、模式接收器804和比較器806需要並行工作,其中每個都必須能獨立於彼此訪問TAP。這種類型的控制結構在常規環境中難於編碼,開發該控制結構僅僅為了支持對TAP的單點串行切換控制。這種類型的控制結構在利用MTC或其他也共享相同的串行TAP訪問範式的方法的環境中也難於編碼。相比之下, 設計TISA並沒帶有任何此類關於測試訪問的假設;而是,在TISA中,測試訪問以類似於其他處理器資源的方式處理,並且測試訪問指令直接與常規ISA指令混合。使用TISA,通過利用如進程、線程、進程間通信(IPC)等,及其各種組合的標準結構的任意多任務作業系統執行圖8的優化測試過程。這樣,模式生成器802、模式接收器804和比較器806能共享對 TAP的訪問,並能利用公知結構和算法(例如Dijkstra信號量)解決任何最終的TAP共享問題,這對於所有處理器資源都是這樣做的。因此,雖然現有系統測試能力不支持並發,但顯然TISA可輕易地全面支持並發。如在此所述,TISA對於測試訪問方法或相關測試程序劃分沒有做任何假設;而是,以與常規ISA指令相同或實質上相同的方式處理測試指令,兩者之間沒有任何先驗區分。這使得TISA能與所有現有(以及,非常可能地未來的)計算機科學算法和結構完全兼容,這些算法和結構是現有測試處理器方法所不支持的。可以理解的是,任何現有的軟體庫都能移植到TISA架構。例如,通過利用POSIX 和BOOST套件能輕易獲取多任務性和並發性(例如,在此參考圖8所示出並描述的)。而且,可以理解的是,對於作為現有ISA的概括獲取的TISA(如參考圖5A和圖5B示出並描述的示例性SPARC V8 TISA實施所示出並描述的),移植甚至不是必要的,因為從其開發TISA 的ISA將已經包括該軟體庫。而且,可以理解的是也能使用各種其他計算機科學技術以提供利用TISA的改進系統測試。例如,對於TISA可利用的該計算機科學技術的某些示例包括(a)使用獨立於平臺的編碼風格,(b)使用ISA-ISA轉換器,(c)使用例如Java的虛擬機方法,以獲取獨立於平臺的字節碼,或甚至擴展Java虛擬機自身以成為TISA ;以及(d)使用應用編程接口 (API)以對某些TISA軟體接口進行標準化,由合適的驅動器將這些軟體接口翻譯成原語 (primitive) 0可以理解的是,這些技術僅僅是可被TISA利用的計算機科學技術的一些示例。圖9示出了修改處理器的指令集體系結構(ISA)流程以形成包括TISA指令的測試指令集體系結構(TISA)的方法的一個實施例,該些TISA指令適於由處理器用於測試被測系統的至少一部分。雖然在此主要示出並描述的為串行執行,但方法900的至少一部分步驟能同時執行,或以不同於參考圖9所示出和描述的順序執行。在步驟902,方法900開始。在步驟904,生成第一指令集。第一指令集包括處理器支持的ISA指令(即,利用 ISA指令以為處理器提供TISA)。在步驟906,生成第二指令集。第二指令集包括和被測系統相關的測試指令。能以任何合適的方式生成該第二指令集,例如,如參考圖2的TGT210示出並描述的,如參考圖3的TGT310示出並描述的,和/或生成測試指令的任何其他合適的方法。在步驟908,第一指令集和第二指令集被集成以形成TISA指令。TISA指令為處理器提供TISA。在步驟910,TISA指令被存儲、顯示、傳播和/或執行,及其各種組合。能以任何其他合適的方式處理該TISA指令。在步驟912,方法900結束。該TISA可以以任何合適的方式而形成,例如,如參考圖10的方法1000所示出並描述的,如參考圖2的測試系統和圖IlA的相關方法1110所示出並描述的,如參考圖3的測試系統和圖IlB的相關方法1120所示出並描述的,和/或使用形成TISA的任何其他合適方法。圖10示出了用於生成適於測試被測系統的至少一部分的指令的方法的一個實施例。雖然在此主要示出並描述的為串行執行,但方法1000的至少一部分步驟可同時執行, 或以不同於參考圖10示出並描述的順序執行。在步驟1002,方法1000開始。在步驟1004,生成第一指令集。該第一指令集包括通過編譯至少一個計算機科學軟體文件生成的指令(例如,處理器支持的ISA的ISA指令)。在步驟1006,生成第二指令集。第二指令集包括通過編譯和被測系統相關的至少一個描述文件生成的測試指令。在步驟1008,將第一指令集和第二指令集合併形成合併的指令集。在合併的指令集中,第一指令集的指令適用於控制第二指令集的測試指令的執行。在步驟1010,合併的指令集被存儲、顯示、傳播和/或執行,或其任何組合。能以任何合適的方式處理合併的指令集。在步驟3012,方法1000結束。圖IlA和圖IlB示出了參考圖9示出並描述的方法900和/或參考圖10示出並描述的方法1000的更加詳細的實施例。圖IlA示出了用於生成適於測試被測系統的至少一部分的方法的一個實施例。雖然在此主要示出並描述的是以特定順序執行,但能以不同於參考圖IlA示出並描述的順序執行圖IlA的方法1110的至少一部分步驟。通過結合圖2和圖2的相關描述查看圖IlA 可更好的理解圖IlA0在步驟1111,方法1000開始。在步驟1112,生成程序模型。通過編譯至少一個計算機科學軟體文件生成該程序模型(例如,由處理器支持的ISA的ISA指令),其中至少一個計算機科學軟體文件包括至少一個調用。在步驟1113,生成第一指令集,使用程序模型生成該第一指令集。使用在該至少一個計算機科學軟體文件中包括的至少一個調用也生成至少一個計算請求。在步驟1114,生成電路模型。通過編譯和被測系統相關的至少一個系統描述文件生成該電路模型。在步驟1115,生成第二指令集。使用電路模型和至少一個計算請求生成該第二指令集。在步驟1116,第一指令集和第二指令集經過合併以形成合併的指令集。在合併的指令集中,第一指令集的指令適用於控制第二指令集的測試指令的執行。在步驟1117,合併的指令集被存儲、顯示、傳播和/或執行,及其各種組合。能以任何其他合適的方式處理該合併的指令集。在步驟1118,方法1000結束。圖IlB示出了生成適用於測試被測系統的至少一部分的指令的方法的一個實施例。雖然在此主要示出並描述的是串行執行,但圖IlB的方法 1120的至少一部分步驟可同時執行,或以不同於參考圖IlB所示出並描述的順序執行。通過結合圖3和圖3的相關描述查看圖IlB能更好的理解圖11B。在步驟1121,方法1100開始。在步驟1122,通過預處理至少一個計算機科學軟體文件生成至少一個預處理的計算機科學軟體文件和至少一個測試操作描述文件。在步驟1123,生成電路模型。通過編譯和被測系統相關的至少一個系統描述文件和至少一個測試操作描述文件生成該電路模型。在步驟1124,生成測試操作集。利用電路模型生成該測試操作集。利用測試原語 (例如,由生成電路模型的測試生成工具所定義的測試原語)描述來自測試操作集的測試操作。測試原語集合包括適於測試被測系統的測試操作。在步驟1125,通過將測試操作集的測試原語翻譯成適用於與指令集體系結構的軟體指令結合的測試指令,測試操作集被翻譯成測試指令集。在步驟1126,生成程序模型。通過編譯該至少一個預處理的計算機科學軟體文件和測試指令集生成該程序模型。在步驟1127,生成合併的指令集。利用程序模型生成該第二指令集。合併的指令集包括(a)從至少一個預處理計算機科學軟體文件確定的軟體指令和(b)測試指令集的測試指令。在步驟11 ,合併的指令集被存儲、顯示、傳播和/或執行,或其各種組合。能以任何其他合適的方式處理該合併的指令集。在步驟1129,方法1120結束。圖12示出了 TISA處理器架構的示例性實施例。如圖12所示,TISA處理器架構1200包括TISA處理器1210和存儲器1220。TISA處理器1210可以是適於利用TISA執行系統測試的任何處理器,諸如SPARC V8處理器、INTEL處理器或任何其他合適的處理器。存儲器1220包括適用於由TISA處理器1210利用TISA支持系統測試的任何存儲器,包括一個或多個隨機訪問存儲器、永久存儲器等,及其各種組合。存儲器1220可存儲用於利用TISA執行系統測試所需的任何信息,諸如測試程序、TISA指令、測試數據等,及其各種組合。例如,在一個實施例中,圖12的TISA處理器架構1200支持參考圖2和圖3所示出並描述的TISA流程。例如,在一個實施例中,圖12的TISA處理器架構1200以類似於參考圖6示出並描述的測試系統610的TISA處理器612和存儲器614的方式運行。例如,可利用SPARC V8 TISA處理器和相關存儲器實現圖12的TISA處理器架構1200,例如在參考圖7示出並描述的測試系統710中。在該實施例中,TISA處理器1210本身解釋並執行ISA和TISA指令。
27
在一個實施例中,經由測試訪問埠(TAP)用於測試至少部分被測系統的設備包括存儲器和處理器,其中,存儲器用於存儲測試指令集體系結構的指令集,處理器經由TAP 執行測試指令集體系結構的指令集以用於測試被測系統的至少一部分。指令集體系結構的指令集包括第一指令集和第二指令集,其中,第一指令集包括處理器支持的指令集體系結構(ISA)的多個指令,第二指令集包括和TAP相關的多個測試指令,其中第一類(class)指令的指令和第二類(class)指令的指令被集成以藉此形成測試指令集體系結構的指令集。在一個實施例中,用於經由測試訪問埠(TAP)測試被測系統的至少一部分的 TISA處理器包括第一類(class)指令和第二類(class)指令,其中,第一類指令包括處理器支持的指令集體系結構(ISA)的指令,第二類指令包括和TAP相關的測試指令,其中第一指令集的ISA指令和第二指令集的測試指令被集成以形成適於測試被測系統的至少一部分的 TISA00在一個實施例中,用於經由測試訪問埠(TAP)測試被測系統(SUT)的計算機處理器包括被配置用於根據測試指令集體系結構(TISA)來處理指令的電路,該測試指令集體系結構(TISA)具有經由TAP實現與被測系統進行交互的語義。TISA包括多個第一類型 (type)指令和多個第二類型(type)指令,其中第一類型指令包括計算機處理器支持的指令集體系結構(ISA)的指令,而第二類型指令包括經由TAP用於測試被測系統的測試指令。雖然上文主要參考其中以特定方式(例如,使用特定語言描述不同類(class)和 /或類型(type)的指令)定義TISA處理器的實施例示出並描述,但可以理解的是,能以在此提供的各種TISA示出及描述完全支持的其他方式定義TISA。雖然在此主要參考其中利用單個處理器支持TISA來實現TISA處理器架構的實施例進行示出並描述。但在其他實施例中,可以使用多個處理器實現TISA處理器架構。圖13示出了利用多個處理器提供系統測試能力的測試處理器架構的示例性實施例。如圖13所示,測試處理器架構1300包括主處理器1310和經由通信路徑1330進行通信的第二處理器1320。主處理器1310可以是適於支持系統測試的任何處理器,諸如SPARC V8處理器、 INTEL處理器,或任何其他合適的處理器。主處理器1310執行指令以用於測試被測系統。 例如,在一個實施例中,主處理器1310支持與圖12(其中測試處理器架構1300利用TISA) 的TISA處理器架構1200中的CPU1210支持的功能相類似的測試功能。例如,在一個實施例中,在未利用TISA的測試處理器架構中,主處理器1310支持由測試處理器支持的測試功能。主處理器1310可以支持其他測試能力。第二處理器1320可以是適於支持系統測試的任何處理器,諸如SPARC V8處理器、 INTEL處理器,或任何其他合適的處理器。第二處理器1320支持測試訪問埠(TAP)連接到被測系統(為了清楚起見,故省略該被測系統)。TAP接口與任何合適的TAP連接。例如, TAP接口提供連接到IEEE1149. 1 TAP或任何其他合適的用於測試被測系統的TAP的接口。主處理器1310和從處理器1320協作以執行至少部分被測系統的測試。主處理器1310執行用於測試被測系統的指令。測試指令可以是TISA的測試指令 (其中測試處理器架構1300利用TISA)或與TISA不相關聯的測試指令(其中測試處理器架構1300未利用TISA)。在測試指令執行期間,主處理器1310檢測與控制被測系統的TAP相關指令(例如,諸如將輸入數據裝載到被測系統的TAP控制器的指令,從被測系統的TAP 控制器讀出數據的指令,及類似指令,及其各種組合)。主處理器1310向從處理器1320提供TAP相關的指令。從處理器1320從主處理器1310接收TAP相關的指令。從處理器1320 執行TAP相關指令。當從處理器1320執行從主處理器1310接收的TAP相關指令時,主處理器1310繼續執行測試指令。這樣,當從處理器1320經由被測系統的TAP控制掃描操作時,主處理器1310執行環境切換並繼續操作。由於當單個處理器控制TAP時,該單個處理器不能執行其他操作,因此利用單個處理器的方法難於實現上述操作。因此,如在測試處理器架構1300中,多個處理器的使用提供了測試效率的顯著改進,而無需使用高端處理器, 尤其考慮到和處理器執行單個操作所需時間相比,對TAP的操作一般費時很長。通過通信路徑1330幫助主處理器1310和從處理器1320之間的協作以用於執行對被測系統的至少一部分的測試。可以使用主處理器1310和從處理器1320之間任何合適的通信裝置實施通信路徑1330,主要取決於實施測試處理器架構1300的多處理器架構類型。例如,通信路徑1330包括一個或多個主處理器接口總線、輔助處理器接口、通信接口 (例如,串並行轉換器(SERDEQ接口或其他合適的通信接口)等,及其各種組合。雖然為了清楚起見在此省略,但可以理解的是測試處理器架構1300包括存儲器 (例如,隨機訪問存儲器、永久存儲器、緩存等,及其各種組合)。測試處理器架構1300的存儲器包括一個或多個由主處理器1310和從處理器1320共享的存儲器、主處理器1310專用的存儲器、從處理器1320專用的存儲器等,及其各種組合。雖然為了清楚起見在此省略,但可以理解的是測試處理器架構1300可以包括各種其他支持電路,諸如總線、I/O電路等,及其各種組合。能以多種方式實施圖13的測試處理器架構1300。例如,在一個實施例中,測試處理器架構可以使用測試協處理器單元架構,其中中央處理單元(CPU)和測試協處理器單元(TCPU)協作以便支持系統測試。參考圖14示出並描述示例性實施例。例如,在一個實施例中,測試處理器架構可以使用測試附屬處理器單元結構,其中中央處理單元(CPU)和測試附屬處理器單元(TAPU)協作以便支持系統測試。參考圖15示出並描述示例性實施例。圖14示出了測試協處理器架構的示例性實施例。測試協處理器架構1400適於用作利用TISA支持系統測試的TISA處理器架構。測試協處理器架構1400也適於用作未利用TISA支持系統測試的測試處理器架構。測試協處理器架構1400包括中央處理單元(CPU) 1410、測試協處理器單元 (TCPU) 1420、主存 1430 和快閃記憶體 1440。測試協處理器架構1400包括主處理器接口總線1451。CPU1410 TCPU1420、主存 1430和快閃記憶體1440中的每個都耦接到主處理器接口總線1451,或以其他方式被配置用於能夠與主處理器接口總線1451通信。測試協處理器架構1400還包括直接耦接CPU1410和TCPU1420的輔助處理器接口 1452,因此實現CPU1410和TCPU1420之間的直接通信。CPU1410可以是適於執行被測系統的系統測試的任何CPU。CPU1410支持由參考圖 13示出並描述的主處理器1310支持的測試能力。
TCPU1420可以是適於推動被測系統的系統測試的任何CPU。TCPU1420支持測試訪問埠 (TAP)接口 1460,該接口 1460可以與任何合適的TAP (例如,諸如IEEE 1149. 1 TAP 或用於測試被測系統的任何其他合適的TAP)連接。TCPU1420支持由參考圖13示出並描述的從處理器1320支持的測試能力。以類似於參考圖13示出並描述的主處理器1310和從處理器1320的方式, CPU1410和TCPU1420協作執行被測系統的至少一部分的測試。當TCPU1420執行TAP相關指令以用於在測試期間控制被測系統的TAP時,CPU1410和TCPU1420利用指令異常處理以便能使CPU1410繼續運行以處理測試指令。CPU1410執行用於測試被測系統的測試指令。在執行測試指令期間,CPU1410檢測指令異常(即,關於控制被測系統的TAP的指令)並將指令異常提供給TCPU1420。TCPU1420 從CPU1410接收指令異常,並處理該等指令異常,以便當CPU1410繼續運行以執行其他任務(例如,執行其他測試指令)時TCPU1420能處理該等指令異常。換而言之,CPU1410 和TCPU1420在系統測試期間協作,以便當TCPU1420處理由CPU1410檢測的指令異常時 CPU1410能切換環境並繼續運行以執行其他任務,藉此改進系統測試效率。在一個實施例中,CPU1410包括緩存1411,例如用於改進CPU1410的性能。在一個實施例中,TCPU1420包括直接存儲器訪問(DMA)單元1421,該單元可以是適用於支持系統測試的任何類型的DMA單元。例如,在一個實施例中,DMA單元1421是分散/收集(S/G)DMA單元。TCPU1420可以利用DMA單元1421來處理從CPU1410接收的指令異常,以及高效地訪問存儲器中存儲的敏感數據。在一個實施例中,CPU1410可在遇到指令異常之前配置S/G DMA表格。在一個實施例中,TCPU1420支持專用TCPU指令集。專用TCPU指令集支持TAP訪問和控制。TCPU1420能使用專用TCPU指令集以用於在TAP狀態機上執行具體TAP操作。CPU1410和TCPU1420利用主存1430和/或快閃記憶體1440以用於執行各種測試功能, 諸如由CPU1410執行測試指令、由TCPU1420處理指令異常、由TCPU1420執行TCPU指令等,及其各種組合。主存1430可以是任何合適的處理器存儲器。快閃記憶體1440可以是任何合適的快閃記憶體或任何其他合適方式的永久存儲器。CPU1410和TCPU1420共享隨機存取的存儲器。CPU1410和TCPU1420還可為交換信息共享存儲器。雖然主要參考特定數量和類型的存儲器示出並描述,但可以理解的是也能使用各種其他存儲器方案以用於支持CPU1410和 TCPU1420執行的功能。CPU1410 和 TCPU1420 利用 CPU1410 和 TCPU1420 之間的通信、CPU1410 和 / 或 TCPU1420與測試協處理器架構1400 (例如,主存儲器1430、快閃記憶體1440和其他組件)的其他組件之間的通信等,及其各種組合,執行被測系統的測試。使用主處理器接口總線1441和輔助處理器接口 1452中的一個或兩個支持通信。CPU1410和TCPU1420之間的通信可包括和指令異常通知、中斷訪問、DMA仲裁等,及其各種組合相關的通信。CPU1410和TCPU1420 以及測試協處理器架構1400的其他組件之間的通信包括和如下任務相關的通信從存儲器讀取、寫入存儲器、和/或支持測試被測系統所執行的任何其他任務。圖15示出了測試附屬處理器架構的示例性實施例。測試附屬處理器架構1500適於用作利用TISA支持系統測試的TISA處理器架構。測試附屬處理器架構1500也適於用作未利用TISA支持系統測試的測試處理器架構。
測試附屬處理器架構1500包括中央處理單元(CPU) 1510和測試附屬處理器單元 (TAPU) 1520。CPU1510和TAPU1520位於相同的電路板或不同的電路板上。CPU1510可以是適於執行被測系統的系統測試的任何CPU。CPU1510支持由參考圖 13示出並描述的主處理器1310所支持的測試能力。CPU1510具有主存1530M、快閃記憶體1530F以及與其關聯的輸入/輸出模塊巧40。 CPU1510具有與其關聯的主處理器接口總線1550。CPU1510、主存1530M、快閃記憶體1530F和輸入 /輸出模塊1540每個都耦接到主處理器接口總線1550,或以其他方式被配置用於能夠與主處理器接口總線1550通信。在一個實施例中,CPU1510包括例如用於改進CPU1510的性能緩存1511。TAPU1520可以是適於推動被測系統的系統測試的任何CPU。TAPU1520包括輸入/ 輸出模塊1521。TAPU1520支持測試訪問埠(TAP)接口 1590,該接口 1590可以與任何合適的TAP (例如,諸如IEEE 1149. 1 TAP或用於測試被測系統的任何其他合適的TAP)連接。 TAPU1520支持由參考圖13示出並描述的從處理器1320所支持的測試能力。TAPU1520具有與其連接的本地測試存儲器1560。TAPU1520具有與其連接的內部接口總線1570。TAPU1520和本地測試存儲器1560每個都耦接到內部接口總線1570,或以其他方式被配置用於能夠與內部接口總線1570通信。與CPU1510和TAPU1520的輸入/輸出模塊1521相關聯的輸入/輸出模塊1540支持在CPU1510和TAPU1520之間實現通信的通信接口 1580。通信接口 1580支持從CPU1510 到TAPU1520的TAP相關命令流。在一個實施例中,和CPU1510相關聯的輸入/輸出模塊1540以及TAPU1520的輸入/輸出模塊1521支持串並行轉換器(SERDEQ的通信能力,並因此,通信接口 1580是基於SERDES的通信接口。在這個實施例中,能使用任何合適的SERDES通信協議(例如,諸如千兆位乙太網(GigE)、高速串行IO(SRIO)、外設部件互連(PCIe)等)實施基於SERDES的通信接口 1580。雖然在此主要參考在CPU1510和TAPU1520之間使用基於SERDES的通信進行示出並描述,但也能使用其他合適的通信能力以支持CPU1510和TAPU1520之間的通信。以類似於參考圖13所示出並描述的主處理器1310和從處理器1320的方式, CPU1510和TAPU1520協作執行被測系統的至少一部分的測試。CPU1510和TAPU1520經由通信接口 1580利用命令流以實現當TAPU1520執行TAP相關指令以在測試期間控制被測系統的TAP時,CPU1510能繼續運行以處理測試指令。CPU1510執行用於測試被測系統的測試指令。在執行測試指令期間,CPU1510檢測與控制被測系統的TAP相關的指令。CPU1510經由通信接口 1580將TAP相關指令傳播到 TAPUl520 ( S卩,經由主處理器接口總線1550從CPUl510到輸入/輸出模塊1540,以用於經由通信接口 1580的傳播)。TAPU1520接收TAP來自CPU1510的相關指令並處理該TAP相關指令,以便當CPU1510繼續運行以執行其他任務(例如,執行其他測試指令)時,TAPU1520 能處理對TAP的控制。換而言之,CPU1510和TAPU1520在系統測試期間進行協作以便當 TAPU1520處理由CPU1510檢測的TAP相關指令時,CPU1510能切換環境並繼續運行以執行其他任務,藉此改進系統測試效率。在一個實施例中,CPU1510對由CPU1510檢測並由TAPU1520處理的TAP相關指令進行分組以用於傳播到TAPU1520。
在一個實施例中,由CPU1510檢測並由TAPU1520處理的TAP相關指令包括 TAPU1520支持的操作碼。在一個該實施例中,TAP相關指令還包括適用於在與CPU1510相關聯的存儲器和與TAPU1520相關聯的存儲器之間(例如,在主存儲器1530M和本地測試存儲器1560之間)執行塊存儲拷貝的一個或多個擴展命令。CPU1510利用主存儲器1530M和/或快閃記憶體1530F用於執行各種測試功能,諸如執行測試指令、檢測TAP相關指令、分組TAP相關指令等,及其各種組合。主存儲器1530M可以是任何合適的處理器存儲器。快閃記憶體1530F可以是任何合適的快閃記憶體或任何其他合適的永久存儲器。TAPU1520利用本地測試存儲器1560用於執行各種測試功能,諸如存儲接收自 CPU1510的TAP相關指令、處理接收自CPU1510的TAP相關指令等,及其各種組合。本地測試存儲器1560可以是任何合適的處理器存儲器。在一個實施例中,本地測試存儲器1560 相對較小,這是因為它處理被測系統的掃描鏈的掃描鏈段,而不是整個掃描鏈(這在片上存儲器中是需要的)。雖然主要參考特定數量和類型的存儲器進行示出並描述,但可以理解的是也能使用各種其他存儲器方案以用於支持CPU1510和TCPU1520執行的功能。雖然在此主要參考使用協處理器架構或附屬處理器架構實施TISA進行示出並描述,但可以理解的是可以使用任何合適的處理器架構實施TISA,該處理器架構包括除了協處理器架構或附屬處理器架構之外的處理器架構。因此,可以使用各種其他方式利用多個處理器實施TISA處理器架構,至少其中某些方式包括使用兩個以上的處理器用於支持 TISA。雖然在此主要參考使用協處理器架構或附屬處理器架構的以便實施TISA架構進行示出並描述,但本領域普通技術人員根據在此教導告知可以理解,協處理器架構或附屬處理器架構中的每個都用於實施其他類型的測試架構(即,未採用TISA的其他測試架構)。可以理解的是測試協處理器架構和測試附屬處理器架構功能上類似,因為每個架構都能使TISA由兩個正在通信的處理器執行。在給出的應用中,兩個架構之間的選擇可由設計者根據實施相關的參數做出,諸如可用的資源、成本、性能、物理限制(相同晶片、不同晶片和/或電路板或其任意組合中的集成),以及任何其他實施參數。雖然在此主要參考測試協處理器和測試附屬處理器架構進行示出並描述,但本領域普通技術人員根據在此教導告知可以理解,這些實施考慮因素將應用於任何其他類型的測試架構/基礎結構。在此示出並描述的TISA處理器架構能使用任何合適的TISA用於執行系統測試。適用於TISA處理器架構的TISA的一個示例性實施例的描述如下。該TISA的示例性實施例實現在此示出並描述的掃描段層原語。在掃描段層抽象層,被測系統的整個掃描鏈被劃分為段,這些段然後用作算法的數據原子。可以理解的是,可由算法開發者將被測系統劃分為掃描段,該算法開發者可以是人和/或自動化工具。下文將詳細提供使用TISA實現在掃描段級執行的掃描操作的更一般性的描述,即,該描述獨立於該示例性TISA實施。TISA的如下實施例提出能夠定義並處理這些掃描段的寄存器和指令集合。如下實施例基於32位大小的TISA,但也能適於任何其他字(word)大小(例如,16位、64位或任何其他合適的字大小)。圖16示出了能由TISA處理器使用的示例性寄存器集。示例性TISA包括四個寄存器集(表示為寄存器集R1-R4),分別在圖16A-16D中所示。如圖16A所示,第一寄存器集Rl包括如下用戶可訪問數據寄存器· StatusRegister 包含狀態指示信息的32位寄存器;· ControlRegister 包含命令編碼的32位寄存器;.BlockRegister 包含到預格式化數據結構的存儲器偏移的32位寄存器,其間接指向掃入數據(收集數據)和寫出數據(分散數據)的地方[用於訪問分散/收集段描述的所有掃描和比較操作];· ScanLengthRegister 有待掃描的當前比特位數量所在的32位寄存器(也由用於塊模式操作碼的分散/收集段描述來自動填充);-ScanStateRegister :32位寄存器,包含3組4比特位,每組表示掃描操作的開始狀態、掃描狀態和結束狀態,4比特位表示TAP狀態機的16個狀態編碼。(也由塊模式中的分散/收集段描述來填充);以及· UserDataRegisters [1-11] :32位寄存器,包含用於小型掃描操作和數據重用的掃描段數據(可以是源寄存器或目標寄存器)。如圖16B所示,第二寄存器集R2包括如下內部臨時寄存器· BlockPointerRegister 指向在多個掃描指令期間要處理的當前分散/收集段描述參考的32位寄存器;· BlockCountRegister 包含在多個掃描指令期間要處理的分散/收集段描述數量的32位寄存器;以及· InstructionRegister 32位寄存器,其中放置用於解碼當前操作碼。如圖16C所示,第三寄存器集R3包括如下分散/收集段描述寄存器· BlockOffsetField 當使用64位架構時,描述地址庫的32位數字;· ScanLengthField 指定為該段要掃描的比特位數量的32位整數;· StateTraversalField 4比特位的3個欄位,每個表示該掃描操作的開始狀態、 掃描狀態和結束狀態(每4比特位表示TAP狀態機的16個狀態);· SourceLocationField =TDI數據位於存儲器中的32位基地址;· DestinationLocationField 將TDO數據存儲在存儲器中的32位基地址;· ExpectedValueField 期望矢量位於存儲器中的32位地址;· ResponseLocationField 獲取的TDI數據位於存儲器中的32位基地址;· MaskField 用於限制比較操作的MASK數據位於存儲器中的32位基地址;· ResultLocationField 將比較結果保存在存儲器中的32位基地址。如圖16D所示,第四寄存器集R4包括如下多塊分散/收集段描述寄存器· BlockOffsetField 當使用64位架構時描述地址庫的32位數字;.BlockCountField 定義由該多塊(MultiBlock)掃描表示的掃描段數量的32位數字(用於在多塊掃描操作期間初始化BlockCoimtRegister);· ScatterGatherOpcodeField 用於由相關的 ScatterGatherBlockField 指向的分散/收集段描述的32位命令操作碼;以及'ScatterGatherBlockField 和前述 ^atterGatherOpcodeField相關的分散 / 收集段描述位於存儲器中的32位地址。
可以理解,能以任何合適的方式修改該示例性TISA寄存器集。例如,每個示例性寄存器集可以經過修改以包括更少、更多和/或不同的寄存器。例如,可以將示例性寄存器重新分組成更少、更多和/或不同的集合。例如,可以使用為更少、更多和/或不同的寄存器集。換而言之,可以用適於與TISA指令集來實施TISA處理器架構的任何其他TISA寄存器集取代示例性TISA寄存器集。示例性TISA能使用任何合適的用於執行系統測試的TISA指令集(例如,命令詞典)。示例性TISA指令集包括如下操作碼,該操作碼可以用於操縱參考圖16A-16D示出並描述的寄存器集R1-R4,以及在此示出並描述的原始ISA寄存器集合StateTransition,·該操作碼利用TMS的值為給定數量的TCK時鐘周期遍歷TAP狀態機。該操作碼用於執行TAP狀態機的狀態之間的一般性狀態轉換。 表示單個比特位,而 表示操作碼的剩餘的數據比特位。RunTest,,·該操作碼用於從 轉換到 ,並在kanLengthRegister 指定數量的TCK周期內在 內循環。該操作碼用於在循環結束時轉換到 < 結束狀態〉。ScanRegister,< 目標寄存器〉[,][,]·該操作碼用於掃描用戶數據寄存器 中的數據並將獲取的值保存在用戶數據寄存器 中。如果 出現,則相應地將獲取的數據和該值進行比較並提出錯誤,如果出現,最終使用〈屏蔽寄存器〉。SteHO <=η < 32)中定義掃描的比特位數量。在kar^tateRegister中定義開始狀態、掃描狀態和結束狀態。ScanRegisterZero<目標寄存器〉[,][,]·該操作碼用於掃描全「0」的矢量值並將獲取的值存儲在用戶數據寄存器 < 目標寄存器〉中。在^anLengthRegister(0 <= η < 32)中定義掃描的比特位數量。在 ScanStateRegister中定義開始狀態、掃描狀態和結束狀態。如在kanRegister指令中一樣使用 和 。ScanRegisterOne<目標寄存器〉[,][,]·該操作碼用於掃描全「1」的矢量值並將獲取的值存儲在用戶數據寄存器 < 目標寄存器〉中。在^anLengthRegister(0 <= η < 32)中定義掃描的比特位數量。在 ScanStateRegister中定義開始狀態、掃描狀態和結束狀態。如在kanRegister指令中一樣使用 和 。ScanBlock·該操作碼用於將BlockRegister指向的數據掃描到SUT,其始於 , 在 中掃描數據, 完成如塊的MateTraversalField定義的操作狀態。在掃描操作之前,用來自StateTraversalField的數據填充kar^tateRegister。在掃描操作之前,用來自^anLengthField的數據填充kanLengthRegister。不保留來自TDO 的數據。如果設置ExpectedValueField和Maskf ield,則相應地進行比較和錯誤生成。
ScanBlockCapture 該操作碼用於將BlockRegister指向的數據掃描到SUT,其始於 < 開始狀態〉,在 中掃描數據,隨著 完成如塊的MateTraversalField定義的操作狀態。在掃描操作之前,用來自StateTraversalField的數據填充kar^tateRegister。在掃描操作之前,用來自^anLengthField的數據填充kanLengthRegister。保留從TDO獲取的數據。如果設置ExpectedValueField和Maskfield,則相應地進行比較和錯誤生成。ScanBlockZeroCapture 該操作碼用於將全「O」的數據矢量掃描到SUT,其始於 ,在 中掃描數據,隨著 完成如塊的MateTraversalField定義的操作狀態,在 BlockRegister定義的寄存器中獲取結果。在掃描操作之前,用來自StatdraversalField 的數據填充kar^tateRegister。在掃描操作之前,用來自^anLengthField的數據填充 kanLengthRegister。如果設置 ExpectedValueField 和 Maskfield,則相應地進行比較和錯誤生成。ScanBlockZero·該操作碼用於將全「O」的數據矢量掃描到SUT,其始於 ,在< 開始狀態〉中掃描數據,隨著〈結束狀態〉完成如塊的StateTraversalField定義的操作狀態而不獲取結果。在掃描操作之前,用來自StateTraversalField的數據填充kar^tateRegister。在掃描操作之前,用來自^anLengthField的數據填充 kanLengthRegister。如果設置 ExpectedValueField 和 Maskfield,則相應地進行比較和錯誤生成。ScanBlockOneCapture 該操作碼用於將全「1」的數據矢量掃描到SUT,其始於 ,在 中掃描數據,隨著 完成如塊的MateTraversalField定義的操作狀態,在 BlockRegister定義的寄存器中獲取結果。在掃描操作之前,用來自StateTraversalField 的數據填充kar^tateRegister。在掃描操作之前,用來自^anLengthField的數據填充 kanLengthRegister。如果設置 ExpectedValueField 和 Maskfield,則相應地進行比較和錯誤生成。ScanBlockOne·該操作碼用於將全「1」的數據矢量掃描到SUT,其始於 ,在< 開始狀態〉中掃描數據,隨著〈結束狀態〉完成如塊的StateTraversalField定義的操作狀態而不獲取結果。在掃描操作之前,用來自StateTraversalField的數據填充kar^tateRegister。在掃描操作之前,用來自^anLengthField的數據填充 ^anLengthRegister。如果設置 ExpectedValueField 和 Maskfield,則相應地進行比較和錯誤生成。示例性TISA指令集包括使用顯式數值的如下寄存器修改指令LoadRegisterExplicit,·該指令將 的常量數值裝載到由 命名的寄存器中。CopyRegisteK源寄存器 >,·該指令將命名為 的寄存器的內容傳播到由 命名的寄存器中。示例性TISA指令集包括使用隱式數值的如下寄存器修改指令LoadRegisterImplicit,·該指令使用命名為 中的值作為引用實際數據所在存儲器位置的指針,並將被引用的數值保存在名為 的寄存器中。示例性TISA指令集包括如下寄存器保留指令StoreRegisterImplicit, 該指令使用命名為〈用戶數據寄存器〉中的值作為引用存儲器位置的指針,該存儲器位置存儲名為 的寄存器中的數值。StoreRegisterExplicit,·該指令將名為 的寄存器的數值保存在 指定的存儲器位置中。示例性TISA指令集包括如下對寄存器的邏輯操作AND, 該操作執行 和 之間的邏輯AND操作,並將結果值放置在 < 目標寄存器〉中。0R,·該操作執行 禾日〈目的寄存器 > 之間的邏輯OR操作,並將結果值放置在 < 目的寄存器〉中。X0R,〈目的寄存器> 該操作執行 和〈目的寄存器 > 之間的邏輯XOR操作,並將結果值放置在 < 目的寄存器〉中。Ν0Τ,〈目的寄存器>·該操作執行〈源寄存器〉的邏輯NOT操作,並將結果值放置在 < 目的寄存器〉 中。X0RM,, 該操作執行用戶數據寄存器〈源寄存器〉和用戶數據寄存器 < 目的寄存器〉之間的邏輯XOR操作,僅對與用戶數據寄存器 中含有「1」的比特位對齊的那些比特位進行比較,並將結果值放置於 < 目的寄存器〉中,注意,未被比較的比特位在 ,, ,,。MemoryRead
36
·該指令利用如下變量從本地測試存儲器讀出,,〈要傳送的字節數〉,〈源地址(在指定的存儲塊中)。該指令返回以序列號和被傳送的字節數為標記的數據字節流。示例性TISA指令集包括用於掃描狀態的如下數值StartState,ScanState,EndStat 掃描狀態代碼包括 JestLogicReset(TLR) ,RunjTesVIdle(RTI) ,PauseDR(PDR), PauseIR (PIR),ScanDR (SDR),ScanIR (SIR)。每個狀態代碼有4個比特位表示,並且有12個比特位用於為掃描操作描述整個狀態轉換序列。本領域普通技術人員基於在此的教導可以理解,在此示出並描述的TISA處理器結構也能使用各種其他的TISA實施。例如,其他的TISA實施可能使用更少、更多和/或不同的寄存器,可能使用更少、更多和/或不同的指令集等,及其各種組合。在一個實施例中, 為了提供更適於特定應用的TISA實施,和/或為了任何其他合適的原因,其他的TISA實施能夠被應用於使用不同的處理器架構的地方。如上文所述,在JTAG架構中使用TISA可以使得掃描操作在掃描段層執行,該掃描段層允許在整個掃描路徑中定義獨立可控的「掃描段」,因而提供了一套靈活的和強大的原語集合,其能夠用於在問題空間中直接定義掃描操作,並能夠在實施時刻解決掃描操作。一般而言,JTAF操作基於掃描操作,在該掃描操作中,當比特位被一個接一個地串行掃描出去的同時,所有的比特位被一個接一個地串行掃描進入。這意味著,為了能夠執行掃描操作,需知曉在掃描鏈(例如,輸入和輸出矢量)中每個比特位需要哪個值。TGT通常通過從諸如BSDL的描述語言獲得的系統模型計算所需矢量,為常規的結構測試提供這種能力。此外,如SVF和STAPL的格式鏡像這些矢量,就像它們允許用戶操作這些矢量。雖然以此方式的測試對於結構(以及其他類型)的測試是足夠的,但是以此方式的測試對於交互裝置的效率是非常低的,在交互裝置中並不實際需要訪問整個掃描鏈。這種低效率可以通過考慮一個例子來看到。例如,考慮一個由100個儀器組成的掃描鏈,每個儀器具有16比特位。如果用戶需要在掃描鏈中第76號儀器的寄存器中寫入0x1234,那麼TGT就需要為整個掃描鏈生成矢量(100*16 = 1600比特),並將該矢量發送到將被輸入掃描鏈的TAP接口。類似地,如果用戶需要讀取相關的輸出,TGT在能夠提取所需的輸出信息之前需要接收全部1600比特的矢量。在這個示例中,當掃描效率並不是目標之一時(而是,在該示例中,目標主要是能夠有效地訪問掃描鏈中一個特定實體),大部分的掃描位是無用的這一事實並不重要。這種類型的方法有問題,至少由於如下原因(a)計算上需要處理長矢量(例如, 許多存儲器傳送對性能有較大影響);(b)需要在存儲器中存儲整個矢量(這對於長鏈可能是個問題);(c)存儲器存儲不限於數據輸入和數據輸出,而且包括期望數據、輸入和輸出掩碼等(因此,倍增的存儲需求已經可能受到來自輸入和輸出數據的限制);以及⑷每次必須進行儀器-矢量-儀器的轉換(這需要計算能力和計算時間)。在不特別強調掃描效率的情況下(即使強調,當然在需要時也能滿足要求),掃描段層抽象層是提供高效訪問被測系統的掃描鏈的單個實體或實體組的強大工具。在一個實施例中,通過將掃描鏈分解成連續段並對每個段定義一個或多個掃描操作而實施掃描段層抽象。掃描鏈包括多個元件,每段包括掃描鏈的至少一個元件。可以在被測系統的許多層級對元件進行定義(例如,元件可以是設備、儀器、寄存器、寄存器段等, 及其各種組合),並因此可以在被測系統的許多層級定義將掃描鏈分解成的段(例如,段可以包括一個或多個設備、設備的一部分、一個或多個儀器、儀器的一部分、一個或多個寄存器、寄存器的一部分、一個或多個寄存器段等,及其各種組合)。以此方式,段能表示掃描鏈的最小控制單元。在一個實施例中,將掃描鏈分解成段是分層級的。例如,可以將掃描鏈分解成段, 至少某些段可以由子段組成,至少某些子段可以由子子段組成等。以此方式,可以將掃描鏈的層級分解看作具有基於樹的結構,其中一個段由其他多個段組成。在一個這樣的實施例中,將位於樹葉的段稱為段(因為他們表示掃描鏈的最小控制單元),將位於樹葉上方的段稱為超段。可以理解,在一個實施例中,掃描鏈的一個或多個段由可控制的虛擬子段組成, 僅以對用戶/系統透明的方式可控制。掃描鏈的層級分解可以以任何其他合適的方式定義。使用分段能為段的類型和/或段組合的類型定義實體。實體是目標類型的類屬描述,該描述對於目標類型的每個物理實例有效並能為其重用。例如,實體能定義設備描述、 設備組、設備的一部分、儀器、儀器組、儀器的一部分等,及其各種組合的描述。因此,由於掃描鏈能被分解以使掃描鏈的段包括特定元件或元件組合,因此能對於掃描鏈的各個段和 /或各個段組合定義實體。例如,分解掃描鏈以使段包括儀器,對該類型的段可以定義實體 (即,每個段包括該類型的儀器),以使掃描鏈中該類型的段的每個物理實例可以重用該實體。類似地,例如,分解掃描鏈以使段包括多個儀器,對該類型的段(即,每個段包括儀器的類型組合)定義實體,以使掃描鏈中該類型的段的每個物理實例可以重用該實體。如下文所述,這樣能支持額外的特徵和功能。使用分段允許實體和物理協議關聯,該物理協議用於和該實體通信。結果,可為該實體專門書寫描述語言(例如,諸如NSDL、P1687 IJTAG PDL等),並且連接性描述部分(例如,NSDL或IJTAG HDL結構)可以描述分段指令的順序。因為TISA指令是基於段的操作而不是基於模型的操作,因此TISA提供了可重用的模塊性,其對特定的實體類型的所有出現只需定義一次。這樣,因為對於在特定段中被測實體,TISA既是模塊化的也是自治的,所以TISA提供了明顯優於現有的架構的優勢。TISA能將測試數據寄存器定義直接映射到可重用並可移植的模塊,該模塊可以在掃描過程的任一個點上被插入到執行流程中,以任何需要的次序,無需象現有的工具要求的一樣將整個連接性預先定義為靜態模塊。作為基於統一的控制流程和標準的計算機科學技術的基礎上單一的解決空間架構,TISA能夠集成對於掃描操作為非掃描的埠 /信號接口(相對於其中用本機語言構造來提供非掃描操作訪問的技術方案來說,提供了明顯的優勢)。TISA能為同一實體的多個實例實現指令序列的重用,因而能夠減少系統中代碼存儲的需求。例如,可寫一個映射到被管理程序調用的描述語言函數的廣義函數。在這個示例中,每個函數都是表示該實體的本機語言對象的方法,並且對於系統中定義的每個實體, 具有這些對象的單獨實例,但是可以有代碼的單個拷貝,其用於與這些實例中的每一個進
行通信。以此方式,本機語言實現模塊直接控制了用於指明電路連接性和功能性的描述語 、言。
參考以上所給出的示例,利用掃描段層抽象能夠定義如下三段包含儀器1至75 的段Si,包含儀器76的段S2,以及包含了儀器77至100的段S3。以此方式,對儀器76的訪問被大大地簡化了。例如,可以通過如下操作對儀器76訪問對段S3進行「虛位移」(例如,kanBlockZero),對段S2(即,儀器76)執行指令,對段Sl進行另一個虛位移,然後隨著更新結束操作。在這樣的順序中,除了段Sl或段S3的長度,對段S2的訪問(例如,對掃描鏈中一個特定的儀器)無需了解該段Sl或段S3的其他。可以理解,這只是一個示例,因此,具有100個儀器長度的鏈的其他分解可能能夠訪問其他儀器或者儀器組。圖17示出了被測系統的高級框圖,說明被測系統的示例性掃描鏈的示例性分解。示例性SUT170包括四個設備17101-17104(統稱為設備1710 ;並在圖17中分別表示為設備1、設備2、設備3和設備4)。在SUT1700內串行地部署設備1710以形成掃描鏈1720。掃描鏈1720如下TAP的TDI連接到設備17104的輸入埠,設備17104的輸出埠連接到設備17103的輸入埠,設備17103的輸出埠連接到設備17102的輸入埠, 設備17102的輸出埠連接到設備17101的輸入埠,以及設備17101的輸出埠連接到 TAP 的 TDO。在示例性SUT1700中,每個設備1710包括(1)輸入解復用器,其向測試指令寄存器(TIR)和測試數據寄存器(TDR)提供輸入;以及(2)輸出復用器,其收集來自IlR和TDR 的輸出。每個設備1710的IlR和TDR都是並行寄存器。設備17103包括一個另外的TDR, 以使輸入解復用器向一個IlR和兩個TDR提供輸入並收集來自該一個IlR和兩個TDR的輸出,其中一個IlR和兩個TDR都是並行的。IlR和TDR每個都被示出為串行移位寄存器,每個都包括九個相關的元件(例如觸發器)。以此方式,(a)IlR形成包括三十六個串行元件的一個掃描鏈(表示為測試指令掃描鏈)以及(b) TDR形成包括整個四十五個元件和三十六個串行元件的另一掃描鏈(表示為測試數據掃描鏈)(即,由於設備17103的兩個TDR都是並行的)。在示例性SUT1700中,已將測試指令掃描鏈分解成如下的四個段第一個段SI4, 包括設備17104的TIR的九個元件;第二個段SI3,包括設備17103的TIR的九個元件;第三個段SI2,包括設備17102的TIR的九個元件;以及第四個段SI1,包括設備17101的HR 的九個元件。以此方式,測試系統可以單獨的或組合地訪問SUT1700的任何TIR,而無需太多知曉SUT1700的其他TIR(除了組成它們的元件數量之外)。在示例性SUT1700中,已將測試指令掃描鏈分解成如下的六個串行段(總共七個段)第一個段SD4,包括設備17104的TDR的九個元件;第二個段SD3,包括設備17103 的TDR的九個元件;第三個段SD2,包括設備17102的第一 TDR的九個元件(表示為子段 SD2. 1)或設備17102的第二 TDR的九個元件(表示為子段SD2. 2),這裡將它們計算為單獨的段以便計算段的總數;以及將第四個段進一步分解為如下的三個串行子段包括設備 17101的TDR的前三個部件的第一個子段(表示為子段SDl. 1),包括設備17101的TDR的接下來四個元件的第二個子段(表示為子段SDl. 2),以及包括設備17101的TDR的最後兩個元件的第三個子段(表示為子段SDl. 3)。以此方式,測試系統可以單獨的或組合地訪問 SUT1700的任何TDR(或甚至設備17101的TDR的子部分),而無需太多知曉SUT1700的其他TDR (除了組成它們的元件數量之外)可以理解的是圖17的SUT1700僅僅是分解被測系統的掃描鏈以用於提供掃描段層抽象的方式的一個示例。雖然這裡參考特定類型、數量和配置的元件、部件等進行示出並描述,但可以理解的是分解掃描鏈的被測系統可以包括各種其他類型、數量和/或配置的元件、部件等。如在此所述,被測系統的掃描鏈的分解實現將在段上定義的掃描操作,藉此改進測試效率。在此參考圖18示出並描述根據一個實施例,用於生成指令集的方法,該指令集包括對於分解的掃描鏈的段的掃描操作。下文提供掃描分解並生成掃描段操作的更詳細的示例。作為一般示例,考慮包括三個電路板的掃描鏈,其中每個電路板包括一個段(分別表示為和第一電路板相關聯的段A、和第二電路板相關聯的段B以及和第三電路板相關聯的段C)。在這個示例中,掃描段是分層級的,第一電路板上的段A由多個子段組成(例如,子段Al-An)、第二電路板上的段B由多個子段組成(例如,子段Bl-Bn)、和/或第三電路板上的段C由多個子段組成(例如,子段Cl-Cn)。作為更具體的示例,由於應用和SUT,段可以是儀器內的一個或多個寄存器、儀器、一組寄存器、一個或多個電路板等,及其各種組合。因此將整個掃描操作分解為一系列的段掃描操作。結果,為了獲取最後的掃描鏈操作所需要的是一系列簡單的原子操作。因此,雖然不是唯一的限定於,但掃描段層抽象的實施例在原子測試操作如同處理器操作一樣被處理的實施中特別有效(例如,諸如在此示出並描述的各種TISA實施中、或在原子測試操作如同處理器操作一樣被處理的任何其他類似實施中)。在掃描段層抽象的該實施例中,掃描段層掃描操作的實際實施需要解決和JTAG 連結的一個或多個技術限制。例如,需要解決諸如需要定義TAP機的狀態和利用Pause-DR 狀態(並非總是實施)的風險的限制。為了識別經由掃描連結收的輸出比特流中的儀器/段輸出,根據掃描鏈中的儀器 /段的位置,可將掃描鏈看作先進先出(FIFO)系統(考慮它的串行特點),以使第一個被掃描進入的段也是第一個被掃描出去的段(因為該段最接近掃描段的末端)。為了使SUT如同單個掃描操作一樣「經歷」掃描段操作序列,在段操作之間暫停 TCK。由於掃描鏈內的所有元件都是同步的,以該方式暫停TCK的影響在於掃描鏈和TCK 一起被暫停。通過一些示例可以更好地理解在基於TISA的測試系統中的掃描段層的使用。在如下的示例中,假設被測系統(SUT)由三個段(依次表示為A、B和C)組成,以及用戶需要寫入段B中的值V。作為第一示例,假設在相同JTAG設備內實施系統的三個段(A、B和C)。在該第一示例中,一旦在存儲器中定義三個段,則TISA操作將變成i.設置 Startstate = Run-Test-Idle, Scanstate = Endstate = ShiftDR ;ii.設置 kanLenghtField 為段 A 的長度;iii.將旁路序列掃描到段A中;iv.設置 Startstate = Scanstate = Endstate = ShiftDR ;v.設置 kanLenghtField 為段 B 的長度;vi.將V掃描到段B中;
vii.設置 Startstate = Scanstate = ShiftDR, Endstate = Run-Test-Idle ;viii.設置 ^anLenghtField 為段 C 的長度;ix.將旁路系列掃描到段C中。參考該第一示例,保持TAP有限狀態機(FSM)處於ShiftDR狀態能確保不需要更新掃描鏈。可以從第一示例中看出,其中從步驟(i)至步驟(ix)保持TAP FSM處於SiiftDR 狀態能確保不需要更新掃描鏈,考慮到一旦離開SiiftDR就將到達UpdateDR狀態。進一步參考第一示例,掃描時鐘TCK只有在掃描操作期間(S卩,步驟(iii)、(vi) 和(ix))才是激活的並在其餘狀態中被暫停。從基於與TCK同步的操作的SUT的角度看, 影響在於SUT將步驟(iii)、(Vi)和(ix)看作連續比特流。進一步參考第一示例,「旁路序列」是掃描段的屬性,並例如是給定序列(全零、全一、或任何其他合適的序列)或「不關心」,這由TGT決定該序列。作為第二示例,假設在不同的JTAG設備上實施系統的三個段(A、B和C)。在該第二示例中,一旦在存儲器中定義該三個塊,TISA操作會變為i.設置段 A 狀態StartMate = RunTest/Idle, ScanState = ShiftIR, EndState =ShiftIR(gateTCK indicator);ii.設置段 A 的 kanLengthField 為段 A IR 的長度;iii.為段A運行具有BYPASS指令模式的kanBlock ;iv.設置段 B 狀態=StartState = ShiftIR, ScanState = ShiftIR, EndState = ShiftIR(gateTCK indicator);v.設置 ScanLenghtField 為段 B IR 的長度;vi.為段B運行具有EXTEST指令模式的kanBlock ;vii.設置段 C 狀態=StartState = ShiftIR, ScanState = ShiftIR, EndState = RunTest/Idle ;viii.設置段 C 的 kanLengthField 為段 C IR 的長度;ix.對於段C運行具有BYPASS指令模式的kanBlock ;χ.設置段 A 狀態StartMate = RunTest/Idle, ScanState = ShiftDR, EndState =ShiftDR(gateTCK);xi.設置段A的kanLengthField為段A所選DR的長度(1比特BYPASS DR);xii.對於段A運行具有BYPASS數據模式的kanBlock ;xi ii.設置段 B 狀態=StartState = ShiftDRjScanState = ShiftDRjEndState = ShiftDR(gateTCK);xiv.設置段B的kanLengthField為段B所選DR的長度(到引腳的η比特BSR DR);XV.對於段B運行具有EXTEST數據模式的kanBlock ;xvi.設置段 C 狀態=StartState = ShiftDR, ScanState = ShiftDR, EndState = RunTest/Idle ;xvii.設置段 CWkanLengthField 為段 C 所選 DR 的的長度(1 比特 BYPASS DR);xviii.對於段C運行具有BYPASS數據模式的kanBlock ;通過比較第一示例和第二示例,可以理解和第二示例相關的增加的複雜性來自於
41需要使用每個JTAG設備的指令寄存器(IR)來選擇/取消選擇段。在這種情況下,通過在 1149. 1標準的BYPASS模式中放置相關JTAG設備將沒用到的段從鏈中直接取出(如第二示例的步驟(iii)和(xvii)所示)。可以理解,上面兩個示例的所有組合都是可能的,在一個或多個JTAG設備上定義任何數量的段。進一步可以理解,上面兩個示例僅僅是用來解釋掃描段層用於測試被測系統的示例,並因此,其中掃描段層用於測試被測系統的實施例並非意在受這些示例的限制。在這些實施例中,TISA指令的實際序列可以具有多個起點,包括如下的一個或多個(1) TISA指令可由TGT靜態計算,在這種情況下,每當用戶需要訪問段,必須掃描整個鏈 (可以理解,雖然該方案對於掃描時間並未優化,但對於具有有限計算資源並沒有或基本沒有時間限制的嵌入式系統是有用的);( 由軟體調度器發布TISA指令,該軟體調度器接收訪問請求並將它們構成掃描操作;和/或(3)由硬體調度器發布該TISA指令(例如,諸如, 但不限於,在某些高性能處理器中所進行的指令重新排序和旁路)。可以理解,可以以任何合適的方式發布和掃描段層控制相關聯的TISA指令,這些方式包括上述方法和/或一個或多個其他合適的方法的組合,這些合適的方法用於取代上述的一個或多個方法或補充上述一個或多個方法。掃描段層抽象層是用於處理動態拓撲的強大工具,諸如IEEE P1687標準提出的拓撲和其他動態拓撲。如果能在動態掃描路徑中加入並取出掃描鏈的一部分(例如,利用 IEEE P1687標準提出的SIB單元或任何其他合適的層級使能組件),可以將部分標記為一個(或多個)段。然後,測試調度器從系統狀態獲知該段是否有效,並因此是否應在TISA 指令調度中包括該段。本領域普通技術人員根據在此教導可以理解,這一原則也能用於其他動態元件,諸如熱插拔電路板(例如,通過從狀態寄存器檢測該電路板的出現)或任何其他合適的動態元件。圖18示出了利用掃描鏈的掃描段層抽象經由被測系統的掃描鏈用以測試部分被測系統的方法的一個實施例的高級框圖。雖然這裡主要示出並描述的為串行執行,但方法1800的至少一部分步驟能同時執行,或以不同於參考圖18所示出和描述的順序執行。在步驟1802,方法1800開始。在步驟1804,將掃描鏈被分解成多個段。該掃描鏈包括多個元件,並且每個段包括掃描鏈的至少一個元件。如上文所示,能以任何合適的方式將掃描鏈分解成段。如在此所述,將掃描鏈分解成段可以應用在開發流程中的任何位置(例如,由測試開發者、由測試生成工具、由嵌入式電路模型等)。在步驟1806,生成指令集。指令集包括和ISA相關聯的處理器指令以及用於測試部分被測系統的測試指令。對於掃描鏈的每個段,測試指令包括對該段執行的至少一個掃描操作。測試指令可以是任何類型的測試指令,諸如常規測試指令、TISA測試指令等,並能以任何適合的方式生成。能以任何適合的方式生成指令集(例如,以與上文所示和描述相同或類似方式)。在步驟1808,執行該指令集以用於測試部分被測系統。可以以任何合適的方式執行該指令集,這取決於指令集中指令的類型。在步驟1810,方法1800結束。
雖然這裡參考其中TISA的實施例用於實現將在掃描段層被執行的掃描操作的實施例進行示出並描述,但可以理解的是在利用TISA類指令架構、非TISA指令架構和/或非 TISA測試環境實施等環境中也可以提供在此示出並描述的一個或多個掃描段層實施例。雖然在此引用「該TISA」用於描述改進的系統測試能力,該測試能力由在此示出並描述的被形成並利用的TISA的示例性實施例實現,但可以理解的是,可以取決於各種因素形成許多不同的TISA,諸如為其形成該TISA的處理器的一個或多個ISA、為其形成該TISA 的SUT的特點、該TISA應該執行的測試算法的特點等,及其各種組合。因此,在此引用「該 TISA」也能理解為更一般的「TISA」,因為可形成許多不同類型的TISA。圖19示出了適合於執行在此描述的功能的計算機的高級框圖。如圖19所示,計算機1900包括處理器元件1902 (例如,中央處理單元(CPU)或其他合適的處理器)、存儲器1904(例如,隨機存取存儲器(RAM)、只讀存儲器(ROM)和/或任何其他合適的存儲器類型)、適於執行在此示出並描述的系統測試功能的系統測試模塊/過程1905、以及各種輸入 /輸出設備1906(如,用戶輸入設備(諸如鍵盤、鍵區、滑鼠等)、用戶輸出設備(諸如顯示器、揚聲器等)、輸入埠、輸出埠、接收器、發送器、以及存儲設備(例如,磁帶驅動、軟盤驅動、硬碟驅動或光碟驅動等))。應注意,這裡示出並描述的系統測試功能可以以軟體和/或軟體和硬體的組合來實現,例如,使用通用計算機、一個或多個專用集成電路(ASIC)和/或任何其他硬體等同物。在一個實施例中,能夠將系統測試過程1905加載到存儲器1904中,並由處理器1902 執行,以實現和/或支持實現如上所述的至少一部分系統測試功能。這樣,能夠將系統測試過程1905 (包括關聯的數據結構)存儲在計算機可讀介質或載體上,例如RAM存儲器、磁或光碟機動或磁碟等。可以設想,這裡作為軟體方法討論的一些步驟可以在硬體內實現,例如,作為與處理器協作以執行各種方法步驟的電路。這裡所述的一部分功能/元件可以實現為電腦程式產品,其中,當由計算機處理時,計算機指令適配計算機的操作,使得能夠調用或以其他方式提供本發明的方法和/或技術。可以將用於調用本發明的方法的指令存儲在固定或可拆卸的介質中、經由廣播的數據流或其他信號承載介質進行傳輸、和/或存儲在根據指令進行操作的計算設備內的存儲器中。儘管在此已經詳細示出並描述了結合本發明的教導的各種實施例,但是本領域技術人員能夠容易設想同樣結合這些教導的許多變化的實施例。
權利要求
1.一種用於經由測試訪問埠(TAP)對被測系統的至少一部分執行測試的設備,所述測試訪問埠被配置用於訪問所述被測系統,所述設備包括用於執行指令的第一處理器,所述指令適於經由所述TAP控制對於被測系統的至少一部分的測試;以及第二處理器,用於支持到所述TAP的接口 ;所述第一處理器用於在執行所述測試指令期間檢測與控制所述TAP相關的TAP相關指令,並將所述TAP相關指令傳播向所述第二處理器;所述第二處理器用於接收由所述第一處理器檢測的所述TAP相關指令並處理所述TAP 相關指令;其中所述第一處理器被配置用於在由所述第二處理器處理所述TAP相關指令的同時執行至少一個任務。
2.如權利要求1所述的設備,該設備進一步包括 主存儲器;永久存儲器;以及主處理器接口總線;其中所述第一處理器、所述第二處理器、所述主存儲器、以及所述永久存儲器中的每個都耦接到所述主處理器接口總線。
3.如權利要求1所述的設備,該設備進一步包括輔助處理器接口,所述輔助處理器接口耦合所述第一處理器和所述第二處理器; 其中所述第一處理器適用於經由所述輔助處理器接口向所述第二處理器提供所述TAP 相關指令。
4.如權利要求1所述的設備,其中所述TAP相關指令由所述第一處理器檢測、由所述第一處理器提供到所述第二處理器、並由所述第二處理器作為指令異常進行處理。
5.如權利要求1所述的設備,其中所述第二處理器包括分散/收集直接存儲器訪問 (DMA)單元,其中所述第一處理器適用於在檢測TAP相關指令之前配置所述分散/收集DMA 單元的至少一個分散/收集DMA表格。
6.如權利要求1所述的設備,其中所述第一處理器和所述第二處理器共享使用隨機存取的相同物理存儲空間。
7.如權利要求1所述的設備,所述設備進一步包括 主存儲器;與所述第一處理器相關的永久存儲器; 主處理器接口總線;其中所述第一處理器、所述主存儲器和所述永久存儲器中的每個都耦接到所述主處理器接口總線。
8.如權利要求1所述的設備,該設備進一步包括 與所述第二處理器相關的本地測試存儲器;內部接口總線;其中所述第二處理器和所述本地測試存儲器中的每個都耦接到所述內部接口總線。
9.如權利要求1所述的設備,該設備進一步包括與所述第一處理器相關的第一輸入/輸出模塊;以及與所述第二處理器相關的第二輸入/輸出模塊;其中所述第一處理器和所述第一輸入/輸出模塊中的每個都耦接到所述主處理器接口總線;其中所述第一輸入/輸出模塊和所述第二輸入/輸出模塊提供所述第一處理器和所述第二處理器之間的通信接口;其中所述第一處理器將所述TAP相關指令進行分組並經由所述通信接口將所述分組的TAP相關指令流式發送到所述第二處理器;其中所述分組的TAP相關指令包括由所述第二處理器支持的操作碼; 其中所述第一處理器具有與其相關的主存儲器,並且所述第二處理器具有與其相關的本地測試存儲器,並且所述TAP相關指令包括適於在所述主存儲器和所述本地測試存儲器之間執行塊存儲拷貝的擴展命令。
10. 一種用於對被測系統的至少一部分執行測試的方法,其中所述被測系統經由測試訪問埠(TAP)可被訪問,所述方法包括由第一處理器執行指令,所述指令適於控制對所述被測系統的至少一部分的測試; 在執行適於控制對所述被測系統的至少一部分的測試的指令期間,檢測與控制所述 TAP相關的TAP相關指令;從所述第一處理向第二處理器提供所述TAP相關指令;以及由所述第二處理器執行與控制所述TAP相關的所述TAP相關指令; 其中所述第一處理器被配置用於在由所述第二處理器處理所述TAP相關指令的同時執行至少一個任務。
全文摘要
本發明提供一種用於經由被配置用於訪問被測系統的測試訪問埠(TAP)對該被測系統的至少一部分執行測試的設備。該設備包括第一處理器和第二處理器,所述第一處理器用於執行適於經由所述TAP測試所述被測系統的至少一部分的指令,所述第二處理器用於支持到所述TAP的接口。所述第一處理器被配置用於在執行所述測試指令期間檢測與控制所述TAP相關的TAP相關指令,並將所述TAP相關指令傳播向所述第二處理器。所述第二處理器被配置用於接收由所述第一處理器檢測的TAP相關指令,並處理所述TAP相關指令。所述第一處理器被配置用於在由所述第二處理器處理所述TAP相關指令的同時執行至少一個任務。同時提供相關方法。
文檔編號G01R31/3185GK102439470SQ201080010624
公開日2012年5月2日 申請日期2010年3月3日 優先權日2009年3月4日
發明者布拉德福德·范特魯尤倫, 米歇爾·波特蘭, 蘇雷什·戈雅爾 申請人:阿爾卡特朗訊

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀