天天看點

綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式

 1. 建立綜合運作

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

綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式

或在Design Runs視窗中:

綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式
綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式
綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式
綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式

 2. 綜合方式選擇

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

綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式
綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式

 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”執行個體。這個檔案的作用就是跟着工程中的其他檔案一起進行綜合過程。 

綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式

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

OOC具有如下的特點:

  • 底層的OOC子產品相對于頂層子產品獨立運作,并擁有自己的限制集合;
  • 運作了OOC子產品之後,再運作頂層子產品綜合時可直接調用OOC綜合結果,而不需要重新運作一次綜合(除非修改了RTL設計或限制)。

   針對使用者邏輯

           選擇需要添加到OOC運作的子產品,右鍵->Set As Out-Of-Context for Synthesis,彈出如下視窗:

綜合篇(四):Vivado中Global和Out-of-context(OOC)綜合模式 1. 建立綜合運作 2. 綜合方式選擇 Global模式OCC模式

        其中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檔案一起運作實作步驟