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