http://blog.chinaaet.com/detail/36014

Vivado是Xilinx最新的FPGA设计工具,支持7系列以后的FPGA及Zynq 7000的开发。与之前的ISE设计套件相比,Vivado可以说是全新设计的。无论从界面、设置、算法,还是从对使用者思路的要求,都是全新的。看了大家很多的博文,基本上都是用GUI创建工程,那我就简单介绍一下Vivado的脚本使用。

在ISE设计套件中,支持多种脚本: 可以用xperl来运行perl脚本,可以用xtclsh来运行Tcl脚本,还可以用windows批处理脚本来运行设计流程。

ISE集成的Tcl脚本解释器为8.4版本。同时,ISE GUI中的Tcl console功能不够强大,部分组件使用的脚本也与Tcl有不同,导致Tcl脚本在ISE上并不十分流行。

在Vivado上,Tcl已经成为唯一支持的脚本。并且,所有操作都有对应的Tcl脚本可以执行。所以,掌握Tcl脚本语言对掌握Vivado的使用有重要帮助。

Vivado上集成的Tcl脚本解释器为8.5版本,也是目前比较流行的Tcl版本。Vivado的核心就是一个脚本解释器,GUI界面只是将各种脚本命令封装为图形化界面而已。

下面以Windows为平台,用脚本的思路,运行一下Vivado:

  • 首先需要设置环境变量,在path环境变量中添加Vivado的路径,路径设置到bin文件夹,例如C:\Xilinx\Vivado\2014.1\bin
  • 在Windows界面下,“开始”->“运行”,输入cmd,打开windows命令行终端。这个时候 有三个选择:
1. 输入“vivado”,启动Vivado GUI界面,和点击桌面上的图标启动Vivado没什么区别;事实上,直接点击桌面图标,就是调用windows batch命令启动vivado 
2. 输入“vivado -mode batch -source file.tcl”,从脚本批处理的形式启动Vivado,运行后直接执行file.tcl文件
3. 输入“vivado -mode tcl”,启动Tcl交互式命令行。

  • 使用第三种方法。启动后显示Vivado的版本,这里使用2014.1
  • 输入命令 “info tclversion”可以查看到Vivado使用的Tcl的版本 8.5

Tcl是一种很容易用户自己定义命令的脚本语言,Xilinx在此基础上增加了大量Vivado的命令。对于Vivado自定义的非标准的Tcl命令,输入该命令后,继续输入空格+“-help”,可以查到该命令的详细解释。

Vivado GUI中的Tcl console和CMD启动的交互命令行功能基本相同,不同在于Vivado 在切换路径时可以利用CMD的自动补缺功能更方便的切换路径。

Vivado有两种设计流程:project模式和non-project模式。

  • 如果已经有设计工程了,可以使用Tcl脚本继续进行project的流程,例如:

    1
    2
    3
    4
    5
    open_project TEST.xpr    #打开已有的工程文件TEST.xpr
    launch_runs synth_1      #运行综合 synth_1
    wait_on_run synth_1      #等待综合结束
    launch_runs impl_1 -to_step write_bitstream    #运行实现impl_1,并生成bit文件
    wait_on_run impl_1       #等待实现结束

    • 如果使用non-project模式,则脚本会复杂一些,下面提供一个模板。

    注:英文注释是参考Xilinx相关文档,中文注释是为了方便阅读,由于Vivado原生不支持中文,所以为了避免不必要的错误,建议使用时去除中文

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    ##############################################################################
    ##############################################################################
    ##############################################################################
    # STEP#1: define the output directory area.
    # 定义工程文件的存放路径
    set outputDir ./PRJ
    # file mkdir $outputDir
    #
    # STEP#2: setup design sources and constraints
    #
    # VHDL
    #
    read_vhdl -library bftLib [ glob ./Sources/hdl/bftLib/*.vhdl ] #指定需要添加的VHDL库文件,glob是扫描某个路径下的全部文件(这里是.vhdl文件)
    read_vhdl ./Sources/hdl/bft.vhdl              #指定需要添加的VHDL文件
    # ##############################
    # Verilog HDL
    #
    read_verilog  [ glob ./SRC/*.v ]                #指定需要添加的Verilog文件,glob是扫描某个路径下的全部文件(这里是.v文件)
    # ##############################
    # XDC
    #
    read_xdc [ glob ./CONSTRS/*.xdc ]               #指定需要添加的xdc文件,glob是扫描某个路径下的全部文件(这里是.xdc文件)
    # ##############################
    # EDIF and NGC
    #
    read_edif ../test.edif                          #指定需要添加的网表文件
    # ##############################
    # IP XCI
    #
    read_ip ./CORE/MMCM/MMCM.xci                    #指定需要添加的xci IP文件
    # ##############################
    # STEP#3: run synthesis, write design checkpoint, report timing,
    # and utilization estimates
    # 运行综合 ,同时设定相关综合参数
    synth_design -top SCRIPT_TEST       \
                 -part xc7z100ffg900-2  \
                 -fanout_limit 1000     \
                 -shreg_min_size 3      \
                 -flatten_hierarchy full
    write_checkpoint -force $outputDir/post_synth.dcp #存档
    report_timing_summary -file $outputDir/post_synth_timing_summary.rpt    #生成时序报告
    report_utilization -file $outputDir/post_synth_util.rpt #生成资源使用报告
    #
    #
    # STEP#4: run logic optimization, placement and physical logic optimization,
    # write design checkpoint, report utilization and timing estimates
    #
    opt_design        #优化设计
    place_design      #布局
    report_clock_utilization -file $outputDir/clock_util.rpt    #生成资源使用报告
    write_checkpoint -force $outputDir/post_place.dcp       #存档
    report_timing_summary -file $outputDir/post_place_timing_summary.rpt #生成时序报告
    #
    # STEP#5: run the router, write the post-route design checkpoint, report the routing
    # status, report timing, power, and DRC, and finally save the Verilog netlist.
    #
    route_design      #布线
    write_checkpoint -force $outputDir/post_route.dcp #存档
    report_route_status -file $outputDir/post_route_status.rpt #报告布线状况
    report_timing_summary -file $outputDir/post_route_timing_summary.rpt    #生成时序报告
    report_power -file $outputDir/post_route_power.rpt  #生成功耗报告
    report_drc -file $outputDir/post_imp_drc.rpt        #运行DRC 生成DRC检查报告
    # write_verilog -force $outputDir/cpu_impl_netlist.v -mode timesim -sdf_anno true
    #
    # STEP#6: generate a bitstream
    #
    write_bitstream -force $outputDir/SCRIPT_TEST.bit  #生成bit文件
      
    ##############################################################################
    ##############################################################################
    ##############################################################################

  • 另外,在运行Vivado GUI的时候,工程文件的路径下会有一个.jou的文件,会自动记录所有GUI操作对应的Tcl脚本,便于查找与使用。

    关于Tcl的学习,网上文章不少,这里只推荐xilinx的相关文档

    UG892 讲述Vivado设计流程,non-project模式中有针对Tcl脚本的说明

    http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_2/ug892-vivado-design-flows-overview.pdf

    UG894 讲述如何在Vivado中使用Tcl的文档

    http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_2/ug894-vivado-tcl-scripting.pdf

转载于:https://www.cnblogs.com/hfyfpga/p/4396103.html

Tcl在Vivado中的使用相关推荐

  1. Vivado中的TCL脚本语言

    本文介绍了Tcl在Vivado中的基础应用,希望起到抛砖引玉的作用,指引使用者在短时间内快速掌握相关技巧,更好地发挥Vivado在FPGA设计中的优势. Vivado TCL脚本语言 使用Tcl作为它 ...

  2. 用Tcl定制Vivado设计实现流程

    http://xilinx.eetop.cn/viewnews-2359 介绍了Tcl的基本语法以及如何利用Tcl在Vivado中定位目标.其实Tcl在Vivado中还有很多延展应用,接下来我们就来讨 ...

  3. vivado 如何创建工程模式_用Tcl定制Vivado设计实现流程

    原标题:[Vivado使用误区与进阶]用Tcl定制Vivado设计实现流程 上一篇<Tcl在Vivado中的应用>介绍了Tcl的基本语法以及如何利用Tcl在Vivado中定位目标.其实Tc ...

  4. 【 FPGA 】Vivado中常用的5个Tcl命令

    本博文内容是学习课程做的笔记,只记录了一些,由于没有基础,且讲的也不是太清楚,只吸收了一部分内容,记录下来备忘. 目录: Objects的基本概念? 首先讲解Vivado中objects的基本概念,然 ...

  5. Vivado中TCL的使用

    Tcl介绍 Vivado是Xilinx最新的FPGA设计工具,支持7系列以后的FPGA及Zynq 7000的开发.与之前的ISE设计套件相比,Vivado可以说是全新设计的.无论从界面.设置.算法,还 ...

  6. vivado中设置多线程编译

    VIVADO中一个run编译时支持的线程数如下表:(综合时一般是2线程) Place Route Windows默认 2 2 Linux默认 4 4 Windows开启maxThreads=8 4 4 ...

  7. 如何阅读 Vivado中的Timing Report

    <XDC约束技巧>系列中讨论了XDC约束的设置方法.约束思路和一些容易混淆的地方.我们提到过 约束是为了设计服务,写入Vivado中的XDC实际上就是用户设定的目标 ,Vivado对FPG ...

  8. Vivado中IP核生成文件

    正像我之前所说的,较XPS的IP核而言,Vivado IP核在创建.打包.使用等各方面都更加简单便捷,同样的Vivado IP核抛弃了以往复杂的IP核文件组织模式,仅使用一个component.xml ...

  9. 在Vivado中,使用锁定增量编译技术进行增量综合布局布线

    为了实现对FPGA系统的place.route的锁定,只通过vivado中setting中的增量设置是不够的,这里需要加入锁定设计.其具体步骤如下: 打开vivado软件,在弹出的界面中,选择如下菜单 ...

最新文章

  1. html5移动web开发黑马掌上商城_这套web前端与移动开发教程,帮助了众多小白转行就业...
  2. 推文科技:AI解决方案助力内容出海
  3. IE下img多余5像素空白
  4. Manjaro下的实用命令搜集
  5. java中CS和BS_BS与CS的联系与区别【简】
  6. [BZOJ5286][洛谷P4425][HNOI2018]转盘(线段树)
  7. append一个option会多出一个空的_Collections | 你必须会的Python库
  8. 利用TP-Link+花生壳建立属于自己的网站
  9. 初识Unity3D(项目结构、ProBuilder第三方插件)
  10. codeblock 设置背景颜色
  11. [日常] Apache Order Deny,Allow的用法
  12. Kali利用Redis未授权漏洞入侵服务器
  13. 单细胞测序在免疫治疗研究中的应用
  14. JS之获取银行卡信息
  15. torch.masked_select()和Tensor.masked_scatter()的用法
  16. 胡水生:中小型企业如何应对互联网的发展
  17. you-get和youtube-dl下载全网视频
  18. 手把手入门WEB信息收集
  19. 转载:Linux下用mutt给QQ邮箱发匿名邮件
  20. 新手学做网站的建议教程

热门文章

  1. USB电池充电基础:应急指南
  2. 超声波AE检测在局部放电中的应用
  3. 我的VS CODE关于latex workshop插件配置
  4. java生成电子发票_电子发票实例(iText)
  5. python完全匹配_python如何精确匹配
  6. 什么是CAP?适用的场景有哪些?
  7. 使用爬虫代理时遇到的一些问题
  8. 【z-library平替】Clibrary中文图书馆,电子书大全
  9. linux系统找不到网卡配置文件,Linux系统Centos没有网卡eth0配置文件的解决方法
  10. 【模拟 IC】电荷泵的基础知识(1)