新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用SmartCompile和賽靈思的設(shè)計(jì)工具進(jìn)行設(shè)計(jì)保存

利用SmartCompile和賽靈思的設(shè)計(jì)工具進(jìn)行設(shè)計(jì)保存

作者: 時間:2008-03-03 來源:賽靈思公司 收藏

  在環(huán)境下,設(shè)計(jì)保存實(shí)施比較復(fù)雜,需要保存的事項(xiàng)包括:一項(xiàng)設(shè)計(jì)的HDL描述、一個模塊的綜合網(wǎng)表、約束文件內(nèi)的布局信息,以及在局部比特文件中的配置數(shù)據(jù)。賽靈思集成軟件環(huán)境(ISE) 9.1i 軟件以新的SmartCompile 技術(shù)為特色,其中包含兩種新的方法:SmartGuide和Partitions,這兩種方法可以保存像布局或布線這樣的設(shè)計(jì)執(zhí)行數(shù)據(jù),并且可以減少解決問題所花費(fèi)的時間。

本文引用地址:http://butianyuan.cn/article/79446.htm

  SmartGuide采用命名和拓樸匹配技術(shù)來識別一個設(shè)計(jì)中相對于以前的實(shí)現(xiàn)還沒有發(fā)生改變的各個部分。在新的和已修改過的設(shè)計(jì)被重新實(shí)現(xiàn)時,設(shè)計(jì)中匹配元器件得到了保存。

  Partitions 采用的技術(shù)中, 設(shè)計(jì)的模塊實(shí)例被自動分析,接著,與以前的模塊實(shí)現(xiàn)比較,確定該模塊實(shí)例是最新的還是過時的。如果Partition 是過時的,它也完全可以重新實(shí)現(xiàn)且不發(fā)生保存。如果Partition是最新的,它可從以前的實(shí)現(xiàn)中被嚴(yán)格地復(fù)制且(從綜合網(wǎng)表通過布線)完整地保存布局和布線運(yùn)行時間。

  SmartGuide如何運(yùn)作?

  SmartGuide工作在像查找表(LUT)和觸發(fā)器這樣的FPGA中最低級的物理單元上。這些單元及其連通性被依次匹配和保存。

  要成功引導(dǎo)的第一步是對已經(jīng)作出較小變更的設(shè)計(jì)綜合一個一致的網(wǎng)表。例如,減法器等式regAB=(A"B),可以被綜合成Msub_sub0001的邏輯名稱。下一個減數(shù)就稱為Msub_sub0002,并且依此類推。在引入新減數(shù)的設(shè)計(jì)中的任何變更都可能造成設(shè)計(jì)中所有減數(shù)的重新命名。為了解決這個問題,像SynplICity 公司的Synplify和Synplify Pro以及賽靈思公司的XST這樣的綜合工具,已經(jīng)改變了邏輯命名的慣例。利用這些工具,無論用戶有沒有對RTL進(jìn)行變更或進(jìn)行了小的變更,邏輯命名從一個綜合運(yùn)行到下一個綜合都變得更加可以預(yù)測。按照以上的實(shí)例, 減法邏輯就被命名為Msub_regAB_sub0001。通過采用在邏輯中的寄存器名,就能防止改變到其它的減數(shù)。

  綜合命名慣例的另一項(xiàng)增強(qiáng)措施是以本地而不是全局上下文為基礎(chǔ)。在RTL出現(xiàn)小的變化以及設(shè)計(jì)沿著非關(guān)鍵路徑重新綜合時,這可能有所幫助。在綜合之后,與非關(guān)鍵時序路徑相關(guān)的邏輯被修改,而機(jī)器給未改變邏輯產(chǎn)生的實(shí)例名稱保持不變。綜合網(wǎng)表變化被本地化到網(wǎng)表內(nèi)的已修改的或新的邏輯。最優(yōu)化一向是可復(fù)制的,這是因?yàn)樗鼈円员镜剡壿嫗榛A(chǔ)。例如,作為最優(yōu)化過程的一個部分,Synplicity的 Synplify/Pro目前創(chuàng)建路徑組(path groups),它是被分別最優(yōu)化的各個邏輯組。當(dāng)邏輯在非關(guān)鍵時序路徑上優(yōu)化時,只有受影響的路徑組被改變,以最小化對綜合網(wǎng)表的影響。

  在生成綜合網(wǎng)表后,ISE 9.1i中的實(shí)現(xiàn)工具會處理網(wǎng)表,并把它轉(zhuǎn)換成針對特定FPGA 架構(gòu)的經(jīng)布局和布線的設(shè)計(jì)。在匹配過程中會發(fā)生引導(dǎo),所有的元器件以匹配元器件名稱為基礎(chǔ)被引導(dǎo)。如果一個元器件在目前的實(shí)現(xiàn)和引導(dǎo)設(shè)計(jì)中都有相同的名稱,那么,該元器件就能被成功地引導(dǎo)。該元器件可能有不同的LUT方程式或引腳,并仍可以成功地被引導(dǎo)。

  如果在當(dāng)前實(shí)現(xiàn)和引導(dǎo)設(shè)計(jì)中的源和負(fù)載引腳是相同的,就能對網(wǎng)絡(luò)進(jìn)行引導(dǎo)。這消除了對兩次實(shí)現(xiàn)之間的網(wǎng)絡(luò)名稱要保持一致的依賴。它也極大地增加了成功引導(dǎo)網(wǎng)絡(luò)的機(jī)率。

  如圖1所示,例如,LUT4的邏輯等式已經(jīng)被修改。LUT4將被引導(dǎo),因?yàn)榧词顾倪壿嫷仁绞遣煌?,它的相關(guān)名稱也沒有被改變。LUT4和LUT2 之間的布線將被引導(dǎo),這是因?yàn)長UT4 和 LUT2之間的連通性沒有被修改。

  

 

  圖1.元器件和網(wǎng)絡(luò)被成功引導(dǎo)。

  在元器件和網(wǎng)絡(luò)被引導(dǎo)之后,新的和經(jīng)修改的元器件及網(wǎng)絡(luò)被增加到設(shè)計(jì)中。網(wǎng)表中沒有變更的那部分在某些情況下必須被重新布局和布線,但是,這只在設(shè)計(jì)變化引起電路中另一個部分出現(xiàn)一個重大路徑時序沖突的情況下。正是因?yàn)樵撛?,這是一個清除階段。如果存在關(guān)鍵路徑的時序沖突,就會有一些引導(dǎo)邏輯的移動以確定時序。在來自新的和已修改邏輯的關(guān)鍵路徑上的清除階段可能迫使引導(dǎo)邏輯的移動。這個清除階段極大地增加成功實(shí)現(xiàn)一項(xiàng)設(shè)計(jì)的機(jī)率,該設(shè)計(jì)以稍微降低一些邏輯的保存為代價,以滿足時序約束的要求。

  Partition如何運(yùn)作?

  為了做到準(zhǔn)確無誤的保存,設(shè)計(jì)工程師必須對模塊實(shí)例設(shè)置一個被稱為Partition的屬性。這將把Partition與該設(shè)計(jì)的其它部分相隔離。通過隔離模塊實(shí)例,其接口(跨越Partition邊界的連通性)被保證不會在各種實(shí)現(xiàn)之間被修改。這使得在Partition內(nèi)的元器件和網(wǎng)絡(luò)可從以前的實(shí)現(xiàn)中被復(fù)制并粘貼到當(dāng)前的實(shí)現(xiàn)中。復(fù)制和粘貼這些設(shè)計(jì)信息的過程比重新實(shí)現(xiàn)要快得多,并且保證始終是前一次實(shí)現(xiàn)的準(zhǔn)確復(fù) 制。

  Partition必須在設(shè)計(jì)被綜合之前就在模塊實(shí)例上進(jìn)行設(shè)置。然后,綜合引擎將把Partition接口作為待優(yōu)化的障礙進(jìn)行處理。例如,圖2所示的異步邏輯結(jié)構(gòu)可能被合并成一個更優(yōu)化的形式。如果Partition在這個邏輯的一個部分上已被設(shè)置,綜合引擎不能對它進(jìn)一步優(yōu)化,這是因?yàn)樗鼤薷腜artition接口。類似的情況會出現(xiàn)在像映射這樣的下游實(shí)現(xiàn)工具中。邏輯內(nèi)部和外部的Partition將被完全最優(yōu)化。如果關(guān)鍵時序路徑需要這種優(yōu)化出現(xiàn),它將會被Partition邊界閉塞。為了避免出現(xiàn)這個問題,要把寄存器添加到跨越Partition邊界的各種信號上,或者確信這些信號的時序不是關(guān)鍵的。

  

 

  圖2.邏輯優(yōu)化被Partition邊界閉塞。

  ISE 9.1i將自動確定要對哪一個Partitions進(jìn)行重新實(shí)現(xiàn)。某些類型的設(shè)計(jì)變更只會影響直接相關(guān)的Partition。這些類型的設(shè)計(jì)變更包括源代碼修改和物理約束。其它類型的設(shè)計(jì)變更將迫使所有的Partitions被重新實(shí)現(xiàn)。修改時序約束或優(yōu)化設(shè)置如映射努力級別將影響整個設(shè)計(jì)。

  在缺省條件下,Partition將促成實(shí)現(xiàn)工具保存從綜合網(wǎng)表到已布線設(shè)計(jì)的所有實(shí)現(xiàn)數(shù)據(jù)。在某些情況下,它可能需要讓像布線器這樣的實(shí)現(xiàn)工具能修改某一個已保存的Partition,同時保存它的布局。Partition屬性,即眾所周知的保存(preserve),能實(shí)現(xiàn)這一級別的控制。Preserve可以被設(shè)置到綜合、布局、 布線或繼承上。繼承屬性將采用與Partition的雙親相同的特性。綜合屬性只保存綜合網(wǎng)表;所有實(shí)現(xiàn)的其它方面可能會被修改。布局屬性通過布局保存已綜合的網(wǎng)表。此外,輸出也可能被修改。布線屬性將保證包括布線在內(nèi)的所有實(shí)現(xiàn)數(shù)據(jù)得到保存。在 Synplify Pro Partition的流程中,由Partition流程保存的信息的級別(綜合;布局與綜合;或布線、布局與綜合)作為一種屬性在tcl 文件中有詳細(xì)的說明,然后,再通過ISE布局和布線工具讀出。

  通過放寬要保存的信息級別,一些Partition的實(shí)現(xiàn)可以被修改。實(shí)現(xiàn)工具將盡可能多地保存Partition,同時,仍能滿足時序約束的要求,而且還能成功的對設(shè)計(jì)進(jìn)行布局和布線。 要促使Partition在沒有任何保存的情況下完全地被重新實(shí)現(xiàn),就要使用Partition的"rerun"命令。

  采用 SmartGuide

  SmartGuide對于像修改邏輯等式這樣的小邏輯變更最為有用。像增加新的模塊或?qū)嵗@樣大的變更,將會影響設(shè)計(jì)層次,并減少從以前的實(shí)現(xiàn)中成功匹配元器件的可能性。與SmartGuide能夠很好配合的變更類型有:

  • 在一個或兩個模塊中的小邏輯變更(不到10%);

  • 移動引腳位置;

  • 改變一個元器件的屬性;

  • 改變一個時序約束。

  SmartGuide僅僅是在映射實(shí)現(xiàn)過程中開啟的一個選項(xiàng)。SmartGuide自動地使用以時序約束為基礎(chǔ)直接實(shí)現(xiàn)的映射時序算法。為了在ISE Project Navigator軟件工具中啟動SmartGuide,可從頂層菜單中選擇Source > Use SmartGuide,或者右擊頂層模塊并選擇 Use SmartGuide,如圖3所示。

  

 

  圖3.在Project Navigator軟件工具中開啟SmartGuide。

  要在tcl接口上開啟 SmartGuide,需要調(diào)用如下命令:

  % project set "Use Smartguide" True

  用批處理命令使用SmartGuide,要采用這種語法:

  map "smartguide

  par "smartguide

  在設(shè)計(jì)被實(shí)現(xiàn)后,映射和標(biāo)準(zhǔn)報(bào)告將表明有多少設(shè)計(jì)被成功地引導(dǎo)。在以下所示的報(bào)告文件中,有71%的元器件及77%的網(wǎng)絡(luò)被引導(dǎo)。

  

 

  有關(guān)元器件和網(wǎng)絡(luò)的詳細(xì)信息被存儲在引導(dǎo)報(bào)告文件(GRF)。該文件列出了被重新實(shí)現(xiàn)的新文件和網(wǎng)絡(luò)的名稱。

  大約在10次的引導(dǎo)實(shí)現(xiàn)后,建議無需引導(dǎo)就進(jìn)行重新實(shí)現(xiàn)以最優(yōu)化整個的設(shè)計(jì)。這將使得以前已被引導(dǎo)的邏輯與新的或已修改過的邏輯之間得到最優(yōu)化。

  采用 Partitions

  有若干策略可用于決定設(shè)計(jì)中什么邏輯模塊成為待Partition的最佳候選模塊。如果縮短運(yùn)行時間是主要的目標(biāo),要把設(shè)計(jì)分成具有類似數(shù)量邏輯的4到10個之間的Partitions。如果其中的一個Partitions被修改,其它的將被保存。因此,保存數(shù)量與設(shè)計(jì)中Partitions 的數(shù)量 是成比例的。另一個策略是當(dāng)難以滿足時序約束時實(shí)例創(chuàng)建一個Partition。一旦針對這個Partition的時序約束得到滿足,即使在該P(yáng)artition外部的邏輯被修改時,它也會被保存起來。

  為了向設(shè)計(jì)添加更多的Partitions,存在一個逐漸減小的返回點(diǎn)。Partition接口是最優(yōu)化的障礙。如果只能通過對 Partition接口最優(yōu)化來解決一個關(guān)鍵路徑或包裝問題, 那么,應(yīng)該從設(shè)計(jì)中把那個Partition消除。在Partition接口上創(chuàng)建寄存器將排除出現(xiàn)時序或包裝問題的可能性。

  XST和Synplify Pro兩者都可被用詳細(xì)說明RTL Partitions。

  在Partition流程中使用XST

  如圖4所示,要采用XST綜合工具在ISE Project Navigator中創(chuàng)建Partitions,右擊Sources列表中的實(shí)例并選擇New Partition。從這個菜單可以修改其它的Partition屬性,如保存。

  

 

  圖4.在ISE Project Navigator軟件工具 (XST流程)中創(chuàng)建Partitions。

  在tcl接口中創(chuàng)建Partition,要使用這條命令:

  % partition new

  Partitions不能用批處理命令創(chuàng)建,因?yàn)樗麄冃枰谠O(shè)計(jì)中的特定邏輯模塊上設(shè)置一種屬性。

  實(shí)現(xiàn)FPGA設(shè)計(jì)(XST, ngdbuild, map, par)的個別應(yīng)用生成關(guān)于哪一個Partitions在它們各自的報(bào)告文件中被保存和實(shí)現(xiàn)的信息。例如,在這個XST 綜合報(bào)告中,一些Partitions被保存,而其它的被重新實(shí)現(xiàn)。每一個已實(shí)現(xiàn)的Partition都有一個原因解釋它為什么沒有被保存。

  

 

  在9.1i版本ISE中,對時序約束或命令行變更做出的修改—如努力級別—將迫使所有的Partitions被重新實(shí)現(xiàn)。

  在Partition流程中采用Synplify Pro

  在Synplify Pro Partition流程的情況下,用戶在運(yùn)行綜合之前,指定RTL模塊/子模塊(Partitions)作為Synplify Pro中的編譯點(diǎn)。在整個設(shè)計(jì)中運(yùn)行最初的布局和布線之后,該工具檢測哪些模塊/子模塊已經(jīng)發(fā)生了改變,并且能利用這一變化對所選擇的任意模塊執(zhí)行后續(xù)的增量布局和布線,與此同時,使其它已布局/布線的模塊保持不動。在已傳遞到布局和布線的tcl文件中,有可能詳細(xì)說明布局或布局和布線是否被保存(缺省是布局和布線)。

  Synplify把時間戳寫入到EDIF,它可用于確定每一個編輯點(diǎn)自上一次的布局和布線運(yùn)行后是否發(fā)生改變。一份tcl文件也由Synplify 寫入,從而為賽靈思布局和布線定義分區(qū)。當(dāng)用戶指定“syn_hier=locked,physICal”時, Synplify把額外屬性寫入 EDIF之中,要觀察的內(nèi)容包括該模塊最近被綜合時的時間戳。如果從上一次運(yùn)行開始模塊一直沒有發(fā)生變化,舊的時間戳被存入EDIF之中。每個標(biāo)有“locked, physical”的編輯點(diǎn)將含有這樣一個時間戳。賽靈思ISE 9.1i 拾取該時間戳,與以前的布局和布線時間戳進(jìn)行比較,并且只在發(fā)生改變的模塊上進(jìn)行增量布局和布線。

  總結(jié)和優(yōu)點(diǎn)

  一般說來,保存一項(xiàng)設(shè)計(jì)要比重新實(shí)現(xiàn)一項(xiàng)設(shè)計(jì)更快。因此,如果大部分設(shè)計(jì)能通過采用Partitions或SmartGuide進(jìn)行保存,實(shí)現(xiàn)這項(xiàng)設(shè)計(jì)所需的時間將會更少。在用于測試這些技術(shù)的廣泛的工具套件中平均運(yùn)行時間的改善,比最初的實(shí)現(xiàn)要快 2.5倍。例如,如果一項(xiàng)設(shè)計(jì)要花3個小時實(shí)現(xiàn),那么,利用設(shè)計(jì)保存的實(shí)現(xiàn)所需時間就要少1個小時。在一些最佳的情形下,運(yùn)行時間比最初實(shí)現(xiàn)要快到6倍之多。

  設(shè)計(jì)保存的另一個優(yōu)點(diǎn)是減少了驗(yàn)證。如果一個設(shè)計(jì)模塊被嚴(yán)格地保存,那么,那部分設(shè)計(jì)在設(shè)計(jì)修改后就不需要再重新驗(yàn)證。因?yàn)橐驯4娴膶?shí)現(xiàn)與前一次的實(shí)現(xiàn)是完全相同的,布局、布線和時序是相同的,這樣重新驗(yàn)證就沒有必要了。

  

 

  圖5.采用設(shè)計(jì)保存技術(shù)把一個200天的FPGA項(xiàng)目設(shè)計(jì)周期縮短的情況。

  要花大約200天來實(shí)現(xiàn)的FPGA設(shè)計(jì)通常涉及設(shè)計(jì)定義、實(shí)現(xiàn)、驗(yàn)證和調(diào)試。分配到每個階段的預(yù)計(jì)時間如圖5所示。采用設(shè)計(jì)保存技術(shù),就有可能使解決問題所花費(fèi)的時間減少幾個月。這是基于這樣的假定:FPGA 的實(shí)現(xiàn)時間是幾個小時,因此,運(yùn)行時間可能被減少。它還假定該設(shè)計(jì)采用基于模塊的驗(yàn)證測試基準(zhǔn),因此,在該設(shè)計(jì)內(nèi)已保存的模塊不需要被重新驗(yàn)證。如果一項(xiàng)設(shè)計(jì)采用了這種技術(shù),采用SmartCompile技術(shù)獲得解決方案所花費(fèi)的時間就被大幅縮短。



關(guān)鍵詞: FPGA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉