用于調試任何片上系統狀態、功率模式、重置、時鐘和復雜數字邏輯的基于異步可編程 ...的制作方法
【專利摘要】公開了異步調試接口,其允許JTAG代理、基于JTAG的調試器、固件和軟件調試、訪問和覆蓋正在被測試的核心邏輯的任何功能寄存器、中斷寄存器、功率/時鐘選通使能等等。所述異步調試接口在寬范圍的時鐘頻率下工作,并且允許讀事務和寫事務在不切換到調試或測試模式的情況下在側通道上以及片上處理器結構內發生。所述異步調試接口使用雙線和四線JTAG控制器配置工作,并且符合諸如1149.1、1149.7等等IEEE標準,并且提供調試復雜的片上系統狀態和片上產品的有效和無縫的方式。
【專利說明】用于調試任何片上系統狀態、功率模式、重置、時鐘和復雜數字邏輯的基于異步可編程JTAG的接口
【技術領域】
[0001 ] 本申請涉及在1149標準下的測試設備體系結構。
【背景技術】
[0002]聯合測試行動組(JTAG)是稍后被標準化為IEEE 1149.1“Standard Test AccessPort and Boundary-Scan Architecture”的內容的通用名稱,其中IEEE是電氣與電子工程師學會的簡稱。IEEE 1149.7標準是IEEE 1149.1的補充標準,增加了額外的功能。JTAG最初被設計用于使用邊界掃描來測試印刷電路板并且仍然廣泛用于這一應用。
[0003]IEEE 1149的“邊界掃描體系結構”使用用于設置并讀取管腳上的值的5管腳串行協議而不直接訪問核心邏輯。被稱為邊界掃描寄存器(BSG)的串行掃描路徑攔截位于核心邏輯和管腳之間的信號。當系統不在測試模式中時,邊界掃描寄存器將核心邏輯的信號透明地連接到管腳。在測試模式中,BSR可以用于設置和/或讀取值。在外部模式中,被設置或讀取的值將是也被稱為“管腳”的I/O焊盤的值。在內部模式中,被設置或讀取的值將是核心邏輯的值。
[0004]BSR是移位寄存器,其形成位于核心邏輯周圍的路徑。正在被測試的系統的核心邏輯的信號管腳連接到構成BSR的單元,這些單元圍繞核心邏輯(邊界)。移位寄存器連接到測試設備的輸入和出口,允許將測試向量發送到BSR,因而測試核心邏輯。
[0005]盡管這一標準化方案,但是由于在測系統處于“測試”模式中,一些實時情形沒有使用邊界掃描體系結構被測試。
[0006]因而,存在對于一種克服現有技術的缺點的用于執行核心邏輯的實時測試的機制的持續需要。
【專利附圖】
【附圖說明】
[0007]通過參照結合附圖的下面詳細描述,本文檔的前述方面和許多伴隨的優點將變得更好理解,因此將變得更容易被認識到,其中相似的附圖標記在各種視圖中始終表示相似的部件,除非以其它方式規定。
[0008]圖1是根據一些實施例的異步調試接口的簡化方框圖;
[0009]圖2是根據一些實施例包括圖1的核心邏輯和TAP控制器的在IEEEl 149下的邊界掃描體系結構的簡化方框圖;
[0010]圖3是根據一些實施例對于構成圖1的核心邏輯的不同芯片復制的圖2的邊界掃描體系結構的方框圖;
[0011 ] 圖4是根據一些實施例由圖1的異步調試接口的TAP控制器使用的狀態機;
[0012]圖5是根據一些實施例的圖1的異步調試接口的讀接口的示意圖;
[0013]圖6是根據一些實施例的圖1的異步調試接口的寫接口的示意圖;
[0014]圖7是表示根據一些實施例圖1的異步調試接口的讀接口和寫接口與優先級仲裁器之間的連接的示意性方框圖;
[0015]圖8是根據一些實施例由圖1的異步調試接口使用的優先級仲裁器的示意圖;
[0016]圖9是根據一些實施例在圖1的異步調試接口中由軟件使用來管理TAP控制器中的空閑狀態的查找表;以及
[0017]圖10是根據一些實施例由圖1的異步調試接口執行的寫操作的流程圖。
【具體實施方式】
[0018]根據本文描述的實施例,公開了異步調試接口,其允許JTAG代理、基于JTAG的調試器、固件和軟件調試、訪問和覆蓋正在被測試的核心邏輯的任何功能寄存器、中斷寄存器、功率/時鐘選通使能等等。異步調試接口在寬范圍的時鐘頻率下工作,并且允許讀事務和寫事務發生在側通道上以及片上處理器結構內而不必切換到調試或測試模式中。異步調試接口使用雙線和四線JTAG控制器配置進行工作,并且符合IEEE標準,例如1149.1、1149.7等等,并且提供調試復雜的片上系統狀態和片上系統廣品的有效和無縫的方式。
[0019]在下面的詳細描述中,參照通過說明的方式示出可以在其中實踐本文描述的主題的具體實施例的附圖。然而,應該理解,本領域中的普通技術人員在閱讀本公開時,其它實施例將變得明顯。下面的詳細描述因此不應該在限制的意義上被解釋,因為主題的范圍由權利要求限定。
[0020]根據一些實施例,圖1中描繪了異步調試接口 100的簡化方框圖。異步調試接口100由讀接口 200、寫接口 300、優先級仲裁器400和智能單元350組成。異步調試接口 100在核心邏輯500上按照兩種方式實時地操作:1)經過到核心邏輯的側通道連接260,以及2)通過經過JTAG接口 250利用JTAG調試器250和TAP控制器600。異步調試接口 100因而被嵌入在JTAG網絡中(例如JTAG調試器250和一個或多個TAP控制器600)中。
[0021]如在本文使用的,當正在被測試的核心邏輯500在其正常狀態中操作時,即,在其操作中沒有任何中斷時,異步調試接口 100被認為實時地運行。因而,異步調試接口 100在不改變在核心邏輯500內操作的任何時鐘的速度的情況下并且在不改變由核心邏輯接收的功率的情況下進行操作,。關于最后一點,當異步調試接口 100正在核心邏輯上實時地運行測試時,核心邏輯500未被置于低功率操作狀態中。
[0022]JTAG調試器250和TAP或測試訪問端口、控制器600被設計為在包括但不局限于IEEE 1149.1和IEEE 1149.7 (在本文被稱為JTAG標準)的IEEE 1149標準下進行操作。盡管JTAG調試器250能夠在核心邏輯500處于測試模式中時在該核心邏輯上執行測試,但是異步調試接口 100在核心邏輯500上實時地進行操作。異步調試接口 100因而利用JTAG調試器250和TAP控制器600的能力,但是包括沒有由JTAG調試器250提供的額外的能力,以便在不干擾核心邏輯500的正常操作的情況下便于執行實時測試。
[0023]異步調試接口 100的讀接口 200和寫接口 300處理位于TAP控制器600和核心邏輯500之間的協議。核心邏輯500至少包括主機CPU 220。在圖1的簡化表示中,核心邏輯500包括主機CPU 220和通過開放核心協議(OCP)總線230耦合到主機的一個或多個額外的CPU 240。為了簡單起見,核心邏輯500中的其它電路未在圖1中重點介紹,但是核心邏輯可以包括額外的功能,包括但不局限于聯網能力、圖形和視頻能力、易失性和非易失性存儲介質以及外圍設備電路。優先級仲裁器400解決在JTAG調試器250和主機CPU 220或核心邏輯500的其它CPU 240之間的沖突,當這二者同時試圖訪問OCP總線230時。
[0024]智能單元350可以由硬件邏輯和/或由處理器(未示出)執行的軟件程序構成。在一些實施例中,智能單元350包括結合JTAG調試器250使用來測試核心邏輯500的測試套件450和查找表550。
[0025]在一些實施例中,如下所述,智能單元350包括被發送到JTAG調試器250的查找表550。查找表550使JTAG調試器250能夠獲得TAP控制器600在等待來自優先級仲裁器400的總線訪問許可時需要處于空閑狀態中的時鐘周期的數量。在一些實施例中,查找表550中的值由在確定空閑狀態時鐘周期時采用TAP控制器600和核心邏輯500的相對時鐘速率的新穎公式確定。
[0026]常規調試方法是將也被稱為在測系統的正在被測試的系統置于特定的測試或調試模式中,固定頻率下的單個時鐘用于在測系統和測試邏輯二者。在圖1中,例如,核心邏輯500是在測系統。在常規調試下,核心邏輯500因而在其功能模式和測試模式之間進行切換,在其功能模式中,核心邏輯如所設計的進行操作,而在測試模式中,調試操作被執行。對于這一常規方案存在許多缺點,其中之一是,在測試模式中操作的核心邏輯沒有忠實地實時代表核心邏輯的操作。
[0027]相反,異步調試接口 100具有在不將核心邏輯500置于測試模式中的情況下調試或覆蓋任何片上系統狀態或特征的能力。使用這一接口,不需要減慢用于訪問核心邏輯500內的任何功能邏輯的該核心邏輯的鎖相環時鐘。異步調試接口 100在寬范圍的JTAG以及功能時鐘頻率下工作,并且使用唯一的握手機制和異步協議來在功能域和測試時鐘域之間傳輸數據。異步調試接口 100因而提供在不需要昂貴的片上邏輯分析器的情況下實時地調試功能邏輯的強大的機制。
[0028]在進一步描述異步調試接口之前,對在IEEE 1149下的邊界掃描體系結構的介紹是適當的。圖2示出了根據一些實施例符合1149的系統700的簡化示意圖。(圖1的JTAG調試器250是符合1149的系統的示例。)圍繞核心邏輯500的是形成邊界掃描寄存器(BSR)的多個邊界掃描單元760A-760J(共同地,“邊界掃描單元760”)、相對應的I/O焊盤770A-770J加上接收測試數據輸入(TDI)的輸入的I/O焊盤770K、指令寄存器710和指令解碼器740、旁路寄存器720、ID寄存器730、一個或多個設計專用外部測試數據寄存器750以及測試訪問端口控制器或者首先在圖1中介紹的TAP控制器600。TDI輸入經過I/O焊盤770K被饋送到第一邊界掃描單元760A,經過每一個隨后的邊界掃描單元760B、760C...760J被傳遞到測試數據輸出(TDO)輸出。
[0029]因為僅存在單個數據輸入(TDI),因此圖2的邊界掃描體系結構是串行的。符合1149的系統700使用測試時鐘信號(TCK)來為數據輸入、測試模式狀態信號(TMS)和可選的測試重置信號(TRST)以及TDI和TDO信號計時。TAP控制器600是狀態機,轉換由TMS信號進行控制。TAP控制器600的狀態機能夠完成重置操作,訪問指令寄存器并且訪問由指令寄存器選擇的數據。對于每一個TCK脈沖,數據的一個比特被傳輸到TDI輸入中并且被傳輸離開TDO輸出。
[0030]在核心邏輯500的正常操作期間,邊界掃描單元760是不可見的。系統700可以處于兩種測試模式,外部測試模式和內部測試模式,之一中。在外部測試模式中,邊界掃描單元760用于設置并讀取I/O焊盤770的值。在內部測試模式中,邊界掃描單元760用于設置并讀取核心邏輯500的值。
[0031]JTAG標準想象至少兩個測試數據寄存器,圍繞核心邏輯500的邊界掃描寄存器760和旁路寄存器720。此外,可以包括設計專用測試數據寄存器以便實現設計專用測試。這些設計專用測試數據寄存器可以是公共可訪問的,但是不要求是這樣的。在一些實施例中,每當異步調試接口 100將被使用時,測試套件450使用用戶定義的(定制)指令對指令寄存器710進行編程。
[0032]TAP控制器600可以由單個TAP控制器或彼此串聯布置的多個TAP控制器組成。圖3例如以具有N個單獨的TAP控制器的TAP控制器600為特征。這些單獨的TAP控制器中的每一個可以連接到核心邏輯500內部的不同電路(500A、500B…500N)。為了簡單起見,在本文被稱為“TAP控制器600”的控制器可以由單個TAP控制器或多個TAP控制器組成。
[0033]返回到圖2,符合1149的系統700的幾個寄存器被顯示為并聯連接在公共串行輸入(TDI)和公共串行輸出(TDO)之間的基于移位寄存器的元件的集合。指令寄存器710控制哪一個寄存器,邊界掃描寄存器760、設備ID寄存器730、設計專用測試數據寄存器750之一或旁路寄存器720,在給定的時間形成位于TDI和TDO之間的串聯路徑。復用器790控制在TDI和TDO之間的串聯路徑,盡管可以替代地使用其它設備來控制串行輸出。
[0034]當沒有選擇其它測試數據寄存器中的任意一個時,旁路寄存器720經過該電路提供單比特串聯連接。因為可能存在幾個TAP控制器600,每一個TAP控制器串聯連接到不同的測試電路(圖3),旁路寄存器720允許測試數據在不影響其它部件的正常操作的情況下經過設備流到該其它部件。因而,在其中電路500A未被測試但是電路500B被測試的圖3中,旁路寄存器720將與第一電路一起使用,使得測試數據本質上完全繞過第一電路,并且繼續到第二測試電路。邊界掃描寄存器760允許板互連的測試并且檢測諸如開路和短路的生產缺陷。邊界掃描寄存器760還允許在測試它們的系統邏輯或流經系統輸入和輸出的信號的采樣時訪問部件的輸入和輸出。設備識別寄存器730是允許確定制造商、零件號和部件的變體的可選的測試數據寄存器。
[0035]圖2還示出了設計專用測試數據寄存器750。在1149.1和1149.7下可選的這些寄存器中的一個或多個允許訪問諸如自測試、掃描路徑等等的設計專用測試支持特征。它們可以是公共可用的或完全私有的,僅由例如接下來的安全認證可訪問。
[0036]當指令寄存器710指示用戶定義的指令時,設計專用測試數據寄存器被激活。在一些實施例中,異步調試接口 100與這些外部測試數據寄存器750通過接口進行連接。再次,基于設計要求,用戶定義的指令可以是公共的或私有的。
[0037]例如,如上所述,用戶定義的指令可以被發送到指令寄存器710 (通過測試套件450中的程序之一),使得通過第一外部測試數據寄存器750的方式在串行輸入(TDI)和輸出(TDO)之間創建路徑。在下文中,執行系統調試所需的數據和控制可以經過外部測試數據寄存器750被移位。異步調試接口 100讀取外部測試數據寄存器750的內容,并且執行核心邏輯500的系統調試。因而,使用用戶定義的(定制)指令的指令寄存器710的編程觸發異步調試接口 100以便執行核心邏輯500的實時測試。
[0038]在一些實施例中,通過異步調試接口 100獲得的調試結果可以在TAP控制器600處于“捕獲DR”狀態中時被裝入測試數據寄存器750中,并且可以在“移位DR”狀態期間被移位到輸出(TDO)上。圖4示出了根據一些實施例的TAP控制器600的狀態圖。狀態機的最右邊部分與指令寄存器710 (IR)有關。狀態機600的這一右側因而用于配置一個或多個TAP控制器600,以便通過選擇設計專用測試數據寄存器750通過指令寄存器710的方式來執行某一任務。通過為指令寄存器710裝入用戶定義的指令,外部測試數據寄存器750之一被激活,并且從異步調試接口 100的智能單元350接收指令,其中該指令可以由測試套件450組成。
[0039]JTAG調試器250因而本質上將異步調試接口 100的測試套件450轉換為經過測試數據輸入(TDI)和TMS JTAG端口發送的串行測試向量。每當要執行實時讀或實時寫操作時,該測試套件450將用戶定義的定制指令編程到TAP控制器600。這或者激活讀接口 200或者激活寫接口 300,并且允許讀取和寫入經過側通道260發生。讀操作和寫操作可以例如包括覆蓋核心邏輯500內的功能寄存器,打開核心邏輯內的調制解調器,關閉到核心邏輯中的音頻塊的功率,等等。
[0040]異步調試接口 100的讀接口 200和寫接口 300處理TAP控制器600和核心邏輯500之間的協議。此外,可編程優先級仲裁器400被設計為解決TAP控制器600和核心邏輯500內的CPU之間的沖突。
[0041]圖5是根據一些實施例的異步調試接口 100的讀接口 200的示意圖。在智能單元350實時地執行寄存器、存儲器單元或核心邏輯500的I/O管腳的讀操作的情況下,使用讀接口 200。讀接口 200使用由TAP控制器600使用的相同測試時鐘TCK。在發生讀取和寫入之間的沖突的情況下,優先級仲裁器400解決它們。
[0042]圖5中的讀接口 200的簡化圖將電路分為TCK域(左側)和功能時鐘域(右側),TCK是由JTAG邏輯(JTAG調試器250和TAP控制器600)使用的時鐘,并且功能時鐘是核心邏輯500的操作時鐘。讀接口 200包括五個D觸發器20A-20E和二到一復用器(MUX) 60A和60B。最初,優先級仲裁器400確保OCP總線230在發出在圖5中被表示為read_grant的讀許可之前不被使用。
[0043]JTAG讀選擇寄存器JTAG_read_sel_reg控制MUX 60B的選擇線,MUX60B經過該MUX將“常高”輸入(l’bl)饋送到MUX 60A。當用戶定義的指令被發送到JTAG調試器250的指令寄存器710時,JTAG_read_sel_reg被置位。MUX 60A由來自D觸發器20A的輸出控制。同時,離開功能時鐘域,讀許可被饋送到D觸發器20B中,通過D觸發器20A被計時(使用測試時鐘,TCK),D觸發器20A控制MUX 60A。
[0044]因為MUX 60A具有常低輸入(Γ b0),D觸發器20C的輸入僅在JTAG_read_sel_reg被激活并且read_grant由優先級仲裁器400發出之后才被饋送到Q輸出。這產生read_select信號,其經過兩個額外的D觸發器20D和20E由功能時鐘(例如核心邏輯500的功能時鐘)計時。讀接口 200的操作因而完成。
[0045]圖6是根據一些實施例的異步調試接口 100的寫接口 300的示意圖。在智能單元350正在執行寄存器、存儲器單元或核心邏輯500的I/O管腳的實時寫操作時,使用寫接口300。
[0046]如同讀接口 200 —樣,圖6中的寫接口 300的簡化圖將電路分為TCK域(左側)和功能時鐘域(右側)。寫接口 200包括五個D觸發器40A-40E和二到一復用器(MUX) 70A和70B。最初,優先級仲裁器400確保OCP總線230在發出在圖6中被表示為write_grant的寫許可之前不被使用。
[0047]JTAG寫選擇寄存器JTAG_write_sel_reg控制MUX 70B的選擇線,MUX 70B將“常高”輸入(Γ bl)饋送到MUX 70A。當用戶定義的指令被發送到JTAG調試器250的指令寄存器710時,JTAG_write_sel_reg被置位。MUX 70A由來自D觸發器40A的輸出控制。同時,離開功能時鐘域,寫許可被饋送到D觸發器40B,通過D觸發器40A被計時(使用測試時鐘,TCK),D觸發器40A控制MUX 70A。
[0048]因為MUX 70A具有常低輸入(Γ b0),D觸發器40C的輸入僅在JTAG_write_Sel_reg被激活并且write_grant由優先級仲裁器400發出之后才被饋送到Q輸出。這產生write_select信號,其經過兩個額外的D觸發器40D和40E由功能時鐘(例如核心邏輯500的功能時鐘)計時。寫接口 300的操作因而完成。
[0049]圖7是表示在接收到read_select或write_select信號之后優先級仲裁器400如何生成read_grant或write_grant信號的簡化圖。根據一些實施例,在圖8中說明了優先級仲裁器400。
[0050]在核心邏輯500和異步調試接口 100的智能單元350分別請求地址/數據總線(例如作為核心邏輯500的一部分的OCP總線230)的使用的情況下,優先級仲裁器400解決沖突。在圖8中,優先級仲裁器400由兩個D觸發器80A、80B、兩個與門90A、90B和反相器92組成。D觸發器80A、80B 二者由功能(核心邏輯)時鐘控制。
[0051]每當實時讀操作或實時寫操作要由異步調試接口 100執行時,智能單元350請求訪問核心邏輯500的OCP總線230。當請求經過D觸發器80A被計時時,Q結果與D輸入相同,并且因而經過與門90A被饋送,與門90A接著由反相器92反轉。與門的另一輸入來自對于來自核心邏輯500的總線訪問的請求。
[0052]同時,核心邏輯500也可以請求對OCP總線230的訪問,如在電路圖的下部分中指示的。該請求經過D觸發器80B由功能時鐘計時,并且被饋送到與門90C中,與門90C的另一輸入來自對于總線訪問的JTAG代理請求(例如TAP控制器600或異步調試接口 100的智能單元350)。
[0053]回憶到圖1,在一些實施例中,異步調試接口 100的智能單元350包括測試套件450和查找表550,它們二者都在核心邏輯500上執行測試時被裝入JTAG調試器250中。測試套件450由JTAG調試器250或另一 JTAG代理執行并且與符合JTAG的TAP控制器600一起操作。基于從核心邏輯500接收的數據,異步調試接口 100從核心邏輯500的寄存器讀取并且寫入核心邏輯500的寄存器。
[0054]如它的名稱表明的,異步調試接口 100異步地操作。JTAG調試器250和核心邏輯500使用不同的時鐘進行操作。因而,在一些實施例中,異步調試接口 100使用查找表550來在這些讀操作和寫操作期間插入等待狀態。
[0055]圖9是根據一些實施例由異步調試接口 100使用的如在圖1中介紹的查找表550。查找表550示出了在由TAP控制器600使用的測試時鐘TCK和由核心邏輯500使用的功能時鐘之間的許多可能頻率組合的小的集合。查找表550還概述了 TAP控制器600在每一個讀事務和寫事務之間需要停留在空閑狀態中以便允許主機CPU正確地處理側通道260事務的額外的TCK時鐘周期的數量。如本文使用的,側通道事務指代異步調試接口 100和核心邏輯500中的主機CPU 220之間的任何事務,不涉及JTAG接口 270。主機CPU 220 一次通過OCP總線230與一個或多個額外的處理器(被表示為CPU 240)進行通信以便執行事務。
[0056]在一些實施例中,查找表550在計算TAP控制器空閑周期的數量時使用下面的公式:
[0057]N_idle_cycles = (TCK/clk)*MCF
[0058]其中TCK是TAP控制器600的時鐘,elk是核心邏輯500的時鐘,并且MCF是乘法時鐘因子。在查找表550中,MCF為四。MCF是基于核心邏輯500的設計的常數。MCF可以取決于各種因素而改變,該各種因素例如是多TAP JTAG網絡中的TAP控制器的數量、核心邏輯時鐘的頻率、側通道260數據路徑的時延以及其它操作條件和設計考慮因素。
[0059]假設核心邏輯500時鐘elk在10MHz下操作。如在查找表550中指示的,測試時鐘TCK可以在50MHz (藍色)或在20MHz (黃色)下操作。在測試邏輯在50MHz (藍色)下操作的情況下,TAP控制器600所需要的空閑周期的數量為:
[0060]N_idle_cylces = (TCK/clk) *MCF = 50/100*4 = 1/2*4 = 2
[0061]因而,當測試時鐘在50MHz下操作并且核心邏輯時鐘在10MHz下操作時,TAP控制器600將在每一個讀事務和寫事務之間的兩個時鐘周期內停留在空閑狀態中。
[0062]在測試時鐘在20MHz (黃色)下操作的情況下,TAP控制器600所需要的空閑周期的數量為:
[0063]N_idle_cylces = (TCK/clk) *MCF = 50/100*4 = 1/5*4 = 0.8
[0064]在這種情況下,0.8的值被四舍五入到I。因而,當測試時鐘在20MHz下操作并且核心邏輯時鐘在10MHz下操作時,TAP控制器600將在每一個讀事務和寫事務之間的單個時鐘周期內停留在空閑狀態中。
[0065]當在測試時鐘TCK速率和核心邏輯elk速率之間存在明顯差異時,空閑狀態的數量明顯升高。例如,在核心邏輯500在IMHz下操作并且TAP控制器600在50MHz (粉紅)下操作的情況下,TAP控制器600所需要的空閑周期的數量為:
[0066]N_idle_cylces = (TCK/clk) *MCF = 50/1*4 = 50*4 = 200
[0067]因而,當測試時鐘在20MHz下操作并且核心邏輯時鐘在IMHz下操作時,TAP控制器600將在每一個讀事務和寫事務之間的兩百個時鐘周期內停留在空閑狀態中。
[0068]替代地,在核心邏輯500在IMHz下操作并且TAP控制器600在20MHz (綠色)下操作的情況下,TAP控制器600所需要的空閑周期的數量為:
[0069]N_idle_cylces = (TCK/clk) *MCF = 20/1*4 = 20*4 = 80
[0070]因而,當測試時鐘在20MHz下操作并且核心邏輯在IMHz下操作時,TAP控制器600將在每一個讀事務和寫事務之間的八十個時鐘周期內停留在空閑狀態中。
[0071]因為核心邏輯500可以在不同的時鐘頻率下操作,因此異步調試接口 100的智能單元350使用查找表550來確定多少空閑狀態要插入在每一個讀事務和每一個寫事務之間。圖4中所示的狀態機允許通過將零發送到TAP控制器600來引入這些空閑狀態。只要TAP控制器接收到零,狀態機就將保持在運行-測試/空閑狀態中。
[0072]圖10是根據一些實施例表示多個寫操作如何由異步調試接口 100執行的流程圖。智能單元350將測試套件450和查找表550裝入JTAG調試器250中(塊102)。使用TAP控制器600、邊界掃描寄存器760和JTAG接口 270,JTAG調試器250在核心邏輯500上的測試套件450上運行一個或多個測試。
[0073]回憶到JTAG調試器250在外部測試模式或者內部測試模式中進行操作,在外部測試模式中,邊界掃描單元760用于設置并讀取I/O焊盤770的值,而在內部測試模式中,邊界掃描單元760用于設置并讀取核心邏輯500的值。然而,在這種情況下,異步調試接口100實時地操作。因而,在測試套件450的執行期間,一定存在來自核心邏輯500的讀操作或者到核心邏輯的寫操作,這會導致在核心邏輯內部發生的操作的沖突。
[0074]例如,當將發生實時寫操作(塊106)時,智能單元350將用戶定義的指令裝入JTAG調試器250中(塊108)。回憶到當用戶定義的指令被發送到指令寄存器710時,這產生通過外部測試數據寄存器750之一的方式位于串行輸入(TDI)和串行輸出(TDO)之間的路徑。因而,外部測試數據寄存器750被激活(塊110)。基于JTAG指令寄存器710中的定制指令以及外部測試數據寄存器750的內容,異步調試接口 100的智能單元350得到寫請求并且將它存儲在寄存器JTAG_write_sel_reg中,其中這一寄存器驅動MUX 70B (圖6)的選擇線。類似地,在外部測試數據寄存器750包含讀請求的情況下,異步調試接口 100的智能單元350得到讀請求并且將它存儲在寄存器JTAG_read_sel_reg中,其中這一寄存器驅動MUX 60B(圖5)的選擇線。
[0075]一旦外部測試數據寄存器750被激活,智能單元350就使用寫接口 300來在寄存器、存儲器單元或核心邏輯500的I/O端口上執行寫操作(塊112)。因為這實時地發生,因此優先級仲裁器400保持由智能單元350發起的寫入,直到OCP總線可用為止(塊114)。一旦OCP總線可用(塊116),優先級仲裁器400就經過側通道通路260將寫操作釋放到OCP總線(塊118)。因為JTAG調試器250不考慮實時操作,因此,如上所述,智能單元350替代地使用寫接口 300來執行到核心邏輯500的寫操作。
[0076]在多個寫操作被執行(塊120)的情況下,智能單元350觸發JTAG調試器250和TAP控制器300以便將空閑周期插入在接下來的寫操作之間(塊122)。因而,TAP控制器600保持在運行測試/空閑狀態中(在如由查找表550確定的周期數量內),同時讀/寫操作經過側通道260在核心邏輯500上執行。
[0077]因為JTAG調試器250和TAP控制器300使用測試時鐘進行操作并且核心邏輯500使用功能時鐘進行操作,因此空閑周期使測試套件450能夠在不干擾核心邏輯的正常操作的情況下在該核心邏輯上執行操作,因而使異步調試接口 100能夠獲得較高質量的測試結果。換句話說,測試結果反映核心邏輯500的實時操作。
[0078]異步調試接口 100因而允許JTAG代理和固件或軟件在沒有對昂貴的片上探測邏輯的依賴性的情況下調試系統的功能邏輯,并且提供調試復雜的片上系統狀態和基于片上系統的產品的有效和無縫的方式。
[0079]盡管關于有限數量的實施例描述了本申請,但是本領域中的技術人員將意識到根據其的許多修改和變形。意圖是所附權利要求涵蓋落在本發明的真實精神和范圍內的所有這樣的修改和變形。
【權利要求】
1.一種用于異步地調試核心邏輯的系統,所述核心邏輯包括中央處理單元、總線和功能塊,所述系統包括: 智能單元,包括由符合聯合測試行動組(符合JTAG)的調試器執行的測試程序,所述符合JTAG的調試器使用測試時鐘與符合JTAG的測試訪問端口(TAP)控制器一起操作,所述測試程序在所述核心邏輯上經過JTAG接口實時地運行; 讀接口,用于經過側通道從所述核心邏輯的寄存器、存儲器單元或輸入/輸出(I/O)端口進行讀取; 寫接口,用于經過所述側通道向所述核心邏輯的所述寄存器、所述存儲器單元或所述I/O端口進行寫入;以及 優先級仲裁器,用于在通過所述智能單元或所述核心邏輯內的電路到所述核心邏輯的所述總線的訪問之間進行仲裁; 其中,使用所述JTAG接口通過所述測試程序將位于到所述核心邏輯的所述寄存器、所述存儲器單元或所述I/O端口的接下來的寫操作或者從所述核心邏輯的所述寄存器、所述存儲器單元或所述I/O端口的接下來的讀操作之間的空閑狀態的預定數量發送到所述核心邏輯,其中,所述接下來的寫操作或所述接下來的讀操作經過所述側通道發生。
2.如權利要求1所述的系統,其中,所述空閑狀態的預定數量基于功能時鐘頻率和測試時鐘頻率。
3.如權利要求2所述的系統,其中,使用下面的公式計算所述空閑狀態的預定數量: N_idle_cycles = (TCK/clk)*MCF 其中,TCK是所述測試時鐘頻率,elk是所述功能時鐘頻率,并且MCF是乘法因子。
4.如權利要求3所述的系統,其中,所述乘法因子基于TAP控制器的數量、所述功能時鐘頻率和位于所述核心邏輯與所述TAP控制器之間的數據路徑的時延。
5.如權利要求3所述的系統,其中,所述乘法因子為四。
6.如權利要求1所述的系統,所述智能單元進一步包括: 查找表,包括: 功能時鐘的多個頻率; 測試時鐘的多個頻率;以及 基于功能時鐘頻率和測試時鐘頻率的多個空閑狀態; 其中,所述測試程序: 從所述查找表獲得所述空閑狀態的預定數量;并且 將所述預定數量發送到所述TAP控制器。
7.如權利要求1所述的系統,其中,所述預定數量包括所述TAP控制器的指令寄存器和數據寄存器之間的運行狀態/空閑狀態的數量。
8.如權利要求1所述的系統,其中,所述TAP控制器包括N個不同的TAP控制器單元,每一個TAP控制器單元耦合到所述核心邏輯內的不同電路。
9.一種用于異步地調試核心邏輯的方法,所述核心邏輯包括中央處理單元、總線和功能塊,所述方法包括: 通過智能單元使用測試時鐘在聯合測試行動組(JTAG)調試器上結合JTAG測試行動端口(TAP)控制器執行測試程序,所述測試程序在所述核心邏輯上經過JTAG接口實時地運 行; 通過所述測試程序將用戶定義的指令發送到所述JTAG調試器,其中,所述用戶定義的指令使寫選擇寄存器在寫接口中被使能; 通過所述測試程序發起到所述核心邏輯的第一寫操作,所述第一寫操作經過所述寫接口和所述核心邏輯之間的側通道發生,其中,所述JTAG調試器和所述JTAG TAP控制器不是側通道事務的一部分; 通過所述智能單元將空閑狀態的預定數量發送到所述核心邏輯,其中,所述智能單元使用所述JTAG調試器、所述TAP控制器和所述JTAG接口將所述空閑狀態發送到所述核心邏輯;并且 通過所述智能單元發起到所述核心邏輯的第二寫操作,其中,所述第二寫操作經過所述側通道被發送。
10.如權利要求9所述的方法,進一步包括: 通過優先級仲裁器中斷由所述智能單元發起的所述第一寫操作,其中,所述總線正在由所述核心邏輯的電路使用。
11.如權利要求10所述的方法,進一步包括: 通過所述優先級仲裁器允許所述第一寫操作使用所述側通道被發送到所述核心邏輯。
12.如權利要求9所述的方法,進一步包括: 通過所述智能單元從被裝入在所述JTAG調試器中的查找表獲得所述預定數量。
13.如權利要求9所述的方法,進一步包括: 基于功能時鐘頻率的頻率和測試時鐘的第二頻率計算所述預定數量。
14.如權利要求9所述的方法,進一步包括: 基于下面的公式計算所述預定數量:
N_idle_cycles = (TCK/clk)*MCF 其中,TCK是測試時鐘的頻率,elk是功能時鐘的頻率,并且MCF是乘法因子。
15.一種用于異步地調試核心邏輯的方法,所述核心邏輯包括中央處理單元、總線和功能塊,所述方法包括: 通過智能單元使用測試時鐘在聯合測試行動組(JTAG)調試器上結合JTAG測試行動端口(TAP)控制器執行測試程序,所述測試程序在所述核心邏輯上經過JTAG接口實時地運行; 通過所述測試程序將用戶定義的指令發送到所述JTAG調試器,其中,所述用戶定義的指令使讀選擇寄存器在讀接口中被使能; 通過所述測試程序發起從所述核心邏輯的第一讀操作,所述第一讀操作經過所述讀接口和所述核心邏輯之間的側通道發生,其中,所述JTAG調試器和所述JTAG TAP控制器不是側通道事務的一部分; 通過所述智能單元將空閑狀態的預定數量發送到所述核心邏輯,其中,所述智能單元使用所述JTAG調試器、所述TAP控制器和所述JTAG接口將所述空閑狀態發送到所述核心邏輯;并且 通過所述智能單元發起從所述核心邏輯的第二讀操作,其中,所述第二讀操作經過所述側通道被發送。
16.如權利要求15所述的方法,進一步包括: 通過優先級仲裁器中斷由所述智能單元發起的所述第一讀操作,其中,所述總線正在由所述核心邏輯的電路使用。
17.如權利要求16所述的方法,進一步包括: 通過所述優先級仲裁器允許使用所述側通道將所述第一讀操作發送到所述核心邏輯。
18.如權利要求15所述的方法,進一步包括: 通過所述智能單元從被裝入在所述JTAG調試器中的查找表獲得所述預定數量。
19.如權利要求15所述的方法,進一步包括: 基于功能時鐘頻率的頻率和測試時鐘的第二頻率計算所述預定數量。
20.如權利要求15所述的方法,進一步包括: 基于下面的公式計算所述預定數量: N—idle—cycles = (TCK/clk)^MCF 其中,TCK是測試時鐘的頻率,elk是功能時鐘的頻率,并且MCF是乘法因子。
【文檔編號】G06F11/36GK104246712SQ201280071797
【公開日】2014年12月24日 申請日期:2012年3月25日 優先權日:2012年3月25日
【發明者】H·林甘納加利, V·凱里格哈塔姆 申請人:英特爾公司