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. [daily][centos][iptables][firewalld] firewalld的初步了解

    CentOS7中默认使用firewalld代替了iptables . 接下来将对firewalld, 做一些初步的了解. 首先读一下, redhat的文档: https://access.redhat ...

  2. 《HTTP - 基于http的认证》

    推荐一首歌 - 好吧,今天刚入职第二天,也没听歌. 哈哈哈哈. 1:何为认证? - 其实这个问题就比较宽泛了,总的来说,就是你有证明你身份的标识. - 和人类社会一样,你花了钱想看一场场演唱会,但是谁 ...

  3. 《Mysql 日志结构》

    推荐一首歌 - <往后余生>王贰浪 发现自己每天就听这么几首歌 一:慢查询日志 - SQL 完成查询并完成对于锁资源的释放之后,msqld 会将符合条件的SQL写入慢日志.因此慢日志可能和 ...

  4. 安装graphlab伤透了心,终于搞定了

    为了方便研究各种机器学习算法,我想用graphlab来辅助我对后续算法的研究.所以我的目标就是安装graphlab到我的windows笔记本中.而基于python的graphlab的安装最好是采用如下 ...

  5. struct和[]byte的转换,注意结构体内变量首字母一定大写

    type temp struct {     Afd int     Bee string }func main(){ text:=temp{3123,"4234"} b._:=j ...

  6. java 线程(五)线程安全 Lock接口

    package cn.sasa.demo3; import java.util.concurrent.ExecutionException; public class ThreadDemo { pub ...

  7. Log4j rootLogger配置

    Log4j 根配置语法 log4j.rootLogger = [ level ] , appenderName, appenderName, … 指代 把指定级别的日志信息输出到指定的一个或者多个位置 ...

  8. 前端 HTML 常用标签 head标签相关内容 style标签 定义内部样式表

    styple标签 <!-- 定义内部样式表 --> <style type="text/css"></style>

  9. 用python发邮件实例

    发QQ邮件 首先确认发件方是否打开了SMTP服务,去QQ邮箱的设置中查看,如果没有请自行开启. from email.header import Header from email.mime.text ...

  10. Kinect2.0获取数据

    最近事情真是多,今天抽空研究一下Kinec2.0的数据获取! 系统要求 https://developer.microsoft.com/en-us/windows/kinect/hardware-se ...