Tcl脚本语言基础

一、简介

Tcl是一种被EDA工具广泛支持的脚本语言,通常作为EDA工具的shell实用。Tcl极其XDC扩展使用户可以利用Tcl语言在VIvado上完成一些系列开发操作,从而完成路径、时钟、端口的多重约束,从而快速实现FPGA设计工程测试与修正。这里简单介绍一下这些语句,具体的XDC专用语句在其余文章内说明解释。

二、Tcl变量

在Tcl中,所有的变量都是由ASCII字符串表达。变量使用set命令进行分配,其使用格式如下:

set a 1234;    #注释:将1234作为值赋给变量a

使用符号$可以对变量进行处理,将其被赋予的值替换出,而当其在{}内,则不具备特殊含义。如下所示:

set a 1;    #把1赋给变量a
set b {$a}; #把$a赋给b
puts a;     #打印出字符a
puts $a;    #打印出a被赋予的值1
puts b;     #它的结果为$a

如果给一个变量名后增加上索引,则该变量自动转化为数组,索引可以是数字,也可以是字符串:

set a(1) 1;    #数组a的索引1的值被赋为1
puts $a(1);    #打印出的结果为1
puts $a;       #如果不给出索引,则为无效命令;
set a(b) 2;    #数组a的索引b的值赋为2

在这里买就必须特备注意$的用法,他将变量转化为其实际值。

三、Tcl列表

列表是对象的集合,可以进行添加、搜索等操作。

1.列表创建

set gates [list AND OR NOT NAND NOR];
set gates [{AND} {OR} {NOT} {NAND} {NOR}];
set gates [split "AND.OR.NOT.NAND.NOR" "."];

以上三种方法都可以创建一个Tcl列表,从上例可以看出:

  • list为列表创建的关键词;
  • AND OR等经过转义括号{}转义后作为普通字符串赋给列表;
  • split代表着字符串切割函数,它的返回值为列表。

2.列表操作关键字:lappend、lsearch

lappend实现向列表中添加一个新的元素:

set 列表名 [lappend 列表名 特定元素];

lsearch实现搜索列表中是否存在某个特定元素,如果存在,返回索引,如果不存在,返回-1

lsearch $列表名 元素名;

四、Tcl表达式与运算符

1.表达式求值

表达式求值使用关键字expr

expr 函数 数字;
例子:set x 10;
      expr $x+10;得到结果20

2.自加关键字: incr

incr 变量 数字;

将变量与数字相加,结果赋给变量。

3.运算符列表

Tcl中支持的运算符
运算符描述
-、 +、 ~ 、!一元减、一元加、按位取反、逻辑非
+ 、-、 *、 /加、减、乘、除
**指数
<、> 、<=、 >= 、==、 !=小于、大于、小于等于、大于等于、等于、不等于
eq、ne比较两个字符串等于、不等于
in、ni检查列表中包含、不包含字符串的运算符
&、|、^按位与、或、异或
&&、||逻辑与、或
<<、>>左移、右移

 

 

 

 

 

 

 

 

 

 

 

五、控制流语句

1.列表遍历

列表遍历使用foreach结构

foreach 变量名 $列表名[];

在括号中卫循环体,将遍历列表中的所有元素,元素值赋给语句中定义的变量。

2.if语句

if{判别式}
    {语句}
elseif{判别式}
    {语句}
else
    {语句}

Tcl提供了break和contiune两个关键词与If语句结合,用于循环控制。

3.for语句

for 初值 判别式 步进变化
    {执行语句}

4.while语句

while 条件
{执行语句}

5.过程(函数)定义

proc 过程名{参数1 参数2 ...}
{过程体
    return 参量}

 

  • 11
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值