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. Calcite - StreamingSQL

    https://calcite.apache.org/docs/stream.html   Calcite's SQL is an extension to standard SQL, not ano ...

  2. Flink – JobManager.submitJob

    JobManager作为actor, case SubmitJob(jobGraph, listeningBehaviour) => val client = sender() val jobI ...

  3. 游戏引擎架构 && windows 核心编程

    欲想正人,必先正己. 静坐当思己过,闲谈莫论人非. 垂直同步的作用: 为避免画面撕裂,许多渲染引擎会在交换缓冲区之前,等待显示器的垂直区间消隐,即电子枪重归屏幕上角的时间. 高分辨率计时器的时间漂移 ...

  4. javascript判断两个对象属性以及值是否相等

    objIsEqual(obj1,obj2){//比较两个对象键值对是否相等 var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Obje ...

  5. 主动触发input框的失去焦点事件,阻止输入法跳出

    今天遇到个问题,我在手机做一个选择生日的功能,但是当我点击input框时,事件选择插件和输入法都弹出来了,很丑,然后就想阻止输入法弹出来, 网上一个方法是:在input框的获取焦点事件里,主动触发失去 ...

  6. 重读《深入理解Java虚拟机》七、探究Java内存模型

    1.计算机物理内存结构(物理内存结构决定了虚拟机内存结构) 由于处理器和主存储设备在运算速度上不上同一个数量级上,因此处理器和主存储器之间不得不增设一层高速缓存,将部分在主存储设备的运算放在高速缓存内 ...

  7. Java 生成三位随机数

    调用这个Math.Random()函数能够返回带正号的double值,该值取值区间是[0.0,1.0),注意,它是左闭右开区间.返回值是一个伪随机选择的数,在该范围内(近似)均匀分布. 如果生成三位随 ...

  8. bug: '\xff' 转换成-1 而不是255

    后台给的值处理后 Byte rtncode = payload[0]; 打印payload[0]是'\xff', 增加 if (rtncode ==255 ){ ....} 的判断,跳里面去了 然后用 ...

  9. 分布式任务队列Celery入门与进阶

    一.简介 Celery是由Python开发.简单.灵活.可靠的分布式任务队列,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务.Celery侧重于实时操作,但对调度支持也很好,其 ...

  10. JavaScript字符串String

    JavaScript中String类型用于表示由零个或者多个16位Unicode字符组成的字符序列即字符串:同时字符串可以用单引号或双引号表示. 下面是一些特殊的字面量: 字面量 含义\n 换行\t ...