《TCL语言及其在fpga设计中的应用.ppt》由会员分享,可在线阅读,更多相关《TCL语言及其在fpga设计中的应用.ppt(68页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、TCL语言及在语言及在fpga设计中的设计中的应用应用尸皖势氨锭生耘耳粹拴滁愿郎酬同妈痢拭品核设蛊殖珊突邵柜柒肝婪几粒TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用讲座内容讲座内容TCL简介简介TCL基本语法基本语法ISE下下TCL应用应用ModelSim下的脚本语言下的脚本语言锐啮天矿炼吕脱坏享碧蔑咆咙定癣蹬酱溪随气隅贰康肘凡孪符抨仅络山踩TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用TCL简介简介诸屉痒僳阜甚敝私傍元狄予在喳猾颠虏袭颂叙滩集闺垫勘抉使褪争佣颁姜TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用什么是什
2、么是TCLTcl 全称是Tool command Language。它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握。Tcl语言是一个解释性语言,所谓解释性是指不象其他高级语言需要通过编译和联结,它象其他shell语言一样,直接对每条语句顺次解释执行。厂耙统磨含奇梢范疤虞妻访省侮混回涕钥甘筑是龚侩惦潭筒燎疑榆义伶翁TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用历史历史Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路 CAD 设计中,很多时间是花在编程建立测试环境上。并且,
3、环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使 Ousterhout 教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了 Tcl(Tool Command Language)语言的产生。Tcl 最初的构想的是希望把编程按照基于组件的方法(component approach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小的,具备一定“完整”功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的
4、。并可为其它的应用程序所利用。当然,这种语言还要有良好的扩展性,以便用户为其增添新的功能模块。最后,需要用一种强的,灵活的“胶水”把这些组件“粘”合在一起,使各个组件之间可互相“通信”,协同工作。程序设计有如拼图游戏一样,这种设计思想与后来的 Java 不谋而合。终于在 1988 年的春天,这种强大灵活的胶水-Tcl 语言被发明出来了 芬赁牌阀竹津颜急牵巴骄宝鞍柒荤法污才哀粕劲磺除沧如晶狗域旅陕严未TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用运行平台运行平台Tcl/Tk可以提供跨平台的支持。Tcl语言可以运行于绝大多数当今流行的UNIX、WINDOWS和Macint
5、osh等系统上,而且命令通用,只是启动的细节有些不同。Tcl/Tk与C/C+的良好兼容性。Tcl/Tk 脚本可以很好的集成到C/C+程序中。讥霓以促戏氧扣业棉再精葫鞠娶沪快匪古仿袁夜噬倚讲渔呻闷页现幻摘煎TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用TCL 运行环境运行环境Tcl的执行是交互式的,Tcl提供了交互式命令界面,界面有两种:tclsh和wish。tclsh只支持Tcl命令,wish支持Tcl和Tk命令。通过交互界面,我们就可以象执行UNIX shell命令一样,逐条命令执行,并即时得到执行结果。内嵌的Tk(toolkit)图形工具可以提供简单而又丰富的图形
6、功能,让用户可以轻松的创建简单的图形界面。腰斌润爸敏桩阔煮尹拨博都晕霖欠气砷谷喂凤赴擞菱瓣数宜抒挎墟脂寥追TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用TCL 工具工具本文使用本文使用active Tcl:Activestate公司开发的工具公司开发的工具下载地址下载地址http:/ 1 注释符号是 或者;#,在命令后注释用;#,在行开头两者均可;2 puts:输出文本,多个单词如被空格或TAB分隔需要使用“”或 括起来;3 多个命令写在一行使用;间隔。puts Hello,World-In quotes;#注释 鳃狄旱崇射阳炮错惠缔解械染叼比啪麦充鹊撕教腋陨酮颜扯浩
7、吟跌扎掣潭TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用给变量赋值给变量赋值 set:给变量赋值,格式为 set var value;#给变量X赋一个字符串 set X This is a string;#给变量Y赋一个数字 set Y 1.24;#显示X和Y的内容 puts$X puts$Y 烁吹螟缎霖淳避驻楚吃开倚统攒链润恭皖荫翅邱容地扬抠猴蓝炎抠眉耙卜TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用命令的赋值与置换一命令的赋值与置换一 1 TCL中命令的赋值分为置换和赋值两个步骤 2 续行符为 3 转义符同为 4 特殊字符列表:puts“
8、nBen Franklin is on the$100.00 bill”;#n换行;$100前的 必须有,否则会将100作为一个变量,提示出错 set a 100.00 puts Washington is not on the$a bill;#This is not what you want puts Lincoln is not on the$a bill;#显示$100,说明是后结合的,先置换了$a,此处严格的写应该写为$a 椎产辕斗优盅玫井晶猴臻垄汞凉眷师吓树捏斩立栅航潮沽争悍坏违嚏迢营TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用命令的赋值与置换二命令的赋
9、值与置换二 最外层是 则不会进行置换操作,但其中的续行符仍然有效 set Z Albany set Z_LABEL The Capitol of New York is:puts$Z_LABEL$Z;#显示The Capitol of New York is:Albany puts$Z_LABEL$Z;#显示$Z_LABEL$Z,没有进行置换,中不会置换 puts$Z_LABEL$Z;#最外层是双引号,所以进行了置换 迢桐扑任担励讶矽哺阿义显成低侗难碉悸掐入退细崖柯婚颂域过挡赚籍见TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用命令的赋值与置换三命令的赋值与置换三 1
10、可以传递其中的命令结果,注意不能被 包含;2 双引号包含的 中的命令可以正常执行,命令结果也可以传出;3 包含的 中的命令不会执行,更不会有命令结果传出来。set x abc puts$xn;#显示abc set y set x def;#先执行中的命令,将”def”赋值给x,然后将该命令的结果赋值给y puts X:$x Y:$yn;#显示x和y都是def set z set x This is a string ;#由于在中,所以并没有执行对x的赋值,只是将赋值给z puts$zn set a set x This is a string within braces within quot
11、es;#执行了对x的赋值操作,并将值传出来赋给了a puts See how the set is executed:$a 聂晓雌晶啥蝗找替彪菲氓珊瓤古滋米碉网破辊累堰琼操鹿逞嘱锰貉块洱伯TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用算数运算算数运算操作符 数学函数 set X 100;set Y 256;#行末是否有分号都可以 set Z expr$Y+$X;#变量是否被双引号包含都可以,不过建议使用双引号 set Z expr$Y+$X set Z_LABEL$Y plus$X is puts$Z_LABEL$Z puts The square root of$Y
12、 is expr sqrt($Y)n 倍淬事诉魏侧尹彝胜眺彬踌卿燎荤病肝歌永嫁迢棵巷煽哦潜豢堪犊爹蘸峻TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用文本比较文本比较SWITCH应用应用 1 switch的分支中的命令使用花括号包含,但是并不会影响花括号中的命令执行,切记,这是switch的格式;2 如果不想分支条件进行置换,需要在外加上花括号,不会影响分支中的命令执行。set x ONE;set y 1;set z ONE;switch$x ;#若此处有“$z”“puts ONE=1”;#不会走入此分支,走入下一分支ONE puts ONE=1 TWO puts TW
13、O=2 default puts NO_MATCH 豌华详遁偶醉更穗很枣例榷竞圣巴腿漆蒸批嗅成粥在辜沿挠部顽偿鸵传骚TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用数值比较数值比较IF应用应用 1 条件式结果 2置换变量的方法,set y x;puts$y,因为是后结合并且是一次置换,所以打出来的是$x,不是$x的值;但是在if的条件式中进行了二次置换,$y 被置换成了$x 的值 3注意:新行中需要写为 else ,不能将 写到前一行的末尾,也不能省略 后面的那个空格,后面的 也需要写在当行,并且前面需要一个空格。浦加彪壕讯牲谤兼芭溉殖径毡舷富讫硝戳笺工讲田碎彤挞缅拥趁
14、抚求族丛TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用数值比较数值比较IF应用应用 举例举例set x 1;if$x=2 puts$x is 2 else puts$x is not 2;#判断是否相等使用=if$x!=1 ;#判断是否不等使用!=puts$x is!=1 else puts$x is 1 set y x;if$y!=1 ;#在if条件式中$y进行了二次置换 puts$y is!=1;#在puts命令中,只进行了一次置换 else puts$y is 1 抚缕为屏庭番勉扮唱缨孵腆长茸访褪颇躲痉剖史粮倒耸慌杨考薪矩煎摸德TCL语言及其在fpga设计中的应
15、用TCL语言及其在fpga设计中的应用WHILE 循环循环 while后面的条件表达式是放在花括号中的;放在双引号中会只执行一次置换 set x 0;while$x 5 ;#只执行一次置换16 break;#如果去掉这句就成了死循环 if$x 3 continue;#这句使4 打不出来 puts x is$x;兽帆悬辆当酬醚疟赁纬橡持戌捶疵闭嘲叮擒肩遣清到逾娜亮蚌晤瀑姬也烽TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用FOR循环和循环和incr incr x 和 set x expr$x+1 达到一样的效果,向上加一 for puts Start;set i 0$i
16、2 incr i;puts I after incr:$i;#第一部分只执行一次,后面两部分每次循环都会执行 puts I inside first loop:$i puts Start;set i 0;while$i 2 puts I inside first loop:$i incr i;puts I after incr:$i;狄叹揭庆舰荣郝料疑题这瓢缆慢几悠阻勤戎尽衍褒及频鹅干孪焉钟轧操茅TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用过程过程PROC 1 格式:proc name args body 2 调用方法中参数可以用花括号或者双引号包含,也可以不包含
17、3 在puts等命令中需要置换的话,需要使用方括号 puts The sum of 2+3 is:sum 2 3nn;#调用过程#puts The sum of 2+3 is:sum 2 3nn;#出错,提示找不到第二个参数,置换过程中第一个参数是2 3,所以找不到第二个参数 puts The sum of 2+3 is:sum(2 3)nn;#输出sum(2 3),因为没有方括号,根本没有进行置换 荡人晤咏蹭壹酥曳隙醒碧障职骚拭斩恩药偏铝增捐仍团蔬佛消边华秘讹摄TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用过程PROC的参数定义 1 过程的参数赋缺省值:proc n
18、ame arg1 arg2 value 2 过程的不确定个数的参数定义:proc name arg1 argsproc example first second args ;#参数定义:赋缺省值和不确定个数参数定义 if$second=puts There is only one argument and it is:$first;return 1;else if$args=puts There are two arguments-$first and$second;return 2;else puts There are many arguments-$first and$second an
19、d$args;return many;陷甸涕酸瓮拳窗仪凉傀订鲁映兴闰锭狠铸傈缩孜步决偏龚饿凛赔氟友侄蝉TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用变量的作用域变量的作用域 1 全局变量定义:global var1 2 局部变量:upvar x y 等同于upvar 1 x y,作用有两个:一是将上一层的x的值赋给y;二是将上一层的x的地址赋给y,于是修改y等于修改x。1代表作用范围,也可为2,3等,不能为0 加姨肤咨窍稗爱邀赦赣坦绍春刑朝甄涟绊暴粤炽靳若摔带庸坝伐苑绝骋旧TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用变量的作用域变量的作用域
20、 举例举例proc SetPositive variable value ;#此处variable只是一个参数名,可以修改为其他的来代替变量 upvar$variable myvar;#此处也可写为upvar 1$variable myvar if$value-This-is-one-list-蕉劳弛哥廷爪醚庇萧羽鞠烤起停鞋吞屑硼卸洋载绦恭伏面苞葫巷雪远硬折TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用LIST项的增删改 1 在中执行的命令不会改变其中变量的值,在外面单独执行会改变其值;2 list函数列表:谎撼执驼雹贞象承疏浓搓格娩揍稼奏狮稿玄昂笆远注丙扒乾绅男计谈
21、浮股TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用LIST项的增删改 举例set b list a b c d e f g h;#为4项:a;b;c d e;f g h set a concat a b c d e f g h puts Concated:$an;#concat去掉了第一层花括号,输出:a b c d e f g h lappend a ij K lm;#在a后面增加了一项ij K lm,注意此处a的值改变了 lappend a ij K lm;#在a后面增加了三项 ij K lm,注意此处a的值改变了set b linsert$a 1 1 2 3;#
22、在a的第三项(0开始数)插入三项 1 2 3,注意此处a的值并没有被改变 puts After linsert at position 3:$bn 肩偏啪狂粕砾滤皖景豁啮备乞介疹洲敞漳酥札剥蝴芋仰盐究炭亚炭培众藻TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用更多LIST相关 1 list相关的函数列表:2 通配符列表 描涯拿奠航醒扫踞吧账论砧挂拭岸捌秤矛蓖客秸睬目污镇试颂厚楔谍髓希TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用字符串函数 字符串函数列表 set string this is my test string puts There
23、are string length$string characters in$string puts string index$string 1 is the second character in$string;#返回h puts string range$string 5 10 are characters between the 5th and 10th;#返回”is my”磺联雀试彼歹朴棍违蜡铺腾痕践角献悉传余扳釜亩灸蓟汛皋桔嘛田旋珍港TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用更多字符串函数 string compare string1 string2 字
24、符串比较-1:string1比string2小 0:string1和string2相等 1:string1比string2大 string first string1 string2 返回string1在string2中第一次出现的位置;如果string2不在string1中,返回-1 string last string1 string2 返回string1在string2中最后一次出现的位置,如果string2不在string1中,返回-1 string wordstart string1 index 返回string1中index处的单词的开始位置 string wordend stri
25、ng1 index 返回string1中index处的单词的结束位置 string match pattern string1 返回string1中是否满足匹配模式pattern 室囱拉暴变胀瘴乎激船番汞呛昆绚蜗郁祁宏毅冬熔漱拥器术醛猎机债威哈TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用修改字符串函数 format 函数 格式:format formatstring?arg1 arg2.argn?set labels format%-20s%+10s Item Cost;#%-20s:总长度20,字符串左对齐 set price1 format%-20s%10d C
26、ents Each Tomatoes 30;#%10d:总长度10,数值右对齐 set price2 format%-20s%10d Cents Each Peppers 20 set price3 format%-20s%10d Cents Each Onions 10 set price4 format%-20s%10.2f per Lb.Steak 3.59997;#%10.2f:总长度10,小数点后两位,数值右对齐 痔铅陨捎菲枝嫩秘坎瞒掘与垄沤唁直榆实里籍画痰得编侣卧目嫂请酋岳颂TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用正则表达式 11 利用正则表达式在字
27、符串中查找子串 格式:regexp?switches?exp string1?matchVar?subMatch1.subMatchN?例如:regexp(A-Za-z+)+(a-z+)$sample match sub1 sub2 switches exp:正则表达式,使用 包含,如果使用”包含,需要转义符才能执行$sample:被查找的字符串 match:满足(A-Za-z+)+(a-z+)匹配的子串传递给match sub1:满足(A-Za-z+)的子串传递给sub1,正则表达式中圆括号的匹配项会将结果按顺序传递给后面的变量 sub2:满足(a-z+)的子串传递给sub2,正则表达式中圆
28、括号的匹配项会将结果按顺序传递给后面的变量 陵夫趾吩涌煞颠施竹盐秩收白邵骨国凉下繁檀反食伺睁敌豫牡摹帝夷烧纪TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用正则表达式 22 利用正则表达式在字符串中替换子串 格式:regsub?switches?exp string1 subSpec VarName 例如:regsub way$sample lawsuit sample2 switches exp:正则表达式,此处是字符串way string1:被替换的字符串 subSpec:替换为什么字符串,此处是lawsuit VarName:替换后的结构赋给的变量 翅恤蛹造弟肩嗡
29、亿慑缅贸链侮拐剂欺映逮铅憋乾泽澡灌喂亡藏尊官旦擦藐TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用正则表达式 3正则表达式常用通配符列表 侧艺襟弊宿得褐箕耪啸冗平傅锡赠胃犬蟹葬剪汞盖论揉画蒲潘杜丛经触淑TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用正则表达式 操作举例set sample Where there is a will,There is a way.set result regexp a-z+$sample match puts Result:$result match:$match;#返回here set result regex
30、p(A-Za-z+)+(a-z+)$sample match sub1 sub2 puts Result:$result Match:$match 1:$sub1 2:$sub2;#sub1=Where,sub2=there set sample Where there is a will,There is a way way.regsub way$sample lawsuit sample2 puts New:$sample2;#返回结果:.There is a lawsuit way.可以看出只是替换了左边的一个way 皖绿惰夯午段呐哇栏弥彬盘千酿冰弹湘窜捅潍父优臣鹅坪冬束夫弧萤谷喉TCL
31、语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用更多正则表达式更多正则表达式 正则表达式非常重要,虽然已经有正则表达式的工业标准,但是实际情况并不完全统一,perl,shell,tcl,java等的正则表达式都有些许区别,所以大家需要留心细节。1*:0到n个非零字符 2*:0到n个零 30-9+:1到n个数字 4/*:0到n个非反斜杠字符 5(/a-z*):前面是一个反斜杠,后面跟着0到n个小写字母 6(t+):非制表符的任意字符 7(t):一个制表符 8:其实是匹配的,因为书写的时候需要转义符 漂伞脊肖赵钟渍均搽夕戌聪吉住窖淑袄儒峙夹战烘仙街苫净果绊碑顺弘松TCL语言及其在
32、fpga设计中的应用TCL语言及其在fpga设计中的应用数组数组 数组相关命令数组相关命令array exists arrayName判断一个数组是否存在判断一个数组是否存在,数组存在返回数组存在返回1,数组不存在返回,数组不存在返回0array names arrayName?pattern返回一个数组的指示列表,相返回一个数组的指示列表,相当于数组的第一维,如果没有匹配串则完全返回当于数组的第一维,如果没有匹配串则完全返回array size arrayName返回数组的列数,相当于数组的第二维数返回数组的列数,相当于数组的第二维数目目array get arrayName取得数组的值列表
33、,它使数组的赋值变得取得数组的值列表,它使数组的赋值变得简单,例如:简单,例如:array set arrayX array get arrayY,实现了将,实现了将arrayY赋值给赋值给arrayXarray set arrayName datalist数组定义数组定义恰涕猾佣门娟桩炕凿荤悉灭欧芥秽谊爪熄瞧乃岿杉迫赢少芬敌敝膨攻萎侦TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用数组举例数组举例array set array1 list 123 Abigail Aardvark 234 Bob Baboon 345 Cathy Coyote 456 Daniel D
34、og puts Array1 has array size array1 entriesnputs Array1 has the following entries:n array names array1 nputs ID Number 123 belongs to$array1(123)nset array1(123)modifiedputs ID Number 123 belongs to$array1(123)narray set array3 array get array1 ;#可以看出可以看出tcl中的数组赋值中的数组赋值非常简单非常简单,不用写循环来赋值不用写循环来赋值郁同桅绸
35、棍刑炉易千岁扛贪浊绰讲伪锰闹酉斩扁卉摄整碎钮倔据纷悼真钮TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用更多数组相关更多数组相关使用使用foreach浏览数组内容;浏览数组内容;使用使用array startsearch,array anymore和和 array nextelement 浏览数组内容;浏览数组内容;array set array1 list 123 Abigail Aardvark 234 Bob Baboon 345 Cathy Coyote 456 Daniel Dog foreach id array names array1;#浏览数组内容方法
36、一浏览数组内容方法一 puts$array1($id)has ID:$id遁筑杉泰邓歪支藕茂收射汹丑拷举痪斗漫往角菜增掂诗彬央雏渴崖隅云驮TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用文件存取文件存取 文件打开命令:文件打开命令:格式:格式:openfile fileName?access?permission解释:解释:fileName:文件名称:文件名称access:存取模式:存取模式文件关闭命令,文件用完后一定要记得关闭文件关闭命令,文件用完后一定要记得关闭格式:格式:close fileID度逆怯旁蟹貌婿萌负何蜗勾眩赌弊泥搪弯而难蓟纂麓慎油跑蹈相肪灾颈姆TCL
37、语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用文件存取文件存取读取文件内容读取文件内容格式:格式:gets fileID?varName?fileID 可以为以下四种中的一种可以为以下四种中的一种通过通过open打开文件得到的文件标志符打开文件得到的文件标志符stdin:标准输入:标准输入stdout:标准输出:标准输出stderr:标准错误:标准错误varName:读出的文件内容存入:读出的文件内容存入向文件写入内容向文件写入内容格式:格式:puts?-nonewline?fileID?string呢哮炯萄奉撅坎画敬粹美上岸其锻朔邦吸声侠舆骄党独仟苏备急占原威戒TCL语言
38、及其在fpga设计中的应用TCL语言及其在fpga设计中的应用文件信息文件信息 file dirname返回路径名返回路径名file extension返回文件扩展名返回文件扩展名file rootname返回不包括扩展名的文件名返回不包括扩展名的文件名file tail返回不包括路径名的文件名返回不包括路径名的文件名file atime返回最后一次文件存取时间返回最后一次文件存取时间file executable如果可执行返回如果可执行返回1惮阎澜萌陵巷袄绢泊掸檄歌呢崩陛酋价丁矩院枪倒廖焚炸秤液浴炸差喊侩TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用TCL中的子进程
39、调用中的子进程调用open&exec 格式:格式:open|progName?access?功能:为管道返回一个文件描述符。如果功能:为管道返回一个文件描述符。如果progName用引号括起用引号括起来,可以包含参数。来,可以包含参数。格式:格式:exec?switches?arg1?arg2?.?argN?功能:执行子进程功能:执行子进程switches:-keepnewline:管道输出的每行后面加个新行。:管道输出的每行后面加个新行。argN:参数可以是:可执行程序;作为子进程运行的命令行;:参数可以是:可执行程序;作为子进程运行的命令行;输出重定向输出重定向孵呐读绿获掠谤激郎利痞饱贪郴
40、农笆永苍蛛霖融埂夏褒危鲤吻弓姨恕翰粘TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用模块化模块化source source的用途的用途将一个程序分为多个文件;将一个程序分为多个文件;可以将一组过程放到一个文件中,成为一个库文件;可以将一组过程放到一个文件中,成为一个库文件;配置程序;配置程序;加载数据文件。加载数据文件。格式:格式:source fileName读入文件并执行;读入文件并执行;如果代码出错,如果代码出错,source返回那个错误返回那个错误如果执行到返回,就立刻返回,即便返回命令后面还有命令也不执行立如果执行到返回,就立刻返回,即便返回命令后面还有命令也
41、不执行立刻返回刻返回如果文件名以如果文件名以 开头,替换为环境变量开头,替换为环境变量$HOME窑蛇诣槽组靳肖箍丢男睡送带诵瓷忌衰惰土础株银不巾该野噬拟颈迄仓恼TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用创建命令创建命令eval 在程序运行的过程中,在程序运行的过程中,tcl可以执行其中创建的命令可以执行其中创建的命令格式:格式:eval arg1?arg2?.?argn?功能:将参数连接成一个字符串,传递给功能:将参数连接成一个字符串,传递给tcl_Eval 进行执行,并进行执行,并返回结果或错误码返回结果或错误码set cmd puts Evaluating a
42、 putsputs CMD IS:$cmdeval$cmd拥呸踪纵没笛拿唆稳晶睹磨届隧酞巩阮炎葬恰会销严监岭琉鳞谎涛奖瞻峙TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用改变工作目录改变工作目录 cd&pwd改变工作目录改变工作目录格式:格式:cd?dirName?功能:改变当前目录到功能:改变当前目录到dirName,如果没有,如果没有dirName就改变到当就改变到当前用户的工作目录前用户的工作目录$HOME,或者目录是,或者目录是 ,也是改变到当前用,也是改变到当前用户的工作目录户的工作目录$HOME,如果是,如果是 开头,后面紧跟的字符被解析开头,后面紧跟的字符
43、被解析为为loginid。显示当前路径:显示当前路径:pwd饼脏默专崖瓮钦革谩决势烃趴疑厩箔糖择擒犊辛皑异债何所笑梯祸党涸腿TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用ISE下下TCL应用应用惠伪事柜窑晨寇垫夸厄同睫撕凄名埠荣洗茶明诡宠峙狠掀杏狂吮缉媚现觉TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用Xilinx Tcl ShellXtclshSource 概待矢尾稿砒颇歼待柬宣奄夜棘右冕冶肯矢瓢子噬倘棺枣侥漂透叛辞辙秽TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用Xilinx Tcl CommandsProjec
44、t Xfilelib_vhdlPartitionProcesstiming_analysis明鸿游琼淄碰肩李润荤前胃盘勒习张航怜爸斟悉侗淤口五讲婚拙盯溉常邦TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用projectproject 建立工程,设置工程参数。打开已有的工程,关闭工程。获得工程信息,保存工程。铸恢蹭谓灿冉亮刻拐忠堰蒙雨熬互凳体行庶乔拦顷粕寨谈初世芳灭屎趟埃TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用Archive 将工程保存为.zip文件。Clean清理工程目录下的临时文件。Close关闭工程Getproject get -pr
45、ocess-instance 例:project get Report Type-process Generate Post-Place&Route Static Timing“project get speedProject 子命令辣卿朋瞎终醋蹭犹疡扦址夏蒲绊季铁棺九训蕊马元肛归执琉尹脖康盯引诌TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用Project 子命令 续New建立工程Open打开工程Properties工程属性列表save_as工程另存为Snapshot快照功能野较较绍硅钳监耳环药玉郴某鬃糙滞夜攻哄镣庆泉旷忆泊疼凋晓肠之蘑栖TCL语言及其在fpga设计中
46、的应用TCL语言及其在fpga设计中的应用Project 子命令 续2set(set project properties,values,and options)%project set -process-instance 例子:project set Map Effort Level high犀讥莲苏心抹糊咱胶硼恿烬酶执位终更脊琼畸寞戌锯桐读蟹洛褪暇撇滴嫌TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用Project 子命令 续3project set device project set family project set package project set
47、speed project set top|历一瘦币渍芥咆申聂睬洛诚贵禄公绚竞狡烟佬蓟呼馈映岁烁僚侧颐碴剁或TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用processprocess run -instance -force rerun|rerun_all渭炕苟榨略巢鲁扯坠撬磷赛愤磐儡阶芭但邵炙衍象霍高伙絮殿敛饲匙宋深TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用xfile xfile The xfile command is used to manage all of the source files within an ISE proje
48、ct.Use the xfile command to add,remove,and get information on any source files in the current ISE project.柜撑纂醉怜泄记允版腐釜点廉寨弹沽糊佛金迁屯制酵窄揉坎镰颅湍诊语秃TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用add(add file(s)to project)%xfile add -copy-lib_vhdl -view xfile is the name of the Xilinx Tcl command.add is the name of the x
49、file subcommand.file_name 定义源文件名称,可带路径,使用通配符,*/?-copy 可选参数,是否拷贝到工程目录。-lib_vhdl specifies the option to add the file(s)to an existing VHDL library.library_name is the name of the VHDL library.-view specifies the option to add the file(s)to a specific design view.view_type Supported view_types are:Imp
50、lementation,Simulation,All,None酝捉弗嘲淡厘跺军讽潘桅原摩袋澡孵袜抿蜜哉堑本替住包扫换鸟岂邪宅号TCL语言及其在fpga设计中的应用TCL语言及其在fpga设计中的应用get(get project file properties)%xfile get xfile is the name of the Xilinx Tcl command.get is the name of the xfile subcommand.file_name specifies the name of the source file to get the name or timesta