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


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

IOB約束

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

1、在strategy設置【Map Design-IO Registering】為Auto

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

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,

3、確保輸入信號不被優化,可使用/* 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是否符合預期

方法1、打開【Tools-Spreadsheet View】,點擊“Cell Mapping”選項卡,查看對應輸入輸出管腳的PIO Register是否為True。

方法2、也可以使用Follrpaln和Physical View查看:

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

2、找到net之后,右鍵,使用Physical View查看。

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

查看信號延時

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

關於時序收斂 

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

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

1、綜合Syplify Pro設置:

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

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

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

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

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

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

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

8、關注logic levels是否過多。

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

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

 

297M高速設計幾點原則:

1、FIFO或RAM要設置輸出寄存(Lattice默認打1拍,寄存后,相當於打2拍輸出)

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

3、后端約束使用位置約束(Lattice使用UGROUP)

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

5、一些相對固定的變量,比如分辨率res_mode,顯示模式disp_mode,可以在后端約束里,用BLOCK將其進行時序忽略。

 

 

 

   

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM