滿足設(shè)計(jì)的時(shí)序要求本身已非易事,而要實(shí)現(xiàn)某項(xiàng)設(shè)計(jì)的整體時(shí)序具有完全可重復(fù)性有時(shí)候卻是不可能的任務(wù)。幸運(yùn)的是,設(shè)計(jì)人員可以借助有助于實(shí)現(xiàn)可重復(fù)時(shí)序結(jié)果的設(shè)計(jì)流程概念。影響最大的四個(gè)方面分別是 HDL 設(shè)計(jì)實(shí)踐、綜合優(yōu)化、平面布局和實(shí)施方案。
就獲得可重復(fù)結(jié)果而言,資源利用和頻率要求都很高的設(shè)計(jì)是最大的挑戰(zhàn)。它們也是可重復(fù)結(jié)果流程需求最高的設(shè)計(jì)。得到可重復(fù)結(jié)果的第一步是在 HDL設(shè)計(jì)階段運(yùn)用設(shè)計(jì)合理的實(shí)踐。遵循出色的分層邊界實(shí)踐有助于保持邏輯整體性,而這在設(shè)計(jì)變更時(shí)有助于保持可重復(fù)結(jié)果。一條不錯(cuò)的規(guī)則就是把那些需要整體優(yōu)化、實(shí)施和驗(yàn)證的邏輯放在同一層級(jí)。另外需要記錄模塊的輸入和輸出。這樣就可以把時(shí)序路徑保持在模塊內(nèi)部,從而避免模塊改變時(shí)引起相互影響。最后,把所有需要放入更大 FPGA資源 (如 Block RAM 或 DSP)的邏輯全部設(shè)置在相同層級(jí)。
邏輯電平
從所需 QoR 結(jié)果需要太多查詢表(LUT) 邏輯電平的設(shè)計(jì)很難獲得可重復(fù)結(jié)果。LUT 延遲一般不是問題所在,而問題是 LUT 之間的路由延遲。這在設(shè)計(jì)的高性能領(lǐng)域至關(guān)重要。
邏輯電平過多往往歸因于 i f /else結(jié)構(gòu)較大和選擇語(yǔ)句較長(zhǎng)。如果合適,可以采用 “ful l_case”和 “paral lel_case” Veri log 指令優(yōu)化較少邏輯的選擇語(yǔ)句,這種技巧一般能夠減少邏輯電平。較大的多路復(fù)用器或者解碼器可能造成路由擁塞,從而導(dǎo)致不可重復(fù)的結(jié)果。多級(jí)注冊(cè)多路復(fù)用器 / 解碼器路徑有助于解決此問題。對(duì)于加算器而言,用注冊(cè)的加算器鏈代替注冊(cè)加算器樹可以提高性能。如果加算器全部注冊(cè)的話,則鏈會(huì)比樹造成更長(zhǎng)時(shí)延。有關(guān)編碼最佳實(shí)踐的更多信息, 請(qǐng)參考賽靈思白皮書 《提高設(shè)計(jì)性能的 HDL 編碼實(shí)踐》 (WP231), http://www.xilinx.com/support/documentation/white_papers/wp231.pdf。
復(fù)位與其他控制信號(hào)
復(fù)位的選擇會(huì)影響到設(shè)計(jì)的性能、面積和功率。加電時(shí)電路初始化并不需要全局復(fù)位,但是它會(huì)對(duì)設(shè)計(jì)過程中能夠采用的資源類型產(chǎn)生重大影響。如果在 HDL 中存在全局復(fù)位,則無(wú)法推斷移位寄存器。一個(gè)移位寄存器產(chǎn)生的可重復(fù)結(jié)果比十個(gè)寄存器還多。
另外,DSP 和塊 RAM 寄存器僅僅包含同步復(fù)位。如果編碼中包含異步復(fù)位,則無(wú)法使用此類寄存器,從而迫使設(shè)計(jì)中轉(zhuǎn)而使用可配置邏輯塊 (CLB)寄存器。而把寄存器放入 DSP、塊 RAM 或者同時(shí)放入二者中更容易保持相同結(jié)果。在一般邏輯中運(yùn)用同步重置可減少邏輯電平。slice 寄存器能擁有異步或同步復(fù)位。如果設(shè)計(jì)采用同步復(fù)位,那么組合邏輯就可以采用同步置位。這樣就可以降低一個(gè) LUT 的邏輯電平。
一個(gè)控制置位包含一組獨(dú)特的時(shí)鐘、時(shí)鐘啟用、置位與復(fù)位信號(hào),而且在分布式 RAM 中還包含可寫入信號(hào)??刂浦梦恍畔⒎浅V匾?yàn)榧拇嫫鞅仨毠蚕矸庋b在同一片中的同一控制置位信號(hào)。這可能影響封裝和利用率, 造成可重復(fù)結(jié)果問題。有關(guān)復(fù)位的更多信息,請(qǐng)參閱賽靈思 WP272 《復(fù)位訣竅: 考慮局部而非全局》 (http://www.xilinx.com/support/documentation/white_papers/wp272.pdf) 。有關(guān)控制置位的更多信息,請(qǐng)參閱WP309 《Spartan®-6 FPGA 定向與重定向指南》 (http://www.xilinx.com/support/documentation/white_papers/wp309.pdf ) 。盡管此白皮書專用于 Spartan-6器件,但其中還包含了適用于所有 FPGA的有益通用信息。
了解FPGA資源
了解什么樣的 FPGA 資源可用以及何時(shí)是最佳利用時(shí)機(jī)至關(guān)重要。一般會(huì)有綜合指令來(lái)定義使用哪些資源。例如,塊 RAM 最適合深存儲(chǔ)器 (deepmemory)需求,而分布式 RAM 適用于寬總線,尤其是在局部時(shí)鐘為高速數(shù)據(jù)計(jì)時(shí)的情況下。塊 RAM 和分步式 RAM在控制信號(hào)具有較大扇區(qū)出時(shí)會(huì)出現(xiàn)某種問題。重復(fù)控制信號(hào)并且采用布局規(guī)劃技巧把塊與相同信號(hào)融合在一起有助于維持可重復(fù)結(jié)果。
移位寄存器會(huì)降低設(shè)計(jì)的利用率,而其能夠促進(jìn)可重復(fù)性。有一些性能問題值得注意。SRL 的時(shí)鐘到輸出比觸發(fā)器的時(shí)鐘到輸出慢; 因此,最好把觸發(fā)器用作移位寄存器的最后一級(jí)。大部分綜合工具都能自動(dòng)實(shí)現(xiàn)這一點(diǎn),但是,如果涉及移位寄存器的路徑出現(xiàn)問題,則最好確認(rèn)其最后一級(jí)是否為寄存器。
初始寄存器也存在類似問題。SRL前端設(shè)置觸發(fā)器能讓放置器有更多選以擇滿足時(shí)序要求,進(jìn)而維持結(jié)果。同樣,大部分綜合工具都能自動(dòng)實(shí)現(xiàn)這一點(diǎn),但是,如果涉及移位寄存器的路徑出現(xiàn)問題,則最好確認(rèn)其最后一級(jí)是否為寄存器。
FPGA 有許多寄存器,從而使得流水線技術(shù)可在提高性能方面發(fā)揮重要作用。其中,重要的一點(diǎn)是禁用經(jīng)多重流水線優(yōu)化的觸發(fā)器 SRL 推論。上文引用的關(guān)于 HDL 編碼實(shí)踐的白皮書 (WP231)提供了關(guān)于塊 RAM 的更多信息。有關(guān)移位寄存器的更多信息,請(qǐng)參閱 WP271 《借助 SRL16E 節(jié)約成本》 (http://www.xi l inx.com/support/docume n t a t i o n /wh i t e _ p a p e r s /wp271.pdf ) 。
時(shí)鐘域問題
設(shè)計(jì)人員必須慎重正確約束跨越不相關(guān)時(shí)鐘域的路徑。相關(guān)工具會(huì)自動(dòng)關(guān)聯(lián)來(lái)自相同源時(shí)鐘 (如 DCM)的時(shí)鐘。PERIOD 約束條件也能關(guān)聯(lián)外部時(shí)鐘。不是器件內(nèi)部創(chuàng)建的無(wú)關(guān)時(shí)鐘需要特殊考慮。系統(tǒng)默認(rèn)不約束此類時(shí)鐘。如果有特殊時(shí)序考慮,設(shè)計(jì)人員必須采用FROM:TO 約束條件正確約束相關(guān)路徑。DATAPATHONLY 關(guān)鍵詞會(huì)指示相關(guān)工具在等式中不包含時(shí)鐘偏移。
更多信息,請(qǐng)參閱 UG625 《賽靈思約束條件指南》 ( http://www.xilinx.com/support/documentation/ sw_manuals/xi l inx11/cgd.pdf )或者 WP257 《何為PERIOD 約束條件?》 (http://www.xilinx.com/support/documentation/ white_papers/wp257.pdf)之中的 “異步時(shí)鐘域”章節(jié)。
另外關(guān)鍵一點(diǎn)是確保不發(fā)生競(jìng)態(tài)狀態(tài)。從一個(gè)領(lǐng)域跨越另一個(gè)領(lǐng)域時(shí)可以采用 FIFO。否則,設(shè)計(jì)人員需要雙重同步一個(gè) (僅有一個(gè))控制信號(hào),并且在接收時(shí)鐘域利用其接收其它信號(hào)。
高扇出信號(hào)
高扇出信號(hào)通常會(huì)成為設(shè)計(jì)中的決定因素。即使大部分綜合工具支持扇出控制,在 HDL 中復(fù)用這些信號(hào)來(lái)得到可重復(fù)性更高的結(jié)果也是明智之舉。設(shè)計(jì)人員應(yīng)該把這種策略和指令結(jié)合起來(lái),以確保綜合工具不會(huì)移除這些重復(fù)信號(hào)。如果一個(gè)高扇出信號(hào)位于邏輯頂層,則可以復(fù)用該信號(hào),然后用單獨(dú)信號(hào)驅(qū)動(dòng)每一個(gè)頂層模塊。
如果綜合工具扇出控制不能得到預(yù)期結(jié)果并且無(wú)法修改 HDL,那么在BRAM 的 MAP 邏輯中采用寄存器復(fù)用約束條件以及最高扇出約束條件,往往會(huì)產(chǎn)生比綜合更好的寄存器復(fù)用選擇。更多相關(guān)信息,請(qǐng)參閱 《約束條件指南》(UG625) 中的 MAX_FANOUT。做為一個(gè)常見的調(diào)試問題,跨越層級(jí)時(shí)保持一致的信號(hào)名稱更便于追蹤存在問題的路徑。如果信號(hào)名稱經(jīng)常改變,則很難追蹤時(shí)序報(bào)告和其它調(diào)試輸出。把信號(hào)方向放入所有模塊或?qū)嶓w的端口定義中也有所裨益。
綜合優(yōu)化
綜合會(huì)對(duì)可重復(fù)結(jié)果產(chǎn)生巨大影響。如果從綜合過程得不到最佳輸出網(wǎng)表,就無(wú)法在實(shí)施工具中產(chǎn)生理想條件。設(shè)計(jì)人員可以采用多種綜合技術(shù)幫助改善實(shí)施結(jié)果。
在執(zhí)行綜合時(shí)采用時(shí)序約束條件至關(guān)重要。用戶往往會(huì)在綜合過程中過度約束,然后在賽靈思實(shí)施工具中放寬時(shí)序約束條件。這樣可以增加綜合工具負(fù)擔(dān), 從而減輕實(shí)施工具的負(fù)擔(dān)。
接下來(lái)使用綜合工具產(chǎn)生的時(shí)序報(bào)告。如果一條路徑在綜合與實(shí)施過程中無(wú)法滿足時(shí)序要求,則可以修改 HDL或綜合選項(xiàng),以便在綜合之后滿足時(shí)序要求。這樣可以在實(shí)施階段節(jié)約時(shí)間。
在綜合過程中得到可重復(fù)結(jié)果是在實(shí)施工具中得到可重復(fù)結(jié)果的最佳途徑。大多數(shù)綜合工具支持自下而上的流程,其為設(shè)計(jì)的頂層以及各個(gè)下層模塊建立了獨(dú)立綜合項(xiàng)目。用戶可以根據(jù)HDL 變更情況控制更新網(wǎng)表。大多數(shù)商用綜合工具都具有增量流程。
平面布局規(guī)劃的重要性
平面布局規(guī)劃把組件定位到設(shè)計(jì)中的一個(gè)具體位置或者范圍。這可以減少布局變化,從而提高設(shè)計(jì)的可重復(fù)性。通過平面布局規(guī)劃或者采用位置約束 (或兼而用之)通??梢詫?shí)現(xiàn)更高的性能。
也就是說,糟糕的平面布局規(guī)劃或位置約束會(huì)導(dǎo)致無(wú)法達(dá)到時(shí)序要求。平面布局規(guī)劃有一定技術(shù)含量,要求具備工具和設(shè)計(jì)方面的高級(jí)知識(shí)。你可以采用符合時(shí)序要求的實(shí)施結(jié)果做為指導(dǎo)原則來(lái)創(chuàng)建理想的布局。
如果主板需求是選擇引腳布局的
主要因素,FPGA 實(shí)施工具可能很難獲得時(shí)序維持可重復(fù)結(jié)果。但是設(shè)計(jì)人員可以借助多種有助于實(shí)現(xiàn)可重復(fù)性的技巧。
首先要清楚數(shù)據(jù)流。比如,數(shù)據(jù)會(huì)從中心 I/O 流向側(cè) I/O??梢园雅c總線相關(guān)的所有引腳保持在 FPGA 的同一領(lǐng)域,以此限制控制信號(hào)的布線距離。I/O總線控制信號(hào)布置在相關(guān)地址與數(shù)據(jù)總線附近。需要一起優(yōu)化的信號(hào)應(yīng)當(dāng)布置在一起。如果更關(guān)注主板布線,則在 I/O上利用流水線技術(shù)優(yōu)化寄存器有助于改進(jìn)引腳布局差強(qiáng)人意的 FPGA 布線。
區(qū)域組平面布局規(guī)劃
區(qū)域組平面布局規(guī)劃是一種高級(jí)平面布局規(guī)劃技術(shù),其定義了模塊在FPGA 之內(nèi)的位置。雖然該技術(shù)易于使用, 但常常被誤用, 從而導(dǎo)致所解決的問題比所造成問題更多這一糟糕平面布局結(jié)果。有一些出色平面布局規(guī)劃的總體指導(dǎo)原則可以幫助您避免走入上述誤區(qū)。應(yīng)當(dāng)使所有區(qū)域組保持相似的利用率。比如,應(yīng)避免讓一個(gè)分組利用率達(dá)到 60% 而讓另一個(gè)達(dá)到 99%。不要重疊區(qū)域組。唯一的例外情況是,如果兩個(gè)不同的區(qū)域組具有需要布置在一起的某些邏輯單元 , 則允許重疊 CLB 的一、兩行或列。此時(shí)用戶負(fù)責(zé)確保為兩個(gè)區(qū)域組約束提供足夠資源。
如果需要把設(shè)計(jì)的兩個(gè)不同邏輯部分放在相同物理位置,則應(yīng)當(dāng)把它們放入同一個(gè)區(qū)域組。一般允許一層嵌套,也就是父區(qū)域組中的一個(gè)子區(qū)域組。如果一個(gè)大區(qū)域組里的一小部分需要布置到某個(gè)狹窄區(qū)域, 則需要上述分層。僅對(duì)設(shè)計(jì)中的關(guān)鍵部分進(jìn)行平面布局規(guī)劃而讓相關(guān)工具決定非關(guān)鍵邏輯的布局非常重要。連接到固定資源 (如 I/O、收發(fā)器或處理器塊)的邏輯可能會(huì)從平面布局規(guī)劃中受益??梢圆捎庙樌麑?shí)施的結(jié)果做為準(zhǔn)則來(lái)確定布局或時(shí)序問題。諸如賽靈思 PlanAhead ™軟件 (圖 1)和時(shí)序分析器等工具有助于可視化顯示相關(guān)問題。
盡可能減少各個(gè)全局時(shí)鐘所用區(qū)域數(shù)量以及各個(gè)區(qū)域的時(shí)鐘 (區(qū)域與全局)數(shù)量一般會(huì)有所裨益。如果您準(zhǔn)備為某個(gè)時(shí)鐘域的增加更多邏輯,切勿過度約束,而應(yīng)當(dāng)進(jìn)行相應(yīng)規(guī)劃。如果某個(gè)時(shí)鐘域的時(shí)鐘全部投入使用,則很難找到有效布局。而 PlanAhead 軟件所提供的對(duì)齊時(shí)鐘域功能可以簡(jiǎn)化上述平面布局規(guī)劃工作。對(duì)于擁有 10 多個(gè)時(shí)鐘域的Virtex® FPGA 設(shè)計(jì)而言,當(dāng)前實(shí)施方案所用的時(shí)鐘域位于 .map 報(bào)告文件中, 同時(shí)還附帶了 UCF 約束條件。
有關(guān)區(qū)域組平面布局規(guī)劃的更多信息,請(qǐng)參閱 UG632 《PlanAhead用戶指南》 (h t t p : / / w w w . x i l i n x .com/suppor t /documentat ion/sw_ma n u a l s / x i l i n x 1 1 /Pl a nAh e a d _UserGuide.pdf)以及 UG633 《平面布局方法指南》 (http://www.xi l inx.com/support/documentation/sw_manuals/xilinx12_1/Floorplanning_Methodology_Guide.pdf) 。
塊、模塊與路徑定位Block RAM、FIFO、DSP、DCM 以及全局時(shí)鐘資源等核心器件的定位往往有助于實(shí)現(xiàn)可重復(fù)性。其最佳做法是著眼于良好布局,同時(shí)采用相關(guān)設(shè)計(jì)知識(shí)布局規(guī)劃。可以采用 reportgen – clock_regions design.ncd 創(chuàng)建相關(guān)報(bào)告。PlanAhead 軟件能夠鎖定關(guān)鍵模塊的全部布局信息。在下一輪中,實(shí)施布局保持不變,但是并不保存布線信息。有關(guān) PlanAhead 軟件定位約束條件的更多信息,請(qǐng)參閱 UG632 《PlanAhead 用戶指南》 、UG633 《平面布局規(guī)劃方法指南》以及相關(guān) PlanAhead 手冊(cè)的 “設(shè)計(jì)的平面布局規(guī)劃”章節(jié)。
如果鎖定整個(gè)模塊影響過大,則可以在 PlanAhead 軟件中鎖定某條關(guān)鍵路徑。但是使用該方法時(shí)應(yīng)當(dāng)慎之又慎。如果某條具體路徑導(dǎo)致某種主要問題,最好通過修改 HDL 來(lái)解決時(shí)序問題。否求。賽靈思 SmartGuide ™ 技術(shù)是另一種維持可重復(fù)結(jié)果的選擇,最適合不強(qiáng)求最高 QoR 或最高利用率的設(shè)計(jì)。如果設(shè)計(jì)保存和 SmartGuide 技術(shù)都不適用于一種設(shè)計(jì),則可以采用 SmartXplorer或 PlanAhead 軟件策略維護(hù)時(shí)序。
對(duì)于 QoR 需求較高的設(shè)計(jì), 有一些高級(jí)實(shí)現(xiàn)選項(xiàng)可以幫助維持時(shí)序??刂评寐释蔷S持可重復(fù)結(jié)果的關(guān)鍵。隨著設(shè)計(jì)規(guī)模增大,維持可重復(fù)結(jié)果的難度也隨之提高。整個(gè)設(shè)計(jì)階段始終采用相同軟件版本有助于實(shí)現(xiàn)可重復(fù)結(jié)果。
設(shè)計(jì)保存
PlanAhead 中的設(shè)計(jì)保存流程采用分區(qū),這是能夠保證可重復(fù)結(jié)果的唯一驗(yàn)證相關(guān)位置是否適當(dāng)。在定位這些BRAM、FIFO 與 DSP 器件時(shí)需要考慮到控制信號(hào)和數(shù)據(jù)流 (總線校準(zhǔn)) ??梢栽谙嚓P(guān) .map 報(bào)告文件中找到用于定位現(xiàn)有設(shè)計(jì)的時(shí)鐘域的約束條件。保持相同的時(shí)鐘域可以防止布局器 (Placer) 修改時(shí)鐘域分區(qū),因?yàn)楹笳邥?huì)改變?cè)O(shè)計(jì)的則, 應(yīng)限制使用具體時(shí)序路徑定位。
實(shí)現(xiàn)選項(xiàng)
實(shí)現(xiàn)工具中的多種選項(xiàng)都可以改進(jìn)可重復(fù)性?;诜謪^(qū)的設(shè)計(jì)保存是保存實(shí)現(xiàn)方案的最佳方法,但是它并不適合于所有的設(shè)計(jì)而且確實(shí)存在 HDL 設(shè)計(jì)要方法。設(shè)計(jì)保存的主要目的是保持模塊性能的一致性,以減少時(shí)序收斂階段花費(fèi)的時(shí)間。另外,它還要求用戶盡可能遵從良好設(shè)計(jì)實(shí)踐。
分區(qū)可以保存之前實(shí)現(xiàn)的設(shè)計(jì)的不變部分。如果分區(qū)網(wǎng)表保持不變,則實(shí)現(xiàn)工具可以采用復(fù)制 - 粘貼過程保證保存該分區(qū)的實(shí)現(xiàn)數(shù)據(jù)。通過保存實(shí)現(xiàn)結(jié)果,分區(qū)可以讓你在不影響已保存部分的情況下實(shí)現(xiàn)修改后的設(shè)計(jì)部分。在圖2 中,紅色模塊已經(jīng)修改并且得到實(shí)現(xiàn),而剩下的模塊已鎖定到位。
在 12.1 版和未來(lái)版本中, PlanAhead軟件和命令行工具將支持設(shè)計(jì)保存功能。如欲了解更多信息, 請(qǐng)參閱 WP362 《基于設(shè)計(jì)保存的可重復(fù)結(jié)果》 (http://www.xilinx.com/support/documentation/white_papers/wp362.pdf ) 與 UG748 《分層設(shè)計(jì)方法指南》 (http://www.xilinx.com/support/documentation/sw_manuals/xilinx12_1/Hierarchical_Design_Methodology_Guide.pdf)。
SmartGuide 技術(shù)
SmartGuide 技術(shù)在執(zhí)行實(shí)現(xiàn)方案時(shí)采用之前的實(shí)現(xiàn)結(jié)果作為起點(diǎn),其主要目的是減少運(yùn)行時(shí)間??梢赃w移引導(dǎo)布局與布線或者同時(shí)遷移二者,以便完成設(shè)計(jì)的布線或滿足時(shí)序要求。SmartGuide 技術(shù)最適合不強(qiáng)求 QoR 或利用率的設(shè)計(jì)。
以前版本的工具配套提供精準(zhǔn)引導(dǎo)(exact guide) 和杠桿 (leveraged) 引導(dǎo)。通常情況下,精準(zhǔn)引導(dǎo)方法過去會(huì)造成不可路由的設(shè)計(jì)。如果需要準(zhǔn)確保存,則建議流程是設(shè)計(jì)保存。SmartGuide 技術(shù)可替代杠桿引導(dǎo)。
設(shè)計(jì)人員經(jīng)常詢問是使用Smar tGuide 技術(shù)還是分區(qū)技術(shù),答案取決于在設(shè)計(jì)流程中所處位置。
SmartGuide 技術(shù)最適合進(jìn)行小型設(shè)計(jì)更改時(shí)的設(shè)計(jì)末期。采用此流程,可以很輕松確定所建議更改任務(wù)是否適合相關(guān)設(shè)計(jì)。分區(qū)技術(shù)需要更專注于提前遵循良好設(shè)計(jì)層次規(guī)則。在開始組織 HDL 時(shí)應(yīng)當(dāng)決定是否采用基于分區(qū)的設(shè)計(jì)保存流程。設(shè)計(jì)已經(jīng)遵循分區(qū)分層規(guī)則時(shí)則是例外情況。
如欲了解更多信息,請(qǐng)參閱 UG748《分層設(shè)計(jì)方法指南》 (ht tp: / /www.xi l inx.com/support /documentat ion/sw_manuals/xilinx12_1/Hierarchical_Design_Methodology_Guide.pdf )。
SmartXplorer
SmartXplorer 和 PlanAhead 軟件策略都是有助于實(shí)現(xiàn)時(shí)序收斂的相似工具,采用不同實(shí)現(xiàn)選項(xiàng)集確定最適合相關(guān)設(shè)計(jì)的結(jié)果。您可根據(jù)這些結(jié)果確定哪些布局可能產(chǎn)生更好的時(shí)序結(jié)果并且創(chuàng)建理想?yún)^(qū)域組布局規(guī)劃。不同的結(jié)果也可以指示某種設(shè)計(jì)問題。如果同一路徑在各次運(yùn)行時(shí)均失敗,則可以通過修改 HDL 消除時(shí)序問題。
在設(shè)計(jì)的最初階段,最好采用 MAP與 PAR 的默認(rèn)努力程度 (default effortlevel)。在最初階段采用太多高級(jí)選項(xiàng)可能會(huì)隱藏通過修改 HDL 即可輕松解決的時(shí)序問題。隨著器件利用率提高,工具會(huì)越來(lái)越難以達(dá)到滿足時(shí)序要求的解決方案。如果采用默認(rèn)選項(xiàng),則可以采用效用更高的選項(xiàng)獲取設(shè)計(jì)流程后期時(shí)序的最后幾皮秒, 從而維持時(shí)序結(jié)果。LUTS/FFS 利用率較低 (<25%) 或者其利用率較高 (>75%) 的設(shè)計(jì)很難實(shí)現(xiàn)一致的布局與布線。對(duì)于利用率較高的設(shè)計(jì), 應(yīng)當(dāng)注意其 slice 控制置位信號(hào)、復(fù)位信號(hào) (FPGA 一般不需要同步復(fù)位/置位)以及邏輯占用 (可以在 PlanAhead中輕松執(zhí)行)或 SRL/DSP48 推理超出預(yù)期的模塊。
高利用率的對(duì)立面是低利用率。對(duì)于所有組件類型的利用率均不超過 25%的設(shè)計(jì),低利用率算法可以起作用并且能夠?qū)崿F(xiàn)組件的緊密布局。但是, 如果 I/O 利用率超過 25%,則實(shí)現(xiàn)工具可以把設(shè)計(jì)分散開,以便把邏輯保持在 I/O 附近。I/O 的謹(jǐn)慎布局以及采用區(qū)域組能夠盡可能緩解上述問題。
軟件版本
在時(shí)序收斂階段應(yīng)當(dāng)盡量采用同一主要軟件版本。因?yàn)椴煌陌姹舅惴ㄒ舶l(fā)生改變,適用于一個(gè)版本的算法方法在其它情況下未必有效。另外,根據(jù)以前結(jié)果 (分區(qū)與 SmartGuide 技術(shù))獲得的方法可能不適用于主要版本。
促進(jìn)設(shè)計(jì)可重復(fù)性的最佳方法是在HDL 中遵循良好設(shè)計(jì)方法并且通過修改HDL 解決所有時(shí)序問題。如果不可行,則可以借助于綜合、布局規(guī)劃和實(shí)現(xiàn)技術(shù)?;诜謪^(qū)的設(shè)計(jì)保存是可以保證實(shí)例性能的流程。SmartGuide 技術(shù)是另一種可采用以前實(shí)現(xiàn)結(jié)果的解決方案。