如何發(fā)現(xiàn)并解決FPGA設(shè)計(jì)中的時(shí)序問(wèn)題
時(shí)序問(wèn)題不同,在PlanAhead軟件中處理這些時(shí)序問(wèn)題的解決方案也跟著變化。在PlanAhead設(shè)計(jì)工具中解決時(shí)序問(wèn)題需要不斷實(shí)踐。該解決方案體現(xiàn)以下操作步驟中:
1. 選擇高亮顯示失敗的時(shí)序路徑。
2. 右擊路徑上的某個(gè)實(shí)例,選擇“Highlight With →color of choice”。
3. 在左側(cè)欄中,將底部第二個(gè)Mult18釋放。右擊“Unplace。這將為時(shí)序失敗的塊RAM騰出空間。
4. 點(diǎn)擊拖動(dòng)底部的Mult18向左上移動(dòng)一個(gè)位置。
5. 點(diǎn)擊拖動(dòng)右邊的塊RAM到底部左側(cè)的自由塊RAM位置。
6. 選定失敗的時(shí)序路徑,確認(rèn)路徑看起來(lái)是優(yōu)化的。
7. 選擇“Tools→Clear PlacementConstraints”。點(diǎn)擊第一個(gè)選項(xiàng)中的“Next”。
8. 選擇“Unplace All But SelectedInstances”。在余下的向?qū)Р襟E點(diǎn)擊“Next”。
9. 如果希望在“PlanAhead軟件外運(yùn)行實(shí)施流程,選擇“File →Export Floorplan”。
10. 工具會(huì)輸出一個(gè)新的文件名為“top.ucf”的UCF文件。你可直接使用這一文件,或者將文件中的約束加入到原始UCF中。
11. 另一個(gè)選擇是在PlanAhead軟件內(nèi)運(yùn)行實(shí)施工具。
選擇“Tool→Run ISE Place Route with ExploreAhead。
ExploreAhead提供了許多很好的功能,包括:自動(dòng)從器件觀察窗導(dǎo)入約束到UCF;簡(jiǎn)化了從ExploreAhead中運(yùn)行的布局和時(shí)序結(jié)果的導(dǎo)入。
圖2. PlanAhead 10.1版軟件顯示出將DSP48和塊RAM鎖定后的正確路徑。
Pblock和底層規(guī)劃
如果發(fā)現(xiàn)布局中有許多時(shí)序失敗路徑,手工布局調(diào)整通常無(wú)法解決問(wèn)題。反過(guò)來(lái),應(yīng)當(dāng)創(chuàng)建區(qū)域組。創(chuàng)建區(qū)域組(Pblock)的方式之一是在網(wǎng)表窗口中右擊模塊名字并選擇“Draw Pblock”。然后在器件觀察窗中希望放置區(qū)域組的地方畫(huà)一個(gè)長(zhǎng)方形。
工具會(huì)創(chuàng)建一個(gè)Pblock,同時(shí)會(huì)顯示有關(guān)的詳細(xì)信息。屬性窗口會(huì)顯示Pblock需要的邏輯資源以及畫(huà)出的長(zhǎng)方形區(qū)域組中可用的資源。
設(shè)計(jì)的底層規(guī)劃是一個(gè)需要深度交互的過(guò)程。你可能會(huì)發(fā)現(xiàn)需要反復(fù)多次調(diào)整區(qū)域組才能夠達(dá)到目標(biāo)。請(qǐng)記住有時(shí)創(chuàng)建的區(qū)域組越小越少越好。你并不是總需要將整個(gè)模塊固定為區(qū)域組。集中于時(shí)序失敗的基本單元,將它們組合為區(qū)域組并單獨(dú)為其進(jìn)行底層規(guī)劃。
在此過(guò)程中,應(yīng)當(dāng)利用Pblock指標(biāo)(Metrics)來(lái)更好地理解有關(guān)功能,如區(qū)域組中可配置的邏輯塊(CLB)的利用情況如何(可以在PlanAhead軟件左上窗口中點(diǎn)擊Metrics標(biāo)簽來(lái)查看可用的指標(biāo))。這可幫助確定是否某個(gè)特定區(qū)域中太擁擠以致妨礙布線。如果確實(shí)比較擁擠,可能需要通過(guò)平面規(guī)劃將設(shè)計(jì)邏輯放得散開(kāi)一些。
一旦利用PlanAhead軟件獲得盡可能好的時(shí)序分?jǐn)?shù),最后的任務(wù)就是優(yōu)化代碼。PlanAhead設(shè)計(jì)工具現(xiàn)在支持HDL源文件。根據(jù)你導(dǎo)入的源文件不同,你可以從時(shí)序問(wèn)題出發(fā)通過(guò)交叉探查功能回查到網(wǎng)表或HDL。
利用原理圖觀察窗(Schematic view),可以察看整個(gè)時(shí)序路徑。只需要從時(shí)序結(jié)果中選擇時(shí)序路徑并按F4。仔細(xì)觀察從其他模塊扇入扇出的邏輯。由于外部接口要求,工具可能經(jīng)常需要將模塊在芯片上散開(kāi)部署。如果是這樣,可能需要使用流水線。
Block RAM和DSP輸出時(shí)序是引起時(shí)序問(wèn)題的常見(jiàn)原因。通過(guò)在這些模塊的輸出進(jìn)行存儲(chǔ),通常可以恢復(fù)一納秒甚至更多的時(shí)間。
評(píng)論