專利名稱:產生等效現(xiàn)場可編程門陣列和結構化專用集成電路的方法
技術領域:
這個發(fā)明涉及專用集成電路(“ASIC”),并且尤其涉及有時候被稱為結構化(structured) ASIC 的 ASIC 類型。
背景技術:
所謂的結構化ASIC有時用作諸如現(xiàn)場可編程門陣列(“FPGA”)之類的可編程邏輯器件(“PLD”)的替換。FPGA具有通用的結構,其可以包括許多相同的邏輯電路塊、許多寄存 器、多個諸如I/O塊、RAM塊、DSP塊、PLL/DLL塊等之類的其它類型電路塊??蓪@些各種電路進行編程以執(zhí)行各種任務中的任何一種任務。FPGA還具有通用的互連結構??蓪@個結構進行編程以便以許多不同方式中的任一種方式來互連在該器件上的其它電路。這樣的FPGA中的邏輯塊可以被稱為邏輯單元、邏輯模塊、自適應邏輯單元、或者自適應邏輯模塊(“ LE ”、“ LM ”、“ ALE ”、或者“ ALM ”)。與FPGA等效的一種已知類型的結構化ASIC具有通用結構,其包括相對簡單的電路塊(所謂的混合(hybrid)邏輯單元或者“HLE”)的許多相同實例。結構化ASIC —般還可以包括可與在相關FPGA上的專用塊相匹敵的其它塊(例如,I/O ±夾,RAM塊,PLL/DLL塊等)。結構化ASIC的這些通用屬性體現(xiàn)在用于構造ASIC的幾個掩模(mask)中(至少在某種程度上是這樣)。這些掩模因此對于這個一般類型的全部ASIC來說可以是相同或者基本上相同的,而且它們向ASIC賦予了它的“結構”。定制其它掩模(但是僅僅是全體掩模集合中的一些掩膜)以向結構化ASIC賦予與相關的已編程了的FPGA的功能等效的特定功能。例如,這些定制的掩??梢耘渲肏LE或者一小組或一小簇HLE (復合(complex) HLE或者“CHLE”),以執(zhí)行與由相關的已編程FPGA中的ALE執(zhí)行的那些功能等效的功能。類似地,定制的掩??梢詫HLE配置為執(zhí)行與相關的已編程FPGA中的寄存器等效的功能。這些定制的掩模還可以提供在HLE、CHLEjP /或ASIC上的其它電路塊之間的互連。這些互連一般將包括與由相關的已編程FPGA中的可編程互連資源所提供的那些互連等效的互連。以這種方法使用這種類型的結構化ASIC具有許多優(yōu)點。例如,僅僅一些ASIC掩模需要被定制。這趨向于減少ASIC成本并且加快ASIC設計/生產周期。它還減少了 ASIC中出現(xiàn)設計缺陷的風險,而且便于產生與相關的已編程FPGA緊密操作等效的ASIC (例如,逐個管腳等同、定時等同或者接近等同等)。這種方法的另一個優(yōu)點是,它趨向于允許ASIC包括比相關的FPGA少的電路(包括較少的電路用于正常操作)。這是因為僅僅與所必需的一樣多的ASIC HLE用于執(zhí)行每個FPGA ALE的功能,而在幾乎所有的FPGA中,許多ALE未被充分利用。從FPGA設計到結構化ASIC設計的高效和可靠的轉換(反之亦然)在多種環(huán)境中都可以是有益的。例如,在設計的FPGA實現(xiàn)已經(jīng)使用了一段時間之后,可能期望把這個設計移植到功能上等效的ASIC,以便降低單位成本。作為另一個示例,可能期望使用FPGA來為實際上用于ASIC實現(xiàn)的設計進行原型設計(prototype)。另外,為了讓這樣的原型設計(prototyping)變得有意義,F(xiàn)PGA和ASIC必須是功能上等效的。
發(fā)明內容
本發(fā)明便于提供用戶電路設計的彼此功能上等效的FPGA和ASIC實現(xiàn)。綜合(synthesize)用于FPGA的實現(xiàn)中的用戶的邏輯設計,而與立即期望的最終結果是編程的FPGA還是功能上等效的結構化ASIC無關。在產生編程的FPGA的流程中,用于FPGA實現(xiàn)的綜合(synthesis)經(jīng)受適合于在FPGA上布局該綜合的布局(place)和布線(route)操作。這個布局和布線操作的輸出可用于產生用于對FPGA編程 以便使FPGA執(zhí)行用戶邏輯的數(shù)據(jù)。在產生結構化ASIC的替換流程中,將用于FPGA實現(xiàn)的綜合轉換為適合于結構化ASIC實現(xiàn)的修改的綜合。該修改的綜合經(jīng)受適合于在結構化的ASIC上布局修改的綜合的布局和布線操作。進一步處理這個布局和布線操作的輸出以產生用于該結構化ASIC的規(guī)范,其包括要在產生結構化ASIC的過程中使用的物理電路的標識。上述布局和布線操作之一或者這二者可以改變由用戶的邏輯設計指定的特征。例如,這樣的改變可以是寄存器的復制或者寄存器從設計的一個部分到該設計的另一個部分的移動(shifting)。依據(jù)本發(fā)明可能的一個方面,利用有關這樣的改變的信息來修改用于用戶的邏輯設計的數(shù)據(jù)。這個設計數(shù)據(jù)修改優(yōu)選為以這樣的方式進行,其中該設計數(shù)據(jù)的后續(xù)使用導致該改變被實現(xiàn)為這個后續(xù)使用中的一部分。本發(fā)明的另一個可能方面涉及形式上證明在正被開發(fā)的FPGA和結構化ASIC實現(xiàn)之間的功能等效。這通過比較上述兩個布局和布線操作的輸出來進行。根據(jù)附圖及隨后的詳細描述,本發(fā)明的進一步特征、它的特性以及各種優(yōu)點將變得更加明顯。
圖I是本領域技術人員已知的FPGA電路的說明性基本單元的簡化示意框圖。圖2是在說明本發(fā)明的某些特征方面有用的結構化ASIC電路的說明性基本單元的簡化示意框圖。圖3是示出在FPGA和結構化ASIC電路中的某些說明性電路功能的等效實現(xiàn)的簡化示意框圖。圖4是在說明本發(fā)明的某些特征方面有用的說明性的已知FPGA電路中的代表性部分的簡化示意框圖。圖5是在說明本發(fā)明的某些特征方面有用的說明性結構化ASIC電路中的代表性部分的簡化示意框圖。圖6是示出依據(jù)本發(fā)明的說明性電路設計流程的簡化框圖或者流程圖。圖7a類似于圖6,并具有依據(jù)本發(fā)明的可能的附加流程路徑。圖7b同樣類似于圖6,并具有依據(jù)本發(fā)明的可能的附加流程路徑。圖8a和8b合起來為依據(jù)本發(fā)明、可以在如同圖6、7a、和7b中的那些流程那樣的流程中執(zhí)行的附加步驟的簡化流程圖。圖9是更詳細地示出圖6、7a、和7b中任何一個中的一部分的說明性實施例的簡化流程圖。圖10是示出用于特定類型電路塊的圖9中的一部分的說明性實施例的簡化流程圖。圖11類似于圖10,并且用于其它特定類型的電路塊。圖12類似于圖10和11,并且仍然用于其它特定類型的電路塊。圖13是依據(jù)本發(fā)明的一個可能方面的說明性機器可讀介質的簡化框圖。
具體實施方式
這個說明書在從特定類型的FPGA到特定類型的結構化ASIC的邏輯設計移植(或者反過來)的環(huán)境中說明了本發(fā)明。在諸如Chua等人于2004年7月2日提交的美國專利申請10/884,460、Schleicher等人于2005年2月3日提交的美國專利申請11/050,607之類的參考文獻中,更詳細地說明了這些類型的FPGA和結構化ASIC,這些文獻全部并入在此作為參考。然而,為了便于理解本發(fā)明而不需要參考任何其它文檔,從上述Schleicher等人的參考文獻中轉載(僅僅具有微小的修改)了接下來的幾個段落和相關的圖I 一 3。圖I中示出了用于包含在FPGA中的基本邏輯電路構建(building)塊或者單元10的說明性示例。這個FPGA構建塊電路(有時也稱為自適應邏輯單元(“ALE”)或者自適應邏輯模塊(“ALM”))是本領域技術人員已知的,并且因此可以在此處以稍微簡化的方式進行描述。ALE 10 包括多路復用器 22、24、52、54、56、62、64、66、82、84、86、92、94、96、102、112、122、124、126、132、134、136、152、154、156、162、164、和 166。這些多路復用器中的大部分由通常未在附圖中示出的可編程隨機存取存儲器(“RAM”)位可編程地控制(雖然圖I中的RAM位58和68是說明性的)。一些多路復用器由可以在器件的正常操作期間改變的信號更加動態(tài)地控制。多路復用器112是后一種類型的多路復用器的示例。它由到ALE 10的輸入Fl控制。ALE 10還包括查找表(“1^1'”)32、34、36、42、44、和46。LUT 32 和 42 是四輸入查找表。其它LUT是三輸入查找表。這些LUT中的每一個都是可編程的,以提供作為到這個LUT的輸入信號的任何邏輯組合的輸出信號。ALE 10的其它部件是全加器72和74,與(AND)門128和138,以及觸發(fā)器142和144。由空心圓所示的導線互連(例如連接115)是可編程的互連,這意味著按照用戶的要求可以構造或者也可以不構造這些互連。ALE 10的LUT資源足以允許ALE形成最多到ALE的六個輸入的任何邏輯組合。做為選擇,如果兩個稍微小一些的功能具有共同的一些輸入,則ALE 10的LUT資源可能足以執(zhí)行兩個這樣的功能。例如,也許可能讓ALE 10形成兩個五輸入的組合,兩個四輸入的組
人坐I=I 寸 o全加器72和74增強了 ALE 10的算術性能。例如,這些部件給予ALE 10執(zhí)行兩個數(shù)字的二進制加法中的兩個相鄰布局的能力,其中包括進位輸入(carry in)和進位輸出(carry out)信號的處理。寄存器142和144 (以及相關聯(lián)的電路)允許記錄(通過寄存器)或者不記錄(繞過寄存器)ALE 10中的信號。ALE 10寄存器不是必須用于記錄在ALE中產生的信號。相反,寄存器可以用于(在所謂的單獨寄存器模式中)記錄到ALE的輸入信號。ALE中的其它電路可以用于其它目的,同時寄存器142和144之一或者兩者在單獨寄存器模式下使用。寄存器142和144還能夠在不同的異步或者同步模式下進行操作?!癉”是到每個寄存器的正常數(shù)據(jù)輸入;“DATA”是異步加載的數(shù)據(jù)。圖2示出了用于包含在結構化ASIC中的基本邏輯電路構建塊或者單元200。此處的圖2與上述Chua等人的參考文獻中的圖3相同。因此,此處可以稍微簡化對圖2的描述。構建塊200還可以稱為混合邏輯單元或者HLE。HLE 200包括兩輸入多路復用器210,與非(NAND)門220a和220b,以及反相器230a和230b。HLE 200還包括一些互連資源,其中的一些是可掩模編程的。例如,X標識這樣的位置,在該位置處可以通過適當?shù)囟ㄖ朴糜跇嬙霢SIC的掩模(或者多個掩模),依照要求使導線段彼此連接或者不連接。類似地,0標識這樣的位置,在該位置處,如果期望的話, 可以構造到其中可以提供相對長距離的互連導線的一個或多個電路層(未示出)的連接。另夕卜,通過適當?shù)囟ㄖ朴糜跇嬙霢SIC的一個或多個掩模來構造這些連接和互連。在圖2中的導線交叉點處的實心點也是依照要求可以在交叉的導線之間構造或者不構造的連接。再一次地,如果期望的話,通過適當?shù)囟ㄖ朴糜跇嬙霢SIC的一個或多個掩模來構造這些連接。顯然,HLE 200的邏輯性能比ALE 10 (圖I)的邏輯性能少很多。然而,鄰近或者靠近的相對小數(shù)目的HLE通??梢詤R合在一起,以執(zhí)行ALE在已經(jīng)在FPGA中實現(xiàn)的用戶的邏輯設計中所執(zhí)行的任何功能(一個或多個功能)。例如,圖3示出了在執(zhí)行特定的六輸入邏輯組合的三個HLE 200a、b、和c以及ALE 10的LUT電路32/34/等之間的等效性。圖3還示出了在另外兩個HLE 200d和e以及ALElO的觸發(fā)器電路142或者144之間的等效性(該ALE 10可以與圖3所示的、正執(zhí)行六輸入邏輯組合的ALE相同)。應當理解,圖3中大大簡化地示出了 HLE 200a-e。在很大程度上,圖3中僅僅示出了實際使用中的HLE電路元件和連接。圖2所示的所有其它HLE電路實際上存在于每個HLE 200a-e中,但是從圖3的描繪中省略了其中的某些細節(jié)(或者使用較輕的線條顯示)以簡化圖3。一起使用的多個HLE200 (例如,用于執(zhí)行與在ALE的LUT電路中可以執(zhí)行的邏輯等效的組合邏輯,或者用于執(zhí)行與在ALE的觸發(fā)器電路中可以執(zhí)行的功能等效的寄存器功能)可以稱為HLE集群、復合HLE、或者CHLE。因此,圖3示出了兩個CHLE 202a和202b。圖4示出了包含ALE 10的陣列的說明性FPGA 500。FPGA 500還包括各種類型的“硬塊”,諸如輸入/輸出(“I/O”)塊510,鎖相環(huán)(“PLL”)塊520,隨機存取存儲器(“RAM”)塊530,和數(shù)字信號處理(“DSP”)塊540。這些硬塊至少部分地被硬布線,以執(zhí)行特定功能,或者執(zhí)行從特定類別的功能中可編程地選擇出來的功能。FPGA500還進一步包括至少在某種程度上可編程的互連資源550/552,以便以各種方式互連功能塊10、510、530、540等。特別是,參考數(shù)字550用于這些資源的互連導線,而參考數(shù)字552用于在導線550之間的可編程互連。時鐘信號可以通過時鐘分配資源560/562 (例如,從PLL 520中)分配到其它功能塊,其中該時鐘分配資源再次在某種程度上可以是可編程的。參考數(shù)字560用于在這些資源中的導線,而參考數(shù)字562用于在導線560之間的可編程互連。應當理解圖4僅僅是對可以包含在FPGA中的單元的一般說明。例如,除了圖4中所示的那些之外還可以包括其它類型的單元,或者可以省略圖4中的一些單元。各種類型的單元的數(shù)目和布置可以不同于圖4中所示的那些。FPGA 500當然是現(xiàn)場可編程的。因此它能夠實現(xiàn)用戶可能期望的巨大數(shù)目的不同電路功能中的任何功能。為了方便起見,有時在此處將這樣的各種電路功能稱為用戶邏輯設計。圖5示出了結構化ASIC 600,其可以被制造用來執(zhí)行可以對FPGA 500進行編程以執(zhí)行的任何用戶邏輯設計。此外,依據(jù)這個發(fā)明,可以制造結構化ASIC 600以與被編程用來執(zhí)行用戶邏輯設計的FPGA 500等效地執(zhí)行該用戶邏輯設計。通常,這樣的等效意味著,被編程用來執(zhí)行用戶的邏輯設計的FPGA 5 00和已經(jīng)被制造以執(zhí)行該設計的結構化ASIC600可以彼此代替(例如,在使用500/600電路的較大電路中)。雖然在一些實施例中可能與此有一些偏差,但是這樣的等效通常意味著兩個器件500和600的管腳輸出是相同的(或者至少基本上是相同的),兩個器件的定時是相同的(或者至少基本上是相同的),而且由兩個器件執(zhí)行的功能是相同的(或者至少基本上是相同的)。然而,與FPGA 500相比,器件600可以物理上更小而且更便宜(尤其是量大時)。這是因為ASIC 600不需要用于使FPGA 500現(xiàn)場可編程的“額外開銷”電路。此外,還因為在大多數(shù)用戶邏輯設計中許多ALE 10沒有被充分使用,而在ASIC 600中,僅僅有與執(zhí)行ALE 10的功能所必需的HLE —樣多的HLE 200來代替該ALE。因此,與復制在等效的FPGA 500中的全部ALE 10的最大性能所需要的HLE數(shù)目相比,ASIC 600通??梢跃哂休^少的HLE 200。ASIC 600被稱為結構化ASIC,是因為它總是至少具有某些部件的基礎(rudiment)。這些部件基礎體現(xiàn)在用于構造所有版本的ASIC 600的幾個掩模中。例如,它們可以是HLE 200、I/O塊610、PLL塊620,RAM塊630等的陣列的基礎。這些塊的數(shù)目和布置(尤其是某些FPGA硬塊的等效)可以與FPGA 500的相應部件相同或者類似。除了向ASIC 600賦予它的“結構”的上述掩模之外,進一步的用于構造ASIC 600的掩膜至少部分被定制,以在ASIC 600中實現(xiàn)特定的用戶邏輯設計。例如,這些定制的掩??梢?1)構造或者完成在HLE內的連接;(2)構造或者完成在CHLE中的HLE之間的連接;(3)構造或者完成在CHLE之間、在CHLE和其它部件610/630等之間、和/或在這樣的其它部件之間的連接650 ;以及(4)構造或者完成用于在器件上(例如,從PLL塊620中)分配時鐘信號的連接660。這些定制的掩模還可以進行選擇,這些選擇涉及各種部件將如何操作(例如,RAM塊630將會是什么RAM類型,諸如單端口 RAM、雙端口 RAM等),I/O塊610將是什么端口類型(例如,輸入、輸出等),PLL塊620將如何操作(例如,具有所應用的時鐘信號的多少延遲)
坐寸o現(xiàn)在轉向本發(fā)明的更具體方面,其重要的特征包括(1)并行的FPGA和結構化ASIC開發(fā),(2)強制功能等效的設計限制,(3)證明FPGA和結構化ASIC功能等效的形式(formal)技術,以及(4)全部后端結構化ASIC交接(handoff )信息(即,可以控制下述這樣的數(shù)據(jù)的開發(fā)的信息,該數(shù)據(jù)規(guī)定了結構化ASIC將如何被定制以實現(xiàn)用戶的邏輯設計)的直接生成。在這個說明書的后續(xù)部分考慮了這四個特征。I.并行的FPGA和結構化ASIC開發(fā)如上所述,這種設計方法學的重要目標是能夠從單個設計源中生成FPGA和結構化ASIC設計,以便使該FPGA和結構化ASIC是功能上等效的?,F(xiàn)有的方法支持完整的FPGA設計到結構化ASIC的移植(“FPGA轉換”),或者重新綜合結構化的ASIC設計以把FPGA作為目標(“ASIC原型設計”)。這些技術未能充分啟用結構化ASIC體系結構的成本和性能益處,而且同時未能提供在用于系統(tǒng)內驗證的FPGA和用于生產中的最終結構化ASIC之間的強驗證鏈接。當前的方法基于開發(fā)用于結構化ASIC的完整的HDL —到一交接一文件的(HDL-to-handoff-files)編譯流程,該流程鏡像了傳統(tǒng)的FPGA流程。圖6說明了這個概念。從單個設計源(例如,HDL代碼700)中,用戶可以通過采用導致生成FPGA編程指令760的上部的流程路徑而選擇以FPGA為目標,或者通過采用導致生成交接設計文件860的下部的流程路徑而選擇以結構化ASIC為目標(該交接設計文件860可用于直接或者基本上直接控制為設計掩模所需要的數(shù)據(jù)中的至少一部分的生成,其中該掩模是為制造適當定制的結構化ASIC所需要的)。對于每種選擇,流程步驟是類似的。作為示例,首先考慮圖6中的上部的流程。在某些方面,這個論述將最初處于相對高的級別,稍后在這個說明書中提供更多的細節(jié)。在步驟710,將用戶的邏輯設計的HDL代碼700綜合為FPGA網(wǎng)表(netlist)722。作為一個可能的選項,F(xiàn)PGA網(wǎng)表722可以由ASIC資源指南軟件724檢查以標識一個或多個可用的結構化ASIC產品,其中包括產生與實現(xiàn)該FPGA網(wǎng)表的FPGA等效的結構化ASIC所需要的性能。僅作為其一個示例,如果有兩個可用的、分別包括兩個和四個PLL塊620的結構化ASIC產品,而且如果FPGA網(wǎng)表722指示僅僅需要兩個PLL塊,則ASIC資源指南724可以示出這兩個ASIC產品中的第一個產品可用于實現(xiàn)FPGA網(wǎng)表722 (假定該FPGA網(wǎng)表在任何其它方面都沒有超出第一個結構化ASIC產品的性能)。然而,再次地,提供這個特征724是完全可選的,而且如果期望的話可以省略。圖6中的上部的流程從流程單元720 (包括流程子單元722和(可選地)流程子單元724)繼續(xù)到流程單元730,其中在特定的FPGA器件或者器件族之上、或者相對于它們布局和布線網(wǎng)表722 (步驟730還可以被稱為適配(fitter)和定時分析步驟)。因此步驟730具有特定FPGA器件或者器件族的物理限制。這產生了 FPGA適配后(post-fit)網(wǎng)表740。這個適配后網(wǎng)表仍然可以被稱為用戶邏輯設計的邏輯視圖。下一步驟是使FPGA適配后網(wǎng)表740傳遞經(jīng)過裝配器750。這會將用戶邏輯設計的邏輯視圖轉換為該設計的物理表示,即用于FPGA的編程位流760。來自步驟760的數(shù)據(jù)可用于實際編程FPGA,以便使該FPGA將會實現(xiàn)用戶的邏輯設計。現(xiàn)在轉向圖6所示的下部流程路徑,綜合步驟810類似(優(yōu)選為等同或者至少基本上等同)于上述綜合步驟710。因此,步驟810 (從用戶邏輯設計的HDL規(guī)范700中)生成類似(優(yōu)選為等同或者至少基本上等同)于上述FPGA網(wǎng)表722的FPGA網(wǎng)表822。然而,F(xiàn)PGA網(wǎng)表被稱為是“隱藏”的,這是因為它不實際上用于產生用戶邏輯設計的FPGA實現(xiàn)。相反,在流程步驟820內,隱藏的FPGA網(wǎng)表822被轉換為結構化ASIC網(wǎng)表824。如在下面將要更詳細描述的那樣,以這樣的方式進行這個轉換,以便確保在FPGA實現(xiàn)網(wǎng)表822和ASIC實現(xiàn)網(wǎng)表824之間的功能等效性。來自網(wǎng)表轉換步驟820的結構化ASIC網(wǎng)表824傳遞經(jīng)過適配和定時分析步驟830,以產生ASIC適配后網(wǎng)表840。這考慮了特定的結構化ASIC器件或者器件族的物理限制,在特定的結構化ASIC器件或者器件族上、或者相對于它們布局和布線ASIC網(wǎng)表824。因此,步驟730是FPGA特定的(或者至少主要是這樣),而步驟830是ASIC特定的(或者至少主要是這樣)。再次地,ASIC適配后網(wǎng)表仍然可以被稱為用戶邏輯設計的邏輯視圖。在圖6所示的下部流程中的下一步驟是使ASIC適配后網(wǎng)表840傳遞經(jīng)過裝配器、850以產生結構化ASIC交接設計文件860。例如,設計文件860可以是結構化的verilog網(wǎng)表,其可以被進一步處理以產生為實際定制該結構化ASIC以便使它實現(xiàn)用戶的邏輯設計所需要的數(shù)據(jù)。要注意到,圖6的上部和下部流程可以同時或者在不同的時候執(zhí)行。如果最初僅僅需要用戶邏輯設計的FPGA實現(xiàn),則最初僅僅需要執(zhí)行上部的流程。如果稍后需要用戶邏輯設計的功能等效的結構化ASIC實現(xiàn),則稍后可以執(zhí)行下部的流程。作為另一個示例,如果最初僅僅需要用戶邏輯設計的結構化ASIC實現(xiàn),則最初僅僅需要執(zhí)行下部的流程。但是從上文中顯然可以看出,這個下部的流程確保通過稍后執(zhí)行上部的流程可以產生用戶邏輯設計的功能等效的FPGA實現(xiàn)。根據(jù)圖6應該注意并且上面已經(jīng)說明的另一點如下因為設置了 FPGA和結構化ASIC編譯器流程以直接支持相應的基礎器件體系結構,所以沒有丟失這兩個不同的體系結構的基本益處。換句話說,能夠產生用戶邏輯設計的功能等效的FPGA和結構化ASIC實現(xiàn)的這一目標,在產生這些實現(xiàn)的過程中不會導致任何一種類型體系結構的低效率或者不 經(jīng)濟的使用。為了確保圖6所示的流程產生用戶邏輯設計的功能等效的FPGA和結構化ASIC實現(xiàn),這樣設計為其采用了圖6中的流程的FPGA和結構化ASIC,以便使硬塊的加工技術和功能是相同的。(作為提醒,圖4中的硬塊示例為510、520、530、和540。圖5中的硬塊示例為610、620、和630。)此外,為器件體系結構選擇的表示必須具有相同的抽象。在圖I所示的說明性實施例中,已經(jīng)為FPGA和結構化ASIC編譯器流程二者選擇了 FPGA抽象模型。在FPGA中的每種類型的功能對象被表示為基本單元(atom)類型。典型的基本單元包括I/O、RAM、DSP、PLL、寄存器、和邏輯。結構化的ASIC具有相同的基本單元集,但是具有適合于結構化ASIC的屬性。例如,在此處通常假定的說明性實施例中,用于FPGA的組合邏輯基本單元可以表示任何六輸入功能,該實施例中的FPGA體系結構支持完整的六輸入查找表(“LUT”)。在相應結構化ASIC中的組合邏輯基本單元可能僅僅支持包括在ASIC綜合單元庫中的六輸入功能。除選擇用于FPGA和結構化ASIC的通用邏輯表示之外,本發(fā)明使用單個綜合技術710/810來生成FPGA網(wǎng)表722和結構化ASIC網(wǎng)表824,而不依靠用戶的HDL代碼700的重新綜合。在此單個綜合技術中,為FPGA和結構化ASIC設計執(zhí)行相同的綜合步驟,直到最后的器件特定的技術映射720或者820為止。然后,通過到FPGA的技術映射、以及然后(如果是在圖6的下部流程路徑中的話)通過到結構化ASIC綜合單元庫的逐個單元翻譯,來完成這個最后的步驟。這個翻譯由圖6的流程單元820中的、從流程單元822到流程單元824的箭頭所表示。如果綜合是以FPGA為目標(圖6中的上部流程路徑),則它在FPGA技術映射的結果722處停止。如果綜合是以結構化ASIC為目標(圖6中的下部流程路徑),則它繼續(xù)進行到結構化單元庫的翻譯。最終結果是具有明確定義的通用結構和完全功能等效的FPGA網(wǎng)表722和/或結構化ASIC網(wǎng)表824。2.強制功能等效的設計限制邏輯FPGA風格的抽象使得計算機輔助設計工具流程能夠在布局和布線操作730/830期間執(zhí)行各種相對不復雜的物理綜合風格的變換(transformation)。例如,這些變換可以包括寄存器復制和/或將寄存器封裝到I/0、RAM、或者DSP塊中。寄存器復制的例示可以是其中在核心邏輯中的寄存器饋送給器件的兩個輸出管腳的情況。比較好的是(例如,從定時的觀點上看)讓核心邏輯源饋送給兩個單獨的寄存器,兩個I/o塊中每塊一個寄存器。布局和布線步驟730/830可以進行這個網(wǎng)表修改以便于器件性能的改善。寄存器封裝的例示是將寄存器從核心邏輯移動到I/0、RAM、和/或DSP塊中,其同樣改善了器件的定時和部件的使用。同樣,布局和布線步驟730/830可以進行這樣的網(wǎng)表修改。依據(jù)它們的性質,在前面段落中所提及類型的網(wǎng)表修改是器件特定的優(yōu)化,因為它們考慮了特定的器件平面布置圖(floorplan)和定時信息。這些修改對于在FPGA設計中實現(xiàn)最大性能潛力也是重要的。為了確保在FPGA和結構化ASIC之間的一對一功能等效,在布局和布線730/830期間控制所有這些變換以便對于FPGA和結構化ASIC這二者產生等同變換,是所期望的。
本發(fā)明分兩個部分實現(xiàn)上述方面。首先,可以在布局和布線編譯器730/830中執(zhí)行的每個變換具有加入其中的“分配(assignment)”,其可以精確地控制進行了什么變換。這在概念上類似于可以在傳統(tǒng)的ASIC后端流程中進行的設計變動命令風格的(engineering-change-order-style)修改。不同之處在于這是對邏輯基本單元表示進行的,并且被鏡像在FPGA和結構化ASIC設計這二者上。上述方面的第二部分是這樣的方法,其用于在正常的布局和布線730/830期間記錄這些變換分配,以便它們可以(a)在原有的FPGA或者結構化ASIC設計上進行背后注解以導致結果的再現(xiàn),或者(b)移植到用于FPGA的相伴結構化ASIC設計(或者用于結構化ASIC的FPGA設計)中,以產生與原有的FPGA相比功能上等效的結構化ASIC結果。圖7a示出了依據(jù)本發(fā)明可以怎樣實現(xiàn)上述方面的說明性實施例(除了下面將論述的修改之外,圖7a與圖6相同)。如果正使用圖7a的上部流程,則由適配和定時分析流程單元730進行的任何變換被記錄為用于原有HDL代碼700的數(shù)據(jù)的一部分。這經(jīng)由流程路徑732進行。然后,如果在圖7a的下部流程中隨后處理HDL代碼700,則可以在下部的流程中進行相同的變換(例如,在布局和布線步驟830中)。以這種方法,例如,將在用戶邏輯設計700的結構化ASIC實現(xiàn)中(通過步驟830)隨后重復(在步驟730中)被發(fā)現(xiàn)為是用戶邏輯設計700的FPGA實現(xiàn)所希望的寄存器復制。作為上述方面的另一個例示,經(jīng)由流程路徑832將(在步驟830中)被發(fā)現(xiàn)為是用戶邏輯設計700的結構化ASIC實現(xiàn)所希望的變換構造為用于設計700的數(shù)據(jù)的一部分。以這種方法,在圖7a的上部流程中的任何后續(xù)執(zhí)行在開發(fā)邏輯設計700的FPGA實現(xiàn)的過程中將包括這個變換的重復。圖7b示出了對圖7a所示流程的一些替換。在圖7b中,經(jīng)由流程路徑734向設計變動命令工具736報告(在步驟730之后)被發(fā)現(xiàn)為是用戶邏輯設計700的FPGA實現(xiàn)所期望的變換。然后,在該下部流程的任何后續(xù)執(zhí)行中,這個變換變?yōu)榻?jīng)由流程路徑738應用到ASIC適配后網(wǎng)表840的設計變動命令。依據(jù)這個設計變動命令信息修改ASIC適配后網(wǎng)表。這個修改也可以經(jīng)由流程路徑739而變?yōu)镠DL代碼700的一部分。圖7b還示出了在前面段落中所描述類型的流程可以以相反的方向繼續(xù)。因此,經(jīng)由流程路徑834向設計變動命令工具736報告(在步驟830之后)被發(fā)現(xiàn)為是用戶邏輯設計700的結構化ASIC實現(xiàn)所期望的變換。然后,在該上部流程的任何后續(xù)執(zhí)行中,這個變換變?yōu)榻?jīng)由流程路徑838應用到FPGA適配后網(wǎng)表740的設計變動命令。依據(jù)這個設計變動命令信息修改FPGA適配后網(wǎng)表。這個修改也可以經(jīng)由流程路徑839而變?yōu)镠DL代碼700的一部分??梢栽诒景l(fā)明的各個實施例中提供在前面兩個段落中描述的任何一個或者兩個流程方向。本發(fā)明的相關(可選)特征如下通過以上述方式限制設計,有可能具有可以支持不同級別的功能等效性的編譯器流程。通過改變限制什么變換(例如,通過允許執(zhí)行一些類型的變換而不進行限制(即,要求在用戶邏輯設計的其它類型實現(xiàn)中重復變換),同時限制其它類型的變換(即,在用戶邏輯設計的其它類型實現(xiàn)中要求重復變換)),可以允許在FPGA和結構化ASIC編譯器之間的一些自由度。例如,可以允許復制寄存器,而不要求在其它類型邏輯設計實現(xiàn)中的重復,是因為這是使用其它形式技術來進行驗證的容易的變換。但是,用于I/O的寄存器封裝可能總是要求在兩種類型的邏輯設計實現(xiàn)中是重復的,這是因為Tco延遲的關鍵定時性質而導致的。3.證明FPGA和結構化ASIC功能等效性的形式技術在形式邏輯等效性領域的那些技術人員將會理解,這個發(fā)明中的用于生成初始FPGA和結構化ASIC網(wǎng)表722和824的結構化綜合方法與在布局和布線730/830期間加到物理變換中的限制結合起來,使得證明結果(例如,740和840)的邏輯等效性成為一種可解決的提議。另一方面,對于本領域的技術人員來說,顯然這僅僅驗證了網(wǎng)表740和840的邏輯部分,而沒有驗證網(wǎng)表的完整功能。本發(fā)明在傳統(tǒng)邏輯等效性檢查(“LEC”)驗證上進行了擴展,以便還證明網(wǎng)表的非邏輯部分是等效的。這以獨立于基礎的設計復雜性的確定性方式進行。 圖8a和Sb示出了下述本發(fā)明特征的說明性實施例,其中所述特征涉及證明在FPGA網(wǎng)表740和結構化ASIC網(wǎng)表840之間的功能等效性。圖8a和8b說明的方法可以被認為包括兩個主要部分(1)圖8a所示的步驟,其涉及證明器件的邏輯結構的功能等效性;以及(2)圖Sb所示的步驟,其涉及證明器件的其余部分的功能等效性。在步驟910中,將在網(wǎng)表740/840之一中的每個寄存器與在另一個網(wǎng)表中的相應寄存器相匹配。在步驟912,將在網(wǎng)表740/840之一中的每個非邏輯塊的輸入和輸出與在另一網(wǎng)表中的相應非邏輯塊的輸入和輸出相匹配。這些非邏輯塊以及它們的輸入和輸出必須匹配,這是因為這個發(fā)明的設計方法學的前提是FPGA和結構化ASIC對于可能的使用包括相同的非邏輯塊資源。這意味著,例如,I/O塊510和610是相似的資源,PLL塊520和620是相似的資源,RAM塊530和630是相似的資源等。(在當前實施例中對此的例外是FPGA DSP塊540以結構化ASIC 600中的通用邏輯結構200實現(xiàn),而不是以ASIC中的專用DSP塊實現(xiàn)。這是對在先前語句中描述的一般情況的可選的偏離。盡管有這個背離,但是即使物理實現(xiàn)是不同的,DSP塊的邏輯基本單元表示對于FPGA和結構化ASIC這二者來說仍然是相同的。)在步驟914,將全部FPGA邏輯單元(即ALE 10)組合輸出與在結構化ASIC網(wǎng)表中的節(jié)點相匹配。此處采用的結構化綜合(如上所述)意味著,在單個FPGA ALE 10中有實現(xiàn)組合邏輯所需要的最大數(shù)目的結構化ASIC庫單元。因此,F(xiàn)PGA ALE 10的組合邏輯已經(jīng)在結構化ASIC中使用一個HLE 200、一個CHLE (具有給定的相對少的多個HLE)、或者給定的相對少的多個CHLE實現(xiàn)了。用于實現(xiàn)一個FPGA ALE 10的HLE/CHLE資源同樣沒有用于任何其它目的(例如,實現(xiàn)任何其它ALE 10的任何功能)。所有這些使步驟914的匹配成為一個直截了當?shù)娜蝿?。在步驟914結束時已經(jīng)標識了大量匹配的節(jié)點。此外,在這些匹配的節(jié)點之間的網(wǎng)表的最大尺寸是有界限的(例如,由每個ALE 10的最大組合邏輯性能以及實現(xiàn)這樣的最大ALE功能所需要的HLE/CHLE單元的最多數(shù)目所限制)。更進一步的考慮是用于生成FPGA和結構化ASIC網(wǎng)表的綜合技術的性質(例如,從FPGA ALE邏輯到這個邏輯的HLE/CHLE實現(xiàn)的庫轉換的使用,在由一個ALE 10提供的功能和一個HLE/CHLE資源集群之間存在有一一對應的事實等)。依據(jù)本發(fā)明,所有這些考慮使得有可能確??梢允褂眯问郊夹g在這兩個網(wǎng)表740/840進行形式比較,其中該形式技術構造在兩個網(wǎng)表中的相匹配節(jié)點之間的邏輯的二元判定圖(“BDD”)表示,并且證明每個這樣的 BDD對是等效的。這是在圖8a的步驟920和922中進行的處理。在步驟924記錄對這樣的等效性的任何例外或者可能的例外(應當不會有很多例外)。如果沒有如上所述的結構化綜合和受限制的物理變換,這里也許可能有其中自動化的等效性證明技術在存儲器或者運行時間要求方面“爆發(fā)”的情況。步驟930開始對網(wǎng)表740/840中的非邏輯部分的處理。在步驟930,對于在網(wǎng)表740/840之一中的每個非邏輯基本單元,標識在另一個網(wǎng)表中的相應基本單元。再次,在兩個網(wǎng)表中有這樣的相應非邏輯基本單元的存在是如上所述的結構化綜合和此處采用的布局和布線物理綜合限制的要求。在步驟932,比較在每對相應的非邏輯基本單元中的非邏輯基本單元的參數(shù)信息。用于I/O塊510/610的參數(shù)信息示例包括I/O塊是輸入還是輸出,I/O塊中的寄存器是否正被使用等。用于RAM塊530/630的參數(shù)信息示例包括該RAM塊是單端口還是雙端口 RAM,RAM的寬度,在輸入側使用了什么時鐘,在輸出側使用了什么時鐘等。如步驟932所述,應該匹配的參數(shù)是控制功能的那些參數(shù)??梢院雎陨婕胺沁壿嫽締卧谔囟愋偷钠骷?例如,在FPGA或者結構化ASIC中)如何物理實現(xiàn)的參數(shù)。位置信息是這個后一種類型的參數(shù)信息的示例,其如步驟932中所述的那樣可以被忽略。在步驟934,記錄對于在步驟932中比較的參數(shù)的預期相似性的任何例外或者可能的例外(應當不會有很多這樣的例外)。在已經(jīng)為網(wǎng)表740/840的所有部分執(zhí)行了先前的步驟之后,可以執(zhí)行步驟940直到最后的步驟。在步驟940,檢查非等效的任何可能區(qū)域的記錄(在步驟924和/或934中的記錄)。如果步驟940具有否定的結果,則執(zhí)行步驟944以指示已經(jīng)證明了網(wǎng)表740/840的功能等效性。另一方面,如果步驟940具有肯定的結果,則執(zhí)行步驟942,以指示網(wǎng)表740/840可能不是功能等效的,并且報告關于已經(jīng)在何處發(fā)現(xiàn)了可能的不等效的具體細節(jié)。返回到步驟932,可能一些具體的信息要求“智能”的比較,以確定兩個基本單元是否是功能上等效的。一個示例會是實現(xiàn)輸入時鐘信號的特定延遲量的PLL塊520/620。由PLL實現(xiàn)的延遲量由與PLL相關聯(lián)的參數(shù)設置所確定。但是因為在FPGA和結構化ASIC中PLL電路可以是不同的,所以對于這兩種類型的器件而言用于產生相同的延遲量的參數(shù)設置可以是不同的。該比較工具(步驟932)必須能夠智能地確定在兩種不同類型的器件中、對于相同的延遲量而言這些延遲鏈設置預計是不同的。例如,步驟932可以利用一表格,該表格示出在兩種不同類型的器件中什么不同的延遲鏈設置實際上產生相同的結果(即,相同的延遲),并且因此即使數(shù)量不同也是功能上等效的。
4.所有后端結構化ASIC交接信息的直接生成現(xiàn)在已經(jīng)描述了并行的FPGA和結構化編譯器流程如何使用通用的邏輯抽象來允許功能等效的FPGA和結構化ASIC設計的開發(fā)。下面繼續(xù)說明這個視圖如何翻譯為具體的物理視圖860,該具體的物理視圖860將由后端流程(此處未示出)處理,最終產生一組用于結構化ASIC器件投片(tapeout)的文件(有時本領域的技術人員將其稱為⑶SII文件)。這個發(fā)明的目標是前端流程(如此處所示和所述的)直接生成完整的功能網(wǎng)表860以便通過后端進行驅動。這個網(wǎng)表包括這樣的特征,諸如(I)插入用于布線的緩沖器,(2)布局限制,(3)全局布線限制,以及(4)定時限制(例如,最初由用戶指定的那些限制)。布局限制的一個示例是I/O管腳必須位于器件上。因此,網(wǎng)表860直接指導后端,以使后端再現(xiàn)前端的布局和布線結果。在后端中可以添加到這個網(wǎng)表中的僅有信息是諸如來自結構化ASIC基礎體系結構的測試電路和專用連接信息之類的非用戶信息。例如,可以在后端中添加用于執(zhí)行I/O寄存器的掃描測試的電路,這是因為它不可以由用戶改變或者訪問。這對 于任何內置的自測試電路來說同樣如此。在這個直接生成后端網(wǎng)表860的目標之后的原因是能夠在前端中提供預測執(zhí)行和可布線性的準確的驗收(sign-off)質量工具。在后端中進行且前端不知道的任何變換可能阻止總體設計方法實現(xiàn)期望的精確度。因此,避免了這樣的后端變換。此外,僅僅與后端網(wǎng)表860的緊密耦接將允許原有的用戶定時限制或者上述ECO-類型的限制被準確地傳送到后端。為了向后端提供在這個物理級別的網(wǎng)表860,在裝配器850中弓丨入并且實現(xiàn)了新的物理基本單元抽象。先前描述的邏輯基本單元(例如,在網(wǎng)表740和840中的邏輯基本單元)允許在FPGA和結構化ASIC之間的邏輯功能的通用表示,而物理的基本單元被設計成與后端網(wǎng)表860中的單元一一對應。邏輯基本單元(例如,在網(wǎng)表740/840中的邏輯基本單元)表示單元的類別。裝配器850通過所謂的“c-數(shù)字(c-number)”和參數(shù)化的組合使這些細節(jié)包含在網(wǎng)表860中。C-數(shù)字是在后端流程中使用以指定要被用來實現(xiàn)物理基本單元的特定示意圖的示意圖標識符。例如,用于I/O塊510/610的C-數(shù)字可以是不同的,這取決于(DI/0塊將位于最終的物理的結構化ASIC器件中的何位置(例如,在該器件的左邊或者右邊),以及(2)該塊的功能(例如,它是通用I/O (“GI0”)還是存儲器接口 I/O (“MI0”))。上面所提到的參數(shù)化可能類似于流程單元760中的、與FPGA風格的硬塊編程相關的一些FPGA編程指令。這樣的用于RAM塊530/630的參數(shù)示例會是數(shù)據(jù)輸入總線的寬度、數(shù)據(jù)輸出總線的寬度等。裝配器模塊850的工作是將邏輯基本單元和它們的布局和布線后(post-place-and-route)信息(如在網(wǎng)表840中的信息)翻譯成準備要由后端處理的物理基本單元。圖9示出了裝配器流程單元850的說明性實施例。在步驟1010,對于ASIC適配后網(wǎng)表840中的每個邏輯塊,查找適當?shù)奈锢韷K類型。然后,在步驟1020,有關該邏輯塊(在網(wǎng)表840中)的參數(shù)被翻譯為有關物理塊的適當參數(shù)值。例如,圖10示出了(在步驟1110中)在CHLE邏輯塊的情況下上述操作可以怎樣進行。在這種情況下,CHLE邏輯單元從邏輯網(wǎng)表840直接映射到物理網(wǎng)表860。在兩個網(wǎng)表中可以使用相同的表不。圖11是在用于I/O塊的情況下步驟1010和1020的執(zhí)行的另一個示例。步驟1140示出了在網(wǎng)表840中的I/O取決于I/O的功能和位置而被分成幾個物理的I/O基本單元。然后,在步驟1150中,基于在原有的邏輯I/O基本單元中使用的參數(shù),向這些物理I/O基本單元中的每一個給予適當?shù)膮?shù)信息。如步驟1140所示,例如,存儲器接口 I/O可以被物理地實現(xiàn)為物理I/O緩沖器和單獨的物理DDR (兩倍數(shù)據(jù)速率)接口基本單元。圖12示出了(在步驟1180中)上述步驟1010和1020的執(zhí)行的另一個示例。在這種情況下,該示例是用于RAM的。在步驟1140,映射是從邏輯RAM基本單元(每一個表示具有到每個基本單元的重復地址輸入的RAM塊(或者RAM片段)的一個邏輯輸出)到具有單條地址總線的、支持所有RAM輸出的適當類型的物理RAM塊(例如,被稱為M4K類型的RAM,或者被稱為M-RAM類型的RAM)。步驟1140還說明了怎樣查找C-數(shù)字以便包括在網(wǎng)表860中。返回到圖9,根據(jù)步驟1010和1020變換在網(wǎng)表840中的全部塊。然后執(zhí)行步驟1030以生成獲取這些變換的結果的結構化verilog網(wǎng)表。最后,執(zhí)行步驟1040以添加布局、布線、和定時限制。例如,步驟1040的布線部分可能涉及進行適當?shù)姆g,以把連接從網(wǎng)表840中的邏輯端口移動到網(wǎng)表860中的適當物理端口。最終結果是交接設計文件860。圖13說明了本發(fā)明的另一個可能特征。這是編碼有用于至少部分地執(zhí)行依據(jù)本發(fā)明的一種或多種方法的機器可讀指令1210 (例如計算機程序)的機器可讀介質1200 (例如,磁盤(一個或多個),光盤(一個或多個),磁帶(一個或多個)等)。應當理解,上文中僅僅說明了這個發(fā)明的原理,而且可以由本領域的技術人員進 行各種修改而沒有背離本發(fā)明的范圍和精神。例如,此處所示的ALE和HLE結構僅僅是說明性的,而且如果期望的話,作為替代也可以使用其它的結構。
權利要求
1.一種產生用于指定結構化ASIC的配置的信息的方法,該結構化ASIC與執(zhí)行用戶的邏輯設計的編程的FPGA將會是功能上等效的,該方法包含 綜合用于FPGA的實現(xiàn)中的用戶的邏輯設計; 將由該綜合步驟產生的綜合轉換為適于結構化ASIC實現(xiàn)的修改的綜合; 對該修改的綜合執(zhí)行布局和布線操作,以產生適合于在結構化ASIC上的布局的進一步的綜合,其中對該修改的綜合執(zhí)行布局和布線操作包括在修改的綜合中進行改變;以及將該改變饋送回以修改用戶的邏輯設計。
2.如權利要求I所述的方法,其中,該改變包含 復制寄存器。
3.如權利要求I所述的方法,其中,該改變包含 移動寄存器。
4.如權利要求I所述的方法,還包含 對由于綜合用于FPGA的實現(xiàn)中的用戶的邏輯設計而產生的綜合執(zhí)行進一步的布局和布線操作,該進一步的布局和布線操作產生適合于在FPGA上的布局的更進一步的綜合。
5.如權利要求4所述的方法,其中,執(zhí)行進一步的布局和布線操作的步驟包括對由于綜合用于FPGA的實現(xiàn)中的用戶的邏輯設計而產生的綜合進行改變,并且其中該方法還包含 將該改變饋送回以修改用戶的邏輯設計。
6.如權利要求4所述的方法,還包含 將進一步的綜合和更進一步的綜合進行比較,以測試功能的等效性。
7.如權利要求6所述的方法,其中,該比較步驟包含 匹配在進一步的綜合和更進一步的綜合中的相應節(jié)點; 在進一步的綜合和更進一步的綜合的每一個中,構造在匹配步驟中所標識的節(jié)點之間的邏輯的二元判定圖(BDD);以及 為在進一步的綜合和更進一步的綜合中的相應BDD測試功能的等效性。
8.如權利要求7所述的方法,其中,所述節(jié)點包括在更進一步的綜合中的寄存器、非邏輯塊輸入和輸出、以及邏輯單元輸出,以及在進一步的綜合中的相應邏輯輸出。
9.如權利要求6所述的方法,其中,該比較步驟包含 標識在進一步的綜合和更進一步的綜合中的相應非邏輯塊;以及 為相應非邏輯塊中的每一個的功能參數(shù)信息測試相似性。
10.如權利要求4所述的方法,還包括 從更進一步的綜合產生用于FPGA的編程數(shù)據(jù)。
11.一種產生用于指定結構化ASIC的配置的信息的方法,該結構化ASIC與執(zhí)行用戶的邏輯設計的編程的FPGA將會是功能上等效的,該方法包含 綜合用于FPGA的實現(xiàn)中的用戶的邏輯設計; 將由該綜合步驟產生的綜合轉換為適于結構化ASIC實現(xiàn)的修改的綜合; 對該修改的綜合執(zhí)行布局和布線操作,以產生適合于在結構化ASIC上的布局的進一步的綜合,其中對該修改的綜合執(zhí)行布局和布線操作包括確定在修改的綜合中進行的改變;以及向設計變動命令工具報告該改變。
12.如權利要求11所述的方法,其中,該改變包含 復制寄存器。
13.如權利要求11所述的方法,其中,該改變包含 移動寄存器。
14.如權利要求11所述的方法,還包含 對由于綜合用于FPGA的實現(xiàn)中的用戶的邏輯設計而產生的綜合執(zhí)行進一步的布局和布線操作,該進一步的布局和布線操作產生適合于在FPGA上的布局的更進一步的綜合。
15.如權利要求14所示的方法,其中,執(zhí)行進一步的布局和布線操作的步驟包括對由于綜合用于FPGA的實現(xiàn)中的用戶的邏輯設計而產生的綜合進行改變,并且其中該方法還 包含 將該改變饋送回以修改用戶的邏輯設計。
16.如權利要求14所述的方法,還包含 將進一步的綜合和更進一步的綜合進行比較,以測試功能的等效性。
17.如權利要求16所述的方法,其中,該比較步驟包含 匹配在進一步的綜合和更進一步的綜合中的相應節(jié)點; 在進一步的綜合和更進一步的綜合的每一個中,構造在匹配步驟中所標識的節(jié)點之間的邏輯的二元判定圖(BDD);以及 為在進一步的綜合和更進一步的綜合中的相應BDD測試功能的等效性。
18.如權利要求17所述的方法,其中,所述節(jié)點包括在更進一步的綜合中的寄存器、非邏輯塊輸入和輸出、以及邏輯單元輸出,以及在進一步的綜合中的相應邏輯輸出。
19.如權利要求11所述的方法,其中該設計變動命令工具用于將該改變饋送回以修改用戶的邏輯設計。
20.如權利要求11所述的方法,其中該設計變動命令工具用于修改針對結構化ASIC的規(guī)范。
全文摘要
本發(fā)明涉及產生等效現(xiàn)場可編程門陣列和結構化專用集成電路的方法。提供了可以產生功能上等效的現(xiàn)場可編程門陣列(“FPGA”)和結構化專用集成電路(“結構化ASIC”)的編譯器流程。該流程可以包括反饋在任何一個流程期間執(zhí)行的設計變換,以便使另一個流程的稍后執(zhí)行將必然包括相同的變換,由此有助于確保功能的等效性。該流程可以包括中間結果的比較,以便證明實現(xiàn)了功能的等效性。
文檔編號G06F17/50GK102750402SQ201210135378
公開日2012年10月24日 申請日期2006年3月31日 優(yōu)先權日2005年4月1日
發(fā)明者戴維·卡切米爾, 詹姆斯·G·施萊克爾二世 申請人:阿爾特拉公司