用于核心的全局低功率捕獲方案的制作方法
【專利摘要】本發明提供了用于核心的全局低功率捕獲方案。提供了用于測試集成電路的方法,以緩解掃描捕獲模式期間的峰值功率問題。方法包括,對用于集成電路上的多個核心和高速緩存的每一個的第一時間窗的各自的持續時間進行編程。方法進一步包括對用于多個核心和高速緩存的每一個的第一時間窗期間的第一時鐘信號的脈沖的數目進行計數。隨后,方法包括,通過在各自的第二時間窗期間,生成用于多個核心和高速緩存的每一個的第二時鐘信號的脈沖,來將捕獲脈沖交錯到多個核心和高速緩存,其中所生成的脈沖的數目基于為多個核心和高速緩存的每一個所計數的各自的第一時鐘信號脈沖的數目。
【專利說明】用于核心的全局低功率捕獲方案
【技術領域】
[0001]根據本發明的實施例總體上涉及測試集成電路,更具體地涉及在集成電路上實施基于掃描的測試。
【背景技術】
[0002]集成電路或者電路組合通常包括在內部生成或者由外部控制的一個或多個時鐘。每個時鐘都經由偏斜最小化網絡分布到存儲單元集,偏斜最小化網絡將時鐘脈沖在幾乎相同的時間傳遞到所有存儲單元。這樣的時鐘、其相關的存儲單元以及由存儲單元界定的組合邏輯框形成時鐘域。
[0003]電路的掃描測試是眾所周知的并且是最廣泛使用的用于測試集成電路的可測試性設計(DFT)技術。其用可以鏈接以形成一個或多個掃描鏈的掃描單元來代替所有或部分原始存儲單元。基于掃描的集成電路或者電路組合可以通過對移位周期隨后是捕獲周期進行重復來進行測試。在移位周期,將偽隨機或者預定測試刺激源(stimuli)移位到所有掃描鏈中,使得其輸出作為可控制的主要輸入。在捕獲周期,將測試響應鎖存在一些或所有掃描鏈中,使得其輸入作為可觀察的主輸出,因為捕獲到掃描鏈中的值可以在下一個周期移位輸出。
[0004]基于掃描的測試由于測試設備的高資本投入以及可能要求大量的時間來運行因此是昂貴的。用于基于掃描的測試的測試時間取決于測試運行得多快以及測試的容量,例如測試圖案的量級。由于對于減小基于掃描的測試的測試成本和優化集成電路發布的周轉期的高要求,因此掃描移位操作需要在不斷提高的時鐘速度下運行。
[0005]在較高的時鐘速度下運行移位操作有助于減小總體測試時間。然而,這可能造成功率問題,其導致觸發器和門在不適當電源條件下的不正確表現。這可能造成由于測試下的硅的電或熱應力的誤報,其可能導致顯著的成品率損失。因此,測試系統的使用者別無選擇,只有降低時鐘速度以最小化功率相關的問題,這導致更長的測試時間。
[0006]此外,由于在測試掃描移位和掃描捕獲操作期間的非常高的翻轉率和邏輯活動,無論有無測試壓縮,在掃描測試期間的動態功率消耗總是高于功能模式并且可能導致可能損壞封裝的測試期間的極度熱耗散。所增加的動態功耗可能造成芯片中的穩定性問題,這可能導致芯片隨后在實際應用中的故障。這是因為,在掃描測試模式期間,功率耗散將超出設計用于芯片和封裝的峰值功率。
[0007]某些常規系統已經嘗試解決掃描捕獲周期期間的功率減小,但是其在計算時間方面的高成本或者要求大量的實現和驗證工作。例如,在本行業已經開發某些技術以實施低功率ATPG圖案生成,其中圖案生成工具將基于預定的翻轉估計來使能集成電路的某些區域的時鐘門控單元,而禁用其他的時鐘門控單元。然而,該技術要求大量的存儲器和CPU資源。
[0008]此外,還開發了 ATPG中的低功率捕獲X填充方法,以減小捕獲模式中的掃描觸發器的輸出處的過渡數目。然而,這些方法由于其導致低于隨機填充的缺陷覆蓋,因此也是有問題的。
[0009]另外,其他常規系統實現低功率捕獲邏輯,使得ATPG工具能夠基于給定的目標,在集成電路的選擇性的區域中捕獲時鐘活動。該技術的示例在申請號為13/444,780和13/444,782、兩者都名為“Power Droop Reduction Via Clock-Gating For At-Speed ScanTesting”、發明人為Amit Sanghani和Bo Yang的美國專利申請中公開。該技術是有效的,因為其阻止ATPG工具實施過多的計算,并且其在運行時間方面較快,然而,要求大量的實現和驗證工作來實現并且存在大量的邏輯開銷。
【發明內容】
[0010]因此,需要允許掃描捕獲操作運行在高時鐘速度,同時減小全速(例如在應用程序速度)捕獲周期期間的峰值功率,而無任何覆蓋影響和最小測試時間影響的系統。另外進行掃描測試模式功率監控,以避免在生產測試期間測試模式下對功率分布網絡施加壓力是必要的。本發明的實施例提供用于減小掃描捕獲模式期間的峰值功率問題的方法和系統,其計算效率高并且提供高的缺陷覆蓋。
[0011]根據本發明一個實施例,交錯捕獲時鐘到CPU核心和高速緩存例如L2C高速緩存,被用于減小在掃描捕獲周期高于可接受的峰值功率量級,從而允許掃描捕獲期間的全速測試,其轉而減小生產測試期間的總體測試時間。
[0012]在一個實施例中,提供用于測試集成電路的方法。方法包括,對用于集成電路上的多個核心和高速緩存的每一個的第一時間窗的各自的持續時間進行編程。方法進一步包括對用于多個核心和高速緩存的每一個的第一時間窗期間的第一時鐘信號的脈沖的數目進行計數。隨后方法包括,通過在各自的第二時間窗期間,生成用于多個核心和高速緩存的每一個的第二時鐘信號的脈沖,來將捕獲脈沖交錯到多個核心和高速緩存,其中所生成的脈沖的數目基于為多個核心和高速緩存的每一個所計數的各自的第一時鐘信號脈沖的數目。
[0013]在另一個實施例中,公開了用于測試集成電路的方法。方法包括,對用于集成電路上的多個模塊的每一個的第一時間窗的各自的持續時間進行編程,其中模塊包括核心和高速緩存。進一步,方法包括對用于多個模塊的每一個的第一時間窗期間的第一時鐘信號的脈沖的數目進行計數。最后方法包括,通過在各自的第二時間窗期間,生成用于多個核心和高速緩存的每一個的第二時鐘信號的脈沖,來將捕獲脈沖動態交錯到模塊的第一子集,其中所生成的脈沖的數目基于為多個模塊的每一個所計數的各自的第一時鐘信號脈沖的數目。
[0014]在不同的實施例中,提供了用于測試集成電路的系統。系統包括,包括測試器處理器的計算機系統,其中測試器處理器通信地耦連到集成電路。進一步集成電路包括多個核心和高速緩存、可操作為對用于集成電路上的多個核心和高速緩存的每一個的第一時間窗的各自的持續時間進行編程的I/o端口、以及多個快速時鐘生成模塊。快速時鐘生成模塊配置為,對用于多個核心和高速緩存的每一個的第一時間窗期間的第一時鐘信號的脈沖的數目進行計數。快速時鐘生成模塊進一步配置為,通過在各自的第二時間窗期間生成用于多個核心和高速緩存的每一個的第二時鐘信號的脈沖,來將捕獲脈沖交錯到多個核心和高速緩存,其中所生成的脈沖的數目基于為多個核心和高速緩存的每一個所計數的各自的第一時鐘信號脈沖的數目。[0015]以下結合附圖更詳細的描述將提供對本發明的本質和優點的更好的理解。
【專利附圖】
【附圖說明】
[0016]在附圖的圖中以示例而非限制的方式對本發明的實施例進行說明,其中同樣的參考數字指代類似元件。
[0017]圖1是常規的基于掃描的測試的示范性掃描移位和掃描捕獲周期的時序圖。
[0018]圖2是常規的基于掃描的測試的在示范性掃描移位和掃描捕獲周期期間功率活動的時序圖。
[0019]圖3A是能夠實現本公開的實施例的、計算系統的示例的框圖。
[0020]圖3B是根據本發明的一個實施例的、本發明的實施例可以在其上實現的自動化測試設備裝置的示意圖。
[0021]圖4是示出了根據本發明的一個實施例的、用于將測試時鐘和測試處理系統中的功能時鐘進行復用的示例性電路的示意框圖。
[0022]圖5示出了根據本發明一個實施例的、動態快速測試模式(FTM)引擎的時序圖。
[0023]圖6A示出了根據本發明一個實施例的、交錯模式I的時序圖。
[0024]圖6B示出了根據本發明一個實施例的、交錯模式2的時序圖。
[0025]圖6C示出了根據本發明一個實施例的、交錯模式3的時序圖。
[0026]圖6D示出了根據本發明一個實施例的、交錯模式O的時序圖。
[0027]圖7示出了根據本發明一個實施例的、用于使用動態FTM引擎實現捕獲交錯的示例性電路。
[0028]圖8示出了根據本發明一個實施例的、用于使用動態FTM引擎實現動態捕獲時鐘交錯示例性電路。
[0029]圖9描繪了根據本發明一個實施例的、針對基于掃描的測試解除在掃描捕獲周期期間在全局級的峰值功率問題的示例性過程的流程圖。
【具體實施方式】
[0030]現在將對本公開的各實施例加以詳細參考,其示例在附圖中示出。在結合這些實施例進行描述的同時,應理解它們并不意圖將本公開限定于這些實施例。相反,本公開意在涵蓋可以被包括在由所附權利要求所定義的本公開的精神和范圍內的替代、修改或等同物。此外,在下面本公開的詳細描述中,將闡述大量具體細節以提供對本公開更徹底的理解。然而,應理解本公開可以在沒有這些具體細節的情況下被實施。在其他示例中,未詳細描述公知的方法、算法、部件和電路以避免對本公開的各方面內容造成不必要的混淆。
[0031]接下來的部分詳細描述以算法、邏輯框、處理以及對計算機存儲器內數據比特進行操作其他象征性表示來提出。這些描述和表示是由數據處理領域技術人員所使用的手段,以向本領域的其他技術人員最有效地傳達他們工作的實質。在本應用中,算法、邏輯框、處理等等,被設想為得出期望結果的步驟或指令的自洽序列。步驟利用物理量的物理操縱。通常,盡管不是必要地,這些量采用能在計算機系統中被存儲、轉移、組合、對比和另外操縱的電或磁信號的形式。已經證明,主要是出于共同使用的原因,將這些信號稱為事務處理、比特、值、元素、符號、字符、樣本、像素等等有時是方便的。[0032]然而應該牢記,所有這些類似的術語是與合適的物理量相關聯的,并且僅僅是附屬于這些量的方便的標簽。除非特別的聲明否則如從以下所述所明確的,應該理解,貫穿本公開利用諸如“編程”、“計數”、“交錯”、“路由”、“生成”、“移位”、“分配”、“關聯”、“移動”、“存取”、“確定”、“識別”、“高速緩存”、“維持”、“增量”等等術語的描述,是指計算機系統,或類似電子計算設備,或處理器(例如圖3A的系統110)的動作和過程(例如圖900的流程圖9)。計算機系統或類似電子計算設備對計算機系統存儲器、寄存器或其他這樣的信息存儲、傳送或顯示設備中的表示物理量(電的)的數據進行操作和變化。
[0033]本文描述的實施例可一般圍繞著存在于某一形式的計算機可讀存儲介質上的計算機可執行指令加以討論,諸如由一臺或多臺計算機或其他設備執行的程序模塊。以示例的方式但非限制,計算機可讀存儲介質可以包括非暫時性計算機可讀存儲介質和通信介質;非暫時性計算機可讀介質包括除了暫時性傳播信號之外所有的計算機可讀介質。通常,程序模塊包括例程、程序、對象、部件、數據結構等等,其執行特定任務或實現特定的抽象數據類型。程序模塊的功能可以在各種實施例按照期望加以組合或分配。
[0034]計算機存儲介質包括易失性和非易失性、可移動的和不可移動的以任何方法或技術實現的介質,用于存儲信息諸如計算機可讀指令、數據結構、程序模塊或其他數據。計算機存儲介質包括但不限于,隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦可編程ROM(EEPR0M)、閃速存儲器或其他存儲器技術、壓縮光盤ROM (⑶-ROM)、數字多用盤(DVD)或其他光學存儲、盒式磁帶、磁帶、磁盤存儲或其他磁性存儲設備、或任何其他可用來存儲期望信息并可訪問以重新得到這些信息的介質。
[0035]通信介質可體現計算機可執行指令、數據結構及程序模塊,并包括任何信息遞送介質。以示例的方式但非限制于,通信介質包括有線介質諸如有線網絡或直接有線連接,以及無線介質諸如聲頻、射頻(RF)、紅外線及其他無線介質。以上的任意組合也可包括在計算機可讀介質范圍內。
[0036]圖3A是能夠實現本公開的實施例的、測試器計算系統110的示例的框圖。計算系統110寬泛地代表任何能夠執行計算機可讀指令的單或者多處理器計算設備或系統。計算機系統110的示例包括但不限于,工作臺、筆記本電腦、客戶側終端、服務器、分布式計算系統、手持設備或任何其他計算系統或設備。在其大多數基本配置中,計算系統110可以包括至少一個處理器114和系統存儲器116。
[0037]測試器處理器114通常代表任何類型或形式的、能處理數據或解釋并執行指令的處理單元。在某些實施例中,處理器114可以從軟件應用或模塊接收指令。這些指令可以使處理器114實施一個或多個本文描述和/或示出的示范性實施例的功能。
[0038]系統存儲器116通常代表任何類型或形式的、能存儲數據和/或其他計算機可讀指令的易失性或非易失性存儲設備或介質。系統存儲器116的示例包括但不限于,RAM、ROM、閃速存儲器或任何其他適合的存儲器設備。雖然不加以要求,但在某些實施例中計算系統110可以包括易失性存儲器單元(諸如,系統存儲器116)和非易失性存儲設備(諸如,主存儲設備132)這兩者。
[0039]計算系統110除處理器114和系統存儲器116外還可以包括一個或多個部件或元件。例如,在圖3A的實施例中,計算系統110包括存儲器控制器118、輸入/輸出(I/O)控制器120以及通信接口 122,它們每個都可以經由通信基礎設施112互相連接。通信基礎設施112通常代表任何類型或形式的、能促進計算設備中一個或多個組件之間通信的基礎設施。通信基礎設施112的示例包括但不限于,通信總線(諸如工業標準架構(ISA)、外圍部件互連(PCI)、PCI Express (PCIe)或類似總線)和網絡。
[0040]存儲器控制器118通常代表任何類型或形式的、能處理存儲器或數據或者能控制計算系統110的一個或多個部件間通信的設備。舉例來說,存儲器控制器118可以經由通信基礎設施112來控制處理器114、系統存儲器116及I/O控制器120之間的通信。
[0041 ] I/O控制器120通常代表任何類型或形式的、能協調和/或控制計算設備的輸入輸出功能的模塊。舉例來說,I/o控制器120可以控制或促進計算系統110的一個或多個元件之間的數據的轉移,諸如處理器114、系統存儲器116、通信接口 122、顯示適配器126、輸入接口 130以及存儲接口 134。
[0042]通信接口 122寬泛地代表任何類型或形式的、能促進示范性計算系統110和一個或多個附加設備之間通信的通信設備或適配器。舉例來說,通信接口 122可以促進計算系統110和包括附加計算系統的私人或公共網絡之間的通信。通信接口 122的示例包括但不限于,有線網絡接口(諸如網絡接口卡)、無線網絡接口(諸如無線網絡接口卡)、調制解調器以及任何其他適合的接口。在一個實施例中,通信接口 122經由至諸如因特網的網絡的直接鏈路提供了到遠程服務器的直接連接。通信接口 122也可以通過任何其他適合的連接來間接提供這種連接。
[0043]通信接口 122也可以代表主機適配器,配置為經由外部總線或通信通道來促進計算系統110與一個或多個附加網絡或存儲設備之間的通信。主機適配器的示例包括但不限于,小型計算機系統接口(SCSI)主機適配器、通用串行總線(USB)主機適配器、IEEE (電氣與電子工程師協會)1394主機適配器、串行高級技術附件(SATA)和外部SATA (eSATA)主機適配器、高級技術附件(ATA)和并行ATA (PATA)主機適配器、光纖通道接口適配器、以太網適配器等等。通信接口 122也可以允許計算系統110參與分布式或遠程計算。例如,通信接口 122可以從遠程設備接收指令,或向遠程設備發送指令用于執行。
[0044]如圖3A所示,計算系統110還可以包括至少一個經由顯示適配器126耦合到通信基礎設施112的顯示設備124。顯示設備124通常代表任何類型或形式的、能視覺顯示由顯示適配器126所轉發的信息的設備。類似地,顯示適配器126通常代表任何類型或形式的、配置為轉發圖形、文本和其他數據用于在顯示設備124上顯示的設備。
[0045]如圖3A所示,計算系統110也可包括至少一個經由輸入接口 130耦合到通信基礎設施112的輸入設備128。輸入設備128通常代表任何類型或形式的、能向計算系統110提供計算機生成或人工生成的輸入的輸入設備。輸入設備128的示例包括但不限于,鍵盤、定位設備、語音識別設備、控制桿、觸摸屏、擴音器或任何其他輸入設備。
[0046]如圖3A所示,計算系統110也可包括主存儲設備132和經由存儲接口 134耦合到通信基礎設施112的可選備用存儲設備133。存儲設備132和133通常代表任何類型或形式的、能存儲數據和/或其他計算機可讀指令的存儲設備或介質。舉例來說,存儲設備132和133可以是磁盤驅動器(例如,所謂的硬盤驅動器)、軟盤驅動器、磁帶驅動器、光盤驅動器、閃盤驅動器等等。存儲接口 134通常代表任何類型或形式的、用來在存儲設備132和133與計算系統110的其他部件之間轉移數據的接口或設備。
[0047]在一個示例中,數據庫140可存儲在主存儲設備132內。數據庫140可代表單個數據庫或計算設備的一部分,或者它可代表多個數據庫或計算設備。舉例來說,數據庫140可代表(存儲于)計算系統110的一部分,和/或圖2 (下文)中示范性網絡架構200的一部分。或者,數據庫140可代表(存儲于)一個或多個能被諸如計算系統110和/或部分網絡架構200所訪問的物理上單獨的設備。
[0048]繼續參考圖3A,存儲設備132和133可配置為,對配置為存儲計算機軟件、數據或其他計算機可讀信息的可移動存儲單元進行讀取和/或寫入。適合的可移動存儲單元的示例包括但不限于,軟盤、盒式磁帶、光盤、閃速存儲器設備等等。存儲設備132和133還可包括其他類似結構或設備,以允許計算機軟件、數據或其他計算機可讀指令載入計算系統110。舉例來說,存儲設備132和133可配置為讀取和寫入軟件、數據或其他計算機可讀信息。存儲設備132和133還可以是計算系統110的一部分,或可以是通過其他接口系統訪問的單獨的設備。
[0049]許多其他設備或者子系統可以連接到計算系統110。相反,無需提供圖3A所示出的所有部件和設備以施行本文所述的實施例。以上所引用的設備和子系統還可以按照不同于圖3A所示的方式來互連。計算系統110還可以采用任何數目的軟件、固件和/或硬件配置。以舉例來說,本文公開的示范性實施例可在計算機可讀介質上編碼為計算機程序(也稱作計算機軟件、軟件應用、計算機可讀指令或計算機控制邏輯)。
[0050]包含計算機程序的計算機可讀介質可載入計算系統110。存儲于計算機可讀介質上的全部或部分計算機程序隨后可存儲于系統存儲器116和/或存儲設備132和133的各部分中。當由處理器114執行時,載入計算系統110中的計算機程序可使處理器114實施和/或作為實施本文描述和/或示出的示范性實施例的功能的手段。附加地或替代地,本文描述和/或示出的示范性實施例可在固件和/或硬件中實現。
[0051]以舉例來說,根據本發明的實施例的運行基于掃描的測試的計算機程序可以存儲在計算機可讀介質上并且隨后存儲在系統存儲器116和/或存儲設備132和133的不同部分。當計算機程序由處理器114執行時,使得處理器114執行和/或是用于實施實行本發明的基于掃描的測試的過程所需的功能的手段。
[0052]圖3B是根據本發明的一個實施例的、目前基于掃描的測試系統可以在上實現的自動化測試設備(ATE)裝置的示意圖。在一個實施例中,圖3B的測試器計算系統110實施與參考圖3A所述的計算系統110相同的功能,并且包括一個或多個鏈接的計算機。在其他實施例中,測試器計算系統通常只包括單個計算機。測試器計算系統110是總體系統控制單元,包括測試器處理器114,其運行負責指揮在測試下的經連接的設備例如正在掃描測試的集成電路上的測試的用于ATE的軟件。
[0053]通信器總線191提供測試器計算系統和測試器硬件之間的高速電子通信信道。通訊器總線還可以稱為背板、模塊連接使能器或者系統總線。物理上,通信器總線191是可能是電的或光的等高速、高帶寬多路連接總線。
[0054]測試器硬件181包括提供測試刺激源給在測試下的設備(DUT) 189和190并測量DUT對刺激源的反應,并且將其與所期望的反應進行比較所需的電子和電氣部件和連接器的復雜集。在本發明的一個實施例中,DUT可以是多個正掃描測試的集成電路。
[0055]用于核心的全局低功率捕獲方案
[0056]本發明的實施例提供用于減小在掃描捕獲模式期間在全局級的峰值功率問題的方法和系統。根據本發明一個實施例,通過使用動態快速測試模式(FTM)引擎交錯捕獲時鐘到核心和高速緩存例如L2C高速緩存,來減小掃描捕獲期間的全局級的峰值功率。這允許全速捕獲,而無任何覆蓋影響以及最小的測試時間影響。
[0057]圖1是常規的基于掃描的測試的示范性掃描移位和掃描捕獲周期的時序圖。基于掃描的測試是測試集成電路的操作的經濟有效的方案,其包括諸如觸發器電路或者鎖存器的功能邏輯元件和寄存器元件,具有不同元件之間的功能互連。集成電路設計包括用于重新配置集成電路元件的互連的特定規范,使得在一個或多個輸入引腳串行進入的測試數據信號可以沿不同于從一個寄存器元件到另一個的正常功能系統的路徑的掃描鏈移位(“掃描”),以便將測試矢量的信號放置到需要的位置。這在圖1的時期Tl期間發生,其是掃描移位周期。當由掃描進入(ScanIn)信號矢量103代表的輸入通過脈沖時鐘(Clock)信號102掃描進入時,掃描使能(ScanEnable)信號101被使能并且在該時間期間設定為高。
[0058]集成電路隨后臨時返回其正常功能系統配置一個或多個時鐘脈沖,以在給定測試矢量值,產生與來自集成電路中的正常邏輯功能的具體邏輯功能結果對應的測試輸出。這些輸出在掃描捕獲周期T2被捕獲。在掃描捕獲模式,掃描翻轉器將捕獲組合邏輯的響應,以準備使用掃描卸載來移位該捕獲響應。可以施加兩個脈沖,啟動(Launch) 105和捕獲(Capture) 106,以產生在集成電路中的觸發器和鎖存器的輸出處的具體邏輯功能的測試輸出。
[0059]在T3期間集成電路隨后回復到掃描移位配置,并移位出如圖1中由信號矢量掃描出(Scan Out) 104所代表的測試輸出,沿掃描鏈到在該處測試輸出可以被取回并與期望的結果進行比較以診斷故障的一個或多個輸出引腳。
[0060]在較高的時鐘速度下運行掃描移位操作有助于減小總體測試時間。然而,這可能造成集成電路中的觸發器和鎖存器同時切換導致的功率問題。針對基于掃描的測試,測試功率主要分為掃描鏈移位功率和掃描鏈捕獲功率。在掃描移位模式期間,移位時鐘應用于貫穿掃描鏈加載掃描數據和卸載掃描數據。由于與功能模式相比的高的翻轉率和邏輯活動,平均的移位功率將支配掃描移位期間的散熱。另外極度峰值功率可能造成由于對于功率導軌的電壓下降的掃描鏈故障,并且導致上述的成品率損失。
[0061]圖2是常規的基于掃描的測試的在示范性掃描移位和掃描捕獲周期期間功率活動的時序圖。在掃描移位期間的峰值功率取決于在掃描時鐘255的激活沿上的相同時間時控的觸發器的數目。從圖2的功率分布圖250的表示可以看出,在時期201和203中的掃描移位周期期間所有觸發器一起翻轉導致極度峰值功率情況。這導致高于功率導軌上的可取的電壓下降,其降低設備速度并且可能造成誤報。另外這導致由于每個移位時鐘周期的多個極度功率峰值的高的平均移位功率。減小移位時鐘255的每激活沿所翻轉的觸發器的數目可以有效減小峰值功率。
[0062]某些相關的共同未決的申請公開了針對基于掃描的測試的、用于減小掃描移位期間在局部級和全局級的峰值功率問題的技術。2012年12月28日提交的申請號為13730551、律師事務所卷號為 NVID-PSC-11-0240-US1、名為 “SYSTEM FOR REDUCING PEAKPOWER DURING SCAN SHIFT AT THE LOCAL LEVEL FOR SCAN BASED TESTS”、
【發明者】為MiIindSonawane> Satya Puvvada 和 Amit Sanghani 的美國專利申請。此外,2012 年 12 月 28 日提交的申請號為13730628、律師事務所卷號為NVID-PSC-11-0240-US2、名為“SYSTEM FORREDUCING PEAK POWER DURING SCAN SHIFT AT THE GLOBAL LEVEL FOR SCAN BASED TESTS”、
【發明者】為 Milind Sonawane、Satya Puvvada 和 Amit Sanghani 的美國專利申請。
[0063]然而上述兩個共同未決的申請并未解決解除掃描捕獲周期期間的峰值功率問題的這一問題。從圖2的捕獲期202期間的功率分布圖250可以看出,掃描捕獲期間的峰值功率和掃描移位期間一樣是有問題的。
[0064]在一個實施例中,本發明針對解除應用程序速度(或者“全速”)捕獲功率問題。為了使用自動測試圖案生成(ATPG)測試來檢測全速時序錯誤,需要以功能時鐘速度對捕獲時鐘進行脈沖。
[0065]然而如從圖2中捕獲期期間功率分布圖250的峰值可以看到的,由于與從時鐘域中的組合邏輯捕獲響應并將其移位到掃描鏈相關聯的高的切換速率,捕獲周期期間高速度的功能時鐘是個問題。在捕獲周期期間對于給定時鐘沿處的高數目的過渡可能遠大于功能模式,其可能造成掃描期間的較高的瞬時電流消耗。較高的電流轉而造成使得功率網格中的較高功率下降的高的壓降(或者IR下降)。網格中高于正常功率下降的這些下降造成單元延遲(cell delay)增加,如果時鐘周期或者電壓沒有相應增加則其可能造成功能部件故障,因此導致成品率損失。該故障機制在全速測試期間更為突出,因為其對于路徑延遲比定期固定測試更敏感。
[0066]此外,IR下降可能導致突出的已知的時鐘延伸(擴寬的時鐘周期),其可能導致自動測試設備(ATE)上的錯誤通過,并且可能造成測試逃逸。此外,過度IR下降可能導致在不適當功率(或者VDD)條件下的不正確表現,其可能造成導致成品率下降的誤報。
[0067]因此,本發明通過交錯捕獲時鐘到核心例如CPU或者GPU核心以及集成電路上的高速緩存例如L2C高速緩存來解決掃描捕獲功率問題。在本發明之前,測試下集成電路上的所有CPU核心和的高速緩存會在相同時間在捕獲期間被脈沖,從而造成峰值功率問題。在一個實施例中,為了完成交錯,本發明利用專利號為7,305,598、申請日為2005年3月25 日、名為 “TEST CLOCK GENERATION FOR HIGHER-SPEED TESTING OF A SEMICONDUCTORDEVICE”的美國專利申請中所公開的動態快速測試模式(FTM)引擎。
[0068]測試下的半導體芯片典型分為單獨的知識產權(IP)核心(或者構成功能完整的單元的制定電路)。在一個實施例中,本發明可以用于交錯時鐘例如到共享功率導軌的芯片上的所有IP。此外,本發明可以用于不同類型的集成電路例如中央處理單元(CPU)、圖形處理單元(GPU)等。
[0069]圖4是示出了根據本發明一個實施例的、用于將測試時鐘與處理系統例如正使用掃描測試方法論測試的CPU或者GPU芯片中的功能時鐘進行復用的示例性電路的示意圖。如圖4所示,測試時鐘410可以在時鐘樹的根處與功能時鐘405進行復用,用于較早的時序收斂并且保存路由資源。測試時鐘410和功能時鐘405兩者由ATE通過耦連到系統110中的測試器處理器114的1/0引腳來外部驅動。信號TeSt_m0de415用于在功能時鐘和測試時鐘之間進行選擇。所選擇的時鐘隨后路由到示例性核心的核心1420和核心2430以及系統中的高速緩存L2C425。對于基于掃描的測試系統要求單獨的測試時鐘和功能時鐘,這是因為典型掃描移位周期不能操作在功能周期在其上操作的相同的高頻率。
[0070]在另一個實施例中,本發明使用用于生成用于全速測試的時鐘的動態FTM模塊。如上所述,由于因峰值功率問題而不能運行在應用程序速度的掃描移位周期,在ATPG期間復用到系統中的各種IP的測試時鐘410是較低頻率的。然而捕獲周期需要運行在用于時鐘域中的組合邏輯的功能時鐘的較高的速度下,以產生準確的結果。因此,動態FTM引擎用于動態發出多個全速脈沖,以促進快速序列的和的其他全速測試諸如邏輯內建自測試(LBIST)。
[0071]雖然不那么復雜的常規系統典型在捕獲周期期間僅要求啟動和捕獲脈沖,如圖1和圖2所示,但更復雜的系統通常要求捕獲周期期間的多個脈沖以得到更多的測試覆蓋。由于對于更復雜的系統在捕獲周期期間所需的捕獲脈沖的數目可能跨完全的圖案集而改變,因此需要由測試器系統發射的以得到完全覆蓋的全速脈沖的數目可能是硬編碼的。取而代之,需要可變的并且優選是可編程的。
[0072]在一個實施例中,如圖5所示,在捕獲周期的時間窗Twindow510期間的測試時鐘410脈沖的數目由動態FTM引擎計數,并且在Temit時間窗530期間發射相同數目的全速脈沖。然而計數測試時鐘脈沖的時間窗的持續時間可以例如由用戶在JTAG寄存器中編程。改變Twindow的持續時間將轉而變化由FTM引擎所發射的捕獲周期的數目。可替代地,在一個實施例中,計數測試時鐘脈沖的窗的最優大小可以由測試器處理器114動態確定。
[0073]圖5示出了根據本發明一個實施例的、用于動態快速測試模式(FTM)引擎的時序圖。在掃描移位周期,掃描使能101 (如圖1所示)是有效的(asserted),并且測試時鐘102翻轉以應用掃描測試的初始狀態。如圖5所示,一旦完成移位,則掃描使能信號將是無效的(deasserted)并且FAST_STEP_EN501將是有效的。FAST_STEP_EN501觸發FTM弓丨擎中的控制邏輯以選擇快速時鐘信號,快速時鐘clk_in503,而非用于捕獲脈沖的生成的TEST CLK410,以路由到系統中的掃描鏈。FTM引擎從鎖相環(PLL)接收快速時鐘輸入。
[0074]在一個實施例中,在FTM引擎中存在兩個計數器。一個計數器保持跟蹤快速時鐘clk_in503的數目以確定Twindow510的持續時間,其可以是可編程的。另一個計數器保持跟蹤在Twindow510期間的測試時鐘的數目。然后在Temit窗530期間FTM引擎將發射與在Twindow窗期間的測試時鐘脈沖的數目相同數目的快速時鐘脈沖用于掃描捕獲。例如,在圖5中在計數Twindow期間的TEST CLK410信號的三個脈沖之后,FTM引擎發射三個快速時鐘周期為clk_out信號502。在Temit530之后,掃描移位周期將開始并且掃描使能101將是有效的,以掃描出捕獲周期的結果。
[0075]應該再次注意,因為用于捕獲周期的快速脈沖在于Twindow的結束處開始的Temit期間發射,所以捕獲脈沖開始的點可以通過控制Twindow的大小來控制,Twindow的大小可通過JTAG寄存器編程。
[0076]圖7示出了根據本發明的一個實施例的、用于使用動態FTM引擎705來實現捕獲交錯的示例性電路。示例性電路實施在具有兩個核心和L2C的系統上的捕獲周期交錯。然而,本發明不限于此。在不同的實施例中,可以修改電路以在具有多個核心和高速緩存的集成電路(IC)上操作。圖6A、6B、6C和6D示出了根據本發明一個實施例的、由圖7的示例性電路實現的交錯模式1、交錯模式2、交錯模式3和交錯模式O的各自的示例性時序圖。
[0077]在一個實施例中,本發明的時鐘交錯通過為集成電路中的每個核心和高速緩存創建不同的Twindow和Temit區域來獲得。這可以通過對圖7中的寄存器中的3個即fast_step_cnt L2C710、fast_step_cnt_core2711 和 fast_step_cnt_corel712 進行編程來進行。然而,在捕獲期間對集成電路中的IP核心和高速緩存之間的時鐘進行交錯的挑戰在于,系統需要考慮核心和高速緩存之間的任何路徑。舉例來說,在圖4中核心1420和核心2430兩者都與L2C425共享公共路徑。如果至所有這三個模塊的時鐘被交錯,那么對于核心I和L2C之間以及核心2和L2C之間的路徑會丟失覆蓋。因此,需要在核心I和L2C兩者一起進行脈沖的周期中評估核心I和L2C之間的路徑。類似,需要在核心2和L2C兩者被一起進行脈沖的周期中評估核心2和L2C之間的路徑。
[0078]在典型系統中,半導體上可能不存在IP核心之間的路徑,但是芯片上會存在核心和高速緩存之間的路徑。然而,本發明的原理將類似地也可應用于各種核心之間存在組合路徑的實施中。
[0079]在所有三個fast_step_cnt 寄存器即 fast_step_cnt L2C710、fast_step_cnt_core2711和fast_step_cnt_corel712編程為具有不同值的情況中,以下三個不同ATPG運行將要求最小化由于時鐘交錯的覆蓋丟失。
[0080]1.如圖6C的交錯模式3所示,由信號波形601、602和603分別代表的、至核心1、核心2、和L2C的捕獲脈沖時鐘將會相互之間進行交錯。另外,如圖6C中所見,由于在fast_step_cnt寄存器中的經編程的不同的值,用于核心和L2C模塊的每一個的Twindow持續時間不同。Twindow_corel604 比 Twindow_core2605 短,Twindow_core2605 轉而比 Twindow_L2C605短。結果,用于核心和L2C模塊的每一個的Temit區域在不同的時間開始,從而允許用于所有三個模塊的捕獲脈沖相對于彼此交錯。因為所有核心和L2C被個別地進行脈沖,所以核心和L2C之間的路徑在后續ATPG運行中需要進行遮蔽(mask)和評估。
[0081 ] 2.如由圖6A的交錯模式I所示,當核心I和L2C —起被進行脈沖而核心2被交錯時,核心I和L2C之間的路徑接收覆蓋。在該運行期間核心2和L2C之間的路徑將被遮蔽。捕獲脈沖由核心I和L2C在由信號波形610所指示的相同的時間接收。由核心2所接收并由信號波形611所指示的捕獲脈沖相對信號610被交錯。
[0082]3.最后,如圖6B中的交錯模式2的波形618所示,為接收核心2和L2C之間的路徑的覆蓋,核心2和L2C需要一起進行脈沖。同時,如由波形617所示,核心I時鐘將被交錯并且因此在該運行中核心I和L2C之間的路徑將被遮蔽。
[0083]圖6D簡單示范操作的后備模式,其中沒有時鐘的交錯。核心1、核心2和L2C將都在由波形621所指示的相同的時間得到捕獲脈沖。如果在具體測試配置中時鐘交錯不能實現或者不需要實現,那么使用該模式。
[0084]圖6和7中所示的靜態捕獲時間交錯機制將允許將捕獲時鐘交錯到集成電路中的不同的核心和L2C并解除捕獲功率問題。然而,如參考圖6和7的示例所指示的,為了生成用于這些不同組合的ATPG圖案,單獨的ATPG運行要求對經交錯的區域之間的路徑進行遮蔽。這對于在多個模式中的圖案的生成和/或驗證方面是低效率的。
[0085]因此,本發明的實施例進一步提供使用動態FTM引擎的、用于CPU核心的動態捕獲時鐘交錯技術,動態FTM引擎將允許動態交錯捕獲時鐘并單一生成ATPG圖案。圖8示出了根據本發明一個實施例的、使用動態FTM引擎來為四個核心和一個L2C實現動態捕獲時鐘交錯的示例性電路。如圖8所述,模塊805、806、808和809的每一個是與各自核心或L2C相關聯的個別的動態FTM引擎。
[0086]核心和L2C的每一個的交錯,由用于采用模塊的每一個的各自的Twindow的持續時間來編程的其各自的tmc2clk_fast_step_cnt_core寄存器(寄存器815到819)控制。在非動態捕獲時鐘交錯模式中,每個FTM模塊中所編程的fast_step_Cnt寄存器值確定不同核心和L2C之間的交錯。如圖6D所示,如果所有FTM模塊編程為相同的fast_skp_cnt值,那么所有區域是未交錯的,并且將在相同的時間對捕獲時鐘進行脈沖。然而,如果在非動態模式中,fast_step_Cnt值是不同的,那么捕獲時鐘被交錯,但是隨后ATPG圖案需要生成為單獨運行,以查明所有路徑的完全覆蓋。
[0087]動態捕獲時鐘交錯模式NV_CLK_FTM_dynstagger_mode_ctrl890包括控制邏輯,其確定用于交錯的最優的組合和序列,使得ATGP圖案可以單一生成,并且用于所有路徑的覆蓋以可能的最有效的方式獲得。舉例來說,模塊890將能夠評估是否某些核心沒有和L2C共享路徑。在這樣的情況中,在那些核心和L2C之間將不要求遮蔽。這樣模塊890阻止系統或者用戶必須實施確保用于所有路徑的覆蓋的單獨的ATPG圖案運行。或者例如工具將能夠基于ATPG圖案或者基于因為核心2可以和L2C共享功率導軌并且將其一起進行脈沖將導致峰值功率問題,而確定是否將核心I和L2C而非核心2和L2C —起進行脈沖是更有利的。
[0088]基于ATPG矢量,動態捕獲時鐘交錯模式將動態確定和重新布置集成電路上的各種模塊之間的時鐘交錯操作的組合和序列。因此,動態捕獲時鐘交錯允許采用ATPG的相同執行或者調用來完成測試覆蓋。
[0089]當圖8所示的動態捕獲時鐘交錯模式使能時,針對剩余核心應該不進行交錯的核心的數目的組合由tmc2car_staggered_unit_cnt寄存器850定義。使用JTAG寄存器來編程該值,以基于功率估計結果來預設特定組合。一旦使用tmc2car_staggered_unit_cnt寄存器值使能特定單元數,那么基于在掃描移位結束處的tmc2car_stagger_mode_scanflops851的內容,可以由模塊890在捕獲期間選擇用于交錯的不同的組合和序列。
[0090]圖9描繪了根據本發明實施例的、針對基于掃描的測試解決在捕獲移位周期期間在全局級的峰值功率問題的示例性過程的流程圖。然而發明不限于由流程圖900提供的描述。當然,相關領域技術人員從本文所提供的教導應該理解其他功能流在本發明的范圍和精神內。將繼續參考上述示例性實施例來描述流程圖900,雖然方法不限于那些實施例。
[0091]在步驟902,對用于測試下的IC上的每個CPU核心例如模塊420和430以及高速緩存例如模塊425的Twindow期的持續時間進行編程。在圖7的一個實施例中,例如3個寄存器 fast_step_cnt L2C710、fast_step_cnt_core2711 和 fast_step_cnt_corel712 可以包括JTAG位,其可由用戶編程的或者可以由系統基于某標準來動態選擇,例如LBIST要求達到16個用于捕獲的脈沖,因此Twindow期可以由ATE系統中的測試器處理器114將這該因素加以考慮來選擇。在一個實施例中,三個寄存器的每一個可以編程為具有不同的值,使得核心和高速緩存模塊的每一個的捕獲時鐘脈沖被交錯。
[0092]在步驟940,用于核心和L2C的每一個的FTM模塊795的每一個將對用于各自的核心和L2C的Twindow區域510中的測試時鐘脈沖的數目進行計數。
[0093]在步驟906,FTM引擎將發射和Twindow窗期間的測試時鐘脈沖的數目相同數目的快速時鐘脈沖用于掃描捕獲。舉例來說,在圖5中在計數Twindow期間的TEST CLK410信號的三個脈沖之后,FTM引擎發射三個快速時鐘周期為clk_out signal502。由于核心和高速緩存的每一個的Twindow區域的可變長度以及Temit區域的不同的各自的開始點,因此完成了時鐘交錯。[0094]在步驟908,通過將高速緩存和與其共享路徑的每一個核心分別進行脈沖,與此同時交錯剩余核心,來獲得對所有組合路徑的完全覆蓋。在非動態系統中,將需要調度不同ATPG運行以最小化因時鐘交錯的覆蓋丟失。例如,在對所有核心和高速緩存分開進行脈沖的實施例中,將需要調度不同的運行以在單獨的周期覆蓋每一個核心和L2C高速緩存之間的路徑。另一方面,動態系統將能夠使用單個ATPG矢量來動態配置IC上的各種核心和高速緩存之間的脈沖的組合和序列,以獲得完全測試覆蓋。
[0095]同時,前述公開闡述了使用特定框圖、流程圖和示例的各種實施例,每個框圖部件、流程圖步驟、操作和/或本文描述和/或示出的部件均可單獨地和/或共同地,通過使用各種不同的硬件、軟件或固件(或其任意組合)配置來實現。另外,對包含在其他部件內的部件的任何公開均應視為示例,因為可實現許多其他架構來達到相同的功能。
[0096]本文描述和/或示出的工藝參數和步驟序列僅以示例方式給出。舉例來說,雖然本文示出和/或描述的步驟可能以特定的順序顯示或論述,但這些步驟不是必須按所示出或論述的順序來實施。本文描述和/或示出的各種示范性方法也可以省略一個或多個本文描述或示出的步驟,或包括附加步驟作為那些所公開步驟的補充。
[0097]雖然本文已圍繞全功能計算系統描述和/或示出了各種實施例,但這些示范性實施例中的一個或多個可分配為各種各樣的形式的程序產品,而與用來實際執行分配的計算機可讀介質的特定類型無關。本文公開的實施例也可以使用實施某些任務的軟件模塊來實現。這些軟件模塊可包括腳本、批處理或其他可被存儲在計算機可讀存儲介質上或計算系統內的可執行文件。這些軟件模塊可以配置計算系統來實施一個或多個本文公開的示范性實施例。本文公開的軟件模塊中的一個或多個可在云計算環境中實現。云計算環境可經由因特網提供各種服務和應用。這些基于云的服務(例如,軟件即服務、平臺即服務、基礎設施即服務等等)可通過Web瀏覽器或其他遠程接口訪問。本文描述的各種功能可通過遠程桌面環境或任何其他基于云計算的環境提供。
[0098]前述的描述,出于解釋的目的,已參考特定實施例進行了描述。然而,上述說明性的論述不旨在窮舉或將本發明限制在所公開的明確形式上。鑒于以上教導,許多修改和變形是可能的。實施例被選擇和描述以最好地解釋本發明的原理及其實際應用,從而使其他的本領域技術人員采用各種適用于特定預期用途的修改來最好地利用本發明和各種實施例。
[0099]根據本發明的實施例因此被描述。雖然本公開已在特定實施例中加以描述,但應理解本發明不應被解釋為限于這些實施例,而應根據以下的權利要求來進行解釋。
【權利要求】
1.一種用于測試集成電路的方法,所述方法包括: 對用于所述集成電路上的多個核心以及高速緩存中的每一個的第一時間窗的各自的持續時間進行編程; 對用于所述多個核心和所述高速緩存中的每一個的所述第一時間窗期間的第一時鐘信號的脈沖的數目進行計數;以及 通過在各自的第二時間窗期間生成用于所述多個核心和所述高速緩存中的每一個的第二時鐘信號的脈沖,將捕獲脈沖交錯到所述多個核心和所述高速緩存,其中所生成的脈沖的數目基于為所述多個核心和所述高速緩存中的每一個所計數的第一時鐘信號脈沖的相應數目。
2.根據權利要求1所述的方法,進一步包括,在單獨的ATPG運行中將所述多個核心中的每一個與所述高速緩存進行脈沖、同時交錯剩余核心,以獲得對相應核心和所述高速緩存之間的組合路徑的覆蓋。
3.根據權利要求2所述的方法,進一步包括遮蔽所述高速緩存和所述剩余核心之間的路徑。
4.根據權利要求1所述的方法,進一步包括,通過對所述多個核心和所述高速緩存的第一子集一起進行脈沖、同時交錯剩余核心,以動態地獲得在單個ATPG運行期間對所述集成電路上的實質上所有組合路徑的覆蓋。
5.根據權利要求4所述的方法,其中,動態地確定所述第一子集中所要包括的模塊,以及其中所述模塊可以包括核心和所述高速緩存。
6.根據權利要求5所述的方法,其中當對所述第一子集中的所述核心和所述高速緩存一起進行脈沖時,將所述第一子集中的所述模塊和所述剩余核心之間的組合路徑遮蔽。
7.根據權利要求1所述的方法,其中所述集成電路從包括圖形處理器和中央處理器的組中選擇。
8.根據權利要求1所述的方法,其中所述第一時間窗的所述各自的持續時間是用戶可編程的。
9.一種用于測試集成電路的方法,所述方法包括: 對用于所述集成電路上的多個模塊中的每一個模塊的第一時間窗的各自的持續時間進行編程,其中所述模塊包括多個核心以及高速緩存; 對用于所述多個模塊中的每一個模塊的所述第一時間窗期間的第一時鐘信號的脈沖的數目進行計數;以及 通過在各自的第二時間窗期間,生成用于所述多個核心和所述高速緩存中的每一個的第二時鐘信號的脈沖,來將捕獲脈沖動態交錯到模塊的第一子集,其中所生成的脈沖的數目基于為所述多個模塊中的每一個模塊所計數的第一時鐘信號脈沖的相應數目。
10.根據權利要求9所述的方法,其中模塊的第二子集同時接收所述第二時鐘信號的脈沖,其中所述模塊的第二子集包含不包括在所述第一子集中的模塊。
11.根據權利要求10所述的方法,其中所述第二子集中的模塊的數目的值是可編程的。
12.一種用于測試集 成電路的系統,所述系統包括: 包括測試器處理器的計算機系統,其中所述測試器處理器通信地耦連到集成電路,其中所述集成電路包括: 多個核心以及高速緩存; I/O端口,可操作為對用于所述集成電路上的所述多個核心和所述高速緩存中的每一個的第一時間窗的各自的持續時間進行編程;以及 多個快速時鐘生成模塊,配置為: 對用于所述多個核心和所述高速緩存中的每一個的所述第一時間窗期間的第一時鐘信號的脈沖的數目進行計數;以及 通過在各自的第二時間窗期間生成用于所述多個核心和所述高速緩存中的每一個的第二時鐘信號的脈沖,來將捕獲脈沖交錯到所述多個核心和所述高速緩存,其中所生成的脈沖的數目基于為所述多個核心和所述高速緩存中的每一個所計數的第一時鐘信號脈沖的相應數目。
13.根據權利要求12所述的系統,其中所述多個快速時鐘生成模塊進一步配置為,在單獨的ATGP運行期間將所述多個核心中的每一個與所述高速緩存一起進行脈沖、同時交錯剩余核心,以獲得對相應核心和所述高速緩存之間的組合路徑的覆蓋。
14.根據權利要求13所述的系統,其中所述多個快速時鐘生成模塊進一步配置為,遮蔽所述高速緩存和所述剩余核心之間的路徑。
15.根據權利要求12所述的系統,進一步包括動態捕獲時鐘交錯模塊,其配置為通過對所述多個核心和高速緩存的第一子集一起進行脈沖、同時交錯剩余核心,來動態獲得單個ATPG運行期間對所述集成電路上的實質上所有的組合路徑的覆蓋。
16.根據權利要求15所述的系統,其中由所述動態捕獲時鐘交錯模塊動態地確定所述第一子集中所要包括的高速緩存和多個核心。
17.根據權利要求12所述的系統,其中所述I/O端口是JTAG端口,其可操作為由用戶編程。
18.根據權利要求12所述的系統,其中所述集成電路從包括圖形處理器和中央處理器的組中選擇。
19.根據權利要求12所述的系統,其中所生成的捕獲脈沖的數目能夠通過變化用于所述多個核心和所述高速緩存中的每一個的所述第一時間窗的各自的持續時間來改變。
【文檔編號】G01R31/28GK103913696SQ201310741793
【公開日】2014年7月9日 申請日期:2013年12月27日 優先權日:2012年12月28日
【發明者】薩蒂亞·普瓦達, 米林得·索納瓦樂, 阿米特·桑加尼, 阿奴伯哈·辛哈, 維沙爾·阿加瓦爾 申請人:輝達公司