Vivado设计套件允许设计者根据自己的习惯,使用不同的方法运行工具。设计者可以使用基于工程的方法自动管理设计过程和设计数据,也就是所说的工程模式(Project Mode)。当在工程模式下时,在磁盘上创建一个目录结构,用于管理设计源文件,运行结果和跟踪工程状态。通过一个运行结构,来管理自动地综合和实现过程,以及跟踪运行状态。可以通过单击鼠标,在Vivado集成环境内运行完整的设计流程。
另一种方法是,设计者可以选择基于Tcl脚本的编译风格方式。通过这种方式,设计者自己可以管理源文件和设计流程。这种方式也称为非工程模式(Non-Project Mode)。当在非工程模式下时,通过源文件当前所在的位置来访问源文件,以及通过存储器中的流程来编译设计。
①通过使用Tcl命令,可以单独运行设计中的每一步;
②使用Tcl命令,可以设置设计参数和实现选项;
③使用Tcl命令,设计者可以在设计处理的每个阶段,保存设计检查点和创建报告;
④此外,在每个设计阶段,设计者可以打开Vivado集成设计环境,用于设计分析和分配约束。
当设计者正在查看存储器中活动的设计时,会自动地提交流程中的变化。比如:设计者可以保存对新约束文件的更新或者设计检查点。
在工程模式下,Vivado集成设计环境跟踪设计历史,保存相关的设计信息。然而,在这种模式下,由于很多是过程自动处理的,所以设计者很少能控制处理的过程。例如在每次运行时,只是生成一组标准的报告文件。在工程模式下,提供了下面的自动处理功能:
(1)源文件管理和状态;
(2)通过Vivado IP目录和Vivado集成器,实现IP配置和集成;
(3)综合信息和自动生成标准的报告;
(4)保存和重用工具设置和设计配置;
(5)用多个综合和实现运行,进行探索;
(6)约束设置的使用和管理;
(7)运行结果的管理和状态;
(8)流程导航;
(9)工程总结。
在非工程模式下,通过使用Tcl命令,执行每个行为。在存储器中,执行所有的处理。因此,不会自动生成文件或者报告。当设计者每次对设计进行编译的时候,设计者必须定义所有的源文件,设置所有工具和设计配置的参数,启动所有的实现命令,以及指定所需要生成的报告文件。由于没有在磁盘上创建一个工程,源文件保留在它们最初的位置,只在设计者指定的位置创建运行输出。这个流程充分发挥Tcl命令的能力,可以充分地控制整个设计过程。
表1.2给出了工程模式和非工程模式特性的比较。
表1.2 工程模式和非工程模式特性比较
流程元素 | 工程模式 | 非工程模式 |
设计源文件管理 | 自动 | 手动 |
流程导航 | 引导 | 手动 |
流程定制 | 有限 | 无限 |
报告 | 自动 | 手动 |
分析阶段 | 只有设计 | 设计和设计检查点 |
对于设计者来说,选择的模式不同,Tcl命令就相应地有所不同。在非工程模式下,所有的操作和工具设置都要求单独的Tcl命令,包括:设置工具选项,运行实现命令,产生报告和写设计检查点。在工程模式下,打包过的命令,用于每个综合、实现和报告命令。
例如在工程模式下,设计者使用add_files Tcl命令将源文件添加到工程中。可以将源文件复制到工程中,这样在工程目录结构中保留一个独立的版本;或者通过远程方式引用。在非工程模式下,设计者使用read_verilog、read_vhdl、read_xdc和read_… Tcl命令,从当前的位置读取不同类型的源文件。
在工程模式下,带有预配置运行策略的launch_runs命令,用于启动工具和生成标准报告。这样能够合并实现命令、标准报告、运行策略的使用、运行状态的跟踪。然而,设计者也可以在设计处理的每一步之前或者之后,运行定制的Tcl命令。在工程内,自动地保存和管理运行的结果。在非工程模式下,必须单独运行每个命令,例如opt_design、place_design和route_design。
如图1.2所示,很多Tcl命令既可用于工程模式,又可以用于非工程模式,例如报告命令。在一些情况下,将Tcl命令指定在工程模式或者非工程模式。当创建脚本的时候,指定为一个模式的命令,不能被混用。例如,如果使用了工程模式,设计者就不能使用基本级别命令,例如synth_design,这是因为将该命令指定为非工程模式。如果在工程模式下,使用了非工程模式的命令,数据库不会更新状态信息,并且不会自动生成报告。
图1.2 工程模式和非工程模式命令
注: 工程模式包含所有的GUI操作,这样导致在绝大多数情况下,执行一个Tcl命令。Tcl命令显示在Vivado集成开发环境的控制台下,在vivado.jou文件进行捕获。设计者可以使用这个文件,来开发用于其中一种模式的脚本。