Vivado工具TCL脚本使用--一键生成MCS

前言

  通过Vivado固化MCS到Flash的过程中,需要将Bit文件转换为MCS文件,每次通过Vivado界面点击步骤相对繁琐,为了简化转换MCS文件的过程,通过执行一条脚本的方式来一键生成MCS文件。

TCL脚本

  TCL(Tool Command Language)是一种解释执行的脚本语言(Scripting Language)。 它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。

TCL脚本转换MCS实现

set Current_Time [clock format [clock second] -format "%Y%m%d_%H%M%S"] ;
set PrjPath [get_property directory [current_project]] ;
set PrjName [get_projects [current_project]] ;
set RunsName [glob *.runs] ;
set BitPath $PrjPath/$RunsName/impl_1 ; 

if {[file exists $PrjPath/mcs]==0} {
	file mkdir $PrjPath/mcs	;
	}
set McsPath $PrjPath/mcs ;

set BitName [glob $BitPath/*.bit] ;
set McsName $McsPath/${PrjName}_$Current_Time.mcs ;

set BitFile "$BitName" ;
set McsFile "$McsName" ;
set LoadBit "up 0x00000000 $BitFile" ;

write_cfgmem -format mcs -size 32 -interface SPIx4 -loadbit $LoadBit \
-checksum -force -disablebitswap -file $McsFile

代码分析

  第1行用于获取当前时间;
  第2行用于获取当前工程绝对路径;
  第3行用于获取当前工程名;
  第4行用于获取布局布线运行路径;
  第5行用于获取生成BIT的路径,一般情况下只会生成一个布局布线(imp_1)目录,当有多个布局布线进程时注意更改对应目录;
  第7、8、9行用于判断当前工程路径是否存在mcs的目录,如果不存在则创建;
  第10行用于设置mcs生成路径;
  第12行用于获取bit名;
  第13行用于设置mcs名称,前半段为当前工程名,后半段为生成时间(年月日_时分秒),后缀为.mcs;
  第17行用于设置bit加载的起始地址;
  第19行用于生成mcs文件,其中 “-format” 设置生成文件的格式,这里是mcs 也可以是bin等; “-size"设置Flash的大小(MB); “-interface” 设置Flash加载方式 这里是SPIx4,也可以是SPIx8或者其他;”-loadbit"设置带加载起始地址的bit 文件;"-checksum"设置是否加和校验;"-disablebitswap"设置是否进行位交换;

实际演示

  将上述代码复制,保存为.tcl为后缀的文件,将此文件放入到Vivado工程.prj为后缀的同级目录内,如下我建立了一个名为axi_jtag的工程,保存上述代码为gen_mcs.tcl;

  然后在当前Vivado 工程TCL命令输入窗口,输入source ./gen_mcs.tcl(与保存的TCL脚本名称一致),回车即生成MCS文件,TCL窗口也会打印生成配置文件完成;
  在工程同级目录生成了一个mcs目录,目录下为当前生成的mcs文件;

  上图中MCS名称前面为工程名,后面为年月日-时分秒,生成成功,当后续需要更改设计时,生成MCS就比较方便了;

  欢迎相互讨论交流!!!
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值