專利名稱:給掩模可編程邏輯器件編程的方法及如此編程的器件的制作方法
技術領域:
本發(fā)明涉及掩??删幊踢壿嬈骷⑶矣绕渖婕坝糜诮o掩??删幊踢壿嬈骷幊痰姆椒?,其允許向和自用戶可編程邏輯器件進行移植以提供更容易的驗證和/或測試。
背景技術:
可編程邏輯器件,有時被稱為″現(xiàn)場可編程門陣列″(″FPGA″),是為大家所熟知的。早期可編程邏輯器件是一次性可配置的。例如,配置可由″熔斷″,即斷開,熔性連接來實現(xiàn)??蛇x地,配置可存儲在可編程只讀存儲器中。這些器件通常給用戶提供針對乘積的和(即,″乘積項″或″P-TERM″)邏輯運算配置器件的能力。之后,引入可擦除可編程只讀存儲器(EPROM)以用于配置的可編程邏輯器件變得可用,其允許重新配置器件。
再后,引入靜態(tài)隨機存取存儲器(SRAM)元件以用于配置的可編程邏輯器件變得可用。也可被重新配置的這些器件將其配置存儲在諸如EPROM的非易失存儲器中,當器件被加電時配置被從非易失存儲器裝載到SRAM元件中。這些器件通常為用戶提供為查找表類型邏輯運算而配置器件的能力。在某個時候,這種器件開始被提供以隨機存取存儲器的嵌入塊,其可由用戶配置以作為隨機存取存儲器、只讀存儲器或邏輯(諸如P-TERM邏輯)。近來,這種器件已被提供以專門的功能塊,諸如用于數(shù)字信號處理的乘法器和乘法器/累加器塊。
在所有上述可編程邏輯器件中,器件中特定邏輯元件的邏輯功能以及邏輯元件之間信號傳送的互連都是可編程的。此類器件在下文中將被稱作″常規(guī)可編程邏輯器件″或″用戶可編程邏輯器件″或″現(xiàn)場可編程邏輯器件″,其中后者不應與術語″現(xiàn)場可編程門陣列″混淆,現(xiàn)場可編程門陣列被認為是由前面三個術語所描述的器件類型的子集。
近來,掩模可編程邏輯器件已被提供。利用掩模可編程邏輯器件,不是向所有用戶出售相同器件,而是由制造商制造具有其功能不可由用戶編程的邏輯元件的標準化布局,并且缺乏任何連通或互連資源的部分器件。
為給掩??删幊踢壿嬈骷幊蹋脩魹檠谀?删幊踢壿嬈骷闹圃焐趟杵骷募夹g規(guī)范,其可以是用來給可比的常規(guī)可編程邏輯器件編程的配置文件。制造商利用該信息給上面所描述的部分器件增加敷金屬層。那些附加層通過在那些元件內(nèi)產(chǎn)生某些連接來給邏輯元件編程,并且也在邏輯元件之間增加互連通路。掩??删幊踢壿嬈骷部梢跃邆淝度腚S機存取存儲器塊,如上結合常規(guī)可編程邏輯器件所描述的。在此類掩??删幊踢壿嬈骷校偃羟度氪鎯ζ鞅慌渲脼橹蛔x存儲器或P-TERM邏輯,則該配置也可利用附加的敷金屬層來實現(xiàn)。
雖然常規(guī)可編程邏輯器件允許用戶容易地設計器件以執(zhí)行所需功能,然而常規(guī)可編程邏輯器件總是包括不可用于特定設計的資源。此外,為容納通用連通和互連資源,以及允許信號從任何邏輯元件到達任何所需連通和互連資源的開關資源,隨著更多的功能被置入其中,常規(guī)可編程邏輯器件變得規(guī)模越來越大,從而增大此類器件的尺寸和功耗。信號在從一個連通和互連資源行進到另一個連通和互連資源時經(jīng)過各種開關元件路由也減慢了信號。
掩??删幊踢壿嬈骷某霈F(xiàn)允許用戶在常規(guī)可編程邏輯器件中驗證設計,但是將生產(chǎn)版本實施到掩??删幊踢壿嬈骷?,對于相同的功能,掩??删幊踢壿嬈骷梢燥@著地更小些并且使用明顯更少的功率,因為器件上只存在特定設計實際上需要的那些互連和連通資源。此外,那些資源是簡單的敷金屬,因此沒有消耗空間或功率,或減慢信號的通用開關元件。
然而,迄今為止,通過向制造商提供實現(xiàn)可比常規(guī)可編程邏輯器件的用戶邏輯設計的用戶編程文件,來實現(xiàn)掩模可編程邏輯器件的編程。制造商于是將盡其所能將設計轉(zhuǎn)化成為盡可能最有效的掩模編程邏輯器件。然而,制造商不能在所有情況下都實現(xiàn)用戶所完成的設計。
例如,用戶可能希望器件以某一工作頻率運行?;蛘?,用戶設計可能包括某些數(shù)目的某些類型的部件,這些部件在不同的器件中以不同的數(shù)目可用,使得用戶會設計不同的編程來應對這些不同。制造商不一定從配置文件中推導出這種要求。
此外,一個十分有經(jīng)驗的用戶可能想要專門產(chǎn)生針對掩??删幊踢壿嬈骷脑O計。迄今為止還沒有可用的必要工具來允許用戶進行此工作。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供了一種用適當?shù)幕谟嬎銠C或微處理器的編程設備實現(xiàn)的方法,其允許用戶結合在掩??删幊踢壿嬈骷杏脩舻倪壿嬙O計的實現(xiàn)來指定某些偏好。根據(jù)本發(fā)明的另一個方面,根據(jù)本發(fā)明的編程工具可允許設計從一個可編程邏輯器件到另一個的移植,而不需要全部重新編譯設計。根據(jù)本發(fā)明的另一方面,考慮由可比的用戶可編程邏輯器件和掩??删幊踢壿嬈骷g的不同引起的資源限制,以最小化將用戶可編程邏輯器件用戶設計轉(zhuǎn)化為掩模可編程邏輯器件時的失敗,反之亦然。用戶可針對用戶可編程邏輯器件給設計編程,在用戶可編程邏輯器件中調(diào)試或測試,然后將其付諸于掩模可編程邏輯器件。可選地,用戶可直接針對掩模可編程邏輯器件給設計編程,但將設計移植到用戶可編程邏輯器件以進行原型驗證/測試。
先前所知的設計過程(其中設計在被掩??删幊踢壿嬈骷S商移植到掩??删幊踢壿嬈骷坝捎脩粼谟脩艨删幊踢壿嬈骷序炞C)不一定在每個情況中產(chǎn)生最好結果的一個原因是掩模可編程邏輯器件具有與用戶可編程邏輯器件不同的資源,甚至不同于最接近對應的用戶可編程邏輯器件。
例如,在可從California,San Jose的Altera Corporation得到的HardCopyTMAPEXTM系列掩??删幊踢壿嬈骷?其基于Altera的APEXTM系列用戶可編程邏輯器件)中,該掩??删幊踢壿嬈骷谂c用戶可編程邏輯器件的相同的平面布置。特別地,在HardCopyTMAPEXTM系列器件的任何成員中的邏輯區(qū)域的布局與常規(guī)APEXTM系列用戶可編程邏輯器件的相應成員中的相同。
在常規(guī)APEXTM用戶可編程邏輯器件中,盡管可編程,然而互連資源的數(shù)目及位置是固定的。因此,邏輯元件的每個組合具有固定數(shù)量的其能連接到的可編程互連線。然而,相應的HardCopyTMAPEXTM掩??删幊踢壿嬈骷]有這樣的限制;雖然存在物理上的限制,但是基本上任何連接都可以利用適當?shù)姆蠼饘賮慝@得。因此,如果用戶針對APEXTM系列中常規(guī)用戶可編程邏輯器件來設計邏輯,則將針對該常規(guī)器件的有限互連資源來優(yōu)化該用戶設計。如果基本上無限制的互連的可用性將允許更有效的設計,則當移植到HardCopyTMAPEXTM掩模可編程邏輯器件時從APEXTM用戶可編程邏輯器件進行的一成不變的互連拷貝是低效的。
由于同樣的原因,如果用戶直接針對掩??删幊踢壿嬈骷M行設計,但是希望在用戶可編程邏輯器件中測試設計或?qū)υO計進行原型驗證,則從掩??删幊淘O計到用戶可編程設計的轉(zhuǎn)換可能不起作用,因為掩??删幊淘O計可能依賴于通過掩模進行無限連接的能力,而且在相應或兼容用戶可編程邏輯器件中可獲得的有限數(shù)量互連可能不足以支持該設計。
這些問題在最新的器件中變得更加復雜,諸如可從Altera公司得到的STRATIXTM系列用戶可編程邏輯器件,以及相應的HardCopyTMSTRATIXTM系列掩??删幊踢壿嬈骷?。在那些系列的器件中,不存在一個系列的成員和其他系列的相應成員之間的一一對應。雖然相應系列成員的能力是可比的,然而邏輯元件或模塊的數(shù)量或更可能的布局會發(fā)生變化,并且此外,諸如用戶存儲器的輔助元件的數(shù)目可能不同。因此,針對一種器件設計的邏輯設計有可能不能移植到其他類型器件。即使設計可以被移植,也不能保持相同的元件相對布局,即使在一些用戶設計中相對布局可能是重要的。
本發(fā)明包括一種使用戶直接針對掩??删幊踢壿嬈骷蕚溥壿嬙O計而不用首先針對用戶可編程邏輯器件準備邏輯設計的方法。當這樣做時,本發(fā)明也包括至少當用戶打算原型驗證或測試用戶可編程邏輯器件中的邏輯設計時考慮相應或兼容用戶可編程邏輯器件的任何約束(例如,有限的互連資源,或不同的平面布置,如以上所討論的),使得能夠進行該設計到用戶可編程邏輯器件的期望移植。
本發(fā)明也包括一種通過首先針對兼容用戶可編程邏輯器件設計邏輯設計來給掩??删幊踢壿嬈骷幊痰姆椒?。在該方法中,該設計被移植到掩模可編程邏輯器件。作為該方法的一部分,本發(fā)明也包括當設計用戶可編程邏輯設計時考慮相應或兼容掩??删幊踢壿嬈骷娜魏渭s束(例如,較少的輔助資源,或不同的平面布置,如以上所討論的),使得可能進行到掩??删幊踢壿嬈骷钠谕浦?。
作為后一方法的擴展,當在用戶可編程邏輯器件中設計該邏輯設計并將其移植到掩??删幊踢壿嬈骷?,用戶可能希望將該設計移植回到用戶可編程邏輯器件以用于原型驗證/測試。根據(jù)這一擴展,本發(fā)明的方法包括至少當用戶打算將邏輯設計再移植到用戶可編程邏輯器件以用于原型驗證/測試時,當在考慮最終目標掩??删幊踢壿嬈骷募s束的同時設計出原始用戶可編程邏輯設計的情況下,當將該設計移植到掩??删幊踢壿嬈骷r進一步考慮兼容用戶可編程邏輯器件的約束,使得能進行該設計到用戶可編程邏輯器件的所期望再移植。
本發(fā)明進一步包括提供一種變換以作為測試到掩??删幊踢壿嬈骷脑嫁D(zhuǎn)換的方式,該變換將已從用戶可編程邏輯器件的配置文件轉(zhuǎn)換而來的針對掩??删幊踢壿嬈骷脑O計轉(zhuǎn)回到用戶可編程邏輯器件的配置文件。只要該向后轉(zhuǎn)換變換不僅僅是原始變換的鏡像(并且最好其不是),如果由向后變換產(chǎn)生的配置文件如預期的那樣操作,則該原始轉(zhuǎn)換可以被認為是有效的。由向后變換所產(chǎn)生的配置文件可以通過簡單地將其與原始配置文件進行比較,利用已知技術在軟件中模擬其操作,或通過給用戶可編程邏輯器件實際編程并測試該器件的操作來測試。如果僅僅比較文件,則完全相同可證明有效,且不必做進一步測試。然而,因為超過一個的設計可以是功能相同的,不完全相同并不證明無效,因此失敗的比較可優(yōu)選地跟隨有模擬,或跟隨有實際器件中的測試。
為利于上述方法,本發(fā)明包括產(chǎn)生并保持不同可編程邏輯器件之間的映射的方法。如上所述,早期掩??删幊踢壿嬈骷脑O計基本上保持與兼容用戶可編程邏輯器件的一一對應。這使得容易保持例如各種邏輯元件間的空間關系(舉例來說,當用戶調(diào)用可從Altera公司得到的LogicLockTM功能以在合成設計時保持某些邏輯功能物理上彼此靠近時)。然而,如上所述,更新的掩模可編程邏輯器件設計偏離了與兼容用戶可編程邏輯器件的一一對應。
因此,用戶可編程邏輯器件可包括邏輯元件或模塊的塊的5×4陣列,而其相應的掩??删幊踢壿嬈骷砂ㄟ壿嬙蚰K的塊的7×3陣列。其將不能在掩??删幊踢壿嬈骷淖钭罅兄邪槍τ脩艨删幊踢壿嬈骷脑O計的最左列中的所有五個塊,因為該列僅包含三個塊。即使當從一個用戶可編程邏輯器件轉(zhuǎn)換到另一個,或從一個掩??删幊踢壿嬈骷D(zhuǎn)換到另一個時,也是如此。
根據(jù)本發(fā)明,通過將一個可編程邏輯器件映射到另一個,使得對于任何兩個器件之間,均知道如何將一個器件的邏輯塊中的功能映射到其他器件中的邏輯塊的方法,來解決這個問題。因此在上面的7×3對5×4的例子中,將得知五個塊的哪些塊不會被映射到第一列,并且此外還得知它們將被映射到哪里。映射可以手工或利用檢查各個可選映射并選擇最優(yōu)映射的自動化處理來完成,其中考慮到保持邏輯塊和輸入/輸出塊之間最相鄰關系和/或關系的可能需要。對于任何兩個器件之間,映射只需要進行一次,然后該映射可被用來將任何設計從一個器件移植到其他器件(服從上面所討論的其他約束,如果適用的話)。因為對于每個器件對,每個映射僅需被執(zhí)行一次,手工進行映射是可行的。
無論任何一個器件是掩??删幊痰倪€是用戶可編程的,此映射發(fā)明均適用。即,可以在特定用戶可編程邏輯器件和特定掩??删幊踢壿嬈骷g,在特定用戶可編程邏輯器件和不同的特定用戶可編程邏輯器件之間,或在特定掩模可編程邏輯器件和不同的特定掩??删幊踢壿嬈骷g準備映射。
因此,根據(jù)本發(fā)明,提供了一種給掩??删幊踢壿嬈骷幊桃援a(chǎn)生執(zhí)行一個或多個所需功能的掩模編程邏輯器件的方法。該方法包括針對與掩??删幊踢壿嬈骷嫒莸挠脩艨删幊踢壿嬈骷?,設計用于執(zhí)行一個或多個所需功能的編程,從而產(chǎn)生一個或多個用戶可編程邏輯器件配置文件。利用第一變換函數(shù)對一個或多個用戶可編程邏輯器件配置文件進行操作,以產(chǎn)生掩??删幊踢壿嬈骷木幊?,包括一個或多個掩??删幊踢壿嬈骷渲梦募?br>
此外,提供了一種給掩模可編程邏輯器件編程以產(chǎn)生執(zhí)行一個或多個所需功能的掩模編程邏輯器件的方法。該方法包括針對所述掩??删幊踢壿嬈骷O計用于執(zhí)行所述一個或多個所需功能的編程,從而產(chǎn)生一個或多個掩??删幊踢壿嬈骷渲梦募?。利用變換函數(shù)對一個或多個掩模可編程邏輯器件配置文件進行操作,以產(chǎn)生與所述掩??删幊踢壿嬈骷嫒莸挠脩艨删幊踢壿嬈骷木幊?,包括一個或多個用戶可編程邏輯器件配置文件。
進一步地,提供一種產(chǎn)生與多于一個的可編程邏輯器件兼容的編程的方法。該方法包括針對第一可編程邏輯器件設計編程,其中設計包括使該編程至少部分地基于至少第二可編程邏輯器件。
還提供了按照上述方法編程的可編程邏輯器件。
通過下面結合附圖對具體實施方式
進行的討論將明白本發(fā)明的上述及其他優(yōu)點,其中類似參考標記指示類似部分,并且其中圖1是示出掩??删幊踢壿嬈骷南惹八木幊谭椒ǖ牧鞒虉D;圖2是示出掩模可編程邏輯器件和用戶可編程邏輯器件之間的可能差別的比較圖;圖3是示出根據(jù)本發(fā)明的掩??删幊踢壿嬈骷木幊谭椒ǖ牡谝蛔顑?yōu)實施例的流程圖;圖4是示出根據(jù)本發(fā)明的掩模可編程邏輯器件的編程方法的第二最優(yōu)實施例的流程圖;圖5是示出根據(jù)本發(fā)明的掩模可編程邏輯器件的編程方法的第三最優(yōu)實施例的流程圖;圖6是類似于圖3的加上驗證步驟的流程圖;圖7是示出兼容可編程裝置之間布局的不同的示意圖,其中示出了根據(jù)本發(fā)明的映射;以及圖8是采用根據(jù)本發(fā)明編程的掩??删幊踢壿嬈骷氖纠韵到y(tǒng)的簡化方框圖。
具體實施例方式
本發(fā)明改變了掩??删幊踢壿嬈骷?″MPLD″)的編程過程的流程。本發(fā)明提供了增強的用戶工具,其允許在用戶控制下進行更多處理,而且允許用戶在處理期間輸入附加信息,而不是簡單地采用常規(guī)用戶可編程PLD(UPLD″)的用戶配置文件,以及讓MPLD供應商做出其自己的關于用戶會希望如何在MPLD中實現(xiàn)設計的判斷。
為了進一步地增強處理,如下面所討論的,根據(jù)本發(fā)明的增強工具優(yōu)選地結合MPLD特性的增強模型。
現(xiàn)在將參考附圖1-7描述本發(fā)明。
圖1示出了給MPLD編程的先前巳知的方法10。虛線方框11中示出了在用戶控制下進行的處理的那些部分,而虛線方框12中示出了在MPLD供應商的控制下進行的那些步驟。方法10預先假定將被編程的MPLD為對應于常規(guī)UPLD的MPLD,最好來自相同的供應商。
步驟110中,用戶使用由供應商為輸入常規(guī)UPLD的設計的目的而提供的眾所周知的設計工具,輸入常規(guī)UPLD的設計。在步驟111中,那些工具將用戶設計編譯成配置文件112。這可優(yōu)選地為位流文件,其可優(yōu)選地包含將被分配給用戶針對其開發(fā)設計的UPLD的每個配置位的值(1以及0)。可產(chǎn)生包含用戶約束的列表(例如,器件的所需工作頻率)的第二文件113。優(yōu)選地,文件113中的數(shù)據(jù)被合并進文件112,其被提供給供應商處理12。
在步驟120中,配置文件112優(yōu)選地被反匯編。利用在其上開發(fā)設計的UPLD型號的知識,以及在該UPLD上每個配置位的作用,反匯編器120可以確定設計將執(zhí)行的邏輯功能。該信息允許網(wǎng)表產(chǎn)生步驟121產(chǎn)生將被提供在編程的MPLD上的功能網(wǎng)表。該網(wǎng)表優(yōu)選地在布局和布線步驟122中被處理,優(yōu)選地利用常規(guī)布局和布線工具,該工具為大家所熟知,諸如可從California,Mountain View的Synopsys,Inc.得到的APOLLO-IITM布局和布線工具(先前可以從California,San Jose的Avanti Corp.獲得)。步驟123中利用布局和布線步驟122的結果來產(chǎn)生必要的敷金屬以給MPLD編程。定時報告1220可在布局和布線步驟122之后產(chǎn)生,用戶可以利用其驗證所需定時關系已被實現(xiàn)。
在決定將UPLD設計轉(zhuǎn)換到MPLD時,用戶常常期望獲得轉(zhuǎn)換的性能回報。例如,執(zhí)行某些功能的已編程MPLD可以比對應的已編程UPLD運行理快和/或溫度更低(以較低的功率)。然而,例如通過在特定邏輯塊中功能的位置以及特定信號的特定通路的選擇,可以使性能改進偏向一個特定改進而不是另一個(舉例來說,速度超過功耗,反之亦然)。當供應商在方法10中獲得配置文件112時,供應商得到極少的關于對用戶說來哪些考慮(如果有的話)是重要的信息。雖然供應商可以根據(jù)設計對用戶的需求做出經(jīng)驗的猜測,然而那些猜測可能是錯誤的,導致MPLD設計雖然能夠工作但從用戶觀點來說可能是次優(yōu)的。
圖2比較了兩個器件。器件130是具有布置成5×4結構的二十個塊131的假設UPLD(舉例來說,每個有十個邏輯元件或模塊),而器件140是具有布置成7×3結構的邏輯元件或模塊的二十一個塊141的對應兼容MPLD。雖然它們可能具有與兼容器件不同的小片尺寸,但是每個器件130,140必須適合相同的外界環(huán)境。因此,優(yōu)選地,每個具有相同的封裝和管腳引出線,雖然輸入/輸出驅(qū)動器132的布局可以不同。在這一例子中,器件130,140進一步地不同在于UPLD器件130具有兩個用戶存儲器133,而MPLD器件140僅具有一個用戶存儲器143。其它的不同也可以存在于實際的器件對之間。而所有UPLD不同于所有MPLD的地方在于,UPLD上的可用通路僅為由制造商提供的可編程互連結構,而MPLD中對通路的唯一限制是那些由于可能無法布置某用戶所需的有些復雜的布線規(guī)劃的敷金屬而引起的限制(舉例來說,因為太多的信號路徑必須互相交叉,以致不能由可用的敷金屬層來接納)。
當用戶設計UPLD 130的設計時,用戶可能考慮到產(chǎn)生器件外部所利用的信號的某些功能需要離輸入/輸出區(qū)域132更近,而且利用彼此的結果的某些邏輯功能也應彼此靠近。由于邏輯塊131,141的不同的布局,當將用戶設計移植到MPLD 140時這些目的可能都不能獲得。
根據(jù)本發(fā)明的方法20(圖3)通過給用戶更多對處理的控制,試圖給用戶需求更多的權重。因此在方法20的用戶部分21中,當步驟111中編譯UPLD設計之后,結果不但被輸出到配置文件112,而且輸出到MPLD模型210,其中相應MPLD的特征與響應--包括MPLD的實際布局或″平面布置″--被表示出,從而將UPLD功能轉(zhuǎn)化到MPLD功能,這優(yōu)選地在步驟211中被編譯。優(yōu)選地,在UPLD編譯步驟111和MPLD編譯步驟211(以及MPLD編譯步驟410--見圖5)中優(yōu)選地使用最好利用相同算法和/或編碼庫(code base)的相同編譯工具。應該注意到,通過對相同用戶設計使用相同編譯器,不經(jīng)復雜驗證而得到在UPLD中運行的設計將在MPLD中運行的高置信度。MPLD模型210可基于結合圖7如下所述的器件到器件的映射。
步驟211的結果是已編程MPLD的定時約束的文件213,以及已編程MPLD的布局約束的文件214。用戶可提供輸入212到步驟211以引導步驟211中的編輯。例如,如果用戶的目的之一是使某一時鐘在MPLD模型中比在UPLD模型中運行快50%,則其可以由用戶在步驟211中輸入,然后其將″知道″速度比例如降低功耗更優(yōu)先。
雖然如同上述可以是單個文件的文件112、113如方法10中那樣被提供給反匯編器120,然而也可以是單個文件并且包含MPLD的定時以及布局數(shù)據(jù)的文件213和214被提供給布局和布線步驟122。特別地,這些數(shù)據(jù)包括可以被MPLD滿足卻可能不被UPLD滿足的定時約束(因此沒有反映在文件112/113中)以及基于MPLD的布局結構的″知識″的布局約束。由于有這些數(shù)據(jù),布局和布線工具所做工作較少,因為布局功能已經(jīng)被執(zhí)行了。因此,優(yōu)選地,布局和布線工具基本上僅執(zhí)行布線,然后如同上述在步驟123中完成MPLD。
在方法20中,與方法10中一樣,用戶根據(jù)相應的UPLD定義所需的MPLD。然而,在設計UPLD編程時,最終目標MPLD的約束必須被考慮到。因此,在UPLD設計步驟110中部分用戶輸入為有關設計是否最終針對MPLD的指示。如果是,則考慮MPLD的約束,即,設計工具不允許運用會實現(xiàn)所期望的邏輯設計、但在兼容MPLD中不可用(這是因為例如UPLD和MPLD之間如上所述的類型差異,即使當它們彼此兼容時)的UPLD功能。
在本發(fā)明的另一個最優(yōu)實施例中,在方法30(圖4-)的用戶部分31中,用戶在用戶設計310中根據(jù)MPLD本身定義所需的MPLD。這優(yōu)化了MPLD的設計,因為設計是利用根據(jù)各種資源的數(shù)目及位置直接想到的MPLD的結構來產(chǎn)生的。
設計310以及諸如所期望工作頻率的MPLD約束的用戶輸入212被輸入給MPLD編譯器步驟211,其輸出定時和布局約束213,214。步驟211的輸出也在步驟311中被輸入給一個模型,其中表示了相應UPLD的特征與響應,從而將MPLD功能轉(zhuǎn)化成UPLD功能,其優(yōu)選地在步驟111中被編譯。步驟111產(chǎn)生UPLD配置和約束數(shù)據(jù)112,113。數(shù)據(jù)112,113,213,214被用于方法30的供應商部分12,正如它們被用于方法20的供應商部分12那樣。
此外,在進行提交以使供應商步驟123中制造已編程的MPLD之前,當用戶打算給UPLD編程以模擬所期望的MPLD時,可得到數(shù)據(jù)112,113。然而,如果用戶意欲在UPLD中執(zhí)行這樣的驗證,那么用戶優(yōu)選地應指明UPLD驗證將被執(zhí)行,以作為輸入212的一部分。在這種情況下,考慮UPLD的約束,即,設計工具不允許運用會實現(xiàn)所期望的邏輯設計,但在兼容UPLD中不可用(例如因為UPLD和MPLD之間的如上所述的類型差異,即使當它們彼此兼容時)的MPLD功能。
在圖5所示的方法40的另外一個最優(yōu)實施例中,在用戶部分41中,用戶在用戶設計310中根據(jù)MPLD本身定義所期望的MPLD。設計310以及諸如所期望工作頻率的MPLD約束的用戶輸入212被輸入給MPLD編譯器步驟410,其同樣輸出定時和布局約束213,214,以及結構文件411和用戶約束文件412。這種情況下,MPLD設計不必簡單地轉(zhuǎn)換到UPLD設計以提供由反匯編器120使用的配置和約束文件112,113。由編譯器步驟411所提供的結構和約束文件411,412被方法40的供應商部分42的網(wǎng)表產(chǎn)生器121直接使用,其不需要反匯編器120。然而,編譯器步驟410的輸出在步驟311中可以可選擇地輸入給一個模型,其中表示出相應UPLD的特征與響應,從而將MPLD功能轉(zhuǎn)化成UPLD功能,然后其可在步驟111中被編譯。這種情況下,步驟111產(chǎn)生UPLD結構數(shù)據(jù)112,如果需要的話,當進行提交以使供應商在步驟123制造編程的MPLD之前,其能被用來給UPLD編程以模擬所期望的MPLD。同樣,如果用戶意欲在UPLD中執(zhí)行這樣的驗證,那么用戶優(yōu)選地應指出將進行UPLD驗證,以作為輸入212的一部分。在這種情況下,如上結合方法30(圖4)所討論的,考慮UPLD的約束。
結合任何方法20,30及40應當注意到,如果用戶帶有邏輯可被轉(zhuǎn)換到其他類型器件(MPLD或UPLD)的意圖來設計針對一種器件(UPLD或MPLD)的邏輯,則該軟件不但將不允許使用不能從一個器件轉(zhuǎn)換到另一個的功能,而且優(yōu)選地其將檢查源和目標器件中每種資源的所需數(shù)目,并限制到其中那些數(shù)目相交的那些轉(zhuǎn)換,即到其中不存在源器件中使用的數(shù)目超過可在目標器件中得到的數(shù)目的資源種類的那些轉(zhuǎn)換。因此,對于使用比源器件中的所有資源都少的資源的設計,該設計可能是可轉(zhuǎn)換到特定目標器件的,但是使用一個或多個類型資源中更多資源的相同源器件中的不同設計可能不可轉(zhuǎn)換到該相同特定類型的目標器件。
本發(fā)明的這一方面(其可被應用于例如編譯步驟111的合成階段)優(yōu)選地當輸入設計時告知用戶所預測的失敗,而不是必須等待可能若干小時后發(fā)生的所嘗試的轉(zhuǎn)換失敗。如果預測出這樣的失敗,該軟件可轉(zhuǎn)到,或者告知用戶轉(zhuǎn)到下一個更大的可用目標器件??蛇x地,尤其是在已經(jīng)正考慮最大可用目標器件的情況下,對于某些功能,其在源器件的一種資源中實現(xiàn),該資源在目標器件中存在過少,如果可能的話,該軟件將在不同種資源中實現(xiàn)某些功能,或建議用戶實現(xiàn)那些功能。
類似地,在移植在特定類型資源中在源器件上實現(xiàn)的功能時,當目標器件缺乏該類型資源時,優(yōu)選地,該軟件不會試圖在目標器件上相同類型資源中實現(xiàn)該功能;代之以在可得到的其他類型資源中模擬該功能。注意到,不但當在UPLD和MPLD之間移植時,而且在具有不同資源的相同類型器件當中,這一點是正確的。
圖6示出了類似于圖3的方法20的一種方法60,其中用戶設計UPLD的邏輯,并且該邏輯設計然后在步驟120中通過反匯編配置文件112被轉(zhuǎn)換以用于MPLD中,從而在步驟121產(chǎn)生網(wǎng)表,其然后于步驟122,123中在MPLD上被布局和布線。根據(jù)本發(fā)明的這個方面,作為驗證,在步驟1210中,結果網(wǎng)表被再處理以產(chǎn)生新的UPLD配置文件1120。配置文件1120則在步驟1121中可以被測試以檢查利用該文件所編程的UPLD是否將按照設計運行。
測試步驟1121可采用若干形式。在一個極端的情況下,配置文件1120可以被直接用來給UPLD編程,其功能因此能與設法滿足的設計規(guī)范相比。在另一個極端情況下,配置文件1120可以簡單地與原始配置文件112相比較。如果文件相同,則調(diào)查在此結束。然而,如果文件112和1120不相同,它們?nèi)钥僧a(chǎn)生功能相同的器件。因此,進一步的測試是必要的,其可以作為模擬或通過實際地給一個器件編程來執(zhí)行。
再處理步驟1121不應是步驟121的簡單鏡像。否則,文件1120將總是相同于文件112,而結果MPLD中的錯誤不會被檢測出。更確切些,步驟1121優(yōu)選地被獨立地編寫以在步驟121將網(wǎng)表轉(zhuǎn)換回配置文件1120。
如以上所討論的,模型210,311被提供以模擬UPLD和MPLD之間的轉(zhuǎn)換,反之亦然(并且相似模型可被用來在不同的UPLD或在不同的MPLD間轉(zhuǎn)換)。根據(jù)本發(fā)明的一個最優(yōu)實施例,模型210,311(以及任何類似模型)可基于器件對的映射。在預見到需要映射邏輯設計之前在選定器件對之間針對選定器件對建立這些映射。因此,這樣的映射尤其可針對每個MPLD以及其相應或兼容UPLD產(chǎn)生。在一些這樣的情況下,映射將為一一對應的,諸如在Altera Corporation的APEXTM以及HardCopyTMAPEXTM產(chǎn)品的情況下。在其他類型器件中,諸如在Altera Corporation的STRATIXTM以及HardCopyTMSTRATIXTM產(chǎn)品中,其中資源的數(shù)目以及布局在相應或兼容器件之間有所不同,映射可能會更復雜,但是優(yōu)選地將被設計成能保持最相鄰關系,包括I/O塊以及邏輯塊之間的關系,使得從一個器件到另一個器件移植的設計依照要求操作。這優(yōu)選地如此進行,即使器件的縱橫比不同。例如,如果具有100乘100邏輯塊的UPLD被映射到具有500乘20邏輯塊的MPLD,期望保持最相鄰關系,以及邏輯及I/O之間的關系以保持性能。
例如考慮邏輯塊最右列中的UPLD邏輯塊,其被放入該列中以使其靠近I/O塊以及特定的其他邏輯塊。雖然目標MPLD的最右列中僅存在五分之一的邏輯塊,然而根據(jù)本發(fā)明,源器件的最右列中的邏輯塊優(yōu)選地被約束為至少保留在目標器件的五個最右列之一內(nèi),如果其不能在目標器件的最右列內(nèi)的話。被有意地放置為靠近源器件中的第一個邏輯塊的其他邏輯塊也將優(yōu)選地被保持靠近目標器件中的第一個邏輯塊。實現(xiàn)這個的一個最優(yōu)方式是在兩個布局中的單個元素(例如,邏輯塊)之間保持一一對應。
圖7中圖解了一個較小的例子,如以上所討論的,其示出了5×4UPLD 70及7×3MPLD 71之間的不同及映射,其中所映射的輸入/輸出塊、所映射的邏輯塊、及所映射的存儲器被類似地標記。能夠看出,器件70中例如位于第一列而因此接近輸入/輸出塊132的一些邏輯塊在器件71中位于例如第二列,因此更遠離輸入/輸出塊132。至少在器件70為UPLD而器件71為MPLD的情況下,這些布局差異不應顯著地影響定時,因為MPLD中信號在簡單的敷金屬上移動,因此比信號在UPLD互連上移動得更快。
可使映射過程自動化。然而,映射可手工完成,并且因為每個映射是逐個器件對地進行,而且被用于在該對中的器件之間映射所有轉(zhuǎn)換,其只須被產(chǎn)生一次,使得手工映射可以接受。一旦完成映射,該對中器件之間的任何轉(zhuǎn)換可通過遵循映射而簡單地實現(xiàn)。本發(fā)明的這一方面也可用于將一個UPLD到MPLD轉(zhuǎn)換映射成不同的UPLD到MPLD轉(zhuǎn)換(即,如果″目標″MPLD改變),乃至從一個UPLD映射到另一個UPLD,其中替代目標器件具有與原目標器件不同的尺寸、布局及資源的數(shù)目,只要先前已經(jīng)準備了映射。本發(fā)明的這一方面在原始設計是針對UPLD的情況下尤其有用,因為其優(yōu)選地依賴于作為新目標設計的出發(fā)點的所編譯的UPLD設計。這避免了在新設計上運行布局和布線步驟的可能費時若干小時的需求。通過使用所編譯的UPLD設計,可選映射可以在相對短的時間里被顯示給用戶。
根據(jù)本發(fā)明的另一個方面,沿著相同的路線,可以注意到在給定系列的PLD和相應的MPLD中,MPLD可具有不同數(shù)目的諸如各種邏輯塊和存儲元件的某些類型的資源。根據(jù)本發(fā)明的這一方面(沒有示出),優(yōu)選地,用戶軟件檢測源和目標器件中每種資源的所需數(shù)目,并將可允許轉(zhuǎn)換限制到其中那些數(shù)目相交的那些轉(zhuǎn)換,即其中不存在源器件中使用的數(shù)目超過目標器件中可得到的數(shù)目的資源種類的那些轉(zhuǎn)換。因此,對于使用比源器件中的所有資源都少的資源的設計,該設計可能是可轉(zhuǎn)換到特定目標器件的,但是使用一個或多個類型資源中更多資源的相同源器件中的不同設計可能不可轉(zhuǎn)換到該相同特定類型的目標器件。
例如可被應用于編譯步驟111的合成階段的本發(fā)明的這一方面優(yōu)選地當輸入設計時告知用戶所預測的失敗,而不是必須等待所嘗試的轉(zhuǎn)換失敗,其可能若干小時后發(fā)生。如果預測出這樣的失敗,該軟件將或者轉(zhuǎn)到,或者告知用戶轉(zhuǎn)到下一個更大的可用目標器件??蛇x地,特別是在已經(jīng)正考慮最大的可用目標器件的情況下,對于某些功能,其在源器件中的一個類型的資源中被實現(xiàn),該資源在目標器件中存在過少,如果可能的話,該軟件將在不同類型的資源中實現(xiàn)某些功能,或建議用戶實現(xiàn)那些功能。類似地,在移植特定類型資源中的源器件上所實現(xiàn)的功能時,當目標器件缺乏該種類的資源時,該軟件不會嘗試在該目標器件上相同類型的資源中實現(xiàn)該功能;代之以在可得到的其他類型資源中模擬該功能。注意到,不但當在PLD和MPLD之間移植時,而且在具有不同資源的相同類型器件間,這一點是正確的。
根據(jù)本發(fā)明編程的器件可用于許多種電子設備中。舉例來說,PLD 908(MPLD或UPLD)的一個可能的應用是在圖8中所示的數(shù)據(jù)處理系統(tǒng)900中。數(shù)據(jù)處理系統(tǒng)900可包括以下部件的一個或多個處理器901;存儲器902;I/O電路903;及外圍設備904。這些部件通過系統(tǒng)總線905連接在一起,并且被分布在包含于最終用戶系統(tǒng)907中的電路板906上。
系統(tǒng)900可被用于多種應用中,諸如計算機網(wǎng)絡、數(shù)據(jù)網(wǎng)絡、儀器儀表、視頻處理、數(shù)字信號處理、或任何其它希望利用可編程或可再編程的邏輯的優(yōu)點的應用中。PLD908可用于執(zhí)行各種不同的邏輯功能。例如,PLD908可被配置為與處理器901協(xié)同工作的處理器或控制器。PLD 908也可用作用來仲裁對系統(tǒng)900中共享資源的訪問的仲裁器。在另一例子中,PLD 908可被配置為系統(tǒng)900中處理器901和其他部件之一之間的接口。應該注意到系統(tǒng)900僅是示例性的。
如上所述,不同的技術可用于實現(xiàn)PLD和MPLD,并且其運用于本發(fā)明。
可以理解,上述僅是本發(fā)明的原理的說明,本領域技術人員在沒有背離本發(fā)明的范圍和精神的情況下可以做不同的修改,并且本發(fā)明僅受隨后的權利要求書限定。
權利要求
1.一種給掩??删幊踢壿嬈骷幊桃援a(chǎn)生執(zhí)行一個或多個所需功能的掩模編程邏輯器件的方法,所述方法包括針對與所述掩??删幊踢壿嬈骷嫒莸挠脩艨删幊踢壿嬈骷?,設計用于執(zhí)行所述一個或多個所需功能的編程,從而產(chǎn)生一個或多個用戶可編程邏輯器件配置文件;利用第一變換函數(shù)對所述一個或多個用戶可編程邏輯器件配置文件進行操作,以產(chǎn)生所述掩??删幊踢壿嬈骷木幊?,包括一個或多個掩??删幊踢壿嬈骷渲梦募?br>
2.根據(jù)權利要求1的方法,進一步地包括處理所述一個或多個用戶可編程邏輯器件配置文件以及所述一個或多個掩模可編程邏輯器件配置文件,以產(chǎn)生所述掩模編程邏輯器件。
3.根據(jù)權利要求2的方法,其中所述處理包括反匯編所述至少一個用戶可編程邏輯器件配置文件中的至少一個以產(chǎn)生網(wǎng)表。
4.根據(jù)權利要求3的方法,其中所述處理進一步地包括輸入所述網(wǎng)表到布局和布線工具。
5.根據(jù)權利要求4的方法,其中所述處理進一步地包括輸入所述至少一個掩??删幊踢壿嬈骷渲梦募剿霾季趾筒季€工具。
6.根據(jù)權利要求1的方法,其中所述至少一個用戶可編程邏輯器件配置文件至少包括位流配置文件。
7.根據(jù)權利要求6的方法,其中所述至少一個用戶可編程邏輯器件配置文件進一步地包括表示用戶約束的文件。
8.根據(jù)權利要求1的方法,其中所述至少一個掩??删幊踢壿嬈骷渲梦募ㄒ韵轮辽僦?a)表示掩模可編程邏輯器件定時約束的文件;以及(b)表示掩??删幊踢壿嬈骷季旨s束的文件。
9.根據(jù)權利要求1的方法,進一步地包括在產(chǎn)生所述掩模編程邏輯器件之前測試所述兼容用戶可編程邏輯器件的所述編程。
10.根據(jù)權利要求9的方法,其中所述設計包括至少部分地基于所述掩??删幊踢壿嬈骷奶匦?,設計所述兼容用戶可編程邏輯器件的所述編程。
11.根據(jù)權利要求1的方法,其中所述設計包括至少部分地基于所述掩模可編程邏輯器件的特性,設計所述兼容用戶可編程邏輯器件的所述編程。
12.根據(jù)權利要求1的方法,其中所述第一變換函數(shù)包括在所述用戶可編程邏輯器件和所述掩模可編程邏輯器件之間的映射。
13.根據(jù)權利要求1的方法,進一步地包括利用第二變換函數(shù)將所述掩??删幊踢壿嬈骷乃鼍幊剔D(zhuǎn)換為所導出的所述用戶可編程邏輯器件的編程;以及測試所述用戶可編程邏輯器件的所述編程。
14.根據(jù)權利要求13的方法,其中所述測試包括將所述導出的編程與針對所述用戶可編程邏輯器件而設計的所述編程相比較。
15.根據(jù)權利要求13的方法,其中所述測試包括用所述導出的編程給用戶可編程邏輯器件編程以及觀察所述編程的用戶可編程邏輯器件的操作。
16.一種掩模編程邏輯器件,其根據(jù)權利要求1的方法編程。
17.一種數(shù)字處理系統(tǒng),包括處理電路;連接到所述處理電路的存儲器;以及根據(jù)權利要求1的方法編程、連接到處理電路及存儲器的掩模編程邏輯器件。
18.一種印刷電路板,在其上安裝有根據(jù)權利要求1的方法編程的掩模編程邏輯器件。
19.根據(jù)權利要求18的印刷電路板,進一步地包括安裝在印刷電路板上并且連接到掩模編程邏輯器件的存儲器電路。
20.根據(jù)權利要求19的印刷電路板,進一步地包括安裝在印刷電路板上并且連接到存儲器電路的處理電路。
21.一種給掩??删幊踢壿嬈骷幊桃援a(chǎn)生執(zhí)行一個或多個所需功能的掩模編程邏輯器件的方法,所述方法包括針對所述掩??删幊踢壿嬈骷O計用于執(zhí)行所述一個或多個所需功能的編程,從而產(chǎn)生一個或多個掩??删幊踢壿嬈骷渲梦募焕米儞Q函數(shù)對所述一個或多個掩??删幊踢壿嬈骷渲梦募M行操作,以產(chǎn)生與所述掩模可編程邏輯器件兼容的用戶可編程邏輯器件的編程,包括一個或多個用戶可編程邏輯器件配置文件。
22.根據(jù)權利要求21的方法,進一步地包括處理所述一個或多個用戶可編程邏輯器件配置文件以及所述一個或多個掩模可編程邏輯器件配置文件,以產(chǎn)生所述掩模編程邏輯器件。
23.根據(jù)權利要求22的方法,其中所述處理包括反匯編所述至少一個用戶可編程邏輯器件配置文件的至少之一以產(chǎn)生網(wǎng)表。
24.根據(jù)權利要求23的方法,其中所述處理進一步地包括輸入所述網(wǎng)表到布局和布線工具。
25.根據(jù)權利要求24的方法,其中所述處理進一步地包括輸入所述至少一個掩??删幊踢壿嬈骷渲梦募剿霾季趾筒季€工具。
26.根據(jù)權利要求21的方法,其中所述至少一個用戶可編程邏輯器件配置文件至少包括位流配置文件。
27.根據(jù)權利要求26的方法,其中所述至少一個用戶可編程邏輯器件配置文件進一步地包括表示用戶約束的文件。
28.根據(jù)權利要求21的方法,其中所述至少一個掩模可編程邏輯器件配置文件包括以下至少之一(a)表示掩??删幊踢壿嬈骷〞r約束的文件;以及(b)表示掩??删幊踢壿嬈骷季旨s束的文件。
29.根據(jù)權利要求21的方法,進一步地包括在產(chǎn)生所述掩模編程邏輯器件之前測試所述兼容用戶可編程邏輯器件的所述編程。
30.根據(jù)權利要求29的方法,其中所述操作包括至少部分地基于所述掩模可編程邏輯器件的特性,設計所述兼容用戶可編程邏輯器件的所述編程。
31.根據(jù)權利要求21的方法,其中所述操作包括至少部分地基于所述掩??删幊踢壿嬈骷奶匦裕O計所述兼容用戶可編程邏輯器件的所述編程。
32.根據(jù)權利要求21的方法,其中所述設計包括至少部分地基于所述兼容用戶可編程邏輯器件的特性,設計所述掩??删幊踢壿嬈骷乃鼍幊?。
33.根據(jù)權利要求21的方法,其中所述變換函數(shù)包括在所述用戶可編程邏輯器件和所述掩??删幊踢壿嬈骷g的映射。
34.一種掩模編程邏輯器件,其根據(jù)權利要求21的方法編程。
35.一種數(shù)字處理系統(tǒng),包括處理電路;連接到所述處理電路的存儲器;以及根據(jù)權利要求21的方法編程、連接到處理電路及存儲器的掩模編程邏輯器件。
36.一種印刷電路板,在其上安裝了根據(jù)權利要求21的方法編程的掩模編程邏輯器件。
37.根據(jù)權利要求36的印刷電路板,進一步地包括安裝在印刷電路板上并且連接到掩模編程邏輯器件的存儲器電路。
38.根據(jù)權利要求37的印刷電路板,進一步地包括安裝在印刷電路板上并且連接到存儲器電路的處理電路。
39.一種給第一可編程邏輯器件編程的方法,所述方法包括使所述編程至少部分地基于至少第二可編程邏輯器件的編程到所述第一可編程邏輯器件的映射。
40.根據(jù)權利要求39的方法,其中所述第一可編程邏輯器件是掩??删幊踢壿嬈骷?;以及所述第二可編程邏輯器件是用戶可編程邏輯器件。
41.根據(jù)權利要求39的方法,其中所述第一可編程邏輯器件是用戶可編程邏輯器件;以及所述第二可編程邏輯器件是掩??删幊踢壿嬈骷?。
42.根據(jù)權利要求39的方法,其中所述第一可編程邏輯器件及所述第二可編程邏輯器件是用戶可編程的。
43.根據(jù)權利要求39的方法,其中所述第一可編程邏輯器件及所述第二可編程邏輯器件是掩??删幊痰?。
44.根據(jù)權利要求39的方法,其中所述基于包括從多個可編程邏輯器件的每一個器件的結構到所述多個可編程邏輯器件的每個其它器件的映射的庫中,選擇所述第二可編程邏輯器件到所述第一可編程邏輯器件的結構映射。
45.根據(jù)權利要求44的方法,進一步地包括匯編并維護所述映射庫。
46.一種可編程邏輯器件,其根據(jù)權利要求39的方法編程。
47.一種數(shù)字處理系統(tǒng),包括處理電路;連接到所述處理電路的存儲器;及根據(jù)權利要求39的方法編程、連接到處理電路及存儲器的可編程邏輯器件。
48.一種印刷電路板,在其上安裝了根據(jù)權利要求39的方法編程的可編程邏輯器件。
49.根據(jù)權利要求48的印刷電路板,進一步地包括安裝在印刷電路板上并且連接到掩模編程邏輯器件的存儲器電路。
50.根據(jù)權利要求49的印刷電路板,進一步地包括安裝在印刷電路板上并且連接到存儲器電路的處理電路。
全文摘要
掩模可編程邏輯器件 (″MPLD″)的用戶邏輯設計可在可比或兼容用戶可編程邏輯器件(″UPLD″)上設計并移植到MPLD,或可直接在MPLD上設計。如果在UPLD上設計該設計,則考慮目標MPLD的約束,即器件之間的不同以使移植成功。如果直接在MPLD上設計該設計,假若用戶表明該設計將被移植到UPLD來測試,則考慮可比的兼容UPLD的約束。這意味著當邏輯設計打算在UPLD和MPLD之間前、后移植時,只有特性的交集能被使用。為了易于移植,可產(chǎn)生器件對之間的固定映射。
文檔編號G06F17/50GK1833242SQ200480022859
公開日2006年9月13日 申請日期2004年6月23日 優(yōu)先權日2003年6月23日
發(fā)明者史蒂文·佩里, 格利高里·尼克松, 拉里·孔, 阿拉斯戴爾·斯科特, 安德魯·霍爾, 王伶俐, 克里斯·迪特瑪, 喬納森·帕克, 理查德·普賴斯 申請人:阿爾特拉公司