木易

在Vivado下利用Tcl实现IP的高效管理

0
阅读(16044) 评论(16)

作者:高亚军

    在Vivado下,有两种方式管理IP。一种是创建FPGA工程之后,在当前工程中选中IP Catalog,生成所需IP,这时相应的IP会被自动添加到当前工程中;另一种是利用Manage IP,创建独立的IP工程,缺省情况下,IP工程的名字为magaged_ip_project。在这个工程中生成所需要的IP,之后把IP添加到FPGA工程中。Xilinx推荐使用第二种方法,尤其是设计中调用的IP较多时或者采用团队设计时。Tcl作为脚本语言,在FPGA设计中被越来越广泛地使用。借助Tcl可以完成很多图形界面操作所不能完成的工作,从而,可提高设计效率和设计自动化程度。VivadoTcl具有很好的支持,专门设置了Tcl Shell(纯脚本模式)和Tcl Console(图形界面模式)用于Tcl脚本的输入和执行。本文介绍了如何利用Tcl脚本在Manage IP方式下实现对IP的高效管理。

Manage IP的特点:

(1)VivadoManage IP模式下只显示IP Catalog,便于直观地定制IP

(2)IP工程目录独立于FPGA工程目录,可独立管理并便于IP复用;

(3)IP采用OOCOut-of-Context)的综合方式,生成相应的DCP文件,添加到FPGA工程中,无需再次综合;

ISE Core Generator的不同之处:

(1)ISE Core Generator不同IP的生成文件会在同一目录下,而Vivado下每个IP有独立的文件夹,该文件夹下包含了IP所有相关文件,这为IP复用提供了便利;

(2)ISE Core Generator生成的IP定制文件为.xcoVivado生成IP的定制文件为.xci

(3)ISE Core Generator生成的网表文件为.ngcVivado生成的网表文件为.dcpDCP不仅包含网表文件还包含约束文件;

(4)ISE Core Generator不支持Tcl脚本,Vivado则支持Tcl脚本;

VivadoIP生成文件:

(1)用于综合的RTL文件和约束文件;

(2)实例化模板文件;

(3)行为级仿真文件;

(4)综合后的网表文件DCP

(5)用于第三方综合工具的Stub文件;

(6)例子工程;

    生成文件是可以定制的,这可通过generate_target命令完成,同时,生成的文件也可以通过reset_target被清除掉,如Tcl脚本 1所示。

Vivado下每个对象都有自己的属性,这些属性可通过report_property显示。managed_ip_project的属性如 1所示。图中绿色线条标记了该工程所在目录;红色方框MANAGED_IP属性值为1,表明该工程为IP工程;蓝色方框是我们创建或修改IP工程设置时最常用的一些属性。Tcl脚本 2中第1行语句用于显示IP工程属性,第2~4行语句用于设置仿真工具、目标语言和芯片型号。set_property命令的第一个参数为属性名,第二个参数为属性值,第三个参数为属性所属对象。

 

    采用Vivado Manage IP创建IP工程后,可能会遇到以下情况:(1)软件版本升级,例如Vivado2013.4升级至2014.2;(2)芯片型号改变,例如芯片型号由XC7K325TFFG676-2变为XC7K160TFFG676-2;(3A项目中的一些IPB项目中也被使用,且这些IP参数配置完全相同。上述三种情况均可通过Tcl命令完成。

第一种情况:软件版本升级

假如用Vivado 2013.4创建的IP工程,当软件版本升级至2014.2时,需要将IP重新生成。此时,若用Vivado 2014.2打开该工程会弹出如 2所示的对话框。选择图中蓝色方框标记的选项打开工程,通过report_ip_status命令显示当前IP状况,如 3所示。

3中蓝色方框显示了IP处于锁定状态,可通过get_property查看IS_LOCKED属性确定;红色方框显示了IP当前版本号和建议升级到的新版本号。相应的Tcl脚本如Tcl脚本 3所示。对处于锁定状态的IP可选择升级,这可通过Tcl脚本 4完成指定IP的升级。Tcl脚本 4可内嵌到Vivado中作为用户常用命令。

第二种情况:芯片型号改变

若芯片型号改变,首先要对旧型号芯片对应的工程做备份处理,这可通过archive_project命令完成;然后修改芯片型号。相应的Tcl脚本如Tcl脚本 5所示。完成这些操作之后,会发现IP处于锁定状态,此时可通过Tcl脚本 4IP升级。

    第三种情况:A项目中的一些IPB项目中也被使用,且这些IP参数配置完全相同

在这种情况下,可将A项目中的IP导入到B项目的IP工程中,这可通过import_ip命令完成,如Tcl脚本 6所示。Import_ip的第一个参数为原始IP所在目录,第二个参数为该IP的新名字,缺省情况下与原始IP名一致。导入之后,可通过Tcl脚本 4重新生成IP

 

如前所述,Vivado下生成的IP都有独立的文件目录,在添加IPVivado FPGA工程中时,若采用图形界面方式就需要一个一个地浏览到IP所在文件目录,找到.xci文件,然后添加到工程中,如果调用的IP较多,显然这种方式不够高效。此时可用Tcl脚本 7所示的Tcl命令找到所有IP相关文件,文件类型可以是xcidcp。该命令会返回完整的文件路径,如Tcl脚本 6中的文件路径。然后通过add_files命令将其添加到当前工程中。

 

    此外,有些IP会有例子工程,这些例子工程带有完整的测试激励,可对IP进行仿真,以理解IP的输入/输出时序,也可单独生成bit文件。可通过open_example_project命令打开例子工程,如Tcl脚本 8所示。

ISE Core Generator相比,Vivado Manage IPIP的管理更加便捷,加之VivadoTcl脚本的支持,利用Tcl脚本可实现对IP更高效的管理,进一步加强FPGA设计自动化的程度。

参考文献:

[1] Xilinx. Ug896 (V2014.1) Designing with IP.

[2] Xilinx. Ug835 (V2014.2) Vivado Design Suite Tcl Command Reference Guide

 

  1. 厉害了我的哥

  2. ***此内容已被管理员屏蔽***

  3. IP locked后怎么unlocked?
  4. 匿名用户匿名用户
    为什么重新编译工程时, 各个OOC IP也会怎么重新综合一遍?
  5. 精彩博文,受教了!已收藏
  6. 通过这篇文章如果大家了解到不只有GUI还有Tcl,我的目的就达到了。Tcl也是一种方法,IP管理只是其中的一个应用,如果工程中只有一个IP,那么用Tcl显示不出它的魅力。如果工程中还没用过Tcl,不妨尝试一下,慢慢会体会到它的便利,毕竟Tcl在ASIC设计中早已应用。
  7. @laurengao

    对方观点:但跨度很大的项目,IP Package会有用处。

  8. @laurengao

    对方观点:但是工程有时候的考虑不是这个方法好不好,而是值不值得这么做。
  9. @laurengao

    对方观点:方法没错,但实际上不会这么用而异。IP都产生了,自然后面用脚本的操作就都结束了。

    简单评价一下吧,第一张图

    之前都是没用的。

    图一基本没啥用途,就是把GUI的东西打印出来

    Tcl脚本2是把GUI的设置用脚本设置一下

    后面是用脚本来做一些GUI的事情

    真实的工程里没这么麻烦,一个人一天把所有的IP GUI 界面定制好以后就不会动了。

    不过,您这篇博文只是提供一种方法,从这个角度说,没错。

  10. 匿名用户匿名用户
    结构很清晰,尤其是Tcl脚本7还是很实用的。高老师能不能讲讲更多Tcl的应用?谢谢!
  11. @木易
    你说的配置IP,是不是定制IP参数。这个当然采用图形界面方式比较好。我这里主要介绍IP参数配置好并生成IP之后的事情。
  12. 有人有不同观点:认为从实践角度说,用脚本来配置IP 是一个很不划算的事情!高老师,你怎么看?!
  13. @匿名用户(1.202.241.170 ) @deruigao @flyaway2013


    谢谢对高老师博文的肯定。你们还想学习Vivado哪方面的内容,可以在此留言!


  14. Tcl脚本很受启发
  15. 内容详尽,结构清晰,很有帮助,谢谢老师,辛苦了