專利名稱:配置邏輯器件陣列的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的涉及可編程邏輯器件,更具體地涉及現(xiàn)場可編程門陣列(FPGA)的配置。
背景技術(shù):
在集成電路技術(shù)的早期,諸如移位寄存器、多路轉(zhuǎn)換器、加法器等的邏輯電路是由數(shù)字集成電路構(gòu)成的。這些小規(guī)模集成(SSI)電路通常含有數(shù)目較少(例如四至八個)的邏輯門,如“與”門、“或”門、觸發(fā)電路和鎖存器等,需要幾十個晶體管。隨著技術(shù)的發(fā)展,能夠?qū)⒃絹碓蕉嗟木w管裝入到IC電路中。目前,半導(dǎo)體制造商能夠?qū)?shù)百萬個晶體管裝在單個晶片上,從而形成高度復(fù)雜的芯片,如現(xiàn)代微處理器。
裝有這些VLSI(特大規(guī)模集成)和ULSI(超大規(guī)模集成)芯片的系統(tǒng)同樣是復(fù)雜的。這種系統(tǒng)通常采用若干個常規(guī)邏輯芯片提供各種各樣的支撐邏輯功能。已研制出允許制造商快速地實現(xiàn)客戶的邏輯設(shè)計的門陣列。這些器件是由利用標(biāo)準(zhǔn)方法制造的邏輯門陣列組成的。器件的定制是在最后幾步制造步驟中發(fā)生的,在這幾步中形成與邏輯門連接的金屬層以實現(xiàn)所需的邏輯功能。
這些門陣列演變?yōu)榭删幊痰钠骷?,給僅需要少量器件或者還未完全開發(fā)邏輯設(shè)計但是需要少量樣品作測試的設(shè)計人員提供了更大的靈活性。另一種可編程邏輯器件采用熔斷器提供器件中邏輯門之間的互連。熔斷器被熔斷便斷開連接,或者在所謂的抗熔斷器的情況中形成連接。因此,這種器件只能使用一次,僅存儲一組邏輯功能。
可編程邏輯器件的繼續(xù)發(fā)展已經(jīng)導(dǎo)致可重新編程的互連關(guān)系的發(fā)展,更重要的是可配置的邏輯單元的發(fā)展。顧名思義,可配置邏輯單元允許設(shè)計人員能夠?qū)壿媶卧M(jìn)行編程,使其具有許多基本邏輯門中任何一個門的功能或者更高級的邏輯功能。當(dāng)前的制造技術(shù)使得生產(chǎn)具有數(shù)以千計個可配置邏輯單元及其相關(guān)互連的高密度器件,即稱為現(xiàn)場可編程門陣列(FPGA)成為可能。提供這種高密度器件的能力使得設(shè)計人員能夠采用越來越復(fù)雜的邏輯功能。象以前的產(chǎn)品一樣,F(xiàn)PGA包括可編程的互連關(guān)系。此外,互連關(guān)系是可重復(fù)編程的,進(jìn)一步增大了FPGA的利用價值。
然而,以往對這些可重復(fù)編程FPGA的重新配置通常需要對整個器件進(jìn)行重新配置。Atmel公司(本發(fā)明的受讓人)制造的FPGA代表了這種器件向前又邁進(jìn)了一步。將這種器件稱為可動態(tài)重新配置的FPGA,允許僅對所選的一部分邏輯陣列進(jìn)行重新配置。用這種方法能夠?qū)PGA作出變化,不必對整個器件進(jìn)行編程,從而允許僅對所選的一部分陣列進(jìn)行重新配置。
參考
圖1,典型的FPGA 100包括多個可配置的邏輯單元130、可配置的I/O塊110和可配置的互連關(guān)系120、122,共同稱之為FPGA資源。盡管互連關(guān)系120、122是以各個互連線網(wǎng)格示出的,但是每條“線”實際上是一組互連線,例如,如圖3B所示。每個邏輯單元130和I/O塊110包括數(shù)據(jù)線140、142,它們能夠有選擇地耦合到互連關(guān)系120、122上。
典型設(shè)計周期從設(shè)計一個或多個然后將在FPGA中實現(xiàn)的邏輯電路開始。邏輯設(shè)計包括邏輯門和這些邏輯門之間的互連關(guān)系。然而,特定的設(shè)計,如數(shù)字濾波器利用“常數(shù)”,即1和0的串來限定其特性。為了描述本發(fā)明,把這種常數(shù)稱為設(shè)計的一部分,也可以稱為邏輯門。
例如,圖2示出一種簡單的邏輯設(shè)計。邏輯設(shè)計中的每個元件用一個實例名來識別。因此,圖2中的與門和或門取名為G1-G3。圖3A示出邏輯設(shè)計是如何在FPGA 100’中出現(xiàn)的。將圖2中所示的門G1-G3中的每一個門和互連關(guān)系映射到圖3A中所示的所選邏輯單元和互連關(guān)系上。同樣,將輸入A-D和輸出OUT(圖2)映射到所選I/O塊。因此,互連關(guān)系120a-120c和122a-122c(以較淡的線表示)與邏輯單元G1-G3和I/O塊110a-110e連接在一起。圖3B示出了圖3A配置中一部分放大圖。說明不同邏輯單元、互連關(guān)系和I/O塊之間的具體互連情況。盡管在該圖中的設(shè)計并未示出常數(shù)的使用,但是,眾所周知,能夠?qū)F(xiàn)代FPGA中邏輯單元構(gòu)造為輸出邏輯“1”或邏輯“0”,能夠根據(jù)需要如此構(gòu)造一組邏輯單元,產(chǎn)生一個或多個1和0的串。
現(xiàn)在將說明把圖2的設(shè)計轉(zhuǎn)換到如圖3A中所示的FPGA的步驟。由于絕大多數(shù)的目前設(shè)計在功能上趨向于相當(dāng)復(fù)雜,通常采用計算機(jī)輔助設(shè)計(CAD)工具以便于設(shè)計過程。因此,在圖4中,設(shè)計流程圖200從輸入邏輯電路初始設(shè)計,即步驟210開始,例如通過利用CAD工具。
接著是邏輯電路的邏輯門的放置和選路,步驟212。作為放置和選路步驟的結(jié)果,產(chǎn)生設(shè)計數(shù)據(jù)庫,步驟214。設(shè)計數(shù)據(jù)庫規(guī)定FPGA中將參與實現(xiàn)邏輯電路的這些邏輯單元、I/O塊和互連關(guān)系(即資源),包括所選資源的位置及其路經(jīng)或邏輯結(jié)構(gòu)。圖1示出用于識別邏輯單元位置的若干坐標(biāo)系中的一個。在圖1所示的傳統(tǒng)坐標(biāo)系中,邏輯單元按照從左到右和從下到上的次序編號,從左下角單元(0,0)開始,到右上角單元(3,3)結(jié)束。通常,設(shè)計數(shù)據(jù)庫另外還包括在設(shè)計階段期間給邏輯電路元件指定的實例名,圖2。
從包含在設(shè)計數(shù)據(jù)庫中的信息,由通常稱為位流編譯器的工具產(chǎn)生配置位流,步驟216。位流編譯器獲取存儲在設(shè)計數(shù)據(jù)庫中的位置和配置信息,產(chǎn)生將配置FPGA中各種資源的限定位流。在物理級上,限定位流代表FPGA中晶體管(開關(guān))的開/關(guān)(ON/OFF)狀態(tài),它實際上控制每個邏輯單元和I/O塊的配置以及邏輯單元與I/O塊之間的互連。
在這里,或是可以把配置位流下載到邏輯陣列,由此而配置器件,步驟218a,或是可以把位流保存在磁盤上,步驟218b。圖4中用虛線表示這兩種可供選擇的方案。
即使已經(jīng)對設(shè)計作了調(diào)試并按照預(yù)期的進(jìn)行操作,偶然也會發(fā)生需要對初始設(shè)計進(jìn)行變化。例如,新的要求可能導(dǎo)致功能定義的變化,這就必須改變初始設(shè)計。利用通常的現(xiàn)有技術(shù),對初始設(shè)計的最終版本的修改,步驟220導(dǎo)致上述步驟的重復(fù)。因此,設(shè)計人員利用CAD工具訪問初始設(shè)計的最終版本并對該設(shè)計作出所需改變。執(zhí)行第二次放置和選路步驟,步驟222,由此產(chǎn)生第二個設(shè)計數(shù)據(jù)庫,步驟224。然后,根據(jù)新的設(shè)計數(shù)據(jù)庫由位流編譯器產(chǎn)生第二個配置位流,步驟226。
與第一配置位流一樣,可以把也可以不把第二配置位流下載到FPGA。如果需要下載,可提供兩種選擇即能夠把位流整體下載到FPGA,由此重新配置整個陣列,以包含改進(jìn)的設(shè)計。另一種選擇,這里FPGA是可動態(tài)重新配置的,意思是指器件能夠被部分重新配置,能夠僅對第二配置位流中對應(yīng)于設(shè)計變化的這些部分進(jìn)行下載。通過確定第一與第二配置位流之間的差異產(chǎn)生部分(可重新配置的)位流首先實現(xiàn)之,步驟228。然后,把部分位流下載到可動態(tài)重新配置的FPGA,步驟230,由此而實行FPGA的部分重新配置,其中,僅對改進(jìn)設(shè)計中所涉及的這些邏輯單元、互連關(guān)系和I/O塊進(jìn)行重新編程。最后,對于另外的設(shè)計改進(jìn)重復(fù)循環(huán),就象出現(xiàn)設(shè)計功能要求上變化一樣。
設(shè)計中邏輯門的放置和選路是一項計算強(qiáng)度高的活動。當(dāng)設(shè)計人員由于高密度FPGA的提供能力趨于采用越來越復(fù)雜的設(shè)計,放置和選路操作會大大增加。在圖4所示的現(xiàn)有方法中,考慮到設(shè)計循環(huán)中的每一次迭代可能需要完全的放置和選路操作,專用于放置和選路計算的時間量會達(dá)到驚人的程度。
現(xiàn)有技術(shù)方法的另一個方面是可能會出現(xiàn)改進(jìn)后的設(shè)計將導(dǎo)致放置和選路配置不同于以前設(shè)計的放置和選路配置。如果以前的設(shè)計已經(jīng)精心地調(diào)諧到提供特定臨界時序特性,這就成為一個問題。通過全部放置和選路操作進(jìn)行的下一設(shè)計會導(dǎo)致具有不同凈長度的邏輯的不同放置,由此對電路的時序產(chǎn)生不利影響。在涉及實時應(yīng)用的地方,這是一種不可以接受的情況。
需要一種對于完全完成和調(diào)試邏輯設(shè)計的重新設(shè)計在周轉(zhuǎn)時間方面能改善現(xiàn)有技術(shù)的方法。還需要一種開發(fā)方法,維持現(xiàn)有設(shè)計中未涉及設(shè)計修改的部分不受影響。
到這里,討論一直集中圍繞邏輯電路的設(shè)計是在設(shè)計人員的工作實驗室的環(huán)境中。然而,已觀察到,F(xiàn)PGA的現(xiàn)場應(yīng)用會不適合于單個靜態(tài)設(shè)計。盡管FPGA可以在實際工作條件下在現(xiàn)場重新配置,但是,新的配置通常由存儲在諸如EPROM的非易失性裝置中的完整設(shè)計組成。從EPROM讀出配置位流并將其下載到FPGA中。因此,可供使用的配置的尺寸受EPROM的存儲容量的限制。在諸如自適應(yīng)濾波的應(yīng)用中,迫切需要濾波器的響應(yīng)能夠根據(jù)諸如被濾波數(shù)據(jù)的頻率和相位特性,即通常不可預(yù)料的條件,在運(yùn)行時變化。在這種情況中,事前便不能指定新的配置,如濾波器參數(shù)。
然而,還需要在運(yùn)行過程中根據(jù)裝置正在工作的環(huán)境對FPGA進(jìn)行配置的能力。此外,由于僅需要對FPGA中一部分進(jìn)行重新配置,如在自適應(yīng)濾波器的情況中,需要具有運(yùn)行過程中進(jìn)行部分重新配置的能力。
發(fā)明概要根據(jù)本發(fā)明,一種對可動態(tài)重新配置FPGA進(jìn)行配置的方法,從輸入初始邏輯設(shè)計開始。在該設(shè)計上進(jìn)行放置和選路,導(dǎo)致將位置分配給實現(xiàn)該設(shè)計的FPGA中的邏輯單元和互連關(guān)系。設(shè)計數(shù)據(jù)庫是放置和選路操作的結(jié)果。接著,在設(shè)計數(shù)據(jù)庫上工作的位流編譯器產(chǎn)生配置位流。位流或是可以被下載到FPGA,由此對裝置進(jìn)行配置,或是可以簡單地被保存在存儲媒介上。
根據(jù)相應(yīng)的設(shè)計數(shù)據(jù)庫作出對初始設(shè)計最后工作版本的變化。修改后的設(shè)計數(shù)據(jù)庫被保存起來,從修改后的設(shè)計數(shù)據(jù)庫產(chǎn)生第二配置位流。根據(jù)本發(fā)明,第二配置位流僅由對應(yīng)于修改后邏輯設(shè)計的這些邏輯單元、I/O塊和互連關(guān)系的定義位串組成。
通過直接訪問設(shè)計數(shù)據(jù)庫以執(zhí)行設(shè)計的變化,完全可避免本來需要的耗費在放置和選路計算上的時間。當(dāng)必須對邏輯設(shè)計的最后工作版本作修改時,例如,由于在裝入FPGA的系統(tǒng)的功能要求上的變化需要修改時,這是尤其有用的,也是想要的特性。經(jīng)常的情況是,設(shè)計變化自然越來越多,僅涉及到整個設(shè)計的一個局部部分。在其它時間,設(shè)計人員希望對邏輯設(shè)計的最后工作版本的變化做實驗。本發(fā)明的配置方法可保證用很短的檢修時間來實現(xiàn)設(shè)計變化,所以,漸增的變化和“What-if”實驗是可行的和便利的,不會對項目開發(fā)產(chǎn)生不利影響也不產(chǎn)生停止工作時間表。此外,由于放置和選路操作是旁通的,設(shè)計中設(shè)計人員未作修改的關(guān)鍵部分的任何時序?qū)⒉皇苡绊懖⒈WC提供已知的時序性能。更通俗地說,設(shè)計中未作修改的任何部分將繼續(xù)按預(yù)期行使其特性。因此,采用本發(fā)明的方法,保證產(chǎn)生的FPGA應(yīng)用在結(jié)構(gòu)上是正確的,因此功能上是正確的。
在本發(fā)明的一個較佳實施例中,通過圖形接口把設(shè)計數(shù)據(jù)庫提供給用戶。接口允許用戶指定一部分設(shè)計數(shù)據(jù)庫進(jìn)行顯示。設(shè)計數(shù)據(jù)庫通過其實例名和在FPGA中的位置確定邏輯單元、I/O塊和互連關(guān)系。給用戶提供邏輯單元,包括被配置為輸出常數(shù)邏輯值的這些邏輯單元的名稱、位置和當(dāng)前配置。也給出邏輯單元當(dāng)中的互連關(guān)系。
通過從一張以圖形方式或者文本方式表示的邏輯門和互連線選項的表或菜單中進(jìn)行選擇可以作出對設(shè)計數(shù)據(jù)庫的修改。對于常數(shù)的修改可以以文本方式通過輸入新的常數(shù)值或者以圖形方式通過操縱一個或多個能夠打開(邏輯“0”)或關(guān)閉(邏輯“1”)的開關(guān)的圖標(biāo)進(jìn)行。
在本發(fā)明的另一個實施例中,對FPGA進(jìn)行實時重新配置的系統(tǒng)包括與裝置的硬件接口和為了下載新配置數(shù)據(jù)而訪問該裝置的軟件實用程序。軟件實用程序包括產(chǎn)生部分配置位流的手段,允許應(yīng)用程序根據(jù)運(yùn)行中檢測到的操作環(huán)境中的特定條件對FPGA進(jìn)行配置。硬件接口和軟件實用程序允許在裝置使用中訪問FPGA,從而能夠?qū)ρb置中的一部分進(jìn)行重新配置。
附圖簡述圖1是典型FPGA的結(jié)構(gòu)。
圖2是邏輯電路的一個例子。
圖3A和3B示出圖2的邏輯電路在圖1的FPGA中的實施。
圖4是在FPGA設(shè)計中通用步驟的要點。
圖5是本發(fā)明設(shè)計方法的一個實施例的要點。
圖6是按本發(fā)明配置FPGA的系統(tǒng)的方框圖。
圖7A-7C示出數(shù)字濾波器設(shè)計。
圖8A和8B是本發(fā)明的用戶接口的屏幕樣板。
圖9A-9D示出利用基于ROM查找表實現(xiàn)的加法器電路和減法器電路。
圖10A-10B示出本發(fā)明的用戶接口的屏幕樣板。
圖11示出一個實時FPGA重新配置的系統(tǒng)。
實現(xiàn)本發(fā)明的最佳方式參考圖5,按照本發(fā)明一個實施例的配置方法300包括創(chuàng)建一種初始設(shè)計,步驟310,和執(zhí)行放置位置和選路徑的操作,獲得一個第一設(shè)計數(shù)據(jù)庫,步驟312和314。然后,位流編譯器創(chuàng)建配置位流,步驟316,可以將其下載到FPGA上,配置裝置,步驟318a。另一方面,配置位流可以簡單存儲在存儲器裝置中,步驟318b。配置位流包括多個定義位流,它指定FPGA中的資源將如何進(jìn)行配置。
當(dāng)需要對初始邏輯設(shè)計的最終工作版本進(jìn)行變化時,設(shè)計修改可以直接對設(shè)計數(shù)據(jù)庫進(jìn)行。然后,繼續(xù)圖5所示的方法300,向設(shè)計人員顯示設(shè)計數(shù)據(jù)庫中的一部分,步驟320。設(shè)計人員選擇設(shè)計數(shù)據(jù)庫中需要作修改的這些部分和輸入變化,步驟322。根據(jù)輸入的修改情況,產(chǎn)生部分配置位流(也稱為重新配置位流),它僅由對應(yīng)于修改的定義位流構(gòu)成。然后,可以將這部分位流下載或保存到存儲媒體中,步驟326。
圖6示出對動態(tài)可配置FPGA進(jìn)行配置的系統(tǒng),它體現(xiàn)了圖5所示的方法。系統(tǒng)400包括數(shù)據(jù)存儲器420和各個模塊402-420。采用諸如CAD工具、簡圖捕獲程序等設(shè)計輸入模塊402來創(chuàng)建初始設(shè)計420a并存儲到磁盤420上。放置和選路模塊404獲取初始設(shè)計420a并創(chuàng)建設(shè)計數(shù)據(jù)庫420b,它也存儲在磁盤上。位流編譯器406產(chǎn)生配置位流420c,下載模塊408把配置位流下載到FPGA150。
設(shè)計人員通過圖形用戶接口(GUI)模塊410輸入對初始邏輯設(shè)計最終工作版本的修改。GUI從設(shè)計數(shù)據(jù)庫420b進(jìn)行讀出并顯示由設(shè)計人員所選的設(shè)計數(shù)據(jù)庫中的一部分。GUI接收對設(shè)計數(shù)據(jù)庫的修改并僅根據(jù)輸入的修改創(chuàng)建部分位流。GUI裝入位流編譯器的功能,產(chǎn)生部分位流。然后將部分位流420d存儲到磁盤上,接著通過下載模塊408下載到FPGA。另一方面,GUI能夠把部分位流直接傳送到下載模塊408。在這里應(yīng)當(dāng)注意如果不需要間接下載到FPGA,那么能夠采用另一種存儲媒體來存儲配置(和重新配置)位流。例如,可以把配置(和重新配置)位流下載到EEPROM等存儲媒體上,以供下一步分配。
為了說明圖6所示的方法,考慮一個自適應(yīng)數(shù)字濾波器,如圖7A中所示。濾波器設(shè)計500由串聯(lián)級聯(lián)的延遲寄存器R1-R7、乘法器M1-M8和加法器A1-A7組成。數(shù)據(jù)寬帶為八位(一字節(jié))。一組濾波器系數(shù)C0-C7起乘法運(yùn)算的被乘數(shù)的作用。由于數(shù)據(jù)中的每個字節(jié)通過寄存器移位和傳播,所有乘法器形成系數(shù)與數(shù)據(jù)之間的乘積項。然后由加法器A1-A7對乘積項求和。
回想一下邏輯設(shè)計,如濾波器設(shè)計500中的每個元件具有一個由設(shè)計人員開始指定的實例名。因此,參考圖7A,寄存器取名為R1-R7,乘法器取名為M1-M8,加法器取名為A1-A7。還給系數(shù)C0-C7指定了實例名。具體說,包含系數(shù)的每一個位具有一個名稱。從圖7C中所示的系數(shù)C0的擴(kuò)展圖中更加清楚地示出了這一情況。系數(shù)是一個八位量,這里,將位取名為C0_0至C0_7。再回到圖7A,應(yīng)當(dāng)明白,也可以給元件R1-R7、M1-M8和A1-A7當(dāng)中的互連關(guān)系取名。然而,為了避免圖面的雜亂,已經(jīng)省略了這些互連關(guān)系的實例名。
濾波器設(shè)計500的放置和選路導(dǎo)致設(shè)計數(shù)據(jù)庫,由實例名、每個寄存器和算術(shù)算符以及被選作實現(xiàn)這些功能的邏輯單元的位置和配置指定。以同樣的方式,設(shè)計數(shù)據(jù)庫列出位的實例名,包括系數(shù)C0-C7、它們的相應(yīng)邏輯單元的位置和邏輯單元是否被配置為產(chǎn)生邏輯“0”或邏輯“1”。通過FPGA中的坐標(biāo)系,如圖1中所示的坐標(biāo)系識別出現(xiàn)在設(shè)計數(shù)據(jù)庫中的邏輯單元。
圖7B示出圖7A的數(shù)字濾波器的改進(jìn)設(shè)計500’,這里已經(jīng)指定了一組不同的系數(shù)C’0-C’7。希望根據(jù)本發(fā)明的方法作這種修改的設(shè)計人員開始訪問基于初始設(shè)計500創(chuàng)建的第一設(shè)計數(shù)據(jù)庫。這最好是利用圖形用戶接口(GUI)實現(xiàn),當(dāng)然基于文本的接口也一樣是有效的,也許使用更困難和更低效些。
在一個實施例中,GUI有一種模式,用于對邏輯設(shè)計中所定義的邏輯常數(shù)進(jìn)行編輯。例如,圖8A的屏幕樣板顯示了設(shè)計500中的每個常數(shù)C0-C7。在“實例名”列下是包括每個系數(shù)C0-C7位的名稱。每個位由一個配置為輸出常數(shù)邏輯電平的邏輯單元實現(xiàn)?;叵胍幌?,每個邏輯單元具有一個相應(yīng)的實例名。在單元被范圍識別的地方,如在圖8A的情況中,顯示范圍中第一和最后單元的實例名。在“位置”列下是在相應(yīng)邏輯單元的FPGA中的位置。為了說明起見假設(shè),被使用的坐標(biāo)編號慣例遵循圖1中所示的慣例。因此,根據(jù)圖8A,包括系數(shù)C0的邏輯單元位于FPGA中第10行的第7-14列中;系數(shù)C1的邏輯單元位于第12行的第7-14列中,依此類推?!艾F(xiàn)行配置”列顯示由邏輯單元產(chǎn)生的當(dāng)前邏輯值。例如,包括系數(shù)C0的第7、8、9、10、11、12、13和14列中八個邏輯單元顯示,為當(dāng)前配置相應(yīng)的輸出邏輯值“1”、“0”、“1”、“0”、“1”、“0”、“1”和“1”?!靶屡渲谩绷杏奢斎胱侄谓M成,允許用戶輸入新的邏輯值,作為一位串。這位串位中的每個位與這位串所表示的常數(shù)單元具有一一對應(yīng)關(guān)系。
由于設(shè)計數(shù)據(jù)庫包含產(chǎn)生圖8A所示顯示屏所需的所有信息,GUI通過設(shè)計數(shù)據(jù)庫進(jìn)行簡單搜索,找出已經(jīng)被配置為產(chǎn)生常數(shù)邏輯電平的這些邏輯單元,訪問它們的實例名、單元位置和當(dāng)前配置信息。訪問設(shè)計數(shù)據(jù)庫和產(chǎn)生如圖8A中所示顯示信息的具體軟件實施細(xì)節(jié)將隨任何給定設(shè)計數(shù)據(jù)庫格式所使用的精確數(shù)據(jù)結(jié)構(gòu)而變化。在計算機(jī)程序員的范圍和能力之內(nèi),這些實施細(xì)節(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ù)單元的組表示為單元的范圍。由于構(gòu)成系數(shù)C0-C3的單元僅呈現(xiàn)水平相鄰性它們顯示成水平組。同樣,對僅顯示垂直相鄰性的單元進(jìn)行垂直分組。能夠?qū)Τ?shù)單元進(jìn)行垂直或水平分組的地方,按照用戶指定的優(yōu)先選擇進(jìn)行分組。因此,根據(jù)設(shè)計人員的優(yōu)先選擇,能夠?qū)ο禂?shù)C4-C7進(jìn)行水平或垂直分組,如圖8A和8B所示。在圖中所示的例子中,優(yōu)先選擇可以針對水平相鄰性,如圖8A所示。然而,在另一種設(shè)計中,可以按垂直方式排列系數(shù),在這種情況中,可以作出圖8B所示的垂直優(yōu)選。
在本發(fā)明的另一個實施例中,可以將非相鄰的常數(shù)單元分組在一起。GUI允許用戶選擇常數(shù)單元中的任意組合并將所選單元作為一個組處理。盡管這些單元是非相鄰的,但是,GUI可顯示作為一個組的單元,并允許用戶對作為一個組的單元的邏輯值進(jìn)行修改。因此,以一一對應(yīng)關(guān)系把由用戶輸入的代表新邏輯值的一位值串映射到組中的常數(shù)單元,與以上結(jié)合圖8A和8B所說明的情況差不多。
輸入新系數(shù)值C0’-C7’后,GUI按照圖5中的步驟324產(chǎn)生部分配置位流。由于GUI既擁有單元位置(從設(shè)計數(shù)據(jù)庫獲得)又擁有它們的新配置(從設(shè)計人員獲得),GUI能夠產(chǎn)生配置位流,該配置位流將實現(xiàn)設(shè)計人員指定的設(shè)計變化。
部分配置位流僅僅基于設(shè)計人員輸入的變化,并包括僅針對FPGS中參與設(shè)計變化的這些單元的配置信息。不需要對整個設(shè)計進(jìn)行放置和選路操作,導(dǎo)出配置位流的變化,正如采用現(xiàn)有技術(shù)方法的情況那樣,見圖4。相反地,GUI從用戶輸入直接進(jìn)入到部分配置位流。這種方法顯著地縮短了實施設(shè)計變化所需的時間,從而允許設(shè)計人員快速實現(xiàn)和測試設(shè)計方案的替換。
較佳實施例的GUI進(jìn)一步包括一種對配置成邏輯門的邏輯單元進(jìn)行修改的模式。例如,考慮圖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ā)明的方法,設(shè)計人員通過簡單地對感興趣的四個門進(jìn)行定位或識別以及變化它們的相應(yīng)邏輯單元的配置能夠方便地從一種電路切換到另一種電路。參考圖10A和10B,GUI能夠在窗口中顯示放置在FPGA中的邏輯設(shè)計。通過滾動窗口,能夠把陣列中的任何一部分帶入到視窗中。另一方面,GUI通過把適當(dāng)?shù)男畔⑤斎氲綀D10A中所示的單元位置字段或?qū)嵗侄沃校軌蚨ㄎ徊糠株嚵小?br>
對于以下的討論假設(shè)初始邏輯設(shè)計裝入圖9C中的加法器電路,需要轉(zhuǎn)換到圖9D中的減法器電路。GUI訪問在加法器電路的初始設(shè)計上進(jìn)行放置和選路操作而產(chǎn)生的設(shè)計數(shù)據(jù)庫,并根據(jù)FPGA的元件顯示設(shè)計布局。顯示可以由構(gòu)成FPGA的邏輯單元的圖標(biāo)或其它圖形表示組成。另一方面,GUI可以顯示代表由每個邏輯單元所提供邏輯功能的圖標(biāo)。另一種選擇是提供FPGA組成的文本表示,然而這一方法在傳送和引導(dǎo)有關(guān)FPGA信息方面不如圖形方法有效。
設(shè)計人員或是通過滾動或是通過指定門的實例名而顯示待改變的部分加法器電路。圖10A的屏幕樣板上顯示了以一部分加法器電路,即門G6、G8、G10和G12為中心的一部分設(shè)計數(shù)據(jù)庫??梢钥闯?,“或”門G6已經(jīng)指定為56行、100列中的邏輯單元,“與”門G8已經(jīng)指定為56行、101列中的邏輯單元,依此類推。為了把門G8從“與”門變?yōu)椤盎颉遍T,設(shè)計人員首先選擇該門,例如通過將鼠標(biāo)器光標(biāo)置于該門的圖標(biāo)上并接下鼠標(biāo)器按鈕。圖10B示出被突出的門G8,表示該門已經(jīng)被選定。單擊鼠標(biāo)器另一按鈕(或撳鍵)產(chǎn)生一彈出菜單,顯示一張可能的邏輯門表。從菜單中選擇“或”條目,引起所選門G8被配置為“或”門。以同樣的方式改變門G12。接著,設(shè)計人員通過滾動窗口將門G24和G28帶入視屏。然后,以如上所述的方式對門G24和G28進(jìn)行修改。
當(dāng)修改完成時,撳一下OK按鈕。正如圖5所示的方法中描述的,GUI僅根據(jù)修改產(chǎn)生部分配置位流。產(chǎn)生的位流僅由把初始設(shè)計的四個單元(加法器電路中的G8、G12、G24和G28)重新定義為減法器的門G7、G11、G23和G27的特性所需的位串構(gòu)成。因此,通過直接訪問初始全加器設(shè)計的設(shè)計數(shù)據(jù)庫和在其上作出變化,設(shè)計人員能夠避免執(zhí)行完全放置和選路操作步驟而耗費的時間。
最后要說明一點,可以觀察到,以上討論的特定門的選擇和菜單方法不是實施本發(fā)明的關(guān)鍵所在。基于圖形的其它輸入/選擇方法也是同樣有效的。
通常相對于查找表,如圖9B中所示的查找表,由查找表實施的邏輯功能完全由表的輸出所限定,因此,圖9B中列SUM和Cout完全限定全加器功能,列SUB和Bout完全限定全減器功能。GUI無需顯示執(zhí)行特定查找表的特定邏輯單元,而是能夠僅列出表輸出和允許用戶輸入對表輸出的變化。然后,GUI指定所需邏輯單元完成新的查找表。以這種方式在更高的抽象水平上代表查找表,以一種更有意義的方法將該表提供給用戶,從而對用戶隱去意義不大的實施細(xì)節(jié),因此,具有更大的適用性。
從圖9C和9D可以看出,由2個輸入“與”門和2個輸入“或”門的級聯(lián)串聯(lián)連接能夠?qū)崿F(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)查找表的適當(dāng)門,能夠方便地重新配置一個限定第一功能查找表來執(zhí)行第二功能。
現(xiàn)在,討論將針對本發(fā)明的另一實施例,它允許設(shè)計人員對可動態(tài)重新配置的FPGA進(jìn)行實時重新配置,即在重新配置時可以運(yùn)行的系統(tǒng)中的陣列。參考圖11,典型系統(tǒng)600包括CPU或微處理器610、FPGA 620、EPROM622或其它一些非易失性RAM器件、以及諸如磁盤存儲器的數(shù)據(jù)存儲器630。在CPU610上運(yùn)行的系統(tǒng)軟件包括配置FPGA的專用應(yīng)用軟件602和FPGA實用程序604。在系統(tǒng)引導(dǎo)時,已經(jīng)編程并在EPROM622中的配置位流載入到FPGA。另一種選擇是,能夠用存儲在數(shù)據(jù)存儲器630中的配置位流初始配置FPGA。
在系統(tǒng)600操作期間,軟件能夠檢測有關(guān)其操作環(huán)境的特定條件。例如,相對于圖8A和8B中所示的數(shù)字濾波器設(shè)計,軟件602可以確定需要作調(diào)節(jié)的濾波器截止頻率。相應(yīng)地,可以對以前積累的數(shù)據(jù)進(jìn)行分析,根據(jù)分析結(jié)果計算新的系數(shù)。然后,調(diào)用特定的FPGA實用程序604來創(chuàng)建包含定義新系數(shù)的位流的部分配置位流。接著,應(yīng)用軟件602調(diào)用其它FPGA實用程序把部分配置位流下載到FPGA,由此實現(xiàn)該濾波器設(shè)計中的變化。
實時作出的設(shè)計變化的范圍不受FPGA實用程序604的限制,但是受裝載到FPGA的特定設(shè)計的復(fù)雜性程度的限制。在運(yùn)行過程中的變化可以由應(yīng)用軟件限制,限于僅改變邏輯常數(shù)或者限于各邏輯門。然而,這種限制是應(yīng)用所特有的,由計算機(jī)電源、存儲器、操作環(huán)境等的提供能力確定,并不是由于本發(fā)明造成的限制。
FPGA實用程序604的一組應(yīng)用編程接口(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語言代碼片段說明如何在典型應(yīng)用中使用這些實用程序。給出的例子針對圖8A的數(shù)字濾波器,說明如何根據(jù)外部操作環(huán)境來調(diào)節(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的重新配置實時進(jìn)行和允許僅對FPGA中的一部分進(jìn)行重新配置。此外,本發(fā)明允許應(yīng)用軟件根據(jù)外部操作環(huán)境確定設(shè)計中部分的變化。這種方法的優(yōu)點在于設(shè)計人員不需要事前確定所有可能的備用設(shè)計及其相應(yīng)的配置位流。而是,應(yīng)用軟件能夠確定設(shè)計變化,在運(yùn)行過程中創(chuàng)建部分配置位流,根據(jù)它們所出現(xiàn)的環(huán)境中的條件而實施這些變化。
權(quán)利要求
1.一種配置可編程邏輯單元陣列的方法,其特征在于所述陣列包括多個可編程互連關(guān)系,每個所述邏輯單元在所述陣列中具有一個唯一單元位置,所述陣列具有一種相關(guān)的邏輯設(shè)計,所述方法包括訪問一個設(shè)計數(shù)據(jù)庫,該數(shù)據(jù)庫代表邏輯單元定義和對應(yīng)于所述邏輯設(shè)計的邏輯單元互連關(guān)系的一種配置;把所述設(shè)計數(shù)據(jù)庫的一部分提供給用戶;輸入用戶指定的變化,對所述設(shè)計數(shù)據(jù)庫的用戶所選部分進(jìn)行重新定義;產(chǎn)生一部分配置位流,僅描述與所述設(shè)計數(shù)據(jù)庫的所述重新定義部分相關(guān)的所述邏輯單元和所述的互連關(guān)系;以及將所述部分配置位流下載到所述邏輯單元陣列中,由此僅配置所述邏輯單元陣列中對應(yīng)于所述用戶指定變化的這些部分。
2.如權(quán)利要求1所述的方法,其特征在于所述的產(chǎn)生步驟包括僅基于所述設(shè)計數(shù)據(jù)庫的所述已重新定義部分來定義所述部分配置位流。
3.如權(quán)利要求1所述的方法,其特征在于所述的用戶指定變化包括新的邏輯單元定義或新的互連關(guān)系,所述的產(chǎn)生步驟包括僅基于所述新邏輯單元定義或所述新互連關(guān)系來定義所述部分配置位流。
4.如權(quán)利要求1所述的方法,其特征在于所述的提供步驟包括識別被配置為邏輯門的特定邏輯單元以及對于每一個所述特定邏輯單元顯示其單元位置和顯示其相應(yīng)邏輯門的圖形圖象或文本表示。
5.如權(quán)利要求4所述的方法,其特征在于所述的輸入用戶指定變化的步驟包括識別有待重新配置的邏輯單元、顯示備用邏輯門的表以及從所述表中選擇一個備用邏輯門,對所述被識別邏輯單元進(jìn)行重新配置。
6.如權(quán)利要求5所述的方法,其特征在于所述的顯示備用邏輯門表的步驟包括顯示所述備用邏輯門的圖形表示。
7.如權(quán)利要求4所述的方法,其特征在于所述的提供步驟進(jìn)一步包括識別所述設(shè)計數(shù)據(jù)庫中的固定值邏輯單元;對于不與其它任何固定值邏輯單元鄰接的固定值邏輯單元,顯示所述固定值邏輯單元的單元位置和當(dāng)前值;以及對于一組相鄰的固定值邏輯單元,將所述這組的單元位置顯示為單元位置的范圍以及將所述組中的邏輯單元的當(dāng)前值顯示為位流。
8.如權(quán)利要求1所述的方法,其特征在于所述的提供步驟包括僅顯示被限定輸出常數(shù)邏輯“1”或常數(shù)邏輯“0”的這些邏輯單元。
9.如權(quán)利要求1所述的方法,其特征在于所述的提供步驟包括識別所述設(shè)計數(shù)據(jù)庫中的固定值邏輯單元;對于不與其它任何固定值邏輯單元鄰接的固定值邏輯單元,顯示所述固定值邏輯單元的單元位置和當(dāng)前值;以及對于一組相鄰的固定值邏輯單元,將所述這組的單元位置顯示為單元位置的范圍以及將所述組中的每個邏輯單元的當(dāng)前值集中地顯示為位流。
10.一種在FPGA中產(chǎn)生所述FPGA的配置位流的方法,所述FPGA包括可編程邏輯單元和I/O塊以及設(shè)置在所述邏輯單元與所述I/O塊之間的可編程互連關(guān)系,所述方法包括輸入一邏輯電路,所述邏輯電路包括多個邏輯門和所述邏輯門之間的連接;選擇邏輯單元和互連關(guān)系來實現(xiàn)所述邏輯電路;形成一個包含所述所選邏輯單元和互連關(guān)系的放置和選路信息的設(shè)計數(shù)據(jù)庫;根據(jù)所述放置和選路信息產(chǎn)生第一配置位流,所述第一配置位流包括所有的所述所選邏輯單元和互連關(guān)系的定義,由此而實現(xiàn)所述邏輯電路;把所述第一配置位流存儲到數(shù)據(jù)存儲器中,接著下載到所述FPGA中;以及將變化加入到所述邏輯電路設(shè)計中;所述方法的改進(jìn)包括向用戶顯示所述設(shè)計數(shù)據(jù)庫的部分和輸入對所述設(shè)計數(shù)據(jù)庫所選部分的修改;產(chǎn)生第二配置位流,包括僅針對所述邏輯單元和所述互連關(guān)系中與所述設(shè)計數(shù)據(jù)庫的所述所選部分的所述修改相關(guān)的這些的新定義。
11.如權(quán)利要求10所述的方法,其特征在于進(jìn)一步包括把所述第一配置位流下載到所述FPGA中的步驟。
12.如權(quán)利要求11所述的方法,其特征在于在對所述第一配置位流進(jìn)行下載的所述步驟后進(jìn)一步包括把第二位流下載到所述FPGA中的步驟。
13.如權(quán)利要求10所述的方法,其特征在于所述的產(chǎn)生第二配置位流的步驟包括僅基于所述邏輯單元和互連關(guān)系的所述這些的位置和新定義而定義位流。
14.如權(quán)利要求10所述的方法,其特征在于顯示部分所述設(shè)計數(shù)據(jù)庫的子步驟包括識別所述設(shè)計數(shù)據(jù)庫中的第一類邏輯單元,它們被配置為邏輯門;對于所述第一類邏輯單元中的每一個,顯示其單元位置和其相應(yīng)邏輯門的表示;識別所述設(shè)計數(shù)據(jù)庫中的第二類邏輯單元,它們被配置為產(chǎn)生常數(shù)邏輯值;顯示所述第二類邏輯單元的單元位置和邏輯值。
15.如權(quán)利要求14所述的方法,其特征在于所述的顯示所述第二類邏輯單元包括形成包含所述第二類邏輯單元中相互相鄰這些邏輯單元的單元組,以及利用單元位置的范圍顯示每一個所述單元組中邏輯單元的單元位置。
16.如權(quán)利要求15所述的方法,其特征在于所述的形成單元組的子步驟包括形成所述第二類邏輯單元中這一些與其它所述第二類邏輯單元水平相鄰的水平組,所述第二類邏輯單元中這一些與其它所述第二類邏輯單元垂直相鄰的垂直組,如果給定的邏輯單元既屬于水平組又屬于垂直組,那么,把所述的給定邏輯單元分配給所述的水平組。
17.如權(quán)利要求15所述的方法,其特征在于所述的形成單元組的子步驟包括形成所述第二類邏輯單元中這一些與其它所述第二類邏輯單元水平相鄰的水平組,所述第二類邏輯單元中這一些與其它所述第二類邏輯單元垂直相鄰的垂直組,如果給定的邏輯單元既屬于水平組又屬于垂直組,那么,把所述的給定邏輯單元分配給所述的垂直組。
18.如權(quán)利要求14所述的方法,其特征在于所述的顯示所述第二類邏輯單元包括形成包含所述第二類邏輯單元中用戶指定邏輯單元的單元組,以及顯示每一個所述單元組中邏輯單元的單元位置和邏輯值。
19.一種配置FPGA的系統(tǒng),所述FPGA具有至少一個編程邏輯設(shè)計,所述系統(tǒng)包括在所述FPGA的運(yùn)行時間操作期間檢測所述FPGA外部條件的手段;響應(yīng)于所述FPGA外部條件的檢測結(jié)果重新設(shè)計一部分所述邏輯設(shè)計的手段;僅基于所述重新設(shè)計的部分形成部分配置位流的手段;將所述部分配置位流發(fā)送到所述FPGA,由此在運(yùn)行時間中對所述FPGA進(jìn)行部分重新配置以實現(xiàn)所述邏輯設(shè)計的所述重新設(shè)計部分的手段。
20.如權(quán)利要求19所述的系統(tǒng),其特征在于進(jìn)一步包括至少存儲設(shè)計數(shù)據(jù)庫中代表所述邏輯設(shè)計的一部分的手段,所述的重新設(shè)計的手段包括訪問所述設(shè)計數(shù)據(jù)庫,由此提供對所述邏輯設(shè)計進(jìn)行重新設(shè)計基礎(chǔ)的手段。
21.一種配置FPGA的系統(tǒng),所述FPGA具有至少一個編程邏輯常數(shù),所述系統(tǒng)包括在所述FPGA的運(yùn)行時間操作期間檢測所述FPGA外部條件的手段;響應(yīng)于所述FPGA外部條件的檢測結(jié)果確定所述邏輯常數(shù)的一個新值手段;僅基于所述重新設(shè)計的部分形成部分配置位流的手段;將所述部分配置位流發(fā)送到所述FPGA,由此在運(yùn)行時間中對所述FPGA進(jìn)行部分重新配置的手段。
全文摘要
一種部分重新配置門陣列的系統(tǒng)和方法,通過邏輯電路的放置和路徑(312)產(chǎn)生一個設(shè)計數(shù)據(jù)庫(314),訪問該數(shù)據(jù)庫以修改由放置和選路所創(chuàng)建的邏輯單元配置(322)。根據(jù)修改情況,創(chuàng)建僅包含實現(xiàn)修改邏輯單元的位流的部分配置位流(324)。將部分配置位流下載到門陣列(326),由此執(zhí)行門陣列的部分重新配置。在另一個實施例中,根據(jù)本發(fā)明的系統(tǒng)包括軟件實用程序(604),它允許應(yīng)用程序(602)在包含可編程門陣列的系統(tǒng)中執(zhí)行,在運(yùn)行過程中對門陣列進(jìn)行重新配置。實用程序包括根據(jù)在運(yùn)行時間期間檢測到的外部條件而修改設(shè)計的程序。這種方法避免了需要提供一組預(yù)定備用設(shè)計,而允許應(yīng)用程序自身作出決定。
文檔編號H01L21/82GK1241275SQ97199308
公開日2000年1月12日 申請日期1997年10月15日 優(yōu)先權(quán)日1996年10月30日
發(fā)明者M·T·梅森, S·C·埃文斯, S·S·阿拉耐克 申請人:愛特梅爾股份有限公司