本文呈現的實施例涉及電子電路,并且更具體地涉及用于訪問集成電路中的存儲電路的技術。
背景技術:
存儲電路常常被用于保持集成電路中的狀態,并且在運行用戶應用之前常常需要對這些存儲電路的寫訪問,例如作為對計算進行初始化的部分。考慮可編程邏輯器件(pld)作為集成電路的一個示例。對pld進行配置以實現給定電路設計包括通過將數據寫入到存儲電路來對配置存儲器元件進行編程。另外,存儲電路常常需要在集成電路開始操作之前處于初始狀態中。例如,存儲電路上的狀況常常設置計算的開始點(例如,將計數器重置為零)或者存儲用于計算的系數(例如,對于有限沖激響應(fir)濾波器)。
在操作集成電路期間獨立于對用戶應用的運行的對這些存儲電路的讀訪問發揮同等重要的作用。例如,涉及調試操作(諸如觀察集成電路的狀態以確定操作的正確性、為了對電路設計進行仿真的目的而使用集成電路、或者針對缺陷或出錯狀況(諸如單粒子效應(seu))的出現而監測集成電路)的應用常常需要對集成電路中的存儲電路的狀態的提取。
技術實現要素:
根據一些實施例,處于第一模式中的控制電路可以通過經由配置資源對配置存儲器位進行編程來生成關于集成電路的電路設計實施方案。電路設計實施方案可以包括存儲電路。在利用電路設計實施方案對集成電路的操作期間,電路設計實施方案可以執行在存儲電路處的第一訪問操作。處于第二模式中的控制電路可以在第二模式中執行經由配置資源在存儲電路處的第二訪問操作。在一些實施例中,第二訪問操作是寫操作。在其它實施例中,第二訪問操作是讀操作。
應當認識到,本發明能夠以許多方式(諸如過程、裝置、系統、設備或計算機可讀介質上的方法)來實施。本文公開了本發明的若干實施例。
在某些實施例中,上述寫操作可以通過使存儲電路中的位反相來將錯誤注入到電路設計實施方案中。錯誤注入的影響可以包括觀察集成電路的輸出以檢查該錯誤是否影響輸出。
如果期望的話,寫操作還可以包括在控制電路處接收重置信號,在接收到重置信號時執行在控制電路處的中斷操作,以及經由配置資源將重置請求信號從控制電路發送到扇區,其中重置請求信號請求執行扇區中的重置操作。
本發明的另外的特征、本發明的本質和各種優點將從附圖和優選實施例的下面的詳細描述中變得更加清楚。
附圖說明
圖1是根據實施例的說明性集成電路的示意圖。
圖2是根據實施例的用于利用用戶界面和控制在配置資源上的多個扇區的全局控制電路來訪問存儲電路的說明性電路的示意圖。
圖3是根據實施例的實現使用掃描鏈對存儲電路的狀態捕獲的說明性電路的示意圖。
圖4是根據實施例的具有由局部控制電路控制的掃描鏈的說明性扇區的示意圖。
圖5是根據實施例的執行對存儲電路的陣列的訪問操作的說明性控制電路的示意圖。
圖6是根據實施例的具有控制電路的說明性系統的示意圖,該控制電路與處理器電路進行通信并且執行經由配置資源和接口對集成電路中的存儲電路的訪問操作。
圖7是示出了根據實施例的用于執行經由集成電路中的配置資源對存儲電路的訪問操作的說明性操作的流程圖。
圖8是示出了根據實施例的用于執行對集成電路中的電路設計實施方案的統計監測的說明性操作的流程圖。
具體實施方式
集成電路可以實施電路設計,其有時還被稱為應用或用戶應用。電路設計實施方案可以包括邏輯電路(例如,邏輯與門、邏輯或門、反相器、等等)、存儲電路(例如,寄存器、鎖存器、存儲器、等等)、運算電路(例如,加法器、減法器、乘法器、除法器、等等)、輸入電路(例如,輸入端口、接收器電路、存儲器接口、等等)、輸出電路(例如,輸出端口、發送器電路、存儲器接口、等等)。
集成電路中的存儲電路常常被用于存儲電路設計實施方案的狀態。電路設計實施方案可以在操作集成電路期間執行讀訪問操作以從這些存儲電路中取得數據信號和/或執行寫訪問操作以將數據信號存儲在這些存儲電路中。在一些情況下,可能期望獨立于在操作期間集成電路運行的應用而執行讀訪問操作和/或寫訪問操作中的至少一些操作。
例如,獨立于應用的運行而執行的寫訪問操作可以包括:在運行應用之前進行的寫訪問操作(例如,通過將計數器重置為零或者設置常數系數值來對計算進行初始化,將狀態機放置成初始狀態,對可配置電路進行編程,等等)、部分重配置、將應用設置成已知狀態以用于調試目的、單粒子效應(seu)校正、等等。
作為另一示例,獨立于應用的運行而執行的讀訪問操作可以包括諸如以下的調試操作:觀察集成電路的狀態以確定操作的正確性、為了對電路設計進行仿真的目的而使用集成電路、針對缺陷或出錯狀況(諸如單粒子效應(seu))的出現而監測集成電路、等等。
如果期望的話,從存儲電路中取得的數據的值可以通過調試端口(諸如內部配置訪問端口(icap)、聯合測試行動組(jtag)端口、或其它輸出端口)被路由到嵌入式處理器電路或其它可能的接收方以用于在集成電路外的進一步分析。
用于獨立于應用的運行而執行讀訪問操作和/或寫訪問操作的當前解決方案(例如,由加利福尼亞圣何塞的altera公司銷售的signalprobe或者
本領域技術人員將意識到,當前示例性實施例可以在沒有這些具體細節中的一些或全部的情況下來實踐。在其它實例中,未詳細描述公知操作以便不會不必要地使當前的實施例模糊不清。
在圖1中示出了可以被配置為實施電路設計的集成電路(諸如可編程集成電路100)的說明性實施例。如圖1所示,可編程集成電路100可以包括功能塊的二維陣列,包括邏輯陣列塊(lab)110和其它功能塊,例如諸如隨機訪問存儲器(ram)塊130和數字信號處理(dsp)塊120。功能塊(諸如lab110)可以包括接收輸入信號并執行在輸入信號上的定制功能以產生輸出信號的較小的可編程區(例如,邏輯元件、可配置邏輯塊、或自適應邏輯模塊)。
另外,可編程集成電路100可以具有用于驅動關閉可編程集成電路100的信號并用于從其它設備接收信號的輸入/輸出元件(ioe)102。輸入/輸出元件102可以包括并行輸入/輸出電路、串行數據收發器電路、差分接收器和發送器電路、或用于將一個集成電路連接到另一集成電路的其它電路。如所示的,輸入/輸出元件102可以被定位在芯片的外周附近。如果期望的話,可編程集成電路100可以具有以不同的方式布置的輸入/輸出元件102。例如,輸入/輸出元件102可以形成可以被定位在可編程集成電路100上的任何地方的(例如,跨可編程集成電路的寬度均勻地分布的)輸入/輸出元件的一列或多列。如果期望的話,輸入/輸出元件102可以形成(例如,跨可編程集成電路的高度分布的)輸入/輸出元件的一行或多行。備選地,輸入/輸出元件102可以形成可以被分布在可編程集成電路100的表面上或者被聚集在所選擇的區域中的輸入/輸出元件的島(island)。
可編程集成電路100還可以包括形式為垂直路由信道140(即,沿可編程集成電路100的垂直軸形成的互連)和水平路由信道150(即,沿可編程集成電路100的水平軸形成的互連)的可編程互連電路,每個路由信道包括至少一個軌道以路由至少一根接線。
要指出,除了圖1中描繪的互連電路的拓撲結構之外的其它路由拓撲結構旨在被包含在本發明的范圍內。例如,路由拓撲結構可以包括對角地行進或沿它們的范圍的不同部分水平地和垂直地行進的接線以及在三維集成電路的情況下垂直于設備平面的接線,并且接線的驅動器可以被定位在與接線的一端不同的點處。路由拓撲結構可以包括基本上跨過整個可編程集成電路100的全局接線、跨過可編程集成電路100的部分的分數全局接線、特定長度的交錯接線、較小的本地接線、或任何其它適當的互連資源布置。
另外,應當理解,實施例可以被實施在任何集成電路中。如果期望的話,這樣的集成電路的功能塊可以被布置在更多的層級或層中,其中多個功能塊被互連以形成更大的塊。其它設備布置可以使用未按行和列布置的功能塊。
可編程集成電路100可以包含可編程存儲器元件。存儲器元件可以使用輸入/輸出元件(ioe)102和配置資源而被加載有配置數據(還被稱為編程數據)。一旦被加載,存儲器元件中的每個存儲器元件均提供控制相關聯的功能塊的操作的對應的靜態控制信號(例如,lab110、dsp120、ram130、輸入/輸出元件102、或產生信號路徑的互連資源)。
在典型情形下,經加載的存儲器元件的輸出被施加到功能塊中的金屬氧化物半導體場效應晶體管的柵極以接通或斷開某些晶體管,并且由此對包括路由路徑的功能塊中的邏輯進行配置。可以以這種方式控制的可編程邏輯電路元件包括多路復用器(用于形成互連電路中的路由路徑的多路復用器)、查找表、邏輯陣列、與邏輯門、或邏輯門、與非邏輯門、以及與或邏輯門、通過門(passgate)、等等的部分。
存儲器元件可以使用任何適當的易失性存儲器結構和/或非易失性存儲器結構,諸如例如隨機訪問存儲器(ram)單元、保險絲、反熔絲、可編程只讀存儲器存儲器單元、掩碼編程結構和激光編程結構、機械存儲器設備(例如,包括本地機械諧振器)、機械操作的ram(moram)、這些結構的組合、等等。因為存儲器元件在編程期間被加載有配置數據,所以存儲器元件有時被稱為配置存儲器元件、配置ram(cram)、或可編程存儲器元件。
可編程存儲器元件可以采用包括行和列的配置存儲器陣列來組織。跨過所有列的數據寄存器和跨過所有行的地址寄存器可以接收配置數據。配置數據可以被移位到數據寄存器上。當合適的地址寄存器被認定時,數據寄存器將配置數據寫入到由地址寄存器指定的行的配置存儲器位。
在某些實施例中,可編程集成電路100可以包括被組織在扇區中的配置存儲器,其中扇區可以包括指定在該扇區中或跨越該扇區的子部件和接線的功能和/或互連的配置ram位。每個扇區可以包括單獨的數據和地址寄存器。關于扇區的另外的信息能夠在共同擁有的題為“programmablecircuithavingmultiplesectors”的美國專利申請號14/460548中找到,在此將其通過引用整體并入本文。
圖2示出了具有被組織在扇區240中的配置存儲器的說明性可配置集成電路(諸如可編程集成電路100)。每個扇區240可以包括本地控制電路220。這些本地控制電路可以控制時鐘分布網絡和各自的扇區240的配置。如果期望的話,本地控制電路220可以操縱并觀察在各自的扇區240內的掃描鏈。
在某些實施例中,本地控制電路220可以被實施為狀態機。在某些實施例中,本地控制電路220可以被實施為最小的處理器。由本地控制電路220支持的每個操作可以被實施為在包含控制程序的存儲器中的單獨的例程。
在某些實施例中,該控制程序存儲器可以接收并存儲新的例程以便將新的操作和功能實施到扇區中。這些新的操作可以提高扇區內的局部活性。在沒有該可擴展性的情況下,新的功能可以需要根據預先存在的操作來實施,其可以增加在全局控制電路與本地控制電路之間的所需要的通信的量并且完全防止對局部控制電路220的并行使用。
通信網絡230可以將局部控制電路220連接到全局控制電路210。例如,通信網絡230可以被用于傳輸配置數據和/或調試數據以分別用于配置目的和/或調試目的。在一些實施例中,通信網絡230可以被用于傳輸作為電路設計實施方案的部分的數據信號。如果期望的話,通信網絡230可以被實施為基于網格的片上網絡(noc)。關于片上網絡和fpga的另外的信息能夠在共同擁有的美國專利申請公開號2014/0126572“programmablelogicdevicewithintegratednetwork-on-chip”中找到,在此將其通過引用整體并入本文。
全局控制電路210可以連接到設備引腳,其能夠通過設備引腳與用戶界面250進行通信。用戶界面250可以包括例如jtag掃描鏈、輸入/輸出端口、可編程邏輯電路、或這些電路的任何組合。全局控制電路210可以從用戶界面250接收命令,處理接收到的命令,并且根據需要通過通信網絡230將所處理的命令發送到局部控制電路220。響應于從全局控制電路210接收到命令,局部控制電路220可以編排存儲電路在各自的扇區240中的讀取,并且隨后通過通信網絡230將從存儲電路中取得的數據發送回到全局控制電路210。
因為全局控制電路210除此之外負責協調局部控制電路220的操作,以用于在用戶界面250與局部控制電路220之間的通信并且為了安全特征,全局控制電路210(或至少其部分)也可以被實施在處理器中。處理器可以是專用處理器、針對已經被包含在設備的設計中的用戶可見處理器的特別啟動代碼、或者另一適當的布置。
劃分成扇區的優點可以是局部控制電路220可以獨立地且并行地操作。每個局部控制電路220可以如下面更詳細地公開的使用其各自的扇區240中的一個或多個掃描鏈、或者通過具有包括數據寄存器控制器的數據寄存器的接口而從其各自的扇區240中取得數據。在一些實施例中,局部控制電路220中的每個局部控制電路可以在丟棄不需要的數據之后將從各自的扇區240中取得的數據過濾為精簡數據集。局部控制電路220可以隨后通過通信網絡230將精簡數據集發送到全局控制電路210。如果每個局部控制電路220通過通信網絡230以低于網絡230的最大帶寬來發送數據,則全局控制電路210可以確定針對局部控制電路220的排程(schedule),以使通過網絡230發送的數據相交錯。備選地,全局控制電路210可以提供允許局部控制電路220通過網絡230以網絡230的完整帶寬串行地發送數據的時序排程。
全局控制電路210可以(例如,例如使用10吉比特以太網協議或外圍部件互連快速(pcie)協議(僅舉數例)的通過高速串行接口(hssi)收發器電路)以高數據速率與用戶界面250進行通信。全局控制電路210可以通過時分復用通信網絡230與局部控制電路220進行通信,例如其中局部控制電路220中的每個局部控制電路以相對較低的速率但是并行地操作。
局部控制電路220中的每個局部控制電路能夠在第一時間段期間監測其各自的扇區240中的存儲電路的第一集合,并且在第二時間段期間監測其各自的扇區240中的存儲電路的第二集合。局部控制電路的控制程序可以被動態地擴展以執行該監測功能。該監測功能允許在某個時間點處監測的存儲電路的集合比通過通信網絡230和全局控制電路210從扇區發送到用戶界面250的位的數目大得多,以用于外部監測和解讀。另外,修理電路設計中的需要更改關于可配置集成電路的設計實施方案的程序錯誤(例如,將邏輯“與”改變為邏輯“或”)可能需要使用扇區的部分重配置能夠帶來的局部變化。
扇區240的獨立性還可以導致被完全包含在一個扇區內的并且由各自的局部控制電路220控制的更短的掃描鏈。在某些實施例中,關于存儲電路的狀態的信息可以使用掃描鏈來取得。圖3示出了實現使用被布置在掃描鏈中的掃描存儲電路(例如,掃描寄存器)對用戶存儲電路(例如,用戶寄存器)的狀態捕獲和狀態恢復的說明性電路300。因為用戶存儲電路320a和320b都能夠使用掃描存儲電路在不遍歷其它存儲電路的情況下來訪問,所以用戶存儲電路320a和320b可以被稱為可觀察到的存儲電路。
如圖3所示,掃描鏈包括掃描存儲電路340和掃描存儲電路345。多路復用器330和335與掃描存儲電路340和345耦合在一起作為當信號load為‘0’時掃描鏈中的移位寄存器。包括掃描存儲電路340和345的掃描鏈是用于捕獲存儲在用戶存儲電路320a和320b中的數據并將其移出而不將附加的數據移入到用戶存儲電路320a和320b中的專用掃描鏈。因此,包括掃描存儲電路340和345的掃描鏈能夠執行對存儲在用戶存儲電路320a和320b中的數據的非破壞性捕獲,而不干擾或擦除存儲在用戶存儲電路320a和320b中的數據。對存儲在用戶存儲電路中的數據的非破壞性捕獲還被稱為快照或被稱為狀態可視化。
時鐘分布網絡可以使用多路復用器355來在時鐘信號clk_0、clk_1、…clk_n之中選擇時鐘信號。邏輯與門365可以從多路復用器355中接收所選擇的時鐘信號、以及可以接收能夠啟用或禁用所選擇的時鐘信號的信號enable_scan。作為示例,邏輯與門365的輸出可以是時鐘信號c2,其可以觸發掃描存儲電路340和345。
另一時鐘分布網絡可以使用多路復用器350來在時鐘信號clk_0、clk_1、…clk_n之中選擇時鐘信號。邏輯與門360可以從多路復用器350中接收所選擇的時鐘信號、以及可以接收能夠啟用或禁用所選擇的時鐘信號的信號enable_user。作為示例,邏輯與門360的輸出可以是時鐘信號c1,其可以觸發掃描存儲電路320a和320b。
在有時還被稱為用戶模式的應用運行模式中(即,在操作電路設計實施方案期間),用戶存儲電路320a和320b可以分別從多路復用器310和315接收數據信號d1和d2。在該模式中,信號unload可以被解除認定,并且多路復用器310和315可以選擇信號data-in_a和data-in_b分別作為信號d1和d2。用戶存儲電路320a和320b可以存儲在時鐘信號c1的觸發事件(例如,上升沿、下降沿、高電平、低電平、或其任何組合)處的信號d1和d2,并且可以分別提供信號d1和d2的值作為信號data-out_a和data-out_b。
如果期望的話,控制電路(例如,圖2的局部控制電路220)可以執行用戶存儲電路的讀訪問操作,以提取用戶存儲電路320a和320b的狀態。例如,存儲在用戶存儲電路320a和320b中的信號可以在數據取得模式中使用掃描鏈來取得。取得存儲在用戶存儲電路320a和320b中的信號有時還被稱為在讀回模式中的操作電路300。為此,信號enable_user和enable_scan可以被解除認定以分別停止時鐘信號c1和c2。信號load可以被設置為‘1’,使得多路復用器330和335分別選擇來自用戶存儲電路320a和320b的信號。
信號enable_scan可以被認定,以允許時鐘信號c2的一個觸發事件。時鐘信號c2的一個觸發事件會觸發掃描存儲電路340和345,以分別存儲被存儲在用戶存儲電路320a和320b中的值。隨后,信號load可以從‘1’被切換為‘0’,以使得多路復用器330和335選擇來自掃描鏈上的其它掃描存儲電路的信號。例如,多路復用器335選擇掃描存儲電路340的輸出信號s1。信號enable_scan可以隨后被認定,以開始時鐘信號c2中的振蕩。掃描存儲電路340和345隨后將由信號s1和s2指示的所存儲的數據移出在時鐘信號c2的連續觸發事件處的信號scan-out中的掃描鏈。在某些實施例中,存儲在用戶存儲電路320a和320b中的值可以在讀回模式中被取得,而不停止時鐘信號c1。例如,信號load和時鐘信號c1和c2可以被同步,使得能夠在不停止時鐘信號c1的情況下進行讀回。
如果期望的話,信號enable_user可以被認定,以開始時鐘信號c1中的振蕩。響應于時鐘信號c1中的振蕩,用戶存儲電路320a和320b可以在設計運行模式中操作,而所存儲的數據使用掃描鏈來取得。
在示例性實施例中,圖3的掃描鏈不具有到用于在集成電路中的可編程邏輯塊之間路由信號的全局路由導體的直接連接。使用圖3的專用掃描鏈來獲取存儲在用戶存儲電路320a-320b中的數據的快照可以允許去除全局凍結信號以及否則將用于對全局路由導體進行選通的凍結邏輯。
在另一實施例中,全局控制電路210或局部控制電路220可以具有能夠禁用讀回模式的安全邏輯。安全邏輯能夠使得扇區240中的一個或多個扇區進入安全模式,在安全模式中在各自的扇區240中的掃描鏈獲取存儲在用戶存儲電路中的數據的快照的能力被禁用。安全邏輯能夠被用于確保被編程為安全的用戶存儲電路的狀態不能夠在用戶模式中被訪問。安全邏輯可以例如由cram設置或保險絲來控制。
在另一情形下,控制電路(例如,圖2的局部控制電路220)可以執行用戶存儲電路的寫訪問操作,以將用戶存儲電路320a和320b設置處于預定狀態。例如,預定數據可以在數據恢復模式中使用掃描鏈被寫入到用戶存儲電路320a和320b。將預定數據寫入到用戶存儲電路320a和320b有時還被稱為在寫回模式中的操作電路300。為此,信號load可以被設置為‘0’以使得多路復用器330和335選擇來自掃描鏈上的其它掃描存儲電路的信號。信號enable_scan可以被認定,以使得預定數據經由信號scan-in被移入到掃描鏈中。掃描存儲電路340和345響應于時鐘信號c2的連續時鐘觸發事件而分別將在它們的輸出處的預定數據存儲為信號s1和s2。
接下來,信號enable_user和enable_scan可以被解除認定,以分別停止時鐘信號c1和c2。信號unload可以被設置為‘1’,以使得多路復用器310和315分別選擇來自掃描存儲電路340和345的信號s1和s2作為信號d1和d2。
信號enable_user可以被認定,以用于時鐘信號c1的一個觸發事件。時鐘信號c1的一個觸發事件可以觸發用戶存儲電路320a和320b以分別存儲信號d1和d2。結果,用戶存儲電路320a和320b分別存儲來自掃描存儲電路340和345的預定數據。隨后,信號unload可以被設置為‘0’以使得多路復用器310和315分別選擇信號data-in_a和data-in_b作為信號d1和d2。信號enable_user可以隨后被認定,以開始時鐘信號c1,使得用戶存儲電路320a和320b在設計運行模式中操作。
如果期望的話,局部控制電路(例如,圖2的局部控制電路220)可以控制掃描鏈。作為示例,局部控制電路可以控制信號load、unload和enable_scan。在圖4中示出了具有控制掃描鏈的局部控制電路的扇區(例如,圖2的扇區240)的說明性實施例。如圖4所示,扇區400可以包括局部控制電路410、第一類型的電路塊420(例如,圖1中的lab110、dsp120、或ram130之一)、以及與第一類型的電路塊420不同的第二類型的電路塊430(例如,圖1中的lab110、dsp120、或ram130中的不同的一個)。
局部控制電路410可以控制掃描鏈450,其可以源自于局部控制電路410中,在局部控制電路410處結束之前遍歷電路塊420a、430、…、和420b。掃描鏈450包括部分450a-450b。掃描鏈450包括掃描存儲電路,諸如掃描存儲電路340和345。在一些實施例中,掃描鏈450包括許多掃描存儲電路。如果期望的話,扇區400可以包括多于一個掃描鏈。扇區400中的每個掃描鏈可以源自于并且結束于局部控制電路410中,并且局部控制電路410可以單獨地控制扇區400中的每個掃描鏈。
如圖4所示,局部控制電路410可以使用連接460和多路復用器440來控制掃描鏈450。例如,局部控制電路410可以引導多路復用器電路440選擇來自在其第一多路復用輸入處的電路塊420a的掃描鏈部分450a上的信號,由此繞過來自在其第二多路復用輸入處的電路塊430的掃描鏈部分450b。
備選地,局部控制電路410可以使得多路復用器440選擇在來自電路塊430的掃描鏈部分450b上的信號。例如,考慮其中局部控制電路410測試扇區400中的所有存儲電路的操作能力的情形。在該情形下,局部控制電路410可以引導多路復用器440選擇來自在其第二多路復用輸入處的掃描鏈部分450b上的信號。
作為另一示例,考慮其中用戶想要使用掃描鏈450來探測存儲在電路塊420中的信號而非存儲在電路塊430中的信號的情形。在該情形下,局部控制電路410可以引導多路復用器440選擇來自在其第一多路復用輸入處的掃描鏈部分450a上的信號,繞過來自電路塊430的掃描鏈部分450b。
如果期望的話,局部控制電路410可以被耦合到全局控制電路(例如所示的,圖2的局部控制電路220通過網絡230被耦合到全局控制電路210)。局部控制電路410可以包括濾波能力。該濾波能力可以例如允許局部控制電路410在第一時間段期間監測電路塊420和430中的一個或多個電路塊中的存儲電路的子集,并且在第二時間段期間監測電路塊420和430中的一個或多個電路塊中的存儲電路的另一子集。
在其中局部控制電路410包括處理器的實施例中,局部控制電路410中的處理器可以使用軟件對所捕獲的數據執行濾波。作為示例,局部控制電路410可以根據在處理器上運行的用戶軟件代碼來去除狀態的集合。作為另一示例,局部控制電路410可以編排來自存儲電路的數據的快照并執行診斷測試,以確定數據的快照應當被放棄還是被保留。局部控制電路410可以例如一旦被測試的電路被確定為無錯誤,就放棄快照。
如果期望的話,局部控制電路410可以單獨地取得存儲在一個或多個存儲電路中的數據、存儲在被定位在一個或多個電路塊中的一個或多個存儲電路中的數據、或者存儲在被耦合到扇區400中的一個或多個掃描鏈的一個或多個存儲電路中的數據。局部控制電路410可以取得存儲在被定位在扇區400中的自適應邏輯模塊(alm)中的一個或多個存儲電路中的數據、存儲在被定位在扇區400中的邏輯陣列塊(lab)中的一個或多個存儲電路中的數據、存儲在被定位在扇區400中的存儲器元件中的一個或多個存儲電路中的數據、和/或存儲在被定位在扇區400中的數字信號處理器(dsp)塊中的一個或多個存儲電路中的數據。自適應邏輯模塊(alm)包括組合邏輯(諸如查找表)。局部控制電路410可以緩存和/或處理所取得的數據。局部控制電路410可以經由網絡230將取得的數據提供給全局控制電路210。全局控制電路210可以在外部經由用戶界面250來封裝所取得的數據并傳送所封裝的數據。
在某些實施例中,控制電路可以在第一模式中通過經由配置資源(諸如地址寄存器和數據寄存器)對配置存儲器位進行編程來生成關于集成電路的電路設計實施方案,并且在第二模式中執行經由配置資源對存儲電路的訪問操作,其被圖示在圖5中。圖5的電路可以包括控制電路510、數據寄存器540、地址寄存器550、變速器(gearbox)530、以及存儲電路520。如所示的,存儲電路520可以被布置在行和列的陣列中,其中地址寄存器550按行連接到存儲電路520,并且數據寄存器540經由變速器530按列連接到存儲電路520。
圖5的電路僅僅是說明性的并且不旨在限制本發明的范圍。如果期望的話,地址寄存器可以按列連接到存儲電路,并且數據寄存器按行連接到存儲電路,存儲電路520可以以不同的方式來布置,等等。例如,電路可以具有在兩行之間和/或在兩列之間的不同數量的存儲電路520,電路可以僅僅具有一行或僅僅一列,地址寄存器550可以被省略,變速器530可以被省略,等等。
如圖5所示,控制電路510可以經由變速器530引導地址寄存器550和數據寄存器540讀取存儲電路520的狀態和/或設置存儲電路520的狀態。在另一實施例中,控制電路510可以在繞過變速器530的情況下使用配置資源(諸如地址寄存器550和數據寄存器540)以通過對配置存儲器位(未示出)進行編程來實施電路設計。
考慮其中控制電路510對配置存儲器位進行編程來實施電路設計的情形。在該情形下,控制電路510可以接收請求對配置存儲器位的幀以及配置數據和地址的寫訪問操作的數據包。控制電路510可以將配置數據移入到數據寄存器540中。數據寄存器540可以(例如,通過未示出在圖5中的三狀態緩沖器)直接驅動數據線,由此繞過變速器530。
控制電路510可以將地址移入到地址寄存器550中,由此選擇要由配置數據編程的配置存儲器位。地址寄存器550可以(例如,通過啟用在數據線與存儲器單元之間的傳遞晶體管)實現對所選擇的配置存儲器位的寫訪問操作,由此將經由數據線來自數據寄存器540的配置數據存儲在配置存儲器單元中。如果期望的話,控制電路510可以發送指示寫訪問操作的成功的響應數據包(例如,發送到處理器電路和/或全局控制電路,等等)。如果期望的話,控制電路510可以在響應數據包中指示其準備好接收另一數據包。
在一些實施例中,控制電路510可以接收寫訪問請求數據包,其包括針對具有為了對配置存儲器位進行編程以實施電路設計的目的而選擇的數據寄存器控制器(未示出)的地址的數據寄存器540的配置數據的幀。配置數據可以由片上網絡接收器寫入到數據寄存器控制器。數據寄存器控制器可以在每周期將數據包中的預定數量的位的配置數據移入到數據寄存器中。在接收到配置數據的最后的預定數量的位后,控制電路510可以基于用寫訪問請求數據包接收到的地址來引導地址寄存器550,以實現來自由數據寄存器540驅動的數據線的寫訪問操作。
考慮其中控制電路510經由變速器530引導地址寄存器550和數據寄存器540執行對存儲電路520之一的寫訪問操作的情形。例如,控制電路510可以接收請求寫訪問操作的數據包。在該示例中,控制電路510可以準備數據寄存器540和/或地址寄存器550用于寫訪問操作。例如,控制電路510可以實現從控制電路510到變速器530的連接。如果期望的話,控制電路510可以發送響應數據包(例如,發送到處理器電路和/或全局控制電路、等等),該響應數據包指示數據寄存器540和/或地址寄存器550被成功地準備、和/或指示數據寄存器540和/或地址寄存器550準備好接收用戶數據。
控制電路510可以接收請求對預定存儲電路520的寫訪問操作的用戶數據的數據包、以及接收指定預定存儲電路520的用戶數據和地址。作為示例,考慮其中存儲電路520被布置在如圖5所示的行和列的陣列中并且地址指示預定行和預定列的情形。在該情形下,控制電路510可以分析用戶數據的數據包,并且基于該分析來引導地址寄存器550和/或數據寄存器540。例如,地址寄存器550可以認定實現對預定行中的所有存儲電路520的寫訪問操作的啟用信號。
控制電路510可以將用戶數據的數據包的一部分發送到數據寄存器540,并且從那里發送到至少一個變速器530。接收用戶數據的數據包的該部分的變速器可以確定預定列是否指定連接到變速器的存儲電路的列。在預定地址指定連接到變速器的列并且由此指定變速器的情況下,所指定的變速器530可以認定合適的控制信號以實現對預定列中的存儲電路520的寫訪問操作。如果期望的話,所指定的變速器530可以通過數據線將要被存儲在預定存儲電路520中的數據發送到預定列中的存儲電路,使得數據被存儲在預定存儲電路520中。
作為示例,預定存儲電路520可以包括存儲位的二維陣列,并且寫訪問操作可以將數據寫入到預定存儲電路中的所有存儲位。在該示例中,所指定的變速器530可以包括指示二維陣列中的存儲位的行的地址計數器。在同步寫操作的情況下,所指定的變速器530可以在第一地址處開始,將數據寫入到與在時鐘事件處的第一地址相對應的行,并且使地址計數器增一。所指定的變速器530可以隨后針對存儲電路520中的所有其它行重復這些步驟。
考慮其中控制電路510引導配置資源執行從存儲電路520之一的讀訪問操作的情形。例如,控制電路510可以接收請求讀訪問操作的數據包。在該示例中,控制電路510可以準備數據寄存器540和/或地址寄存器550用于讀訪問操作。例如,控制電路510可以將數據寄存器540設置成移位模式,使得從存儲電路中讀取的信號被移入到數據寄存器中。如果期望的話,控制電路510可以發送響應數據包(例如,發送到處理器電路和/或全局控制電路、等等),該響應數據包指示數據寄存器540和/或地址寄存器550被成功地準備、和/或指示數據寄存器540和/或地址寄存器550準備好執行讀訪問操作。
控制電路510可以接收請求從預定存儲電路520的讀訪問操作的數據包、以及接收指定預定存儲電路520的地址。作為示例,考慮其中存儲電路520被布置在如圖5所示的行和列的陣列中并且地址指示預定行和預定列的情形。在該情形下,控制電路510可以分析數據包,并且基于該分析來引導地址寄存器550和/或數據寄存器540。例如,地址寄存器550可以認定實現對預定行中的所有存儲電路520的讀訪問操作的啟用信號。
控制電路510可以將數據包的一部分發送到數據寄存器540并且從那里發送到至少一個變速器530。接收數據包的該部分的變速器可以確定預定列是否指定連接到該變速器的存儲電路的列。在預定地址指定連接到變速器的列并且由此指定變速器的情況下,所指定的變速器530可以認定合適的控制信號以實現對預定列中的存儲電路520的讀訪問操作。
作為示例,預定存儲電路520可以包括存儲位的二維陣列,并且讀訪問操作可以從預定存儲電路中的所有存儲位中讀取數據。在該示例中,所指定的變速器530可以包括指示二維陣列中的存儲位的行的地址計數器。在同步讀操作的情況下,所指定的變速器530可以在第一地址處開始,從與在時鐘事件處的第一地址相對應的行中讀取數據,并且使地址計數器增一。所指定的變速器530可以隨后針對存儲電路520中的所有其它行重復這些步驟。
作為示例,為了讀取與第一地址相對應的行中的一個存儲位的目的,所指定的變速器530可以將數據線預裝載到預定存儲電路520的列中的存儲位,使得感測放大器可以檢測存儲在對應的存儲位中的位值。
如果期望的話,所指定的變速器可以消除從預定存儲電路520的存儲位取得的位值。例如,考慮其中預定存儲電路的行會存儲多達40位的情形,其中八位被用于錯誤校正編碼。在該情形下,所指定的變速器可以消除八個錯誤校正編碼位并且僅僅將32個剩余的用戶位移入到數據寄存器540中。
在某些實施例中,控制電路可以經由在運行應用期間使用的互連資源并且通過在控制電路與互連資源之間的接口來訪問存儲電路。圖6是可以包括具有緩沖器612的控制電路610的說明性集成電路的示意圖。控制電路610可以與處理器電路650進行通信,并且可以經由配置資源660和將控制電路610耦合到互連資源640的接口620執行對集成電路中的存儲電路670的訪問操作。
如圖6所示,集成電路的一部分可以被劃分成分區630。分區630可以包括存儲電路670、運算電路680、附加的處理器電路690、等等。如果期望的話,分區630可以包括邏輯資源(諸如邏輯陣列塊),僅舉數例,其可以包括邏輯元件、可配置邏輯塊、自適應邏輯模塊。如果期望的話,控制電路610可以實施分區630中的電路設計。例如,控制電路610可以通過經由配置資源660對配置存儲器位進行編程來生成分區630中的電路設計實施方案。
互連資源640可以耦合存儲電路670、運算電路680、附加的處理器電路690、分區630中的邏輯資源、以及接口620。如果期望的話,互連資源640可以(例如,通過對實現在垂直接線與水平接線之間的連接的配置存儲器位進行編程)提供可配置連接。例如,互連資源640可以由控制電路610配置為實施分區630中的電路設計。在一些實施例中,互連資源640可以提供在關于集成電路的電路設計實施方案的預定電路之間的固定連接。
在某些實施例中,接口620可以包括從控制電路610到互連資源640的橋接電路(諸如橋接622)。作為示例,橋接622可以實施存儲器映射總線體系結構,其可以允許控制電路610中的主控裝置(master)訪問由分區630中的邏輯資源實施的從動裝置(slave),由此訪問互連資源640。如果期望的話,接口620可以包括并行輸入輸出(pio)部件(諸如pio625),其可以允許控制電路610訪問分區630中的邏輯資源中的信號。主控裝置可以通過讀和寫存儲器映射寄存器來控制通過pio625的信號。pio625可以捕獲在其輸入上的數據并且將數據驅動到其輸出。如果期望的話,控制電路610可以將pio625的輸入輸出端口編程為輸入或輸出。
在一些實施例中,接口620可以包括從互連資源640到控制電路610的橋接電路(諸如橋接628)。作為示例,橋接628可以實施存儲器映射總線體系結構,其可以允許分區630中的邏輯資源為訪問控制電路610中的從動裝置的主控裝置。如果期望的話,分區630中的邏輯資源可以以與控制電路610不同的時鐘域進行操作,并且橋接628可以包括雙時鐘先進先出(fifo)核以將數據從一個時鐘域傳輸到其它時鐘域。
在一些情形下,可能期望通過接口620和互連資源640將信號從控制電路610發送到存儲電路670。作為示例,考慮其中全局信號需要被發送到存儲電路670的情形。這樣的重置信號可能需要互連資源640的許多連接在電路設計實施方案中將生成重置信號的電路耦合到存儲電路670。在一些實施例中,生成重置信號的電路可以將其發送到處理器電路650。響應于接收到重置信號,處理器電路650可以通過配置資源660將信號發送到控制電路610,并且控制電路610可以經由接口620和互連資源640將信號發送到存儲電路670。存儲電路670可以在接收到信號時進行重置。如果期望的話,處理器電路650和/或控制電路610可以通過時鐘網絡來校準時鐘信號以實現在存儲電路670處的局部同步重置去除。
僅舉數例,其中控制電路610可以經由接口620和互連資源640將數據寫入到存儲電路670的其它情形包括電路的實例化、電路的參數化、電路的修改。在某些實施例中,控制電路(諸如圖4的局部控制電路410)可以如圖3所描述的為了以下的目的使用掃描鏈450將數據寫入到寄存器:對電路進行實例化、對電路進行參數化、對電路進行修改、等等。
例如,運算電路680可以實施有限沖激響應(fir)濾波器,并且存儲電路670可以存儲fir濾波器的系數。在該示例中,控制電路610可以經由接口620和互連資源640將系數寫入到存儲電路670。在fir濾波器的操作期間,運算電路680可以經由互連資源640訪問存儲在存儲電路670中的系數。
在另一示例中,處理器電路690可以使用存儲電路670作為指令存儲器。在該示例中,控制電路610可以經由接口620和互連資源640將指令寫入到存儲電路670,以對指令存儲器進行初始化和/或更新處理器電路690的指令存儲器。
在另一示例中,存儲在存儲電路中的數據可以在高速串行通信電路中在8位10位(8b/10b)編碼與64位66位(64b/66b)編碼之間進行選擇。圖6的控制電路610或圖4的局部控制電路410可以執行對如圖4和圖6所描述的存儲電路的寫訪問操作,由此對高速串行通信電路進行實例化并保存配置資源。
在另一示例中,存儲電路670可以為實施只讀存儲器(rom)電路的隨機訪問存儲器(ram)電路。在該示例中,控制電路610可以經由接口620和互連資源640將數據寫入到存儲電路670以對rom電路的內容進行初始化。
在另一示例中,存儲電路670或寄存器320a和320b可以實施有限狀態機(fsm)的狀態。在該示例中,控制電路610可以經由接口620和互連資源640將數據寫入到存儲電路670以將有限狀態機設置成初始狀態。
在一些情形下,可能期望通過互連資源640和接口620從存儲電路670中取得信號。作為示例,考慮其中集成電路的操作被監測以檢測錯誤并且存儲電路(諸如圖3的寄存器320a和320b和/或圖6的存儲電路670)存儲錯誤狀況的情形。在一些應用中,可能期望取得存儲在那些存儲電路中的錯誤狀況并且基于所觀察到的錯誤狀況來探測附加的信號。控制電路(諸如圖4的局部控制電路410)可以經由如圖3和圖4所描述的掃描鏈執行對寄存器的讀訪問操作以取得出錯狀況。如果期望的話,圖6的控制電路610可以經由接口620和互連資源640執行讀訪問操作以從存儲電路670中取得出錯狀況。
在一些實施例中,追蹤緩沖器可以存儲從存儲電路670中的一個或多個存儲電路中取得的數據以允許在稍后時間點處的數據分析。控制電路610的緩沖器612可以實施追蹤緩沖器。備選地,控制電路610可以將存儲電路670配置為追蹤緩沖器。緩沖器612和/或存儲電路670可以存儲數據直到處理器電路650請求該數據。在接收到這樣的請求時,控制電路610可以通過配置資源660將該數據發送到處理器電路650。
如果期望的話,控制電路610可以執行在存儲電路670處的讀訪問操作,并且經由互連資源640、接口620和配置資源660將取得的數據直接路由到處理器電路650,由此繞過緩沖器612。在某些實施例中,運算電路680可以實施計數器。計數器可以對觀察的錯誤的數目、有限狀態機(fsm)的給定狀態的發生等等進行計數。控制電路610可以通過執行對運算電路680的讀訪問操作來取得存儲在計數器中的數目。
控制電路(例如,圖2的全局控制電路210、圖4的局部控制電路410、圖5的控制電路510、或圖6的控制電路610)可以針對出錯狀況的出現監測電路設計實施方案。例如,控制電路可以接收指示出錯狀況的出現的信號。在檢測到出錯狀況后,控制電路可以執行若干動作。例如,控制電路可以停止時鐘信號并執行在基本上電路設計實施方案的所有存儲電路處的讀訪問操作。控制電路可以停止寫入到追蹤緩沖器并且經由互連(例如,圖2的通信網絡230、圖5的數據寄存器540、圖6的配置資源660)將存儲在追蹤緩沖器中的數據提供到例如圖2的用戶界面250或圖6的處理器電路650以用于進一步處理。如果期望的話,控制電路可以通知用戶出錯狀況的出現。
在一些實施例中,控制電路(例如,圖2的全局控制電路210、圖4的局部控制電路410、圖5的控制電路510、或圖6的控制電路610)可以執行在存儲電路(例如,圖3的寄存器320a和320b、圖4的電路塊430中的存儲電路、圖5的存儲電路520、或圖6的存儲電路670)處的寫訪問操作,以用于錯誤注入(例如,以對單粒子效應(seu)的效應進行建模和分析)。例如,控制電路可以中斷電路設計實施方案的至少一部分的操作。控制電路可以執行在存儲電路處的讀訪問操作以取得存儲在存儲電路中的位。控制電路可以使所取得的位的位值反相,執行在存儲電路處的寫訪問操作以將經反相的位值存儲在存儲電路中,并重啟電路設計實施方案的被中斷的部分的操作。考慮其中集成電路是圖1的可編程邏輯器件100并且電路設計實施方案是用戶的電路設計到可編程邏輯器件100上的映射的情形,其中存儲電路是電路設計實施方案中的用戶寄存器。在該情形下,控制電路可以執行在用戶寄存器處的寫訪問操作,并且使存儲在用戶寄存器中的位的位值反相。
可以在集成電路的輸出處觀察到注入的錯誤的效果。如果期望的話,兩個相同的電路設計可以被實施在相同的集成電路中或者被實施在兩個單獨的集成電路中。兩個電路設計實施方案可以接收相同的輸入數據。控制電路可以將錯誤注入到兩個電路設計實施方案之一中,并且在兩個電路設計實施方案的輸出處觀察差別以監測注入的錯誤的效果。
圖7是示出了用于經由集成電路中的配置資源(例如,圖2的通信網絡230、圖5的數據寄存器540和地址寄存器550、圖6的配置資源660)來執行對存儲電路(例如,圖2的扇區240中的存儲電路、圖5的存儲電路520、或圖6的存儲電路670)的訪問操作的說明性操作的流程圖700。在操作710期間,處于第一模式中的控制電路可以通過經由配置資源對配置存儲器位進行編程來生成關于集成電路的包括存儲電路和訪問電路的電路設計實施方案。控制電路可以在對配置存儲器位的編程期間禁用時鐘信號。如果期望的話,控制電路可以在不禁用時鐘信號的情況下對配置存儲器位進行編程。
例如,圖2的全局控制電路210可以經由通信網絡230將配置數據發送到局部控制電路220,其可以實施扇區240中的電路設計。作為另一示例,圖5的控制電路510可以經由地址寄存器550和數據寄存器540對存儲電路520進行配置。作為另一示例,圖6的處理器電路650可以經由配置資源660將配置數據發送到控制電路610,其可以通過對配置存儲器位進行編程來實施分區630中的電路設計。
在操作720期間,可以在用戶模式中利用電路設計實施方案來操作集成電路,并且在操作730期間,可以利用訪問電路來執行在存儲電路處的第一訪問操作。作為示例,運算電路680可以執行在存儲電路670處的讀訪問操作,以取得用于有限沖激響應(fir)濾波器操作的系數。在一些實施例中,訪問電路可以包括可以被配置為執行在存儲電路處的訪問操作的功能塊(諸如圖1的pld100的邏輯陣列塊(lab)110、隨機訪問存儲器(ram)塊130、和/或數字信號處理(dsp)塊120)。
在操作740期間,處于第二模式中的控制電路可以執行經由配置資源在存儲電路處的第二訪問操作。例如,控制電路610可以使用配置資源660來執行存儲電路670的讀訪問操作和/或寫訪問操作。類似地,圖2的全局控制電路210可以使用通信網絡230來訪問扇區240中的存儲電路。此外,控制電路510可以使用數據寄存器540和地址寄存器550來訪問存儲電路520。
圖8是示出了用于執行對集成電路中的電路設計實施方案的統計監測的說明性操作的流程圖800。在操作810期間,處于第一模式中的控制電路可以對集成電路中的配置存儲器位進行編程,由此生成在集成電路中包括寄存器的電路設計實施方案。在操作820期間,電路設計實施方案可以在操作集成電路時將信號存儲在寄存器中。在操作830期間,處于第二模式中的控制電路可以探測存儲在寄存器中的信號。例如,控制電路可以在第二模式中使用如本文參考圖3和圖4公開的一個或多個掃描鏈來探測存儲在寄存器中的信號。作為具體示例,控制電路410可以使用如本文參考圖4公開的掃描鏈450來探測存儲在扇區400中的用戶寄存器中的信號。作為另一具體示例,本地控制電路220可以使用如本文參考圖3公開的包括存儲電路340和345的掃描鏈345來探測存儲在用戶寄存器320a-320b中的信號。可以在操作840期間分析所探測的信號以執行對電路設計實施方案的統計監測(例如,對微處理器中的諸如溢出的出錯狀態的數目進行計數,對流量管理器電路中的損壞數據包進行計數,等等)。可以在操作840中分析所探測的信號以使用例如控制電路來執行統計監測。
本文描述的方法和裝置可以被并入到任何適當的電子設備或電子設備的系統中。例如,該方法和裝置可以被并入到許多類型的設備(諸如微處理器或其它集成電路(ic))中。僅舉數例,示例性ic包括可編程陣列邏輯(pal)、可編程邏輯陣列(pla)、現場可編程邏輯陣列(fpla)、電可編程邏輯器件(epld)、電可擦可編程邏輯器件(eepld)、邏輯單元陣列(lca)、現場可編程門陣列(fpga)、粗粒度可編程邏輯陣列(cgpld)、粗粒度可配置陣列(cgra)、專用標準產品(assp)、專用集成電路(asic)、數字信號處理器(dsp)、圖形處理單元(gpu)。
本文描述的集成電路可以為包括以下部件中的一個或多個部件的數據處理系統的一部分:處理器;存儲器;i/o電路;以及外圍設備。集成電路能夠被使用在其中期望執行在存儲電路處的讀訪問操作和/或寫訪問操作的優點的各種各樣的應用中(諸如計算機網絡、數據網絡、儀表化、視頻處理、數字信號處理、或任何適當的其它應用)。
盡管方法操作以特定順序來描述,但是應當理解可以在所描述的操作之間執行其它操作,所描述的操作可以被調整使得它們在稍微不同的時間進行,或者所描述的操作可以被分布在只要交疊的操作的處理器以期望的方式來執行就允許以與處理相關聯的各種間隔進行處理操作的系統中。
上文僅僅說明本發明的原理,并且本領域技術人員能夠在不脫離本發明的范圍和精神的情況下進行各種修改。