Vivado当中的ooc与global模式

OOC-脱离上下文

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,行为仿真文件(_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。

OOC global综合差异

ooc和global只是IP的synthesis过程发生的时间点的差别,一个是预先synthesis,一个是跟整个工程一起synthesis。

无论是在哪个时间点综合,IP自身都是相对独立综合的,因为综合过程中IP的边界是自动加了dont_touch约束的。因此综合过程的优化差别也不大。

IP核重新generate,整个工程势必也是重新跑了一次,就是一次不同的布局布线而得到了一个不同的结果。

转载于:https://www.cnblogs.com/lafiizh/p/10548622.html

你可能感兴趣的:(Vivado)