购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 out-of-context(OOC)综合模式

2.3.1 Project模式下使用OOC

out-of-context(OOC)综合模式本质上是一种自底向上(bottom-up)的综合方法,该方法可以应用于IP、IPI(IP Integrator)的Block Design及用户逻辑。这里着重介绍如何对用户逻辑使用OOC综合方法。

仍以Vivado自带的例子工程Wavegen为例。设定工程名为WaveGenOOC,打开该工程之后,选中uart_rx模块,单击右键就会出现如图2.27所示的界面,选择图中方框标记的选项,会弹出如图2.28所示的界面。在此界面中,Source Node指定了被设定为OOC综合的模块,Generate Stub的作用是告知Vivado在对顶层设计综合时,需要把uart_rx模块当作黑盒子(Black Box)对待(因为其在OOC模式下已被单独综合,有单独的网表文件)。

图2.27 选择OOC模式

图2.28 设置OOC选项

单击OK按钮之后,会出现如图2.29所示界面,显示设定OOC失败,并在Tcl Console窗口中给出CRITICAL WARNING(如图2.30所示)。注意其中加粗的斜体字,表明失败原因是实例化uart_rx时出现了参数传递。

图2.29 设定OOC失败

图2.30 设定OOC失败的警告信息

进一步分析,在uart_rx.v中定义了两个参数,如图2.31左侧所示,在顶层wave_gen.v中对这两个参数重新定义并在uart_rx.v实例化时执行参数传递,而这对于需要OOC综合的模块而言是不允许的。因此,做如下两点改动:

(1)直接将实际参数值写入uart_rx.v中;

(2)在顶层wave_gen.v中对uart_rx.v模块实例化时移除参数传递,如图2.31右侧所示。

重新设定OOC,弹出如图2.28所示界面,其中的New Fileset表明会生成一个新的文件夹uart_rx,Clock Constraint File表明会生成一个时钟约束文件,如图2.32所示。同时,uart_rx模块前多了一个实体方块,如图2.33中虚线框标记所示,表明此模块被设定为OOC综合模式。此外,在Design Runs窗口中,增添了uart_rx的单独综合,如图2.34中的虚线框标记所示。

图2.31 移除实例化时的参数传递

图2.32 OOC模块生成的文件目录

图2.33 设定为OOC综合的模块的图标

图2.34 设定为OOC综合的模块在Design Runs窗口中的体现

对于uart_rx_ooc.xdc文件,打开之后,内容为空,添加如Tcl脚本2.1所示的时钟约束,之后即可对uart_rx模块单独进行综合。注意,uart_rx_ooc.xdc并不需要添加到Vivado工程中,它会和图2.34中的uart_rx_synth_1自动关联起来,如图2.35所示。

Tcl脚本2.1 添加时钟约束

图2.35 uart_rx_synth_1关联的CONSTRSET

在如图2.34所示的Design Runs窗口中,选中uart_rx_synth_1,单击右键,出现如图2.36所示界面,选择虚线框标记,即可打开uart_rx_synth_1所在目录,可以看到生成的网表文件uart_rx. dcp。

图2.36 打开uart_rx_synth_1的运行目录

对于uart_rx_synth_1,打开运行结果,可以看到如图2.37所示的Schematic视图。此视图中,输入/输出引脚并没有插入I/O BUF。之后,可对该模块单独进行时序分析。

图2.37 uart_rx.dcp的Schematic视图

此外,对于已设定为OOC综合模式的模块,可撤销OOC设置,如图2.38中的虚线框所示。

图2.38 撤销OOC设置

结论

对于设定为OOC综合的模块:

· 在模块内部可以设定参数,但在该模块被实例化时不允许出现参数映射。

· 若包含其他IP,则该IP应设定为Global综合模式,而不能设定为OOC综合模式。

· 对所有时钟引脚要添加时钟周期约束。

2.3.2 Non-Project模式下使用OOC

在Non-Project模式下,使用OOC也非常容易操作。仍以Wavegen工程为例,需要将其中的uart_rx模块应用OOC综合模式。首先创建src文件夹,将相应的Verilog文件复制到该目录下,同时创建xdc文件夹和uart_rx_ooc.xdc文件,其中.xdc的文件内容为clk_rx的时钟周期约束,与Tcl脚本2.1一致。整体目录如图2.39所示。

图2.39 整体目录

在Vivado Tcl Shell中执行Tcl脚本2.2所示内容。注意,需要先将Vivado的工作目录切换到src所在目录。脚本运行完毕后可通过start_gui命令打开Vivado,回到图形界面下,查看综合后网表的Schematic视图。

Tcl脚本2.2 Non-Project模式应用OOC综合方法

在Tcl脚本2.2中,需要注意,读入xdc时要以out_of_context模式读入,综合时也要指定综合模式为out_of_context,如脚本中的下画线部分所示。 +ZiBIsTq4kLjJwEXHMg6gyoIUChLR6aYYNGV7s90XVoq9bX/Y5h2DdVq0yz606Uc

点击中间区域
呼出菜单
上一章
目录
下一章
×