其实Tcl在Vivado中还有很多延展应用,接下来我们就来讨论如何利用Tcl语言的灵活性和可扩展性,在Vivado中实现定制化的FPGA设计流程。
基本的FPGA设计实现流程FPGA的设计流程简单来讲,就是从源代码到比特流文件的实现过程。大体上跟IC设计流程类似,可以分为前端设计和后端设计。其中前端设计是把源代码综合为对应的门级网表的过程,而后端设计则是把门级网表布局布线到芯片上最终实现的过程。
以下两图分别表示ISE和Vivado的基本设计流程:
ISE中设计实现的每一步都是相对独立的过程,数据模型各不相同,用户需要维护不同的输入文件,例如约束等,输出文件也不是标准网表格式,并且形式各异,导致整体运行时间过长,冗余文件较多。
Vivado中则统一了约束格式和数据模型,在设计实现的任何一个阶段都支持XDC约束,可以生成时序报告,在每一步都能输出包含有网表、约束以及布局布线信息(如果有)的设计检查点(DCP)文件,大大缩短了运行时间。
从使用方式上来讲,Vivado支持工程模式(Project Based Mode)和非工程模式(None Project Mode)两种,且都能通过Tcl 脚本批处理运行,或是在Vivado 图形化界面IDE 中交互运行和调试。
工程模式工程模式的关键优势在于可以通过在Vivado 中创建工程的方式管理整个设计流程,包括工程文件的位置、阶段性关键报告的生成、重要数据的输出和存储等。
如下左图所示,用户建立了一个Vivado工程后,工具会自动创建相应的.xpr工程文件,并在工程文件所在的位置同层创建相应的几个目录,包括
.cache、
.data、
.runs和
.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脚本
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)