Vivado工作模式简介

作者:默宸,来源:FPGA技术联盟微信公众号

01. Vivado的两种工作模式

Vivado设计有工程和非工程两种模式:

1. 工程模式:

工程模式是使用Vivado Design Suite自动管理设计源文件、设计配置和结果,使用图形化Vivado集成设计环境(IDE)交互式处理设计。工程模式下,既可以通过图像界面下操作(GUI操作,鼠标操作),也可以通过运行Tcl脚本的方式在Vivado Tcl shell 中运行。

优势:

工作模式的主要优势在于Vivado Design Suite管理整个设计过程,包括依赖关系管理,报告生成,数据存储等。

在工程模式下,Vivado工具可自动管理您的设计流程和设计数据;在工程模式下工作时,Vivado Design Suite会在磁盘上创建目录结构,以便在本地或远程管理设计源文件,并管理源文件的更改和更新。

工程基础结构还用于管理自动综合和实施运行,跟踪运行状态以及存储综合和实施结果和报告。

例如:

• 如果在综合后修改HDL源,Vivado Design Suite会将当前结果标识为过时,并提示您进行重新合成。

• 如果修改设计约束,Vivado工具会提示您重新综合,重新实现或两者兼而有之。

• 布线完成后,Vivado工具会自动生成时序,DRC,方法和电源报告。

• 只需在Vivado IDE中单击即可运行整个设计流程。

2. 非工程模式:

非工程模式是使用Tcl脚本流程,在非工程模式下,需要自己管理设计源文件和设计过程。源文件只能从当前位置访问,不能将其复制到其它位置。设计结果保留在已分配给Vivado工具进程的机器内存中。使用Tcl命令来设置设计参数和实现选项。您可使用Tcl在设计过程的任何阶段保存设计检查点(DCP)并生成报告。每个设计步骤都可通过Tcl命令独立控制。

优势:

关键优势在于您可以完全控制流程的每个步骤。相比于工程模式的自动化管理,非工程模式就更加灵活,可操作性强。

可以使用Tcl命令单独运行每个设计步骤。您还可以使用Tcl命令设置设计参数和实现选项。

您可以在设计过程的任何阶段保存设计检查点并创建报告。每个实施步骤都可以定制,以满足特定的设计挑战,您可以在每个设计步骤后分析结果。此外,您可以随时打开Vivado IDE进行设计分析和约束分配。

例如:

• 如果在综合后修改HDL文件,则必须记住重新运行综合以更新内存中的网表。

• 如果在布线后需要时序报告,则必须在布线完成时显式生成时序报告。

• 使用Tcl命令和参数设置设计参数和实现选项。

• 您可以使用Tcl在设计过程的任何阶段保存设计检查点并创建报告。

随着设计流程的进展,设计的表示将保留在Vivado Design Suite的内存中。非工作模式会在每次会话后丢弃内存设计,并仅将数据写入您指示的磁盘。

02. 工程模式和非工程模式的比较

工程模式下Vivado集成环境会跟踪设计历史,并且保存相关设计信息,这种自动管理的模式致使开发人员处理GUI操作过程中很少能够参与到更加具体执行过程。比如,工程模式下每次运行只生成一组标准的报告。vivado提供如下功能:

源文件的管理;

IP的配置和集成;

综合信息和自动生成标准的报告;

保存和重用工具设置和设计设置;

创建多个synth runs和impl runs进行实验;

运行结果的管理;

流程导航(Flow Navigator);

工程总结。

非工程模式,更像是一种编译方法,您可以完全控制通过Tcl命令执行的每个操作。这是一个完全可定制的设计流程,适合寻求控制和批处理的特定设计人员。所有处理都在内存中完成,因此不会自动生成任何文件或报告。每次编译设计时,都必须定义所有源,设置所有工具和设计配置参数,启动所有实现命令以及生成报告文件。

2.1 特性比较

非工程模式下,是通过Tcl命令执行每个操作,是在存储器中执行所有处理,故不会自动生成文件或者是报告。在每次编译的时候必须指定所有源文件,设置所有工具和设计配置的参数,启动所有实现命令,指定所需要生成的报告文件。在该模式下并没有在磁盘中创建一个工程,故源文件会保留在最初的位置,只会在设计者指定的位置创建运行输出。这个流程充分发挥Tcl命令的控制能力,可充分控制整个设计过程。

2.2 命令比较

首先,工程模式下包含所有GUI操作,这样导致绝大多数情况下执行一个Tcl命令。Tcl命令会在Vivado的控制台(console)显示,并在vivado.jou文件中捕获。开发人员可以利用这个文件开发用于其中一种模式的脚本。

两种模式下都可以运行Tcl命令,但Tcl命令因您使用的模式而异,并且每种模式生成的Tcl运行脚本都不同。

如果在创建脚本的时候,在工程模式下使用了非工程模式的命令,那么数据库不会更新状态信息,并且也不会自动生成报告。例如,在“项目模式”中,使用add_files Tcl命令将源添加到项目以进行管理。可以将源复制到项目中以在项目目录结构中维护单独的版本,也可以远程引用。在非项目模式下,使用read_verilog,read_vhdl,read_xdc和read_ * Tcl命令从当前位置读取各种类型的源。

但可以看出有一些报告命令既可以用于工程模式也可以用于非工程模式下,如上图标记的报告命令:report_timing_summary。

非工程模式下的命令只能在Vivado Tcl Shell中运行,但这并不表示无法与图形界面方式交互使用。比如可以在Vivado Tcl Shell中执行start_gui命令就可以打开工具回到图形界面方式,通过GUI操作对设计进行分析,分析完成后可利用stop_gui命令回到Vivado Tcl Shell。

提示:项目模式包括GUI操作,这导致在大多数情况下执行Tcl命令。Tcl命令出现在Vivado IDE Tcl控制台中,也可以在vivado.jou文件中捕获。您可以使用此文件开发用于任一模式的脚本。

Project模式的优势在于可以创建多个runs来比较不同综合策略或实现策略对设计的影响,而Non-Project模式优势在于设计源文件、设计流程和生成文件可全部定制,并且相比于Project模式有更短的运行时间。

推荐阅读