前端设计是把源代码综合为对应的门级网表的过程,而后端设计则是把门级网表布局布线到芯片上最终实现的过程。
ISE 中设计实现的每一步都是相对独立的过程,数据模型各不相同,用户需要维护不同的输入文件,例如约束等,输出文件也不是标准网表格式,并且形式各异,导致整体运行时间过长,冗余文件较多。
Vivado 中则统一了约束格式和数据模型,在设计实现的任何一个阶段都支持XDC 约束,可以生成时序报告,在每一步都能输出包含有网表、约束以及布局布线信息(如果有)的设计检查点(DCP)文件,大大缩短了运行时间。
从使用方式上来讲,Vivado 支持工程模式(Project Based Mode)和非工程模式(None Project Mode)两种,且都能通过Tcl 脚本批处理运行,或是在Vivado 图形化界面IDE 中交互运行和调试。
工程模式的关键优势在于可以通过在Vivado 中创建工程的方式管理整个设计流程,包括工程文件的位置、阶段性关键报告的生成、重要数据的输出和存储等。
如下图所示,用户建立了一个Vivado 工程后,工具会自动创建相应的.xpr 工程文件,并在工程文件所在的位置同层创建相应的几个目录,包括<prj_name>.cache、<prj_name>.data、<prj_name>.runs 和<prj_name>.srcs 等等(不同版本可能有稍许差异),分别用于存储运行工程过程中产生的数据、输出的文件和报告以及工程的输入源文件(包含约束文件)等。
如下图所示,在Vivado IDE 中还可以一键式运行整个设计流程。这些预置的命令按钮就放置在工具最左边的侧栏:Flow Navigator 。不同按钮对应不同的实现过程,其中在后端实现阶段,还可以用右键调出详细分步命令,指引工具具体执行实现的哪一步。
特别需要指出的是 Flow Navigator 只有在Vivado IDE 中打开.xpr 工程文件才会显示,如果打开的是设计检查点.dcp 文件(不论是工程模式或是非工程模式产生的dcp)都不会显示这个侧栏。
非工程模式下,由于不会创建工程,用户就需要自己管理设计源文件和设计过程。源文件只能从当前位置访问,在设计实现过程中的每一步,数据和运行结果都存在于Vivado 分配到的机器内存中,在用户不主动输出的情况下,不会存储到硬盘中。
简单来讲,非工程模式提供了一种类似ASIC 设计的流程,用户拥有绝对的自由,可以完全掌控设计实现流程,但也需要用户对设计实现的过程和数据,尤其对文件输出和管理全权负责,包括何时、何地、输出怎样的文件等等。
使用非工程模式管理输入输出文件、进行设计实现都需要使用Tcl 脚本,但这并不代表非工程模式不支持图形化界面。非工程模式下产生的.dcp 文件一样可以在Vivdao IDE中打开,继而产生各种报告,进行交互式调试等各种在图形化下更便捷直观的操作。这是一个常见误区,就像很多人误认为工程模式下不支持Tcl 脚本运行是一个道理。但两种模式支持的Tcl 命令确实是完全不同的,使用起来也不能混淆。