TCL 语言基础


前言

Tcl 语言基础
冒号和分号将命令分开;
使用#号进行注释;在这里插入图片描述


一、Tcl 语法之替换

1. 三种变量替换方式:变量替换 $, 命令替换 [], 反斜杠替换 \

set x 10 # 定义变量x,并把x的值赋为10
set y x+100 # y的值是x+100,而不是110
set y $x+100 # y的值是10+100, 也不是110 用了变量替换
set y [expr $x+100]  # y的值是110, 用了命令替换

注意:

**1. 变量替换 :**变量名由$后面的所有字母、数字和下划线组成。 遇到 非 字母、数字和下划线就会终止;

set x 10 # 定义变量x,并把x的值赋为10
set y $x # y的值10
set x~ 11 # x~ 的值是11
set y $x~  # y的值是 10~
set y ${x~} # y的值是 11
set a "\$" # 将a设置成“$”, \阻止了$的替换,将$解析成字符$
set a \x48 # 对应\xhh
返回:H 十六进制的4872,对应字符H

**2. 命令替换:**如果一个单词以字符串{*} 开头,之后紧接着非空白字符, Tcl会移除开头的{*},把该单词的剩余部分作为含有单词分隔符的语句进行解析与替换。在替换之后,Tcl会再次解析这些单词,但不进行替换,校验确定他们的确是一个或多个语法完整的单词。如果校验通过,这些单词会被独立地假如命令行进行处理;否则, Tcl会报语法错误。

% glob *v # 查找 .v 文件
返回: a.v  b.v  c.v 注意这几个文件包含了space
% file delete [glob *v] #想删除所有.v 文件,但是没成功,
% ls
返回: a.v  b.v  c.v %_command.log
% file delete {*}[glob *v] #加上 {*}, 删除成功

3. 阻止解析器对$和分号等特殊字符进行特殊处理,这些方法称为引用,包括 反斜杠\ ,双引号“”,大括号{}
在这里插入图片描述

在这里插入图片描述

2. 对于变量:需要注意的

  • 无需声明定义, 直接使用set进行创建,unset移除,变量包含变量名和变量值
  • 使用$进行调用
  • 区分大小写
  • 变量名和变量值 都可以由任意字符组成,建议使用字母开头,使用字母/下划线/加数字 进行命名
  • 常用的变量类型:string list array directionary, S公司专有的collection
  • 变量存储类型 分为 字符串表达形式 和 内部表达形式(整数,实数,名称,列表,Tcl脚本)

2.1 string命令

如果你要把某个简单变量当字符串处理看待,可以使用string命令提供的功能
在这里插入图片描述
1. string match

匹配方式使用的是glob-style
string match ?-nocase? Pattern string 
如果pattern匹配string,返回1,否则返回0; 如果有-nocase参数,则不许分大小写

在这里插入图片描述
2. string equal

  • string equal ?-nocase? ?-length int? string1 string2
    对两个字符串进行比较,如果他们严格相同(-exact),返回1,否则0, -length可以指定匹配的长度
    在这里插入图片描述

  • string compare ?-nocase? ?-length int? string1 string2
    对两个字符串进行比较,如果他们严格相同,返回0; 如果第一个字符串 在字典中 先于 第二个字符串,返回-1;否则返回1。 -length可以指定匹配的长度
    在这里插入图片描述

  • string length string1
    返回字符串的长度。 空格,换行符也算一个字符
    在这里插入图片描述

  • string range string first last
    与string index相似,只不过他需要两个索引,返回first到last之间的字符。如果first小于0,则按0处理; last也是类似
    在这里插入图片描述

  • string index string charlndex
    在这里插入图片描述

  • string replace string first last ?newstring?
    使用newstring替换first到last位置的字符,如果呢我string不存在,则将first到last的字符删除,如果first > last ,则不进行替换
    在这里插入图片描述

    • string map ?-nocase? mapping string
      将string中出现的所有关键字置换为响应的值。置换的按顺序进行的列表中先出现的关键字先处理。
      只对字符串迭代一次,所以前面进行置换的不会影响接下来的匹配查找。
      在这里插入图片描述
  • string trim string ?chars?
    将string开头和结尾出现的要裁剪的字符都删掉; 从两端开始,如果字符是i或d或c,则裁掉。如果是针对字符,而不是字符串idc
    在这里插入图片描述

  • string trimleft string ?chars?
    将string开头出现的要裁剪的字符都删掉

  • string trimright string ?chars?
    将string开头出现的要裁剪的字符都删掉
    在这里插入图片描述

  • string tolower string ?first? ?last?
    将first到last位置的字符串改成小写
    在这里插入图片描述

  • string toupper string ?first? ?last?
    将first到last位置的字符串改成大写
    在这里插入图片描述

  • string toupper string ?first? ?last?
    将first到last位置的字符串改成标题式格式(首字母大写)
    在这里插入图片描述

  • string repeat string count
    在这里插入图片描述

  • string reverse string
    在这里插入图片描述

2.2 list

创建 list 的三种方法
在这里插入图片描述
list 相关命令
在这里插入图片描述

  • llength list
    在这里插入图片描述

  • lrange list first last
    在这里插入图片描述

  • list ?index…?
    在这里插入图片描述

  • linsert list index value ?value…? list 指定位置插入新元素
    在这里插入图片描述

  • lset varName ?index…? newValue 将变量varName中的index位置的元素改成newValue
    在这里插入图片描述

  • lreplace list first last ?value value…? 把list中从first到last的元素换成零个或者多个元素
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

2.3 search

在这里插入图片描述

2.4 array

在这里插入图片描述

2.5 expr命令, 基本与verilog相同

在这里插入图片描述

二、Tcl的匹配方式

1.三种匹配方式: exact, glob 和正则表达式

严格通配 exact:是指两个字符串必须完全相同,这里不允许通配符出现

想要匹配 "hello world"
exact "hello world" #匹配成功.
exact "hello*" #匹配 失败
glob "hello*" #匹配成功

glob-style的通配方式:
在这里插入图片描述
正则表达式如下
在这里插入图片描述

三、流控制

1. if 条件控制

  • if expr1 body1 elseif expr2 body2 elseif … ?else? ?bodyN?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. while 循环

  • while test body
    参数test是一个表达式,body是一个脚本。如果表达式结果为非零,则运行脚本,知道表达式等于零才停止循环。此时while命令中断并返回一个空字符串。
    在这里插入图片描述

3. foreach

在这里插入图片描述

4. switch 相当于verilog中的case

在这里插入图片描述

5. break 和continue和C语言一样

在这里插入图片描述

四、函数

1. 函数的基本结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、文件操作 useful

eof 是判断是否到末端的意思
gets $rfile_handle line 是读出该文件的一行

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

六、常用命令

source + 脚本 表示可以让脚本吃进
info 判断一个变量的存在
在这里插入图片描述

七、脚本解读

功能:自动对齐
查找文件最小值:
在这里插入图片描述
查找文件最大值:
在这里插入图片描述
在这里插入图片描述
awk 把第七个元素找出来,元素是以空格隔开的
在这里插入图片描述


总结

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vivado是一款由赛灵思(Xilinx)公司开发的综合性设计工具,用于FPGA的设计与开发。而Tcl(Tool Command Language)则是Vivado中使用的一种脚本语言,用于自动化执行一系列的命令和操作。 对于零基础的用户来说,学习Vivado/Tcl入门可以按照以下步骤进行: 1. 安装Vivado:首先,需要在电脑上安装Vivado软件。可以从Xilinx官方网站下载合适版本的Vivado,并按照安装向导进行安装。 2. 理解Vivado的基本概念:Vivado是一个功能复杂的工具,需要了解其中的基本概念和工作流程。可以阅读Vivado的官方文档和教程,了解项目、IP核、约束等概念。 3. 学习Tcl语法基础Tcl是Vivado中进行脚本编写的语言,需要学习Tcl的基本语法和结构。可以通过参考Tcl的官方文档或者在线教程,理解Tcl的变量、控制流、函数等概念。 4. 编写简单的Tcl脚本:学习Tcl语法后,可以编写一些简单的Tcl脚本来熟悉语言的使用。可以尝试定义变量、进行数值计算、使用条件语句等等。 5. 在Vivado中应用Tcl脚本:学习了Tcl基础后,可以将Tcl语言应用于Vivado工具中。可以尝试使用Tcl脚本自动创建项目、添加IP核、进行综合、实现和生成比特流等操作。 6. 提升Tcl脚本技巧:随着对Vivado和Tcl的进一步了解和实践,可以逐渐掌握更高级的Tcl编程技巧。例如,使用循环结构、使用自定义函数、调用Vivado中的API等。 通过不断的学习和实践,您可以逐渐成为一名熟练的Vivado/Tcl用户。同时,还可以查找更多的Tcl和Vivado的学习资源,如论坛、社区或相关课程,以便更深入地了解和应用这些工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值