專利名稱:配置邏輯器件陣列的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明總的涉及可編程邏輯器件,更具體地涉及現(xiàn)場可編程門陣列(FPGA)的配置。
背景技術:
在集成電路技術的早期,諸如移位寄存器、多路轉換器、加法器等的邏輯電路是由數(shù)字集成電路構成的。這些小規(guī)模集成(SSI)電路通常含有數(shù)目較少(例如四至八個)的邏輯門,如“與”門、“或”門、觸發(fā)電路和鎖存器等,需要幾十個晶體管。隨著技術的發(fā)展,能夠將越來越多的晶體管裝入到IC電路中。目前,半導體制造商能夠將數(shù)百萬個晶體管裝在單個晶片上,從而形成高度復雜的芯片,如現(xiàn)代微處理器。
裝有這些VLSI(特大規(guī)模集成)和ULSI(超大規(guī)模集成)芯片的系統(tǒng)同樣是復雜的。這種系統(tǒng)通常采用若干個常規(guī)邏輯芯片提供各種各樣的支撐邏輯功能。已研制出允許制造商快速地實現(xiàn)客戶的邏輯設計的門陣列。這些器件是由利用標準方法制造的邏輯門陣列組成的。器件的定制是在最后幾步制造步驟中發(fā)生的,在這幾步中形成與邏輯門連接的金屬層以實現(xiàn)所需的邏輯功能。
這些門陣列演變?yōu)榭删幊痰钠骷?,給僅需要少量器件或者還未完全開發(fā)邏輯設計但是需要少量樣品作測試的設計人員提供了更大的靈活性。另一種可編程邏輯器件采用熔斷器提供器件中邏輯門之間的互連。熔斷器被熔斷便斷開連接,或者在所謂的抗熔斷器的情況中形成連接。因此,這種器件只能使用一次,僅存儲一組邏輯功能。
可編程邏輯器件的繼續(xù)發(fā)展已經導致可重新編程的互連關系的發(fā)展,更重要的是可配置的邏輯單元的發(fā)展。顧名思義,可配置邏輯單元允許設計人員能夠對邏輯單元進行編程,使其具有許多基本邏輯門中任何一個門的功能或者更高級的邏輯功能。當前的制造技術使得生產具有數(shù)以千計個可配置邏輯單元及其相關互連的高密度器件,即稱為現(xiàn)場可編程門陣列(FPGA)成為可能。提供這種高密度器件的能力使得設計人員能夠采用越來越復雜的邏輯功能。象以前的產品一樣,F(xiàn)PGA包括可編程的互連關系。此外,互連關系是可重復編程的,進一步增大了FPGA的利用價值。
然而,以往對這些可重復編程FPGA的重新配置通常需要對整個器件進行重新配置。Atmel公司(本發(fā)明的受讓人)制造的FPGA代表了這種器件向前又邁進了一步。將這種器件稱為可動態(tài)重新配置的FPGA,允許僅對所選的一部分邏輯陣列進行重新配置。用這種方法能夠對FPGA作出變化,不必對整個器件進行編程,從而允許僅對所選的一部分陣列進行重新配置。
參考
圖1,典型的FPGA 100包括多個可配置的邏輯單元130、可配置的I/O塊110和可配置的互連關系120、122,共同稱之為FPGA資源。盡管互連關系120、122是以各個互連線網格示出的,但是每條“線”實際上是一組互連線,例如,如圖3B所示。每個邏輯單元130和I/O塊110包括數(shù)據(jù)線140、142,它們能夠有選擇地耦合到互連關系120、122上。
典型設計周期從設計一個或多個然后將在FPGA中實現(xiàn)的邏輯電路開始。邏輯設計包括邏輯門和這些邏輯門之間的互連關系。然而,特定的設計,如數(shù)字濾波器利用“常數(shù)”,即1和0的串來限定其特性。為了描述本發(fā)明,把這種常數(shù)稱為設計的一部分,也可以稱為邏輯門。
例如,圖2示出一種簡單的邏輯設計。邏輯設計中的每個元件用一個實例名來識別。因此,圖2中的與門和或門取名為G1-G3。圖3A示出邏輯設計是如何在FPGA 100’中出現(xiàn)的。將圖2中所示的門G1-G3中的每一個門和互連關系映射到圖3A中所示的所選邏輯單元和互連關系上。同樣,將輸入A-D和輸出OUT(圖2)映射到所選I/O塊。因此,互連關系120a-120c和122a-122c(以較淡的線表示)與邏輯單元G1-G3和I/O塊110a-110e連接在一起。圖3B示出了圖3A配置中一部分放大圖。說明不同邏輯單元、互連關系和I/O塊之間的具體互連情況。盡管在該圖中的設計并未示出常數(shù)的使用,但是,眾所周知,能夠將現(xiàn)代FPGA中邏輯單元構造為輸出邏輯“1”或邏輯“0”,能夠根據(jù)需要如此構造一組邏輯單元,產生一個或多個1和0的串。
現(xiàn)在將說明把圖2的設計轉換到如圖3A中所示的FPGA的步驟。由于絕大多數(shù)的目前設計在功能上趨向于相當復雜,通常采用計算機輔助設計(CAD)工具以便于設計過程。因此,在圖4中,設計流程圖200從輸入邏輯電路初始設計,即步驟210開始,例如通過利用CAD工具。
接著是邏輯電路的邏輯門的放置和選路,步驟212。作為放置和選路步驟的結果,產生設計數(shù)據(jù)庫,步驟214。設計數(shù)據(jù)庫規(guī)定FPGA中將參與實現(xiàn)邏輯電路的這些邏輯單元、I/O塊和互連關系(即資源),包括所選資源的位置及其路經或邏輯結構。圖1示出用于識別邏輯單元位置的若干坐標系中的一個。在圖1所示的傳統(tǒng)坐標系中,邏輯單元按照從左到右和從下到上的次序編號,從左下角單元(0,0)開始,到右上角單元(3,3)結束。通常,設計數(shù)據(jù)庫另外還包括在設計階段期間給邏輯電路元件指定的實例名,圖2。
從包含在設計數(shù)據(jù)庫中的信息,由通常稱為位流編譯器的工具產生配置位流,步驟216。位流編譯器獲取存儲在設計數(shù)據(jù)庫中的位置和配置信息,產生將配置FPGA中各種資源的限定位流。在物理級上,限定位流代表FPGA中晶體管(開關)的開/關(ON/OFF)狀態(tài),它實際上控制每個邏輯單元和I/O塊的配置以及邏輯單元與I/O塊之間的互連。
在這里,或是可以把配置位流下載到邏輯陣列,由此而配置器件,步驟218a,或是可以把位流保存在磁盤上,步驟218b。圖4中用虛線表示這兩種可供選擇的方案。
即使已經對設計作了調試并按照預期的進行操作,偶然也會發(fā)生需要對初始設計進行變化。例如,新的要求可能導致功能定義的變化,這就必須改變初始設計。利用通常的現(xiàn)有技術,對初始設計的最終版本的修改,步驟220導致上述步驟的重復。因此,設計人員利用CAD工具訪問初始設計的最終版本并對該設計作出所需改變。執(zhí)行第二次放置和選路步驟,步驟222,由此產生第二個設計數(shù)據(jù)庫,步驟224。然后,根據(jù)新的設計數(shù)據(jù)庫由位流編譯器產生第二個配置位流,步驟226。
與第一配置位流一樣,可以把也可以不把第二配置位流下載到FPGA。如果需要下載,可提供兩種選擇即能夠把位流整體下載到FPGA,由此重新配置整個陣列,以包含改進的設計。另一種選擇,這里FPGA是可動態(tài)重新配置的,意思是指器件能夠被部分重新配置,能夠僅對第二配置位流中對應于設計變化的這些部分進行下載。通過確定第一與第二配置位流之間的差異產生部分(可重新配置的)位流首先實現(xiàn)之,步驟228。然后,把部分位流下載到可動態(tài)重新配置的FPGA,步驟230,由此而實行FPGA的部分重新配置,其中,僅對改進設計中所涉及的這些邏輯單元、互連關系和I/O塊進行重新編程。最后,對于另外的設計改進重復循環(huán),就象出現(xiàn)設計功能要求上變化一樣。
設計中邏輯門的放置和選路是一項計算強度高的活動。當設計人員由于高密度FPGA的提供能力趨于采用越來越復雜的設計,放置和選路操作會大大增加。在圖4所示的現(xiàn)有方法中,考慮到設計循環(huán)中的每一次迭代可能需要完全的放置和選路操作,專用于放置和選路計算的時間量會達到驚人的程度。
現(xiàn)有技術方法的另一個方面是可能會出現(xiàn)改進后的設計將導致放置和選路配置不同于以前設計的放置和選路配置。如果以前的設計已經精心地調諧到提供特定臨界時序特性,這就成為一個問題。通過全部放置和選路操作進行的下一設計會導致具有不同凈長度的邏輯的不同放置,由此對電路的時序產生不利影響。在涉及實時應用的地方,這是一種不可以接受的情況。
需要一種對于完全完成和調試邏輯設計的重新設計在周轉時間方面能改善現(xiàn)有技術的方法。還需要一種開發(fā)方法,維持現(xiàn)有設計中未涉及設計修改的部分不受影響。
到這里,討論一直集中圍繞邏輯電路的設計是在設計人員的工作實驗室的環(huán)境中。然而,已觀察到,F(xiàn)PGA的現(xiàn)場應用會不適合于單個靜態(tài)設計。盡管FPGA可以在實際工作條件下在現(xiàn)場重新配置,但是,新的配置通常由存儲在諸如EPROM的非易失性裝置中的完整設計組成。從EPROM讀出配置位流并將其下載到FPGA中。因此,可供使用的配置的尺寸受EPROM的存儲容量的限制。在諸如自適應濾波的應用中,迫切需要濾波器的響應能夠根據(jù)諸如被濾波數(shù)據(jù)的頻率和相位特性,即通常不可預料的條件,在運行時變化。在這種情況中,事前便不能指定新的配置,如濾波器參數(shù)。
然而,還需要在運行過程中根據(jù)裝置正在工作的環(huán)境對FPGA進行配置的能力。此外,由于僅需要對FPGA中一部分進行重新配置,如在自適應濾波器的情況中,需要具有運行過程中進行部分重新配置的能力。
發(fā)明概要根據(jù)本發(fā)明,一種對可動態(tài)重新配置FPGA進行配置的方法,從輸入初始邏輯設計開始。在該設計上進行放置和選路,導致將位置分配給實現(xiàn)該設計的FPGA中的邏輯單元和互連關系。設計數(shù)據(jù)庫是放置和選路操作的結果。接著,在設計數(shù)據(jù)庫上工作的位流編譯器產生配置位流。位流或是可以被下載到FPGA,由此對裝置進行配置,或是可以簡單地被保存在存儲媒介上。
根據(jù)相應的設計數(shù)據(jù)庫作出對初始設計最后工作版本的變化。修改后的設計數(shù)據(jù)庫被保存起來,從修改后的設計數(shù)據(jù)庫產生第二配置位流。根據(jù)本發(fā)明,第二配置位流僅由對應于修改后邏輯設計的這些邏輯單元、I/O塊和互連關系的定義位串組成。
通過直接訪問設計數(shù)據(jù)庫以執(zhí)行設計的變化,完全可避免本來需要的耗費在放置和選路計算上的時間。當必須對邏輯設計的最后工作版本作修改時,例如,由于在裝入FPGA的系統(tǒng)的功能要求上的變化需要修改時,這是尤其有用的,也是想要的特性。經常的情況是,設計變化自然越來越多,僅涉及到整個設計的一個局部部分。在其它時間,設計人員希望對邏輯設計的最后工作版本的變化做實驗。本發(fā)明的配置方法可保證用很短的檢修時間來實現(xiàn)設計變化,所以,漸增的變化和“What-if”實驗是可行的和便利的,不會對項目開發(fā)產生不利影響也不產生停止工作時間表。此外,由于放置和選路操作是旁通的,設計中設計人員未作修改的關鍵部分的任何時序將不受影響并保證提供已知的時序性能。更通俗地說,設計中未作修改的任何部分將繼續(xù)按預期行使其特性。因此,采用本發(fā)明的方法,保證產生的FPGA應用在結構上是正確的,因此功能上是正確的。
在本發(fā)明的一個較佳實施例中,通過圖形接口把設計數(shù)據(jù)庫提供給用戶。接口允許用戶指定一部分設計數(shù)據(jù)庫進行顯示。設計數(shù)據(jù)庫通過其實例名和在FPGA中的位置確定邏輯單元、I/O塊和互連關系。給用戶提供邏輯單元,包括被配置為輸出常數(shù)邏輯值的這些邏輯單元的名稱、位置和當前配置。也給出邏輯單元當中的互連關系。
通過從一張以圖形方式或者文本方式表示的邏輯門和互連線選項的表或菜單中進行選擇可以作出對設計數(shù)據(jù)庫的修改。對于常數(shù)的修改可以以文本方式通過輸入新的常數(shù)值或者以圖形方式通過操縱一個或多個能夠打開(邏輯“0”)或關閉(邏輯“1”)的開關的圖標進行。
在本發(fā)明的另一個實施例中,對FPGA進行實時重新配置的系統(tǒng)包括與裝置的硬件接口和為了下載新配置數(shù)據(jù)而訪問該裝置的軟件實用程序。軟件實用程序包括產生部分配置位流的手段,允許應用程序根據(jù)運行中檢測到的操作環(huán)境中的特定條件對FPGA進行配置。硬件接口和軟件實用程序允許在裝置使用中訪問FPGA,從而能夠對裝置中的一部分進行重新配置。
附圖簡述圖1是典型FPGA的結構。
圖2是邏輯電路的一個例子。
圖3A和3B示出圖2的邏輯電路在圖1的FPGA中的實施。
圖4是在FPGA設計中通用步驟的要點。
圖5是本發(fā)明設計方法的一個實施例的要點。
圖6是按本發(fā)明配置FPGA的系統(tǒng)的方框圖。
圖7A-7C示出數(shù)字濾波器設計。
圖8A和8B是本發(fā)明的用戶接口的屏幕樣板。
圖9A-9D示出利用基于ROM查找表實現(xiàn)的加法器電路和減法器電路。
圖10A-10B示出本發(fā)明的用戶接口的屏幕樣板。
圖11示出一個實時FPGA重新配置的系統(tǒng)。
實現(xiàn)本發(fā)明的最佳方式參考圖5,按照本發(fā)明一個實施例的配置方法300包括創(chuàng)建一種初始設計,步驟310,和執(zhí)行放置位置和選路徑的操作,獲得一個第一設計數(shù)據(jù)庫,步驟312和314。然后,位流編譯器創(chuàng)建配置位流,步驟316,可以將其下載到FPGA上,配置裝置,步驟318a。另一方面,配置位流可以簡單存儲在存儲器裝置中,步驟318b。配置位流包括多個定義位流,它指定FPGA中的資源將如何進行配置。
當需要對初始邏輯設計的最終工作版本進行變化時,設計修改可以直接對設計數(shù)據(jù)庫進行。然后,繼續(xù)圖5所示的方法300,向設計人員顯示設計數(shù)據(jù)庫中的一部分,步驟320。設計人員選擇設計數(shù)據(jù)庫中需要作修改的這些部分和輸入變化,步驟322。根據(jù)輸入的修改情況,產生部分配置位流(也稱為重新配置位流),它僅由對應于修改的定義位流構成。然后,可以將這部分位流下載或保存到存儲媒體中,步驟326。
圖6示出對動態(tài)可配置FPGA進行配置的系統(tǒng),它體現(xiàn)了圖5所示的方法。系統(tǒng)400包括數(shù)據(jù)存儲器420和各個模塊402-420。采用諸如CAD工具、簡圖捕獲程序等設計輸入模塊402來創(chuàng)建初始設計420a并存儲到磁盤420上。放置和選路模塊404獲取初始設計420a并創(chuàng)建設計數(shù)據(jù)庫420b,它也存儲在磁盤上。位流編譯器406產生配置位流420c,下載模塊408把配置位流下載到FPGA150。
設計人員通過圖形用戶接口(GUI)模塊410輸入對初始邏輯設計最終工作版本的修改。GUI從設計數(shù)據(jù)庫420b進行讀出并顯示由設計人員所選的設計數(shù)據(jù)庫中的一部分。GUI接收對設計數(shù)據(jù)庫的修改并僅根據(jù)輸入的修改創(chuàng)建部分位流。GUI裝入位流編譯器的功能,產生部分位流。然后將部分位流420d存儲到磁盤上,接著通過下載模塊408下載到FPGA。另一方面,GUI能夠把部分位流直接傳送到下載模塊408。在這里應當注意如果不需要間接下載到FPGA,那么能夠采用另一種存儲媒體來存儲配置(和重新配置)位流。例如,可以把配置(和重新配置)位流下載到EEPROM等存儲媒體上,以供下一步分配。
為了說明圖6所示的方法,考慮一個自適應數(shù)字濾波器,如圖7A中所示。濾波器設計500由串聯(lián)級聯(lián)的延遲寄存器R1-R7、乘法器M1-M8和加法器A1-A7組成。數(shù)據(jù)寬帶為八位(一字節(jié))。一組濾波器系數(shù)C0-C7起乘法運算的被乘數(shù)的作用。由于數(shù)據(jù)中的每個字節(jié)通過寄存器移位和傳播,所有乘法器形成系數(shù)與數(shù)據(jù)之間的乘積項。然后由加法器A1-A7對乘積項求和。
回想一下邏輯設計,如濾波器設計500中的每個元件具有一個由設計人員開始指定的實例名。因此,參考圖7A,寄存器取名為R1-R7,乘法器取名為M1-M8,加法器取名為A1-A7。還給系數(shù)C0-C7指定了實例名。具體說,包含系數(shù)的每一個位具有一個名稱。從圖7C中所示的系數(shù)C0的擴展圖中更加清楚地示出了這一情況。系數(shù)是一個八位量,這里,將位取名為C0_0至C0_7。再回到圖7A,應當明白,也可以給元件R1-R7、M1-M8和A1-A7當中的互連關系取名。然而,為了避免圖面的雜亂,已經省略了這些互連關系的實例名。
濾波器設計500的放置和選路導致設計數(shù)據(jù)庫,由實例名、每個寄存器和算術算符以及被選作實現(xiàn)這些功能的邏輯單元的位置和配置指定。以同樣的方式,設計數(shù)據(jù)庫列出位的實例名,包括系數(shù)C0-C7、它們的相應邏輯單元的位置和邏輯單元是否被配置為產生邏輯“0”或邏輯“1”。通過FPGA中的坐標系,如圖1中所示的坐標系識別出現(xiàn)在設計數(shù)據(jù)庫中的邏輯單元。
圖7B示出圖7A的數(shù)字濾波器的改進設計500’,這里已經指定了一組不同的系數(shù)C’0-C’7。希望根據(jù)本發(fā)明的方法作這種修改的設計人員開始訪問基于初始設計500創(chuàng)建的第一設計數(shù)據(jù)庫。這最好是利用圖形用戶接口(GUI)實現(xiàn),當然基于文本的接口也一樣是有效的,也許使用更困難和更低效些。
在一個實施例中,GUI有一種模式,用于對邏輯設計中所定義的邏輯常數(shù)進行編輯。例如,圖8A的屏幕樣板顯示了設計500中的每個常數(shù)C0-C7。在“實例名”列下是包括每個系數(shù)C0-C7位的名稱。每個位由一個配置為輸出常數(shù)邏輯電平的邏輯單元實現(xiàn)?;叵胍幌?,每個邏輯單元具有一個相應的實例名。在單元被范圍識別的地方,如在圖8A的情況中,顯示范圍中第一和最后單元的實例名。在“位置”列下是在相應邏輯單元的FPGA中的位置。為了說明起見假設,被使用的坐標編號慣例遵循圖1中所示的慣例。因此,根據(jù)圖8A,包括系數(shù)C0的邏輯單元位于FPGA中第10行的第7-14列中;系數(shù)C1的邏輯單元位于第12行的第7-14列中,依此類推。“現(xiàn)行配置”列顯示由邏輯單元產生的當前邏輯值。例如,包括系數(shù)C0的第7、8、9、10、11、12、13和14列中八個邏輯單元顯示,為當前配置相應的輸出邏輯值“1”、“0”、“1”、“0”、“1”、“0”、“1”和“1”。“新配置”列由輸入字段組成,允許用戶輸入新的邏輯值,作為一位串。這位串位中的每個位與這位串所表示的常數(shù)單元具有一一對應關系。
由于設計數(shù)據(jù)庫包含產生圖8A所示顯示屏所需的所有信息,GUI通過設計數(shù)據(jù)庫進行簡單搜索,找出已經被配置為產生常數(shù)邏輯電平的這些邏輯單元,訪問它們的實例名、單元位置和當前配置信息。訪問設計數(shù)據(jù)庫和產生如圖8A中所示顯示信息的具體軟件實施細節(jié)將隨任何給定設計數(shù)據(jù)庫格式所使用的精確數(shù)據(jù)結構而變化。在計算機程序員的范圍和能力之內,這些實施細節(jié)是專業(yè)人員所公知的。
圖8A中所示的邏輯常數(shù)最好按照水平相鄰性分組。在一個給定的常數(shù)邏輯單元塊中,可以將邏輯單元分組為水平單元組或垂直單元組。例如,在圖8A中,可以看出,單元位置(7,18)至(14,21)限定32個邏輯單元的塊。這些單元被顯示為四個由八個水平相鄰單元組成的組。因此,四個水平組是(7,18)至(14,18);(7,19)至(14,19);(7,20)至(14,20)和(7,21)至(14,21)。
另一方面,塊(7,18)至(14,21)中的單元最好能夠按照垂直相鄰性分組。在圖8B的屏幕樣板中示出這一情況。在這種情況下,有八個由四個單元組成的垂直組,每一個為(7,18)至(7,21);(8,18)至(8,21);(9,18)至(9,21);(10,18)至(10,21);(11,18)至(11,21);(12,18)至(12,21);(13,18)至(13,21)和(14,18)至(14,21)。于是將這些單元的其它字段修改反映其垂直分組。
根據(jù)較佳實施例,將相鄰常數(shù)單元的組表示為單元的范圍。由于構成系數(shù)C0-C3的單元僅呈現(xiàn)水平相鄰性它們顯示成水平組。同樣,對僅顯示垂直相鄰性的單元進行垂直分組。能夠對常數(shù)單元進行垂直或水平分組的地方,按照用戶指定的優(yōu)先選擇進行分組。因此,根據(jù)設計人員的優(yōu)先選擇,能夠對系數(shù)C4-C7進行水平或垂直分組,如圖8A和8B所示。在圖中所示的例子中,優(yōu)先選擇可以針對水平相鄰性,如圖8A所示。然而,在另一種設計中,可以按垂直方式排列系數(shù),在這種情況中,可以作出圖8B所示的垂直優(yōu)選。
在本發(fā)明的另一個實施例中,可以將非相鄰的常數(shù)單元分組在一起。GUI允許用戶選擇常數(shù)單元中的任意組合并將所選單元作為一個組處理。盡管這些單元是非相鄰的,但是,GUI可顯示作為一個組的單元,并允許用戶對作為一個組的單元的邏輯值進行修改。因此,以一一對應關系把由用戶輸入的代表新邏輯值的一位值串映射到組中的常數(shù)單元,與以上結合圖8A和8B所說明的情況差不多。
輸入新系數(shù)值C0’-C7’后,GUI按照圖5中的步驟324產生部分配置位流。由于GUI既擁有單元位置(從設計數(shù)據(jù)庫獲得)又擁有它們的新配置(從設計人員獲得),GUI能夠產生配置位流,該配置位流將實現(xiàn)設計人員指定的設計變化。
部分配置位流僅僅基于設計人員輸入的變化,并包括僅針對FPGS中參與設計變化的這些單元的配置信息。不需要對整個設計進行放置和選路操作,導出配置位流的變化,正如采用現(xiàn)有技術方法的情況那樣,見圖4。相反地,GUI從用戶輸入直接進入到部分配置位流。這種方法顯著地縮短了實施設計變化所需的時間,從而允許設計人員快速實現(xiàn)和測試設計方案的替換。
較佳實施例的GUI進一步包括一種對配置成邏輯門的邏輯單元進行修改的模式。例如,考慮圖9A中所示的基于ROM的查找表,它由ROM陣列和解碼器組成。查找表通常是用于執(zhí)行諸如全加器和全減器的邏輯功能的功能發(fā)生器,圖9B示出其真值表。圖9C和9D分別示出加法器和減法器的實現(xiàn),這里,圖9A中解碼器的八個輸出(0-7)在圖9C和9D中示為A0-A7。可以看出,在四個地方加法器電路不同于減法器電路加法器中“與”門G8、12在減法器中被“或”門G7、G11所替代;加法器中“或”門G24、G28在減法器中被“與”門G23、G27所替代。
利用本發(fā)明的方法,設計人員通過簡單地對感興趣的四個門進行定位或識別以及變化它們的相應邏輯單元的配置能夠方便地從一種電路切換到另一種電路。參考圖10A和10B,GUI能夠在窗口中顯示放置在FPGA中的邏輯設計。通過滾動窗口,能夠把陣列中的任何一部分帶入到視窗中。另一方面,GUI通過把適當?shù)男畔⑤斎氲綀D10A中所示的單元位置字段或實例名字段中,能夠定位部分陣列。
對于以下的討論假設初始邏輯設計裝入圖9C中的加法器電路,需要轉換到圖9D中的減法器電路。GUI訪問在加法器電路的初始設計上進行放置和選路操作而產生的設計數(shù)據(jù)庫,并根據(jù)FPGA的元件顯示設計布局。顯示可以由構成FPGA的邏輯單元的圖標或其它圖形表示組成。另一方面,GUI可以顯示代表由每個邏輯單元所提供邏輯功能的圖標。另一種選擇是提供FPGA組成的文本表示,然而這一方法在傳送和引導有關FPGA信息方面不如圖形方法有效。
設計人員或是通過滾動或是通過指定門的實例名而顯示待改變的部分加法器電路。圖10A的屏幕樣板上顯示了以一部分加法器電路,即門G6、G8、G10和G12為中心的一部分設計數(shù)據(jù)庫??梢钥闯?,“或”門G6已經指定為56行、100列中的邏輯單元,“與”門G8已經指定為56行、101列中的邏輯單元,依此類推。為了把門G8從“與”門變?yōu)椤盎颉遍T,設計人員首先選擇該門,例如通過將鼠標器光標置于該門的圖標上并接下鼠標器按鈕。圖10B示出被突出的門G8,表示該門已經被選定。單擊鼠標器另一按鈕(或撳鍵)產生一彈出菜單,顯示一張可能的邏輯門表。從菜單中選擇“或”條目,引起所選門G8被配置為“或”門。以同樣的方式改變門G12。接著,設計人員通過滾動窗口將門G24和G28帶入視屏。然后,以如上所述的方式對門G24和G28進行修改。
當修改完成時,撳一下OK按鈕。正如圖5所示的方法中描述的,GUI僅根據(jù)修改產生部分配置位流。產生的位流僅由把初始設計的四個單元(加法器電路中的G8、G12、G24和G28)重新定義為減法器的門G7、G11、G23和G27的特性所需的位串構成。因此,通過直接訪問初始全加器設計的設計數(shù)據(jù)庫和在其上作出變化,設計人員能夠避免執(zhí)行完全放置和選路操作步驟而耗費的時間。
最后要說明一點,可以觀察到,以上討論的特定門的選擇和菜單方法不是實施本發(fā)明的關鍵所在?;趫D形的其它輸入/選擇方法也是同樣有效的。
通常相對于查找表,如圖9B中所示的查找表,由查找表實施的邏輯功能完全由表的輸出所限定,因此,圖9B中列SUM和Cout完全限定全加器功能,列SUB和Bout完全限定全減器功能。GUI無需顯示執(zhí)行特定查找表的特定邏輯單元,而是能夠僅列出表輸出和允許用戶輸入對表輸出的變化。然后,GUI指定所需邏輯單元完成新的查找表。以這種方式在更高的抽象水平上代表查找表,以一種更有意義的方法將該表提供給用戶,從而對用戶隱去意義不大的實施細節(jié),因此,具有更大的適用性。
從圖9C和9D可以看出,由2個輸入“與”門和2個輸入“或”門的級聯(lián)串聯(lián)連接能夠實現(xiàn)查找表。例如,全加器的SUM輸出由門G2、G6、G10、G14、G18、G22、G26和G30來實現(xiàn),而Cout輸出則由門G4、G8、G12、G16、G20、G24、G28和G32來實現(xiàn)。因此,GUI簡單地通過改變實現(xiàn)查找表的適當門,能夠方便地重新配置一個限定第一功能查找表來執(zhí)行第二功能。
現(xiàn)在,討論將針對本發(fā)明的另一實施例,它允許設計人員對可動態(tài)重新配置的FPGA進行實時重新配置,即在重新配置時可以運行的系統(tǒng)中的陣列。參考圖11,典型系統(tǒng)600包括CPU或微處理器610、FPGA 620、EPROM622或其它一些非易失性RAM器件、以及諸如磁盤存儲器的數(shù)據(jù)存儲器630。在CPU610上運行的系統(tǒng)軟件包括配置FPGA的專用應用軟件602和FPGA實用程序604。在系統(tǒng)引導時,已經編程并在EPROM622中的配置位流載入到FPGA。另一種選擇是,能夠用存儲在數(shù)據(jù)存儲器630中的配置位流初始配置FPGA。
在系統(tǒng)600操作期間,軟件能夠檢測有關其操作環(huán)境的特定條件。例如,相對于圖8A和8B中所示的數(shù)字濾波器設計,軟件602可以確定需要作調節(jié)的濾波器截止頻率。相應地,可以對以前積累的數(shù)據(jù)進行分析,根據(jù)分析結果計算新的系數(shù)。然后,調用特定的FPGA實用程序604來創(chuàng)建包含定義新系數(shù)的位流的部分配置位流。接著,應用軟件602調用其它FPGA實用程序把部分配置位流下載到FPGA,由此實現(xiàn)該濾波器設計中的變化。
實時作出的設計變化的范圍不受FPGA實用程序604的限制,但是受裝載到FPGA的特定設計的復雜性程度的限制。在運行過程中的變化可以由應用軟件限制,限于僅改變邏輯常數(shù)或者限于各邏輯門。然而,這種限制是應用所特有的,由計算機電源、存儲器、操作環(huán)境等的提供能力確定,并不是由于本發(fā)明造成的限制。
FPGA實用程序604的一組應用編程接口(API)包括<pre listing-type="program-listing"><![CDATA[Constantcell Function Generate a configuration bitstream which configures each logic cell in the specified range to produce either a logic one or a logic zero. Parameters xStart-X coordinate of the first logic cell yStart-Y coordinate of the first logic cell xEnd-X coordinate of the last logic cell yEnd-Y coordinate of the last logic cell value_string-the corresponding string of l′s and O′s buf-pointer to a memory store for storing the configuration bitstring Return the number of bytes in the bitstreamDownLoad Function Download a configuration bitstring to the FPGA. Parameters buf-pointer to the configuration bitstring to be downloaded Return n/aGateCell Function Generate a configuration bitstream which reconfigures a previously defined logic gate to implement a different logic function.Only the logic function of the gate is changed. Other aspects of the gate remain the same,such as the number of input and output terminals. Parameters x_coord-X coordinate location of the logic cell y_coord-Y coordinate location of the logic cell logic-the specific logic function,AND,NAND,OR,NOR,XOR, INVERTER,etc. buf-pointer to a memory store for storing the configuration bitstring Return the number of bits in the bitstreamReadcell Function Return the current configuration for the specified logic cell. Parameters x_coord-X coordinate location of the logic cell y_coord-Y coordinate location of the logic cell buf-pointer to a memory store for storing the cell configuration Return n/a]]></pre>以下的C語言代碼片段說明如何在典型應用中使用這些實用程序。給出的例子針對圖8A的數(shù)字濾波器,說明如何根據(jù)外部操作環(huán)境來調節(jié)系數(shù)C0-C7.
<pre listing-type="program-listing"><![CDATA[/*...a determination has been made that the filter needs adjustment...*//*read the current values of filter coefficients C0-C7*/for(i=0;i<8;++i)/*each coefficient*/ for(j=0,j<8;++j)/*each bit*/ ReadCell(xloc_coeff(i)(j),yloc_coeff(i)(j), current_buf(ij+j);/*derive new coefficient values and store in new_buf*//*create configuration bitstreams for the new values*/z=0;/*point to beginning of bstream*/for(i=0;i<8;++i){ zl=ConstantCell(xloc_coeff(i)(0),yloc_coeff(i)(0), xloc_coeff(i)(7),yloc_coeff(i)(7),new_buf(i), bstream+z); z+=z1;/*point to end of bstream*//* download bitstream to FPGA*/DownLoad(bstream);]]></pre>
根據(jù)本發(fā)明的對FPGA重新配置的系統(tǒng)允許FPGA的重新配置實時進行和允許僅對FPGA中的一部分進行重新配置。此外,本發(fā)明允許應用軟件根據(jù)外部操作環(huán)境確定設計中部分的變化。這種方法的優(yōu)點在于設計人員不需要事前確定所有可能的備用設計及其相應的配置位流。而是,應用軟件能夠確定設計變化,在運行過程中創(chuàng)建部分配置位流,根據(jù)它們所出現(xiàn)的環(huán)境中的條件而實施這些變化。
權利要求
1.一種配置可編程邏輯單元陣列的方法,其特征在于所述陣列包括多個可編程互連關系,每個所述邏輯單元在所述陣列中具有一個唯一單元位置,所述陣列具有一種相關的邏輯設計,所述方法包括訪問一個設計數(shù)據(jù)庫,該數(shù)據(jù)庫代表邏輯單元定義和對應于所述邏輯設計的邏輯單元互連關系的一種配置;把所述設計數(shù)據(jù)庫的一部分提供給用戶;輸入用戶指定的變化,對所述設計數(shù)據(jù)庫的用戶所選部分進行重新定義;產生一部分配置位流,僅描述與所述設計數(shù)據(jù)庫的所述重新定義部分相關的所述邏輯單元和所述的互連關系;以及將所述部分配置位流下載到所述邏輯單元陣列中,由此僅配置所述邏輯單元陣列中對應于所述用戶指定變化的這些部分。
2.如權利要求1所述的方法,其特征在于所述的產生步驟包括僅基于所述設計數(shù)據(jù)庫的所述已重新定義部分來定義所述部分配置位流。
3.如權利要求1所述的方法,其特征在于所述的用戶指定變化包括新的邏輯單元定義或新的互連關系,所述的產生步驟包括僅基于所述新邏輯單元定義或所述新互連關系來定義所述部分配置位流。
4.如權利要求1所述的方法,其特征在于所述的提供步驟包括識別被配置為邏輯門的特定邏輯單元以及對于每一個所述特定邏輯單元顯示其單元位置和顯示其相應邏輯門的圖形圖象或文本表示。
5.如權利要求4所述的方法,其特征在于所述的輸入用戶指定變化的步驟包括識別有待重新配置的邏輯單元、顯示備用邏輯門的表以及從所述表中選擇一個備用邏輯門,對所述被識別邏輯單元進行重新配置。
6.如權利要求5所述的方法,其特征在于所述的顯示備用邏輯門表的步驟包括顯示所述備用邏輯門的圖形表示。
7.如權利要求4所述的方法,其特征在于所述的提供步驟進一步包括識別所述設計數(shù)據(jù)庫中的固定值邏輯單元;對于不與其它任何固定值邏輯單元鄰接的固定值邏輯單元,顯示所述固定值邏輯單元的單元位置和當前值;以及對于一組相鄰的固定值邏輯單元,將所述這組的單元位置顯示為單元位置的范圍以及將所述組中的邏輯單元的當前值顯示為位流。
8.如權利要求1所述的方法,其特征在于所述的提供步驟包括僅顯示被限定輸出常數(shù)邏輯“1”或常數(shù)邏輯“0”的這些邏輯單元。
9.如權利要求1所述的方法,其特征在于所述的提供步驟包括識別所述設計數(shù)據(jù)庫中的固定值邏輯單元;對于不與其它任何固定值邏輯單元鄰接的固定值邏輯單元,顯示所述固定值邏輯單元的單元位置和當前值;以及對于一組相鄰的固定值邏輯單元,將所述這組的單元位置顯示為單元位置的范圍以及將所述組中的每個邏輯單元的當前值集中地顯示為位流。
10.一種在FPGA中產生所述FPGA的配置位流的方法,所述FPGA包括可編程邏輯單元和I/O塊以及設置在所述邏輯單元與所述I/O塊之間的可編程互連關系,所述方法包括輸入一邏輯電路,所述邏輯電路包括多個邏輯門和所述邏輯門之間的連接;選擇邏輯單元和互連關系來實現(xiàn)所述邏輯電路;形成一個包含所述所選邏輯單元和互連關系的放置和選路信息的設計數(shù)據(jù)庫;根據(jù)所述放置和選路信息產生第一配置位流,所述第一配置位流包括所有的所述所選邏輯單元和互連關系的定義,由此而實現(xiàn)所述邏輯電路;把所述第一配置位流存儲到數(shù)據(jù)存儲器中,接著下載到所述FPGA中;以及將變化加入到所述邏輯電路設計中;所述方法的改進包括向用戶顯示所述設計數(shù)據(jù)庫的部分和輸入對所述設計數(shù)據(jù)庫所選部分的修改;產生第二配置位流,包括僅針對所述邏輯單元和所述互連關系中與所述設計數(shù)據(jù)庫的所述所選部分的所述修改相關的這些的新定義。
11.如權利要求10所述的方法,其特征在于進一步包括把所述第一配置位流下載到所述FPGA中的步驟。
12.如權利要求11所述的方法,其特征在于在對所述第一配置位流進行下載的所述步驟后進一步包括把第二位流下載到所述FPGA中的步驟。
13.如權利要求10所述的方法,其特征在于所述的產生第二配置位流的步驟包括僅基于所述邏輯單元和互連關系的所述這些的位置和新定義而定義位流。
14.如權利要求10所述的方法,其特征在于顯示部分所述設計數(shù)據(jù)庫的子步驟包括識別所述設計數(shù)據(jù)庫中的第一類邏輯單元,它們被配置為邏輯門;對于所述第一類邏輯單元中的每一個,顯示其單元位置和其相應邏輯門的表示;識別所述設計數(shù)據(jù)庫中的第二類邏輯單元,它們被配置為產生常數(shù)邏輯值;顯示所述第二類邏輯單元的單元位置和邏輯值。
15.如權利要求14所述的方法,其特征在于所述的顯示所述第二類邏輯單元包括形成包含所述第二類邏輯單元中相互相鄰這些邏輯單元的單元組,以及利用單元位置的范圍顯示每一個所述單元組中邏輯單元的單元位置。
16.如權利要求15所述的方法,其特征在于所述的形成單元組的子步驟包括形成所述第二類邏輯單元中這一些與其它所述第二類邏輯單元水平相鄰的水平組,所述第二類邏輯單元中這一些與其它所述第二類邏輯單元垂直相鄰的垂直組,如果給定的邏輯單元既屬于水平組又屬于垂直組,那么,把所述的給定邏輯單元分配給所述的水平組。
17.如權利要求15所述的方法,其特征在于所述的形成單元組的子步驟包括形成所述第二類邏輯單元中這一些與其它所述第二類邏輯單元水平相鄰的水平組,所述第二類邏輯單元中這一些與其它所述第二類邏輯單元垂直相鄰的垂直組,如果給定的邏輯單元既屬于水平組又屬于垂直組,那么,把所述的給定邏輯單元分配給所述的垂直組。
18.如權利要求14所述的方法,其特征在于所述的顯示所述第二類邏輯單元包括形成包含所述第二類邏輯單元中用戶指定邏輯單元的單元組,以及顯示每一個所述單元組中邏輯單元的單元位置和邏輯值。
19.一種配置FPGA的系統(tǒng),所述FPGA具有至少一個編程邏輯設計,所述系統(tǒng)包括在所述FPGA的運行時間操作期間檢測所述FPGA外部條件的手段;響應于所述FPGA外部條件的檢測結果重新設計一部分所述邏輯設計的手段;僅基于所述重新設計的部分形成部分配置位流的手段;將所述部分配置位流發(fā)送到所述FPGA,由此在運行時間中對所述FPGA進行部分重新配置以實現(xiàn)所述邏輯設計的所述重新設計部分的手段。
20.如權利要求19所述的系統(tǒng),其特征在于進一步包括至少存儲設計數(shù)據(jù)庫中代表所述邏輯設計的一部分的手段,所述的重新設計的手段包括訪問所述設計數(shù)據(jù)庫,由此提供對所述邏輯設計進行重新設計基礎的手段。
21.一種配置FPGA的系統(tǒng),所述FPGA具有至少一個編程邏輯常數(shù),所述系統(tǒng)包括在所述FPGA的運行時間操作期間檢測所述FPGA外部條件的手段;響應于所述FPGA外部條件的檢測結果確定所述邏輯常數(shù)的一個新值手段;僅基于所述重新設計的部分形成部分配置位流的手段;將所述部分配置位流發(fā)送到所述FPGA,由此在運行時間中對所述FPGA進行部分重新配置的手段。
全文摘要
一種部分重新配置門陣列的系統(tǒng)和方法,通過邏輯電路的放置和路徑(312)產生一個設計數(shù)據(jù)庫(314),訪問該數(shù)據(jù)庫以修改由放置和選路所創(chuàng)建的邏輯單元配置(322)。根據(jù)修改情況,創(chuàng)建僅包含實現(xiàn)修改邏輯單元的位流的部分配置位流(324)。將部分配置位流下載到門陣列(326),由此執(zhí)行門陣列的部分重新配置。在另一個實施例中,根據(jù)本發(fā)明的系統(tǒng)包括軟件實用程序(604),它允許應用程序(602)在包含可編程門陣列的系統(tǒng)中執(zhí)行,在運行過程中對門陣列進行重新配置。實用程序包括根據(jù)在運行時間期間檢測到的外部條件而修改設計的程序。這種方法避免了需要提供一組預定備用設計,而允許應用程序自身作出決定。
文檔編號H01L21/82GK1241275SQ97199308
公開日2000年1月12日 申請日期1997年10月15日 優(yōu)先權日1996年10月30日
發(fā)明者M·T·梅森, S·C·埃文斯, S·S·阿拉耐克 申請人:愛特梅爾股份有限公司