TCL学习

本文介绍了TCL(Tool Command Language),一种广泛应用于EDA工具的脚本语言,主要用于快速原型开发、脚本编程和GUI。通过一个实际的modelsim/questaSim仿真脚本例子,阐述了TCL的注释、变量声明、过程定义、文件操作等基本语法,并展示了如何在TCL中创建工程、加密文件和管理文件列表。此外,还涉及了TCL的列表、正则表达式以及如何与EDA工具交互的细节。
摘要由CSDN通过智能技术生成

欢迎关注个人公众号摸鱼范式

什么是TCL?

TCL,Tool Command Language,是一种脚本语言,主流的EDA工具都支持TCL进行操作。TCL经常被用于 快速原型开发,脚本编程, GUI和测试等方面。

TCL学习

接下来以一个实际的tcl脚本为例,简单介绍TCL的使用。这个脚本是用于modelsim/qusetasim仿真的脚本,mentor将tcl进行拓展,称之为do文件,实际语法还是TCL。脚本来自链接:https://blog.csdn.net/k331922164/article/details/50001035

# testbench name without .v , .vt , .vhd , .vht
set testbench_name conv
# simulation time ; ns/us/ms/min
set sim_time 1us
# auto add files when $auto_add_file==1; add file list when $auto_add_file==0
quietly set auto_add_file 1
# project path
set prj_path E:/conv_sim
# backup path
set bkp_path E:/conv_sim/backup
# monitor resolution ratio , for example : 1920 x 1080
quietly set m_width 1920
quietly set m_height 1080

if 0 {
my first program in Tcl program
Its very simple
}

首先,第一行,TCL采用#进行单行注释,多行注释使用判断句注释,就像末尾的if那样。TCL是一种弱语言类型,不需要声明类型,直接通过set声明变量并进行赋值。字符串变量直接输入即可,不需要额外的声明。这里直接set的变量是全局变量。

proc new_prj {new_prj_name} {
       global prj_path
       set new_prj_path E:/conv_sim/$new_prj_name/
       quit -sim
       project close
       if { [file exists $new_prj_path]==0 } {
               file mkdir $new_prj_path
       }
       project new $new_prj_path $new_prj_name work
       if { [file exists $new_prj_path/src]==0 } {
               file mkdir $new_prj_path/src
       }
       file copy -force -- $prj_path/sim.do $new_prj_path
       puts "create new project successfully!"
       puts "current project path : "
       pwd
}

这里定义了一个用于创建工程的命令new_prj。

proc为procedure的缩写,TCL使用proc声明过程,用proc声明后,过程就会成为脚本的一个命令,直接使用。对于在过程中定义的变量,因为它们只能在过程中被访问,并且当过程退出时会被自动删除,所以称为局部变量;在所有过程之外定义的变量我们称之为全局变量。 TCL 中,局部变量和全局变量可以同名,两者的作用域的交集为空:局部变量的作用域是它所在的过程的内部;全局变量的作用域则不包括所有过程的内部。如果我们想在过程内部引用一个全局变量的值,可以使用 global 命令。这样在new_prj中就能访问到全局变量prj_path。

变量的引用通过$进行引用,会直接将表达式进行替换。

quit是qusetasim的命令,用于退出软件,加上选项-sim将只退出仿真而不会关闭软件。project close也是qusetasim的命令,用于关闭工程。

file exists path,判断是否存在指定文件夹。file mkdir path,创建文件夹。file copy -force -- source targetDir 复制文件到指定目录,这个命令把 source 中指明的文件或目录递归的拷贝到目的地址 targetDir,只有当存在

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值