首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

【Vivado使用误区与进阶】用Tcl定制Vivado设计实现流程

【Vivado使用误区与进阶】用Tcl定制Vivado设计实现流程

基本的FPGA设计实现流程
FPGA的设计流程简单来讲,就是从源代码到比特流文件的实现过程。大体上跟IC设计流程类似,可以分为前端设计和后端设计。其中前端设计是把源代码综合为对应的门级网表的过程,而后端设计则是把门级网表布局布线到芯片上最终实现的过程。
以下两图分别表示ISE和Vivado的基本设计流程:

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命令确实是完全不同的,使用起来也不能混淆。
下图所示是同一个设计(Vivado自带的Example Design)采用两种模式实现所需使用的不同脚本,更详细的内容可以在UG975和UG835中找到。需要注意的是,工程模式下的Tcl脚本更简洁,但并不是最底层的Tcl命令,实际执行一条相当于执行非工程模式下的数条Tcl命令。
Vivado支持的两种Tcl脚本


Tcl对图形化的补充
相信对大部分FPGA工程设计人员来说,图形化界面仍旧是最熟悉的操作环境,也是设计实现的首选。在Xilinx推出全面支持Tcl的Vivado后,这一点依然没有改变,但我们要指出的是,即使是在图形化界面上跑设计,仍然可以充分利用Tcl的优势。在Vivado IDE 上运行Tcl脚本主要有以下几个渠道。
返回列表