在这里,我们简要介绍一下
Vivado
的
OOC
(
Out-of-Context
)综合的概念。对于顶层设计,
Vivado
使 用自顶向下的全局(Global
)综合方式,将顶层之下的所有逻辑模块都进行综合,但是设置为
OOC
方式的 模块除外,它们独立于顶层设计而单独综合。通常,在整个设计周期中,顶层设计会被多次修改并综合。
但有些子模块在创建完毕之后不会因为顶层设计的修改而被修改,如
IP
,它们被设置为
OOC
综合方式。 OOC 模块只会在综合顶层之前被综合一次,这样在顶层的设计迭代过程中,
OOC
模块就不必跟随顶层模块, 而一次次的产生相同结果的多余综合了。所以,OOC
流程减少了设计的周期,并消除了设计迭代,使您可 以保存和重用综合结果。
Out-of-Context(OOC)
综合是一种自底向上的设计流程,默认情况下,
Vivado
设计套件使用
OOC
的设 计流程来综合 OOC
模块。
OOC
模块可以是来自
IP Catalog
的
IP
、来自
Vivado IP Integrator
的
block design 或者顶层模块下手动设置为 OOC
方式的任何子模块。
来自
IP Catalog
的
IP
就默认使用
OOC
的综合方式,例如上图中的“
Synthesis Options
”选项就设置为 了“Out of Context Per IP
”。这些
IP
会在顶层的全局综合之前,单独地进行
OOC
综合并生成输出产品(
Generate Output Products),包括综合后的网表等各种文件。在对顶层进行综合时,
OOC
模块会被视为黑盒子,并且 不会参与到顶层的综合中来。在综合之后的实现过程中,OOC
模块的黑盒子才会被打开,这时其网表才是 可见的,并参与到全局设计的实现过程中来。