Tcl在Vivado中的使用
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的流程,例如:
12345
open_project TEST.xpr#打开已有的工程文件TEST.xprlaunch_runs synth_1#运行综合 synth_1wait_on_run synth_1#等待综合结束launch_runs impl_1 -to_step write_bitstream#运行实现impl_1,并生成bit文件wait_on_run impl_1#等待实现结束- 如果使用non-project模式,则脚本会复杂一些,下面提供一个模板。
注:英文注释是参考Xilinx相关文档,中文注释是为了方便阅读,由于Vivado原生不支持中文,所以为了避免不必要的错误,建议使用时去除中文
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071########################################################################################################################################################################################################################################### STEP#1: define the output directory area.# 定义工程文件的存放路径setoutputDir ./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 -topSCRIPT_TEST \-part xc7z100ffg900-2 \-fanout_limit 1000 \-shreg_min_size 3 \-flatten_hierarchy fullwrite_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中的使用的更多相关文章
- Tcl在Vivado中的应用
转载: https://blog.csdn.net/avrmcu1/article/details/43446529?utm_source=blogxgwz6
- 73.Vivado使用误区与进阶——在Vivado中实现ECO功能
关于Tcl在Vivado中的应用文章从Tcl的基本语法和在Vivado中的应用展开,继上篇<用Tcl定制Vivado设计实现流程>介绍了如何扩展甚至是定制FPGA设计实现流程后,引出了一个 ...
- vivado中设置多线程编译
VIVADO中一个run编译时支持的线程数如下表:(综合时一般是2线程) Place Route Windows默认 2 2 Linux默认 4 4 Windows开启maxThreads=8 4 4 ...
- 设置ISE/vivado中默认文本编辑器为gvim
ise windows版,添加方式 ISE下点击菜单Edit -> Preferences -> Editor. 在Editor选项框里选择Custom,在Command line syn ...
- 在Vivado中调用ModelSim生成FSM的状态转移图
如果我们已经书写了一段FSM代码,现在想倒过来把它转换成为状态转移图,方便我们直观地检查我们书写的状态对不对(在写论文什么的画图太麻烦的时候,有个自动生成的是多方便啊!),应该怎么弄呢?通过在Viva ...
- System Generator 生成IP核在Vivado中进行调用
System Generator 生成IP核在Vivado中进行调用 1.首先在Simulink中搭建硬件模型 2.查看仿真结果 3.资源分析与时序分析 4.启动vivado,关联生成的IP核 5.调 ...
- Vivado中ILA的使用
Vivado中ILA的使用 1.编写RTL代码 其中需要说明的是(* keep = "TRUE" *)语句的意识是保持cnt信号不被综合掉,方便以后的调试,是否可以理解为 ...
- Vivado中debug用法
Vivado和ISE相比ChipScope已经大幅改变,很多人都不习惯.在ISE中称为ChipScope而Vivado中就称为in system debug.下面就介绍Vivado中如何使用debug ...
- ddr3调试经验分享(一)——modelsim实现对vivado中的MIG ddr3的仿真
Vivado中的MIG已经集成了modelsim仿真环境,是不是所有IP 都有这个福利呢,不知道哦,没空去验证. 第一步:使用vivado中的MIG IP生成一堆东西 ,这个过程自己百度.或者是ug5 ...
随机推荐
- 放在jsp头部的代码
String path = request.getContextPath(); String basePath = request.getScheme()+"://"+reques ...
- Dell笔记本禁用触摸板的方法
一·找到触摸板驱动所在的文件夹(其他型号 的本本,请自己探索一下,找到驱动在哪就行),一般 在 C:\program files\delltpad 中(若没有请下载安 装 ),如图: 二·双击 Del ...
- c#打印机设置,取得打印机列表及相应打印机的所有纸张格式
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- POJ -- 3842
An Industrial Spy Description Industrial spying is very common for modern research labs. I am such ...
- ubuntu 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
在用sudo apt-get install kmymoney2安装软件kmymoney2时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示:"E: ...
- c++ 读取并解析excel文件方法
用Cocos开发模型特效工具编辑器,跨Mac和windows,当中有个需求是读取并解析excel文件,但网上的查找的例子几乎都只能是在windows下面使用,再或者是命令行脚本之类的.于是,自己写了一 ...
- bzoj3998 [TJOI2015]弦论(SAM)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3998 [题意] 询问排名第k的子串是谁,0代表相同子串不同位置算作相同,1代表相同子串 ...
- NOIP2003 侦探推理
题二 侦探推理 [问题描述] 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯( ...
- ACM 2015年上海区域赛A题 HDU 5572An Easy Physics Problem
题意: 光滑平面,一个刚性小球,一个固定的刚性圆柱体 ,给定圆柱体圆心坐标,半径 ,小球起点坐标,起始运动方向(向量) ,终点坐标 ,问能否到达终点,小球运动中如果碰到圆柱体会反射. 学到了向量模板, ...
- editpuls查找替换通配符
1 \t Tab character. tab符号 2 \n New line. 新的一行(换行符) 3 . Matches any ...