ooc(out of context)是在Vivado當中非常常用的概念。在ug1118中關於ip_core OOC模式下的約束文件的描述中有兩點:
- OOC約束的USED_IN屬性應該同時設置synthesis,implementation,out_of_context而不是只設置out_of_context;(page16)
- OOC約束在編譯的時候,處理順序早於非OOC約束的文件,甚至早於PROCESSING_ORDER設置成EARLY的情況。(page16)
概述
這個方面最詳細的內容在ug896的page36。Global和OOC本身是作為IP Package的generate output的生成選項存在的。
簡單一句話來概括兩者的關系就是:在OOC模式下,IP成為了一個完全的黑盒結構,它會以網表結構參與整個工程的綜合;而在Global模式下,IP核與頂層邏輯一起進行綜合,也被稱為Global synthesis,對原始文件的任何更改需要對整個工程和該IP進行重新綜合。(參見ug939(v2016.1) Page30)
OOC是默認的IP生成產物的生成方式,生成產物包括:XCI文件,dcp文件,changelog,行為仿真文件(<ip_name>_sim_netlist.v,應該是用來封裝網表黑盒的文件,此時應該只使用單獨語言種類的仿真器(沒說是不是應該對應)page40)。
DCP文件在其中最為重要(但是不能是只有dcp文件,見ug896,page36),dcp文件是一個容器,其中包含了網表和約束文件(_ooc.file和_in_context.xdc)。
在BD當中的OOC
Block design可以看做是IP的可視化的集合,相當於一個大的IP。這個東西也支持OOC模式,並且支持三個選項(參見ug995,v2016.4,page33),分別是Global,Out-of-Context per IP以及Out-of-context per BD。