綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式

1. 創建綜合運行

         一個“運行”(Run)是指定義和配置綜合過程中的各個方面,包括:使用的Xilinx器件、應用的約束集、啓動單個或多個綜合的選項、控制綜合引擎結果的選項。點擊Flow菜單中的Create Funs:

或在Design Runs窗口中:

 

 

 


 2. 綜合方式選擇

   針對定製IP時候,會有一個綜合方式(Synthesis Options)的選擇:Global和Out-of-context,如下圖

 


 Global模式

     如果選擇的是全局綜合選項,那IP生成的文件將會和其他的用戶文件一起進行綜合,這也就意味着,每一次用戶文件被修改後,IP都會跟着一起綜合一遍。

 

 


OCC模式

        OOC是Vivado開發套件提供的一項技術,該綜合模式本質上是一種自底向上(bottom-up)的綜合方法,該方法可用於IP、IPI(IP Integrator)的Block Design以及選擇將HDL對象(即用戶邏輯)當作一個隔離模塊運行  完成自底向上的綜合流程。

針對定製IP

       由於不需要每次綜合時都運行整個設計,這項技術可以大大減少頂層模塊的綜合運行時間。IP核就是典型的採用OOC技術的代表,配置好IP核後可以選擇綜合模式爲global(與頂層設計一起綜合)或Out-of-context(作爲獨立模塊綜合),最好的做法就是選擇後者,以減少整體設計的綜合運行時間。

       OOC選項是Vivado給我們的默認選項,在OOC模式下,Vivado將會把生成的IP當成一個單獨的模塊來進行綜合,生成.dcp (design checkpoint)文件。同時會使用一個只在OOC模式下有用的約束文件“_ooc.xdc”。 除了生成.dcp文件,OOC還會生成一個以”stub”結尾的HDL文件,是當前IP設計的一個黑盒文件,其實就是隻有輸入輸出端口,沒有其他內容,如下圖所示是一個FIFO IP的”char_fifo_stub.v”實例。這個文件的作用就是跟着工程中的其他文件一起進行綜合過程。 

 

最後,在”implementation”階段,OOC生成的.dcp文件中的網表文件將和其他設計文件綜合後生成的網表文件一起。

 

OOC具有如下的特點:

  • 底層的OOC模塊相對於頂層模塊獨立運行,並擁有自己的約束集合
  • 運行了OOC模塊之後,再運行頂層模塊綜合時可直接調用OOC綜合結果,而不需要重新運行一次綜合(除非修改了RTL設計或約束)。

   針對用戶邏輯

           選擇需要添加到OOC運行的模塊,右鍵->Set As Out-Of-Context for Synthesis,彈出如下窗口:

        其中Clock Constraint File必須創建一個新的XDC文件或在下拉菜單中選擇一個已經存在的XDC文件,該約束文件中要有該模塊時鐘信號的相關約束。點擊OK後,該模塊會出現在Design Runs窗口的Out-of-Context Module Runs目錄中,還有Compile Order窗口的Block Sources目錄中。

       當運行了OOC綜合後,會產生底層模塊的綜合網表存根文件(stub文件)。存根文件僅描述了底層模塊的輸入和輸出,在綜合頂層模塊時,通過存根文件來調用底層模塊,模塊內部當作黑盒子看待。運行實現時,Vivado會將OOC模塊的綜合網表插入到頂層網表中,從而完成設計。


導入網表文件

       可以通過  實例化低層次網表 或第三方網表來手工構造一個自底向上的設計流程。但需要知道,Vivado綜合工具不會綜合和優化網表,因此XDC約束和綜合屬性也不會對導入的網表產生作用。事實上,Vivado綜合時既不會讀取也不會修改網表中的內容。可以按照如下流程完成相關處理:

  1.        創建低層次網表:創建一個工程,以要導入的網表作爲頂層模塊,將Settings->Synthesis->More Options設置爲**-mode out_of_context**。這樣綜合時不會爲該模塊產生I/O緩存器。綜合後,在Tcl控制檯輸入write_edif name.edf。
  2.       設計中實例化低層次網表:頂層設計需要將低層次模塊作爲黑盒子實例化,類似於前面提到的stub文件。因此需要創建一個Verilog/VHDL文件,僅定義網表的端口,信號名稱必須與網表中的端口名稱完全匹配。
  3.        組合爲完整設計:當創建了OOC模式的低層次網表,並且在頂層設計中正確地實例化後,將第一步導出的edif網表添加到工程中。綜合後,Vivado會將網表合併到頂層設計中。

 


Vivado IP和第三方綜合工具

大多數Xilinx發佈的IP核採用IEEE P1735進行加密,只有Vivado綜合工具才支持對IP核的綜合,第三方綜合工具不能綜合Vivado中的IP核。如果想把Vivado中的IP核在第三方綜合工具中實例化,可以參考如下步驟:

在Managed IP工程中(Vivado首頁->Tasks->Manage IP)創建並配置好IP核。
生成IP核的輸出文件,包括綜合設計檢查點(DCP文件)。Vivado會創建一個stub文件(*_stub.v/*_stub.vhd),該文件會包含一些指令阻止從該文件中推斷出I/O緩存器。根據使用的第三方綜合器可能需要修改此文件。
使用Vivado綜合帶有stub文件的Xilinx IP核。
使用第三方綜合工具產生的網表和Xilinx IP核的DCP文件一起運行實現步驟

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章