<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2008-03-03 來(lái)源:賽靈思公司 收藏

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

本文引用地址:http://dyxdggzs.com/article/79446.htm

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

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

  SmartGuide如何運作?

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

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

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

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

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

  如圖1所示,例如,LUT4的邏輯等式已經(jīng)被修改。LUT4將被引導,因為即使它的邏輯等式是不同的,它的相關(guān)名稱(chēng)也沒(méi)有被改變。LUT4和LUT2 之間的布線(xiàn)將被引導,這是因為L(cháng)UT4 和 LUT2之間的連通性沒(méi)有被修改。

  

 

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

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

  Partition如何運作?

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

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

  

 

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

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

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

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

  采用 SmartGuide

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

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

  • 移動(dòng)引腳位置;

  • 改變一個(gè)元器件的屬性;

  • 改變一個(gè)時(shí)序約束。

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

  

 

  圖3.在Project Navigator軟件工具中開(kāi)啟SmartGuide。

  要在tcl接口上開(kāi)啟 SmartGuide,需要調用如下命令:

  % project set "Use Smartguide" True

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

  map "smartguide

  par "smartguide

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

  

 

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

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

  采用 Partitions

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

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

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

  在Partition流程中使用XST

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

  

 

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

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

  % partition new

  Partitions不能用批處理命令創(chuàng )建,因為他們需要在設計中的特定邏輯模塊上設置一種屬性。

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

  

 

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

  在Partition流程中采用Synplify Pro

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

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

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

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

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

  

 

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

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



關(guān)鍵詞: FPGA

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>