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