【心得】Lattice Diamond 後端約束實戰小結

【博客導航】 【導航】FPGA相關html

IOB約束

參考《插入IO寄存器和位置約束---lattice&diamond》,推薦的方法是:後端

一、在strategy設置【Map Design-IO Registering】爲Autoapp

二、修改代碼接口描述,添加/* synthesis syn_useioff = 1*/語句(也能夠不加,見第3條),如:ide

1     input                    VSRC_CLK          /* synthesis syn_useioff = 1*/,//I1,
2     output    wire           VSRC_RESET        /* synthesis syn_useioff = 1*/,//O1,
3     input                    VSRC_VS           /* synthesis syn_useioff = 1*/,//I1,
4     input                    VSRC_DE           /* synthesis syn_useioff = 1*/,//I1,
5     input            [15:0]  VSRC_D            /* synthesis syn_useioff = 1*/,//I16,

三、確保輸入信號不被優化,可以使用/* synthesis syn_preserve=1 */,將輸入打拍的信號保留住。(注:這個纔是關鍵,工具備時不理解爲什麼要將輸入信號多打幾拍,就擅自幫咱們將信號給優化了,這些須要保留的信號,都要使用preserve進行保留。) 工具

1     //----------------------------------------------------------------------------
2     // Register & Wire Definition
3     //----------------------------------------------------------------------------
4     reg        [5:0]     hdmi_vs_dy,hdmi_hs_dy,hdmi_de_dy;
5     reg        [15:0]    hdmi_dat_d0/* synthesis syn_preserve=1 */;
6     reg        [15:0]    hdmi_dat_d1/* synthesis syn_preserve=1 */;
7     reg        [15:0]    hdmi_dat_d2/* synthesis syn_preserve=1 */;

檢查IOB是否符合預期

方法一、打開【Tools-Spreadsheet View】,點擊「Cell Mapping」選項卡,查看對應輸入輸出管腳的PIO Register是否爲True。post

方法二、也可使用Follrpaln和Physical View查看:優化

一、在Map以後,打開Floorplan View,使用Ctrl+f進行net的查找,能夠按 video_input_top_16b_inst0/video_in_inst/hdmi_dat_d0 方式,從TOP層層下去找到第一級寄存器信號名。spa

二、找到net以後,右鍵,使用Physical View查看。設計

管腳VSRC_0_D[4]旁邊的後綴爲MGIOL的模塊,就是PIO Register。若沒放入IOB,則前綴IOL_的模塊不是藍色。code

查看信號延時

在Physical View,查找某個PIN腳信號,好比VSRC_1_CLK(類型選擇component),而後點擊該模塊下邊的net,右鍵Pin Pair Delay可查看該信號延時。

關於時序收斂 

參考官網的幫助文檔,Timing Closure 3.10

該文檔102頁,關於時序收斂的一些建議:

一、綜合Syplify Pro設置:

  • 打開Pipelining and retiming
  • 關閉Resource Sharing
  • 可使用sdc文件

二、查看Synplify Pro的報告,關注時鐘頻率的估計值。

三、Map設置:檢測未約束的鏈接和路徑;設置full name;Report Style選擇Error Timing Report,這樣只顯示error的路徑,方便快速定位問題。

四、第36頁給出優化時序的建議:

五、使用GSR資源。Syplify設置裏建議關閉,在MAP設置裏打開。

六、使用PAR_ADJ關鍵字,使得在PAR階段按過約束的頻率進行P&R,但在TRACE分析時按正常頻率分析(第46頁、71頁)。

七、嘗試將關鍵路徑UGROUP(第82頁),以及97頁的Packing相關邏輯。

八、關注logic levels是否過多。

進一步的詳細幫助信息,可下載13.8M的《Lattice_Diamond_3_10_3_Help.pdf》。

《Lattice_Diamond_3_10_3_Help.pdf》第496頁,給出UGROUP的具體用法,參考該方法進行位置約束以下:

 

297M高速設計幾點原則:

一、FIFO或RAM要設置輸出寄存(Lattice默認打1拍,寄存後,至關於打2拍輸出)

二、涉及大位寬比較時,使用減法器替代加法器,就只用和0進行比較。

三、後端約束使用位置約束(Lattice使用UGROUP)

四、計數器不能大於11bit,大於的就只能拆分。

五、一些相對固定的變量,好比分辨率res_mode,顯示模式disp_mode,能夠在後端約束裏,用BLOCK將其進行時序忽略。

 

 

 

   

=======================

by NicoWei
2019-3-16 22:20:08

=======================

相關文章
相關標籤/搜索