tcl,全名tool command language,是一种通用的工具语言。

  1)每个命令之间,通过换行符或者分号隔开;

  2)tcl的每个命令包含一个或者多个单词,默认第一个单词表示命令,第二个单词表示参数,

      单词之间必须同空格或者tab键隔开;

  3)tcl解释器的执行过程,分析阶段,对单词的拆分,同时进行必要的置换;

               执行阶段,检查命令有效性,启动c/c++解释器,传递之后的单词作为参数,执行命令;

  4)tcl中的注释,用###来表示,一个就可以。必须在一行的开头

  5)同一行命令太长,转到下一行,使用\ //,先转义空格隔开单词,之后//表示转到下一行;

  6)大括号,{}中,不做特殊字符的识别,所有字符作为普通字符来处理;

  7)双引号,""""中,只有部分的特殊字符被处理,换行符,$,[],其他作为普通字符;

  8)tcl对复杂的数据结构支持不好,数组的支持也很奇怪。本文只讨论变量;

  9)tcl中的list 数据类型,不声明变量,直接放在{}中,也定义了一些list操作函数,直接对{}进行操作

      list中的不同对象之间用空格隔开;可以将list赋值给一个变量

tcl中的置换有三种:

  1)变量置换,$只是进行变量的简单替换,并不进行运算;

    set x 10; set y $x+100;    那y的值是10+100,被当做一个整体的字符来处理,而并没有进行运算;

  2)命令置换,[,将最后一个命令的执行结果返回作为参数,内部可以有多条命令;

    set y [expr  $x+100;]    这时的y表示110;[]中的命令必须是若干tcl可识别的正确命令;

  3)反斜杠置换,\,用来打出一些特殊的字符;如换行符\n,空格,[,$,并没有另一个方括号];

    set msg money\ \$3333\ \nArray\ a\[2]    输出money $3333

                        Array a[2]

tcl中的操作数,整数,实数都可以,0x开头表示十六进制,o开头表示八进制;

  运算符和优先级与C类似;

tcl中的控制流,while,for,if,foreach,switch,各个参数用空格隔开,可以使用{}包住各个分开的参数

  其中的{},{必须写在与命令一行的地方,避免tcl认为命令已经结束;

    break和continue,来控制单个循环;

tcl中的默认命令:

  1)set 设置变量,变量命令也遵守C的标准,字符,数字,下划线;

      set a 2;  $a表示该变量

  2)unset,删掉某个变量;可以加多个变量   unset  a   b;表示都被删除

  3)append,变量拼接,  incr,操作数必须是整数,相加;

  4)expr,数学计算命令,参数必须是数字,支持很多C的运算函数,可以直接调用;

tcl中的输入输出:

  1)scan,可以实现格式化输入:

    scan "some 26 34"  "some %d %d" a b

  2)puts,格式化输出:

    puts [format "the value of c is %d, d is %d, e is %d, f is %d" $c  $d  $e  $f]

tcl中的错误,异常处理:

  1)catch  command ? varname,执行command,返回之后的结果为命令返回值,或者直接赋值给变量var_name;并不会退出tcl

  2)error message ? info ? code,将message作为一个错误信息,返回回去,

扔缺少procedure,文件,字符串处理部分,需要补充;

tcl脚本的更多相关文章

  1. Modelsim仿真tcl脚本与wave.do文件

    Modelsim的仿真,如果一直使用图形界面建工程,编译,仿真,一个个加入观察波形的话,未免复杂了一些,尤其是当工程较大,需要观察的信号较多时,下面贴出一些常用的tcl脚本命令和wave.do常用语法 ...

  2. 使用Tcl脚本分配FPGA管脚

    自己主动生成Tcl文件 Project -> Generate Tcl File for Project... 弹出例如以下对话框.设置脚本路径. 编辑引脚 使用set_location_ass ...

  3. Quartus16.0如何使用TCL脚本

    前言 TCL脚本语言在EDA工具中使用频繁,本文主要介绍使用TCL脚本文件进行引脚分配,避免手动分配以及分配出错: 流程 1.准备好你的TCL脚本文件,举个栗子(脚本文件内容): 2.在Quartus ...

  4. Modelsim中使用TCL脚本编写do文件实现自动化仿真

    通常我们使用Modelsim进行仿真,是通过图形界面点点点来进行操作,殊不知Modelsim完美支持TCL脚本语言及批处理命令do文件.简单来说就是从你修改完代码后到你重新编译把需要的信号拉出来查看, ...

  5. modelsim如何使用tcl脚本来写编译文件

    对于modelsim进行仿真,可以通过GUI来进行仿真,当然更加快速的方法可以使用TCL脚本文件进行快速仿真. Modelsim采用TCL脚本文件仿真的具体流程如下所示:      具体的操作步骤如下 ...

  6. TCL脚本语言基础介绍

    Tcl简介(一):Tcl 语法 Tcl 语法 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以释运行,其强大的功能和简单精妙的语法会使你感到由衷的喜悦,这片文章对 Tcl有很好的描述和说明.如 ...

  7. 在Quartus中如何使用TCL脚本文件配制管脚

    quartus软件分配管脚的方法有两种,一是选择菜单“assignments->pins”进入管脚分配视图手动分配:第二种方法是利用tcl脚本文件自动分配.这里我来介绍第二种方法. 1.生成tc ...

  8. 28nm工艺下,自动生成管脚排列文件,给设计加PAD,并在PAD上面打Label的流程(含Tcl脚本)

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  9. ICC中用Tcl脚本给版图中的Port/Terminal加Label的方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  10. tcl脚本直接执行脚本中中文识别不了的处理

    上一篇说tcl中文乱码是因为我写了个bat调用该脚本,但是脚本中的中文路径是乱码.今天刚好有时间进行解决下: 首先看看调用代码 "./bin/base-tcl8.6-thread-win32 ...

随机推荐

  1. java登录怎么做

    (一)1.先查找有没当前用户.2.对比用户名和密码3.返回用户信息 @Override public AppResultEntity userLogin(String username, String ...

  2. Bloom Filter 数据结构去重

    Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合. Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于 ...

  3. panda核心数据结构

    Series Series是一维带标签的数组,数组里可以放任意的数据(整数.浮点数.字符串.python Object)等等 创建函数: (1)s = pd.Series(data,index=ind ...

  4. 数据库使用:sql server/mysql/sqlite

    本科学过sql server数据库,上研刚开始在做研究时自己想点子自己做,为了简便使用了论文中看到的一个简易数据库sqlite存储使用数据.后来随着数据量的增长,以及数据处理的需求sqlite速度明显 ...

  5. VSCode代码修改后跑起来没反应,打开本地文件,代码没变化

    两种解决办法: 首先:修改VSCode默认配置文件,点击左下角设置标志图 -> 设置,出来了设置相关的东西,搜索 files.autoSave 第一种:把"files.autoSave ...

  6. JTAG 工作原理

  7. java版迷宫

    当年学数据结构,正好java也刚刚学会gui编程,就想着结合起来做个小东西,然后这个自动走路的小球就出来了. 一个方向的枚举Dir.java public enum Dir { L,U,R,D } 结 ...

  8. python处理csv文档

    在工作中遇到了使用python解析csv文件的问题,包括读写操作,下面参考官网文档,进行一下总结: 首先CSV (Comma Separated Values) ,也就是逗号分开的数值,可以用Note ...

  9. RSA 时序攻击

    RSA的破解从理论上来讲是大数质数分解,可是就是有一些人另辟蹊径,根据你解密的时间长短就能破解你的RSA私钥. 举一个不恰当但是比较容易理解的例子: 密文0101 私钥0110 明文0100 问题的关 ...

  10. kafka4 副本机制

    概述 每个分区有n个副本,可以承受n-1个节点故障. 每个副本都有自己的leader,其余都是follower. zk中存放分区的leader和 follower replica的信息.(get /b ...