盡管 Vivado 不支持 “placement cost tale”的功能,InTime 卻有一個相似功能叫做“Placement Exploration”配方(Receipe),并且不會對性能產生任何影響。在本文中,我們將通過展示幾則用戶案例的結果,來了解這個布局配方的作用以及它能對您有哪些幫助。
1. 什么是“Placement Exploration”配方?
Placement Exploration 這種策略可以將非關鍵的寄存器位置隨機化。這樣可以讓 Vivado 探索更多的可能性,使用不同的布局布線計算來產生不同的結果,同時不會影響設計的功能。
2. 運行原理
這個配方需要設計有一些非關鍵的單元(單元已經達到時序路徑),目標器件要有一些未使用的 slice。設計中未使用的 slice 越多,就有更多的運行組合可以創造出來,從而提升隨機性,取得更好的結果。
如果這些需要沒有滿足,用戶在運行配方的時候會看到下面的報錯。
這種情況下,您需要重新檢驗設計,看看是不是沒有假路徑(false path,適用于 InTime 2.2.1以前的版本)或者是不是器件可用的 slice 數量較少。如果是因為沒有假路徑,您可以查看是否可以為設計設置假路徑。
3. 真實案例
我們繼續前面案例。下面的代碼可以讓您使用FEP Tcl API 來在云端編譯:
項目一
· Device 器件: xcvu190
· TNS (ns) : -5841.436
· WNS (ns): -0.725
· WHS (ns): 0.016
· CLB Utilization 利用率 (%): 80.15
· Run Time 運行時間: 04:46
本設計優化了兩輪。每輪有20-30次編譯以及結果。對于 placement exploration,我們從前一輪的結果中選取最好的WNS 結果,在這個案例中,是-0.417ns。然后將它設置成“父版本”來進行探索。在下表(log)中,您可以看到結果中“種子”的作用,WNS 有著非常廣泛的分布值。最好 WNS結果的平均值是-0.694ns,產生了高達0.457ns的巨大變化。如果您對比最好 WNS 結果和上一輪的 Placement Exploration,WNS 顯著提升了43%。
圖一: TNS 盒狀圖
圖二: WNS盒狀圖
項目二
· Device器件: xcvu190-flgb2104
· TNS (ns) : -10229.035
· WNS (ns): -1.203
· WHS (ns): 0.016
· CLB Utilization 使用率(%): 75.71
· Run Time 運行時間: 04:33
與項目一相似,項目二也有兩輪優化。在第一輪中,目標是取得最好的WNS。我們使用上一輪最好的 WNS 結果(-0.404),運行一輪 placement exploration。基于 placement exploration 的結果, 平均值是-0.512ns。最好結果是-0.187,對于原父版本的結果來說,325ps是一個高達53%的巨幅提升。
圖三: 項目二 TNS
圖四: 項目二 WNS
4. 技術總結
結果的提升不言自明。如果您在為最終的300ps提升而奮戰,請考慮使用這個方法,它能幫您在截止日期之前達到要求。
最后一點需要說明的是,運行附加的編譯需要很多計算能力和運行時間。而最好的解決方案是云計算,您可以使用您自己的云服務,或者注冊一個 Plunify Cloud 賬戶。
編輯:hfy
-
寄存器
+關注
關注
31文章
5421瀏覽量
123300 -
Vivado
+關注
關注
19文章
828瀏覽量
68205
發布評論請先 登錄
如何使用One Spin檢查AMD Vivado Design Suite Synth的結果

Vivado 2018.3軟件的使用教程

Vivado Design Suite用戶指南: 設計分析與收斂技巧

Vivado Design Suite用戶指南:邏輯仿真

云計算環境下的IP地址分配方式
Xilinx_Vivado_SDK的安裝教程

每次Vivado編譯的結果都一樣嗎

vivado導入舊版本的項目,IP核心被鎖。
使用Vivado通過AXI Quad SPI實現XIP功能

Vivado使用小技巧

Vivado編輯器亂碼問題

淺談Vivado編譯時間

評論