在賽靈思FPGA設計中保留可重復結(jié)果
滿足設計的時序要求本身已非易事,而要實現(xiàn)某項設計的整體時序具有完全可重復性有時候卻是不可能的任務。幸運的是,設計人員可以借助有助于實現(xiàn)可重復時序結(jié)果的設計流程概念。影響最大的四個方面分別是 HDL 設計實踐、綜合優(yōu)化、平面布局和實施方案。
本文引用地址:http://www.ex-cimer.com/article/119148.htm就獲得可重復結(jié)果而言,資源利用和頻率要求都很高的設計是最大的挑戰(zhàn)。它們也是可重復結(jié)果流程需求最高的設計。得到可重復結(jié)果的第一步是在 HDL設計階段運用設計合理的實踐。遵循出色的分層邊界實踐有助于保持邏輯整體性,而這在設計變更時有助于保持可重復結(jié)果。一條不錯的規(guī)則就是把那些需要整體優(yōu)化、實施和驗證的邏輯放在同一層級。另外需要記錄模塊的輸入和輸出。這樣就可以把時序路徑保持在模塊內(nèi)部,從而避免模塊改變時引起相互影響。最后,把所有需要放入更大 FPGA資源 (如 Block RAM 或 DSP)的邏輯全部設置在相同層級。
邏輯電平
從所需 QoR 結(jié)果需要太多查詢表(LUT) 邏輯電平的設計很難獲得可重復結(jié)果。LUT 延遲一般不是問題所在,而問題是 LUT 之間的路由延遲。這在設計的高性能領域至關重要。
邏輯電平過多往往歸因于 i f /else結(jié)構較大和選擇語句較長。如果合適,可以采用 “ful l_case”和 “paral lel_case” Veri log 指令優(yōu)化較少邏輯的選擇語句,這種技巧一般能夠減少邏輯電平。較大的多路復用器或者解碼器可能造成路由擁塞,從而導致不可重復的結(jié)果。多級注冊多路復用器 / 解碼器路徑有助于解決此問題。對于加算器而言,用注冊的加算器鏈代替注冊加算器樹可以提高性能。如果加算器全部注冊的話,則鏈會比樹造成更長時延。有關編碼最佳實踐的更多信息, 請參考賽靈思白皮書 《提高設計性能的 HDL 編碼實踐》 (WP231), http://www.xilinx.com/support/documentation/white_papers/wp231.pdf。
復位與其他控制信號
復位的選擇會影響到設計的性能、面積和功率。加電時電路初始化并不需要全局復位,但是它會對設計過程中能夠采用的資源類型產(chǎn)生重大影響。如果在 HDL 中存在全局復位,則無法推斷移位寄存器。一個移位寄存器產(chǎn)生的可重復結(jié)果比十個寄存器還多。
另外,DSP 和塊 RAM 寄存器僅僅包含同步復位。如果編碼中包含異步復位,則無法使用此類寄存器,從而迫使設計中轉(zhuǎn)而使用可配置邏輯塊 (CLB)寄存器。而把寄存器放入 DSP、塊 RAM 或者同時放入二者中更容易保持相同結(jié)果。在一般邏輯中運用同步重置可減少邏輯電平。slice 寄存器能擁有異步或同步復位。如果設計采用同步復位,那么組合邏輯就可以采用同步置位。這樣就可以降低一個 LUT 的邏輯電平。
一個控制置位包含一組獨特的時鐘、時鐘啟用、置位與復位信號,而且在分布式 RAM 中還包含可寫入信號??刂浦梦恍畔⒎浅V匾?,因為寄存器必須共享封裝在同一片中的同一控制置位信號。這可能影響封裝和利用率, 造成可重復結(jié)果問題。有關復位的更多信息,請參閱賽靈思 WP272 《復位訣竅: 考慮局部而非全局》 (http://www.xilinx.com/support/documentation/white_papers/wp272.pdf) 。有關控制置位的更多信息,請參閱WP309 《Spartan®-6 FPGA 定向與重定向指南》 (http://www.xilinx.com/support/documentation/white_papers/wp309.pdf ) 。盡管此白皮書專用于 Spartan-6器件,但其中還包含了適用于所有 FPGA的有益通用信息。
了解FPGA資源
了解什么樣的 FPGA 資源可用以及何時是最佳利用時機至關重要。一般會有綜合指令來定義使用哪些資源。例如,塊 RAM 最適合深存儲器 (deepmemory)需求,而分布式 RAM 適用于寬總線,尤其是在局部時鐘為高速數(shù)據(jù)計時的情況下。塊 RAM 和分步式 RAM在控制信號具有較大扇區(qū)出時會出現(xiàn)某種問題。重復控制信號并且采用布局規(guī)劃技巧把塊與相同信號融合在一起有助于維持可重復結(jié)果。
移位寄存器會降低設計的利用率,而其能夠促進可重復性。有一些性能問題值得注意。SRL 的時鐘到輸出比觸發(fā)器的時鐘到輸出慢; 因此,最好把觸發(fā)器用作移位寄存器的最后一級。大部分綜合工具都能自動實現(xiàn)這一點,但是,如果涉及移位寄存器的路徑出現(xiàn)問題,則最好確認其最后一級是否為寄存器。
初始寄存器也存在類似問題。SRL前端設置觸發(fā)器能讓放置器有更多選以擇滿足時序要求,進而維持結(jié)果。同樣,大部分綜合工具都能自動實現(xiàn)這一點,但是,如果涉及移位寄存器的路徑出現(xiàn)問題,則最好確認其最后一級是否為寄存器。
FPGA 有許多寄存器,從而使得流水線技術可在提高性能方面發(fā)揮重要作用。其中,重要的一點是禁用經(jīng)多重流水線優(yōu)化的觸發(fā)器 SRL 推論。上文引用的關于 HDL 編碼實踐的白皮書 (WP231)提供了關于塊 RAM 的更多信息。有關移位寄存器的更多信息,請參閱 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 ) 。
時鐘域問題
設計人員必須慎重正確約束跨越不相關時鐘域的路徑。相關工具會自動關聯(lián)來自相同源時鐘 (如 DCM)的時鐘。PERIOD 約束條件也能關聯(lián)外部時鐘。不是器件內(nèi)部創(chuàng)建的無關時鐘需要特殊考慮。系統(tǒng)默認不約束此類時鐘。如果有特殊時序考慮,設計人員必須采用FROM:TO 約束條件正確約束相關路徑。DATAPATHONLY 關鍵詞會指示相關工具在等式中不包含時鐘偏移。
更多信息,請參閱 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)之中的 “異步時鐘域”章節(jié)。
另外關鍵一點是確保不發(fā)生競態(tài)狀態(tài)。從一個領域跨越另一個領域時可以采用 FIFO。否則,設計人員需要雙重同步一個 (僅有一個)控制信號,并且在接收時鐘域利用其接收其它信號。
評論