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

Tcl在Vivado中的使用的更多相关文章

  1. Tcl在Vivado中的应用

    转载: https://blog.csdn.net/avrmcu1/article/details/43446529?utm_source=blogxgwz6

  2. 73.Vivado使用误区与进阶——在Vivado中实现ECO功能

    关于Tcl在Vivado中的应用文章从Tcl的基本语法和在Vivado中的应用展开,继上篇<用Tcl定制Vivado设计实现流程>介绍了如何扩展甚至是定制FPGA设计实现流程后,引出了一个 ...

  3. vivado中设置多线程编译

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

  4. 设置ISE/vivado中默认文本编辑器为gvim

    ise windows版,添加方式 ISE下点击菜单Edit -> Preferences -> Editor. 在Editor选项框里选择Custom,在Command line syn ...

  5. 在Vivado中调用ModelSim生成FSM的状态转移图

    如果我们已经书写了一段FSM代码,现在想倒过来把它转换成为状态转移图,方便我们直观地检查我们书写的状态对不对(在写论文什么的画图太麻烦的时候,有个自动生成的是多方便啊!),应该怎么弄呢?通过在Viva ...

  6. System Generator 生成IP核在Vivado中进行调用

    System Generator 生成IP核在Vivado中进行调用 1.首先在Simulink中搭建硬件模型 2.查看仿真结果 3.资源分析与时序分析 4.启动vivado,关联生成的IP核 5.调 ...

  7. Vivado中ILA的使用

    Vivado中ILA的使用 1.编写RTL代码      其中需要说明的是(* keep = "TRUE" *)语句的意识是保持cnt信号不被综合掉,方便以后的调试,是否可以理解为 ...

  8. Vivado中debug用法

    Vivado和ISE相比ChipScope已经大幅改变,很多人都不习惯.在ISE中称为ChipScope而Vivado中就称为in system debug.下面就介绍Vivado中如何使用debug ...

  9. ddr3调试经验分享(一)——modelsim实现对vivado中的MIG ddr3的仿真

    Vivado中的MIG已经集成了modelsim仿真环境,是不是所有IP 都有这个福利呢,不知道哦,没空去验证. 第一步:使用vivado中的MIG IP生成一堆东西 ,这个过程自己百度.或者是ug5 ...

随机推荐

  1. ECC校验优化之路

    引子: 今天上嵌入式课程时,老师讲到Linux的文件系统,讲的重点是Linux中对于nand flash的ECC校验和纠错.上课很认真地听完,确实叹服代码作者的水平. 晚上特地下载了Linux最新的内 ...

  2. Xcode 不提示, 引用失效等情况

    在编写xcode的项目的时候出现过代码不高亮的症状,而且所有的warning都不再提示,include的内容也显示symbol not found,非常奇怪,解决方案如下: 方法一: 1.把.pch里 ...

  3. 【转】【iOS知识学习】_视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途

    原文网址:http://blog.csdn.net/weasleyqi/article/details/8090373 iOS视图控制对象生命周期-init.viewDidLoad.viewWillA ...

  4. XHTML代码规则&手工html转换xhtml

    XHTML规则 XHTML是XML得一个应用,它遵守XML得规范和要求.从技术角度上讲.这些语法规则是由XML规范定义的. XML文档必须遵守的规则使得生成工具以解析文档变得更容易.这些规则也使得XM ...

  5. c#集合类的线程安全

    即位于System.Collections命名空间下的集合,如Hashtable,ArrayList,Stack,Queue等.其均提供了线程同步的一个实现 集合线程同步的问题 public clas ...

  6. GIS数据格式:Shapefile

    转自:http://lab.osgeo.cn/2449.html Shapefile是ESRI提出的数据格式,随着ArcView GIS 3.x发布,属于简单要素类.Shapefile由于其数据结构简 ...

  7. 数组MARSHALLING z

    在托管代码和本地代码之间传递数组,是interop marshaling中间比较复杂的一个问题.本文从数组的定义开始,介绍数组marshalling的三种方法,并对blittable类型等概念做进一步 ...

  8. chart控件怎么使x轴标签全部显示出来

    在vs2012中使用chart控件事,x轴的标签过多,致使默认只能显示其中的一部分,如图 当然,我们可以通过设置,使得x轴标签全部显示. 首先,通过chart控件属性,找到   “ChartAreas ...

  9. Hive 0.12 Caused by: MetaException(message:Version information not found in metastore. )解决方法

    配置完成Mysql存储元数据信息,启动后测试show tables报错ERROR exec.DDLTask: org.apache.hadoop.hive.ql.metadata.HiveExcept ...

  10. ios iphone 将log在终端输出

    对于模拟器,其在终端的log文件位于:   -/Library/Logs/CoreSimulator/C4B94BA6-EF08-4AD2-AE7D-1A3A2E2AC545/system.log 对 ...