面向ASIC和FPGA設(shè)計(jì)的多點(diǎn)綜合技術(shù)
隨著設(shè)計(jì)復(fù)雜性增加,傳統(tǒng)的綜合方法面臨越來越大的挑戰(zhàn)。為此,Synplicity公司開發(fā)了同時(shí)適用于FPGA或 ASIC設(shè)計(jì)的多點(diǎn)綜合技術(shù),它集成了“自上而下”與“自下而上”綜合方法的優(yōu)勢(shì),能提供高結(jié)果質(zhì)量和高生產(chǎn)率,同時(shí)削減存儲(chǔ)器需求和運(yùn)行時(shí)間。
盡管半導(dǎo)體技術(shù)在其發(fā)展過程中曾遭遇種種難以克服的障礙,但正如高登·摩爾多年前所預(yù)言的那樣,ASIC和FPGA的密度繼續(xù)每隔18個(gè)月翻一番。
硅潛力的疾速釋放是一件喜憂摻半的事。一方面,硅技術(shù)提供的功能與性能可以滿足最具挑戰(zhàn)性應(yīng)用的需要;另一方面,當(dāng)今設(shè)計(jì)工具的局限性令人沮喪,因?yàn)檫@使我們無法充分利用硅技術(shù)的全部潛力。隨著設(shè)計(jì)規(guī)模和器件復(fù)雜性不斷攀升,設(shè)計(jì)工作成為阻礙我們實(shí)現(xiàn)各類IC的制約因素。盡管電子設(shè)計(jì)自動(dòng)化(EDA)行業(yè)近10年來一直致力于解決這個(gè)問題,但所謂的“生產(chǎn)力落差”仍在持續(xù)擴(kuò)大。
設(shè)計(jì)綜合面臨的挑戰(zhàn)
這種生產(chǎn)力落差在綜合領(lǐng)域表現(xiàn)得最為明顯。傳統(tǒng)綜合方法的處理能力有限,因而要求將設(shè)計(jì)分割成不超過20萬門的子模塊。對(duì)于容量達(dá)2千萬門的芯片,設(shè)計(jì)者可能需要管理100個(gè)以上的不同子模塊,以完成一個(gè)設(shè)計(jì)的綜合。此外,大多數(shù)設(shè)計(jì)者更習(xí)慣基于功能或時(shí)序分割設(shè)計(jì),相對(duì)而言,基于門數(shù)進(jìn)行分割顯得不夠直觀。當(dāng)前綜合流程的另一個(gè)缺陷是它們不能很好地優(yōu)化分立的功能。這正是今天需要獨(dú)立數(shù)據(jù)路徑綜合的原因之一。嵌入式FPGA將既需要專門的綜合映射器,又需要在全芯片的背景下進(jìn)行優(yōu)化。
自十年前出現(xiàn)綜合技術(shù)以來,設(shè)計(jì)復(fù)雜性取得了驚人的增長(zhǎng)。因此,傳統(tǒng)解決方案的效力正在衰退,這的確不足為奇。
設(shè)計(jì)復(fù)雜性還給綜合技術(shù)帶來許多其它問題。當(dāng)一個(gè)綜合應(yīng)用必須有效地操作大量設(shè)計(jì)數(shù)據(jù)時(shí),存儲(chǔ)器利用率將變成一項(xiàng)真正的挑戰(zhàn)。除了龐大的設(shè)計(jì)規(guī)模外,處理計(jì)算任務(wù)所需的設(shè)計(jì)管理開銷也會(huì)使運(yùn)行時(shí)間延長(zhǎng)。隨著高復(fù)雜度、高約束性的功能被分解到綜合過程中,IP集成亦成為設(shè)計(jì)者必須面臨的另一項(xiàng)挑戰(zhàn)。為了不斷優(yōu)化時(shí)序或理順子模塊之間的相關(guān)性,設(shè)計(jì)反復(fù)的次數(shù)將會(huì)大大增加,從而顯著延長(zhǎng)設(shè)計(jì)時(shí)間。
在把綜合技術(shù)應(yīng)用于復(fù)雜設(shè)計(jì)時(shí),所面臨的另一個(gè)重要挑戰(zhàn)是保持設(shè)計(jì)穩(wěn)定性。當(dāng)把優(yōu)化后的子模塊集成回整個(gè)設(shè)計(jì)中時(shí),這可能帶來意想不到的復(fù)雜問題。隨著設(shè)計(jì)和硅技術(shù)變得越來越復(fù)雜,這些問題的復(fù)雜性將隨之增加。
為了克服綜合工具的上述缺點(diǎn),設(shè)計(jì)者正在采用以下幾種策略。一種是復(fù)雜的外圍工作,如編寫高級(jí)腳本。這種基于外圍工作的解決方案雖然能夠達(dá)到目的,但通常會(huì)過度犧牲結(jié)果的質(zhì)量(QoR)和生產(chǎn)效率。為了使用傳統(tǒng)方法成功地對(duì)一個(gè)大型ASIC設(shè)計(jì)進(jìn)行綜合,這常常需要擴(kuò)展的人工腳本,但由人工編寫腳本是極容易出錯(cuò)的,而且要求設(shè)計(jì)者具有很高的腳本編寫技巧。這種方法只能給設(shè)計(jì)帶來很少的“增加值”,但卻要消耗寶貴的人力和時(shí)間。
另一個(gè)策略是專注于寄存器傳輸級(jí)(RTL)設(shè)計(jì),然后將RTL交由ASIC供應(yīng)商來綜合與實(shí)現(xiàn)。籍此,設(shè)計(jì)者可以避免與傳統(tǒng)綜合有關(guān)的麻煩。這種“RTL簽字確認(rèn)(signoff)”方法非常依賴于高質(zhì)量的RTL以及芯片供應(yīng)商愿意為設(shè)計(jì)結(jié)果承擔(dān)風(fēng)險(xiǎn)的責(zé)任心。設(shè)計(jì)者可能會(huì)擔(dān)心設(shè)計(jì)被交付給那些對(duì)設(shè)計(jì)及系統(tǒng)問題知之甚少而且不關(guān)心設(shè)計(jì)能否成功的公司。
從這些策略的本性來看,它們假定綜合無法改進(jìn)或者綜合就是瓶頸。然而,綜合是所有高級(jí)IC設(shè)計(jì)流程中一個(gè)根本的組成環(huán)節(jié)。無論由誰來執(zhí)行綜合,只要這種技術(shù)繼續(xù)困擾芯片的實(shí)現(xiàn),我們就會(huì)犧牲設(shè)計(jì)工作的生產(chǎn)效率和質(zhì)量。因此,綜合是一個(gè)必須解決的重要問題。
“自上而下”與“自下而上”
傳統(tǒng)上,解決綜合問題有兩種方法:“自下而上”和“自上而下”。每種方法各有其長(zhǎng)處和不足。“自下而上”的方法是指將設(shè)計(jì)分割成綜合工具處理容量之內(nèi)的子模塊,從而使每個(gè)模塊能夠被獨(dú)立處理。這允許局部的重編譯和多處理,從而加速設(shè)計(jì)。“自下而上”流程還允許將設(shè)計(jì)的某個(gè)部分從整體中隔離出來,以進(jìn)行改進(jìn)。如果采用得當(dāng),這能提高結(jié)果的穩(wěn)定性。
按單個(gè)模塊計(jì)算,“自下而上”法能提供最佳的運(yùn)行時(shí)間,但整體運(yùn)行時(shí)間可能因?yàn)轫?xiàng)目管理和人工腳本開銷而有所延長(zhǎng)。腳本編寫本身很重要,但也容易出錯(cuò)。此外,這種方法可能會(huì)降低結(jié)果的質(zhì)量(QoR)。采用“自下而上”法,綜合工具只能“看見”各個(gè)子模塊內(nèi)的優(yōu)化機(jī)會(huì),而不能跨越分割界線對(duì)整體設(shè)計(jì)進(jìn)行改進(jìn)。分割的次數(shù)越多,設(shè)計(jì)離可能的最佳QoR就越遠(yuǎn)。
“自上而下”的綜合方法考慮整個(gè)系統(tǒng)級(jí)RTL和約束,允許綜合工具在一次操作中優(yōu)化設(shè)計(jì),而不必跨越分割的模塊。與“自下而上”的設(shè)計(jì)相比,這種方法可產(chǎn)生最佳的QoR,因?yàn)榫C合工具是在整個(gè)設(shè)計(jì)上進(jìn)行操作。由于不需要人工腳本和管理各種不同的子模塊,它更易于實(shí)現(xiàn)。然而,它需要的存儲(chǔ)容量和運(yùn)行時(shí)間使之無法應(yīng)用于大型設(shè)計(jì)中。即使很小的設(shè)計(jì)改動(dòng)也要求重新對(duì)整個(gè)設(shè)計(jì)進(jìn)行綜合,這幾乎是不切實(shí)際的。類似地,“自上而下”法要對(duì)復(fù)制的模塊單獨(dú)進(jìn)行綜合,與“自下而上”法對(duì)復(fù)制模塊一次綜合相比,這將導(dǎo)致更長(zhǎng)的運(yùn)行時(shí)間。最后,為了滿足時(shí)序要求,布局與布線過程將變得非常反復(fù)。從QoR方面來看,“自上而下”法是理想的解決方案,但從設(shè)計(jì)規(guī)模或其它設(shè)計(jì)要求來看,它并不是每種設(shè)計(jì)的最佳選擇。
多點(diǎn)綜合:面向大型設(shè)計(jì)的綜合技術(shù)
無論是單純的“自上而下”法還是單純的“自下而上”法都不是很多設(shè)計(jì)的正確解決之道。它們所需要的是集“自上而下”法的易用性及QoR優(yōu)勢(shì)與“自下而上”法的高效率及低存儲(chǔ)器需求于一體的方法,而且這種方法仍要能夠被自上而下或自下而上地使用。這一點(diǎn)在大型設(shè)計(jì)中尤其重要,因?yàn)楝F(xiàn)有的“自上而下”或“自下而上”流程不能獲得最佳的QoR和運(yùn)行時(shí)間。為了解決這個(gè)問題以及百萬門ASIC和可編程系統(tǒng)級(jí)芯片(PSoC)設(shè)計(jì)者所面臨的其它挑戰(zhàn),Synplicity公司開發(fā)了多點(diǎn)(MultiPoint)綜合技術(shù)。
多點(diǎn)綜合技術(shù)針對(duì)大型設(shè)計(jì)而采用了一種分層方法。與傳統(tǒng)的“自下而上”分層設(shè)計(jì)不同,多點(diǎn)綜合技術(shù)能自動(dòng)分割和優(yōu)化設(shè)計(jì)。這是對(duì)整個(gè)設(shè)計(jì)執(zhí)行語言編譯的結(jié)果,語言編譯能創(chuàng)建一種中間格式,它包含所有分層信息以及設(shè)計(jì)的關(guān)鍵信息。Synplicity公司的ASIC解決方案使用內(nèi)置的HDL分析工具,允許用戶查看RTL設(shè)計(jì)分層或使用Tcl腳本來檢查設(shè)計(jì)分層。通過審視邏輯分層,設(shè)計(jì)者將選擇應(yīng)該與其余設(shè)計(jì)部分分開綜合的分層單元。在分層結(jié)構(gòu)中,這些點(diǎn)被稱為編譯點(diǎn)。
一旦選定編譯點(diǎn)后,時(shí)序約束將被施加到每一個(gè)點(diǎn)上;這個(gè)步驟最初將由人工執(zhí)行,但未來可以自動(dòng)完成。緊隨其后,將從編譯點(diǎn)開始對(duì)最低級(jí)別的設(shè)計(jì)層進(jìn)行綜合。隨著每個(gè)編譯點(diǎn)被綜合,它會(huì)自動(dòng)創(chuàng)建一個(gè)接口邏輯模型(ILM),并將其傳遞給下一個(gè)更高級(jí)別的設(shè)計(jì)層。最后,頂層是采用來自較低層編譯的ILM以及頂層的任何額外邏輯來實(shí)現(xiàn)綜合的。這能減少所需的時(shí)間,避免易出錯(cuò)的腳本,從而使設(shè)計(jì)團(tuán)隊(duì)可以將精力集中在設(shè)計(jì)的增值方面。
ILM是多點(diǎn)綜合所采用的一項(xiàng)關(guān)鍵技術(shù)。ILM是Synplicity或第三方公司為網(wǎng)表或綜合設(shè)計(jì)所編寫的部分網(wǎng)表。它們是包含所有邊界信息或時(shí)序分析邏輯的模型,因此能提供可與“自上而下”流程相媲美的QoR。由于ILM只包含從端口到寄存器的邏輯,而所有其它邏輯都被當(dāng)成一個(gè)“黑箱子”來處理,因此它們大大降低了對(duì)存儲(chǔ)器的需求,并減少了大型設(shè)計(jì)綜合的運(yùn)行時(shí)間。
用戶自定義的編譯點(diǎn)是創(chuàng)建ILM的基礎(chǔ),而且是多點(diǎn)綜合技術(shù)的另一個(gè)關(guān)鍵要素。編譯點(diǎn)是能夠被獨(dú)立綜合的模塊,然后綜合的結(jié)果被用來綜合其上級(jí)模塊或頂層設(shè)計(jì)。多點(diǎn)綜合與其它綜合技術(shù)的一個(gè)關(guān)鍵區(qū)別在于,它能夠通過三類不同的編譯點(diǎn)(即軟、硬和鎖定編譯點(diǎn))來控制邊界優(yōu)化的層次。軟編譯點(diǎn)用于完全的邊界優(yōu)化,這意味著端口標(biāo)識(shí)可以在綜合期間改變。相反,端口完整性是由硬編譯點(diǎn)保持的。對(duì)于鎖定編譯點(diǎn),模塊內(nèi)的邏輯在優(yōu)化期間能保持不變。因此,用戶自定義的編譯點(diǎn)可以充當(dāng)綜合工具的指令,以便對(duì)設(shè)計(jì)的某一特定部分進(jìn)行建模和綜合。由于允許跨邊界的優(yōu)化,這些編譯點(diǎn)使 “自上而下” 的流程可以提供極佳的QoR。
多點(diǎn)綜合技術(shù)正是通過用戶自定義的編譯點(diǎn)和ILM來支持IP集成。它能自動(dòng)對(duì)IP建模,并利用綜合的時(shí)序信息。在設(shè)計(jì)中充當(dāng)范例的IP既可以在IP模塊內(nèi)又可以在相鄰模塊中進(jìn)行邏輯優(yōu)化,同時(shí)不會(huì)影響內(nèi)核自身的端口安排。 [!--empirenews.page--]
對(duì)于同一IP模塊的多個(gè)范例,多點(diǎn)綜合技術(shù)可以確定每個(gè)獨(dú)特范例的邊界優(yōu)化條件,而不必對(duì)各個(gè)范例進(jìn)行再綜合。多點(diǎn)技術(shù)采用一種獨(dú)特的、基于差別的增量綜合方法(見圖1),它只對(duì)確實(shí)改變了的編譯點(diǎn)模塊進(jìn)行再綜合。只有那些因RTL、屬性或約束條件發(fā)生變化而受影響的編譯點(diǎn)才會(huì)被重新綜合。通過比較新、舊RTL,多點(diǎn)綜合技術(shù)可以智能地確定哪些變化是實(shí)質(zhì)性的,因而有必要執(zhí)行再綜合。例如,RTL時(shí)間標(biāo)記的改變、為RTL增加注釋以及約束條件的重新排序都不會(huì)啟動(dòng)再綜合。這造就了高效的綜合,并顯著提高了生產(chǎn)力。通過鎖定編譯點(diǎn),多點(diǎn)技術(shù)可以確保設(shè)計(jì)的穩(wěn)定性,使用戶無需理會(huì)模塊的變化。
多點(diǎn)技術(shù)的特點(diǎn)之一是它同時(shí)適用于FPGA 和ASIC設(shè)計(jì)。通過比較門數(shù)、硬嵌入IP、工藝尺寸、性能及目前的實(shí)現(xiàn)成本,我們可以得知這兩種選擇之間的差別正在變得模糊。以大約十萬片的生產(chǎn)水平為例,越來越多的設(shè)計(jì)者看到FPGA 與ASIC選擇之間的傳統(tǒng)成本差異正在消失。用于ASIC和FPGA的設(shè)計(jì)技術(shù)也日趨融合。以Synplicity公司的產(chǎn)品為例,物理綜合、布局以及形式驗(yàn)證不再只是ASIC開發(fā)人員才使用的技術(shù)。設(shè)計(jì)師將越來越多地在ASIC或FPGA上實(shí)現(xiàn)設(shè)計(jì),甚至采用二者的組合,如包含嵌入式FPGA的SoC或包含嵌入式內(nèi)核的PSoC。
正如前面所討論的,多點(diǎn)綜合技術(shù)既可用于ASIC設(shè)計(jì),又可用于FPGA設(shè)計(jì),但ASIC與FPGA設(shè)計(jì)人員的關(guān)鍵需求略有不同。
ASIC設(shè)計(jì)人員需要有效管理極高的門數(shù)、設(shè)計(jì)分割以及與綜合或重構(gòu)設(shè)計(jì)有關(guān)的腳本,而FPGA設(shè)計(jì)人員通常更需要一個(gè)不以犧牲結(jié)果質(zhì)量為代價(jià)的快速增量設(shè)計(jì)流程。當(dāng)與Altera公司的Logic Lock或Xilinx公司的Modular設(shè)計(jì)流程配合使用時(shí),多點(diǎn)綜合流程可以向設(shè)計(jì)人員提供一種優(yōu)秀的增量設(shè)計(jì)方法,它能鎖定部分設(shè)計(jì),并使之在綜合期間保持不變。這可以使已經(jīng)驗(yàn)證過的部分設(shè)計(jì)保持不變和穩(wěn)定,而只修改真正需要改動(dòng)的設(shè)計(jì)部分。這種方法不僅提供了穩(wěn)定的結(jié)果質(zhì)量,而且顯著減少了每個(gè)設(shè)計(jì)改動(dòng)所需的綜合及運(yùn)行時(shí)間。
多點(diǎn)綜合技術(shù)的使用
多點(diǎn)綜合流程簡(jiǎn)單明了。首先,設(shè)計(jì)者編譯HDL并創(chuàng)建整個(gè)設(shè)計(jì)的RTL視圖;然后,設(shè)計(jì)者基于他們對(duì)設(shè)計(jì)和關(guān)鍵功能或路徑的理解來定義編譯點(diǎn)。下一步是對(duì)整個(gè)設(shè)計(jì)進(jìn)行自動(dòng)時(shí)間預(yù)算。一旦確定最初的時(shí)間預(yù)算后,設(shè)計(jì)者再利用這些預(yù)算對(duì)每一個(gè)編譯點(diǎn)進(jìn)行綜合。隨后,系統(tǒng)將自動(dòng)創(chuàng)建ILM,并執(zhí)行頂層的時(shí)序分析和優(yōu)化。在執(zhí)行最初的時(shí)間預(yù)算時(shí),多點(diǎn)技術(shù)同時(shí)對(duì)整個(gè)設(shè)計(jì)進(jìn)行操作,以便為各分層模塊創(chuàng)建時(shí)序預(yù)算。因?yàn)樗槐叵拇罅繒r(shí)間去創(chuàng)建人工約束條件,所以完成時(shí)間預(yù)算的速度比傳統(tǒng)方法快得多。
多點(diǎn)技術(shù)可以達(dá)到的結(jié)果如圖2a所示,它是采用0.11微米工藝實(shí)現(xiàn)的一個(gè)200萬門設(shè)計(jì)。與大多數(shù)高級(jí)SoC相同,這個(gè)特定設(shè)計(jì)包含一個(gè)可復(fù)制的IP模塊。這個(gè)15萬門的模塊被復(fù)制了9遍,并被指定為鎖定編譯點(diǎn)。該可復(fù)制模塊只被映射一次,然后在頂層進(jìn)行復(fù)制。在較低層的編譯點(diǎn)被綜合之后,利用該可復(fù)制模塊的一個(gè)ILM以及余留邏輯的另一個(gè)ILM就可以執(zhí)行“自上而下”的綜合,這種方法能減少幾乎80%的計(jì)算開銷。與傳統(tǒng)的“自上而下”方法相比(見圖2b),多點(diǎn)技術(shù)占用的存儲(chǔ)器及運(yùn)行時(shí)間減少了約80%,而且其QoR與直接的“自上而下”綜合相當(dāng)。
與傳統(tǒng)綜合方法相比,多點(diǎn)技術(shù)具有許多優(yōu)勢(shì)。傳統(tǒng)方法限制最大的可綜合子模塊規(guī)模為20萬門,而多點(diǎn)技術(shù)一次可以綜合150萬到200萬門的模塊。這意味著設(shè)計(jì)者不必根據(jù)工具的存儲(chǔ)器限制來分割設(shè)計(jì),而可以更直觀地根據(jù)設(shè)計(jì)的功能或時(shí)序來分割設(shè)計(jì)。由于采用了基于差別的增量方法并能自動(dòng)創(chuàng)建ILM和時(shí)間預(yù)算,多點(diǎn)技術(shù)提供了一種高生產(chǎn)率的自動(dòng)化解決方案,其“自上而下”的分層方法能提供可與“自上而下”綜合相媲美的QoR,而且?guī)фi定編譯點(diǎn)的增量綜合還能確保“自下而上”方法的穩(wěn)定性。
多點(diǎn)技術(shù)同時(shí)適用于FPGA或 ASIC設(shè)計(jì),這使得開發(fā)人員無需掌握多種不同的工具套件,并可以選擇最佳的實(shí)現(xiàn)方案,無論是ASIC、FPGA還是二者的混合體。此外,多點(diǎn)技術(shù)的伸縮性使得設(shè)計(jì)人員不必為追隨每一代新的工藝技術(shù)而改變?cè)O(shè)計(jì)方法。
多點(diǎn)技術(shù)還是一種能滿足未來設(shè)計(jì)需要的可擴(kuò)展、可伸縮平臺(tái)。許多設(shè)計(jì)者擔(dān)心目前使用的綜合方法不能擴(kuò)展到下一代設(shè)計(jì)中。Synplicity開發(fā)的多點(diǎn)技術(shù)不必改變目前使用的綜合方法,就能適應(yīng)未來設(shè)計(jì)的需要。多點(diǎn)綜合的基礎(chǔ)架構(gòu)允許集成新的功能,以支持未來的硬件、操作系統(tǒng)和存儲(chǔ)器結(jié)構(gòu)。