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

NicoWei發表於2019-01-08

【部落格導航】 【導航】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

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

 

相關文章