Tcl编程简介(五)

【Vivado TCL教程】从零开始掌握Xilinx Vivado TCL脚本编程(一) Vivado TCL脚本编程入门指南 本文介绍了Xilinx Vivado中TCL脚本的基础知识与应用,特别针对xc7z010clg400-1开发板用户。内容涵盖: TCL基础语法:命令结构、变量定义、控制语句(if/for/while)和自定义函数(proc) Vivado集成:通过TCL控制台或脚本文件执行命令,实现自动化设计流程 实践价值:TCL脚本可提高FPGA开发效率,支持批量处理和团队协作 通过具体代码示例(如变量操作、循环结构)帮助读者快速掌握TCL在Vivado中的应用,适合希望从GUI转向 阅读详情

Tcl编程简介(五)
 

lsort -mode list

排列列表。

-mode : -ascii

  -dictionary 与acsii类似,只是不区分大小写

  -integer 转化为整数再比较

  -real 转化为浮点数再比较

  -command command 执行command来做比较


open fileName
open fileName access

 

  打开文件,返回一个文件描述符。


access
r w a r+ w+ a+

 

  定义与C中相同。如文件名的第一个字符为|表示一管道的形式来打开。


set f [open |more w]
set f [open /etc/pass r]

proc name args body

 

  创建一个新的过程,可以替代任何存在的过程或命令。


proc wf {file str} {
puts -nonewline $file str
flush $file
}
set f [open /tmp/a w]
wf $f "first line "
wf $f "second line "

 

  在函数末尾可用 return 来返回值。

puts -nonewline fileId string

  向fileId中写入string,如果不加上 -nonewline 则自动产生一个换行符。

pwd

  返回当前目录。


read fileId
read fileId numBytes

 

  从fileId中读取numBytes个字节。


regexp ?switches? exp string ?matchVar? ?subMatchVar
subMatchVar ...?

 

  执行正则表达式的匹配。


?switches? -nocase 不区分大小写
-indices 返回匹配区间

 

  如:


regexp ^abc abcjsdfh
//return 1
regexp ^abc abcjsdfh a
//return 1
puts $a
//return abc

regexp -indices ^abc abcsdfjkhsdf a
//return 1
puts $a
//return "0 2"


regsub ?switchs? exp string subSpec varName

  执行正则表达式的替换,用subSpec的内容替换string中匹配exp的部分。

  ?switchs? -all 将所有匹配的部分替换,缺省子替换第一个,返回值为替换的个数。

  -nocase 不区分大小写。

  如:


regsub abc abcabcbac eee b
//return 1
puts $b
//return "eeeabcabc"

regsub -all abc abcabcabc eee b
//return 3
puts $b
//return "eeeeeeeee"


return
立即从当前命令中返回。
proc ff {} {
return friday
}

set a [ff]
//a = "friday"


scan string `format" varname ...

  从string中安format来读取值到varname。

seek fileId offset ?origin?

  移动文件指针。

origin: start current end

  offset从哪里开始算起。

set varname ?value?

  设置varname用value,或返回varname的值。如果不是在一个proc命令中则生成一个全局变量。

source fileName

  从filename中读出内容传给Tcl解释起来执行。

split string ?splitChars?

  将string分裂成列表。缺省以空白为分隔符,也可通过splitChars来设定分隔符

string subcommand arg ...

  用于字符串的命令。

string compare string1 string2

  执行字符串的比较,按 C strcmp 的方式。返回 -1, 0, or 1。

string first string1 string2

  在string1种查找string2的定义次出现的位置。未找到返回-1。

string length string

  返回字符串string的长度。

string match pattern string

  判断string是否能匹配pattern。pattern是以shell文件名的统配格式来给出。

string range string first last

  返回字符串string中从first到last之间的内容。

string tolower string

  将string转换为小写。

string toupper string

  将string转换为大写。

string trim string

  将string的左右空白去掉。

string trimleft string

  将string的左空白去掉。

string trimright string

  将string的右空白去掉。

tell fileId

  返回fileId的文件指针位置。

time command

  执行命令,并计算所消耗的时间。


time "ls --color"
some file name
503 microseconds per iteration
trace subcommand
trace subcommand arg ...

 

  监视变量的存储。子命令定义了不少,但目前只实现了


virable。
trace variable name ops command
name 为变量的名字。
ops 为要监视的操作。
r 读
w 写
u unset

 

  command 条件满足时执行的命令。

  以三个参数来执行 name1 name2 ops name1时变量的名字。当name1为矢量时,name2为下标,ops为执行的操作。

  例如:


proc ff {name1 name2 op} {
puts [format "%s %s %s" name1 name2 op]
}
set a hhh
trace variable a r {ff}
puts $a
//return "a r hhh"

unknown cmdName

 

  unknown 并不是 Tcl 的一部分,当 Tcl 发现一条不认识的命令时会看看是否存在 unknown命令,如果有,则调用它,没有则出错。

  如:


#!/usr/bin/tclsh
proc unknown {cwd args} {
puts $cwd
puts $args
}
//下面是一条错误命令
sdfdf sdf sdkhf sdjkfhkasdf jksdhfk
//return "sdfdf sdf sdkhf sdjkfhkasdf jksdhfk"


unset name ...

  删除一个或多个变量(标量或矢量)。

uplevel command ...

  将起参数连接起来(象是在concat中)。最后在由level所指定的上下文中来执行。如果level是一个整数,给出了在栈中的距离(是跳到其它的命令环境中来执行)。缺省为1(即上一层)。

  如:


#!/usr/bin/tcl
proc ff {} {
set a "ff" //设置了局部的a
-------------------------
}
set a "global"
ff
puts $a
//return "global"

 

  再看下一个:


#!/usr/bin/tcl
proc ff {} {
uplevel set a "ff" //改变上一级栈中的a
-------------------------------------
}
set a global
ff
puts $a
//return "ff"

 

  如果level是以#开头后接一个整数,则level指出了在栈中的绝对位置。如#0表示了顶层(top-level)。

  a b c 分别为三个命令,下面是它们之间的调用关系,

top-level -> a -> b -> c -> uplevel level

  绝对位置: 0 1 2 3

  当level为 1 或 #2 都是在 b 的环境中来执行。

  3 或 #0 都是在 top-level 的环境中来执行。

upvar ?level? otherVar myVar ?otherVar myVar ...?

  在不同的栈中为变量建立连接。这里的level与uplevel中的level是同样风格的。

  例如:


#!/usr/bin/tcl
proc ff {name } {
upvar $name x
set x "ff"
}
set a "global"
ff a
puts $a
//return "ff"

while test body

 

  举个例子吧:


set x 0
while {$x<10} {
puts "x is $x"
incr x
}

 

  Built-in variables 内建的变量下名的全局变量是由 Tcl library 自动来管理的。一般是只读的。

env

  环境变量数组。

  如:


puts $env(PATH)
// return /bin:/usr/bin:/usr/X11R6/bin

errorCode

 

  当错误发生时保存了一些错误信息。用下列格式来存储:

CHILDKILLED pid sigName msg

  当由于一个信号而被终止时的信息。

CHILDSTATUS pid code

  当一个子程序以非0值退出时的格式。

CHILDSUSP pid sigName msg

  当一个子程序由于一个信号而被终止时的格式。

NONE

  错误没有附加信息。

UNIX errName msg

  当一个内核调用发生错误时使用的格式。

errorInfo

  包含了一行或多行的信息,描述了错误发生处的程序和信息。

 
【Vivado TCL 教程】从零开始掌握 Xilinx Vivado TCL 脚本编程(二) 本文是Vivado TCL脚本编程系列教程的第二部分,重点介绍TCL在Xilinx Vivado开发中的实际应用。文章针对xc7z010clg400-1开发板,详细讲解了如何使用TCL脚本进行项目创建与管理、设计流程自动化以及网表对象操作。内容包括项目属性设置、源文件添加、综合实现流程、比特流生成等关键操作的TCL命令示例,并提供了完整的自动化脚本。通过本教程,开发者可以掌握利用TCL脚本实现FPGA设计全流程自动化的技能,提高开发效率和团队协作能力。 阅读详情

相关推荐

TCL programming

tcl /tk programming tcl is widely used in the testing automation.

【Tcl】多线程并行提交任务

Tcl thread 多线程处理任务

u011808788的博客 1354

tcl实例入门教程(包括常用的socket多线程xml解析数据库操作大量实例)

这本教程花费了我足足两个月的时间写的,每个章节以例子为核心讲解知识点,最大的好处是要用的时候把代码粘贴一下,修改修改就可以上手用了,绝对原创,光是调试这些例子就够我折腾了。知识点覆盖比较全面,要个20分不过分吧,有几本书认真讲过那些常用模块: socket, 数据库操作,xml解析,多线程,最具体的做法多半是一带而过,我可是一个例子一个例子做出来的。 把目录发给大家看看: 2.1 第1课:简单文本输出 5 2.2 第2课:给变量赋值 5 2.3 第3课:命令的赋值与置换一 6 2.4 第4课:命令的赋值与置换二 7 2.5 第5课:命令的赋值与置换三 7 2.6 第6课:算数运算 8 2.7 第7课:文本比较-SWITCH应用 9 2.8 第8课:数值比较-IF应用 10 2.9 第9课:WHILE 循环 11 2.10 第10课:FOR循环和INCR 11 2.11 第11课:过程PROC 12 2.12 第12课:过程PROC的参数定义 13 2.13 第13课:变量的作用域 13 2.14 第14课:LIST结构 14 2.15 第15课:LIST项的增删改 15 2.16 第16课:更多LIST相关 16 2.17 第17课:字符串函数 17 2.18 第18课:更多字符串函数 17 2.19 第19课:修改字符串函数 20 2.20 第20课:正则表达式 21 2.21 第21课:更多正则表达式 22 2.22 第22课:数组 24 2.23 第23课:更多数组相关 25 2.24 第24课:文件存取 28 2.25 第25课:文件信息 30 2.26 第26课:TCL中的子进程调用-OPEN & EXEC 33 2.27 第27课:命令或者变量是否存在-INFO 34 2.28 第28课:解释器状态-INFO 35 2.29 第29课:过程信息-INFO 36 2.30 第30课:模块化-SOURCE 37 2.31 第31课:建库-UNKNOWN & INFO LIBRARY 38 2.32 第32课:创建命令-EVAL 40 2.33 第33课:在EVAL中应用FORMAT & LIST 40 2.34 第34课:不使用EVAL替换-FORMAT & SUBST 42 2.35 第35课:改变工作目录- CD & PWD 43 2.36 第36课:调试和错误-ERRORINFO & ERRORCODE & CATCH 44 2.37 第37课:调试-TRACE 45 2.38 第38课:命令行参数和环境串 46 2.39 第39课:TIME & UNSET 47 2.40 第40课:SOCKET & FILEEVENT & VWAIT 49 2.41 第41课:日期时间-CLOCK 51 2.42 第42课:I/O通道-FBLOCKED & FCONFIG 53 2.43 第43课:子解释器 56 2.44 第44课:数据库操作 57 2.45 第45课:函数或过程数组的输入和输出方法 59 2.46 第46课:INFO的用法 60 2.47 第47课:多线程 61 2.48 第48课:解析XML 72

tcl/tk参考——列表操作lsort

..名称lsort - 给列表中的元素排序 语法lsort ?options? list描述这个命令对list中的元素进行排序,返回一个重新排序的列表。lsort命令的执行使用归并排序算法,所以排序性能稳定在(n log n)的级别。 默认使用ASCII表排序,但是以下的options选项也可以控制排序的方式:-ascii 使用ASCII表的字符顺序排序,默认方

dulixin的专栏 2万+

Tcl_Tk编程权威指南的英文版

Tcl_Tk编程权威指南的英文版

Tclwise-Tcl编程语言指南Tclwise - Guide to the Tcl Programming Language

本书介绍了Tcl(一种简单而强大的编程语言)的主要思想。

多线程的使用

多线程

m0_64886876的博客 206

Windows MCP 安装教程:让 AI 代理与 Windows 系统无缝交互

通过以上步骤,你已经成功安装和配置了 Windows MCP 服务。现在你的 Cursor 编辑器可以通过 MCP 协议与 Windows 系统进行深度交互,AI 代理能够:启动和控制应用程序执行系统命令自动化 UI 操作获取系统状态信息这为 AI 辅助开发和工作流程自动化提供了强大的基础。如果你在使用过程中遇到任何问题,欢迎在评论区讨论或查看项目的官方文档。

chenchihwen的专栏 3355

Tcl列表排序命令之lsort

lsort

荣耀之路 1万+

OLLAMA_HOST环境变量设置全攻略:从127.0.0.1到局域网共享的完整配置

本文详细解析了OLLAMA_HOST环境变量的核心作用与配置方法,指导用户如何将Ollama服务从仅限本机访问(127.0.0.1)扩展到局域网共享。文章涵盖了macOS、Linux、Windows三大平台的实战配置步骤,并提供了安全加固、性能优化及常见故障排查方案,是解决多设备协作访问本地AI模型的完整指南。

weixin_28455801的博客 1906

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1084

TCL编程语言教程

TCL编程语言教程TCL(Tool Command Language)是一种解释型编程语言,它的主要设计目标是提供一个简单易用的脚本语言,而且可以方便地嵌入到其他程序中。TCL最初由约翰·奥斯汀(John Ousterhout)在1988年开发。TCL被广泛应用于自动化测试、GUI设计和网络编程等领域。本教程将介绍TCL基础知识及其应用场景。读者需要具备一定的计算机基础知识。一、安装TCL在使用TCL之前,我们需要先安装它。

weixin_46121540的博客 4902

ArcGIS属性表汉字转拼音

接着我安装了一个编辑器“PyCharm Community Edition 2019.3.3\bin\pycharm64.exe”,在里面添加“pypinyin”包,然后将其设置为arcgis的编辑器和调试程序,还是失败;我在10.6的机器上折腾了上面几步,直到两周后脚本突然运行成功,我也不确定是哪一步导致pypinyin包配置成功,因此将心得体会写出来,如果过一段时间,打开10.2的机器运行脚本成功了,再写后续.......,按照“配置方法1:”进行尝试,显示配置失败。

2301_77413856的博客 1295

android sdk tcl,Tcl编程简介(五)之内置命令集

lsort -mode list排列列表。-mode : -ascii-dictionary 与acsii类似,只是不区分大小写-integer 转化为整数再比较-real 转化为浮点数再比较-command command 执行command来做比较open fileNameopen fileName access打开文件,返回一个文件描述符。accessr w a r+ w+ a+定义与C中相...

weixin_30045711的博客 328

【软件分享】天若OCR文字识别V4.48(翻译功能免费)

软件简介 吾爱破解论坛大佬天若幽心开发的一款OCR文字识别工具。支持快速截图识别,以及文本翻译。 下载地址 蓝奏云盘:点击下载 百度网盘:点击下载(密码:4dm4) 坚果云盘:点击下载 天翼云盘:点击下载 微软云盘:点击下载 使用教程 1、下载后对压缩包进行解压 2、双击天若OCR文字识别.exe 3、发现桌面右下角出现软件图标 4、双击软件图标即可开始截图识别 原帖地址 https://www.52pojie.cn/thread-692917-1-1.html ...

XavierJ的博客 1万+

FFmpeg入门详解之110:RTSP协议讲解

TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。正在上传…重新上传取消RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断(\r\n:10,13:0x0A,0x0D),包括消息类型、消息头、消息体和消息长。

福优学苑@音视频+流媒体 2529

Tcl编程简介(五)

Error命令   error message error message info error message info code     返回一个错误,引起解释器停止运行。info用于初始化全局变量errorInfo。code被付给errorCode。 eval arg ...   将所有的参数连起来作为命令语句来执行。 exec arg ...   仿佛是在shell下执...

hyw520110的专栏 162

vue3+vite:引入tailwindcss不生效的原因,详细解决Tailwind配置没问题但就是不生效的情况,配置正确无报错但样式没有生效(包括tailwindcss在Vue2使用不生效解决方案)

vue3 tailwind使用教程以及tailwind不生效的问题,vue3+vite引入tailwindcss不生效的原因,tailwindcss配之后不生效怎么办,如何解决tailwinscss不生效的原因,Vue3项目使用tailwindcss在Vue2使用,不生效解决,如何解决使用 Tailwind CSS 后出现的样式不生效的问题?tailwindcss配之后不生效 tailwindcss不生效,为什么我的 Tailwind css 类没生效,解决使用 Tailwind 时样式不生效的问题,配置没

✅ 精选推荐文章 4128

TCL编程语言简介

TCL(Tool Command Language)是一种解释型编程语言,它的主要设计目标是提供一个简单易用的脚本语言,而且可以方便地嵌入到其他程序中。TCL最初由约翰·奥斯汀(John Ousterhout)在1988年开发。TCL被广泛应用于自动化测试、GUI设计和网络编程等领域。TCL是一种功能强大且易学易用的脚本语言,在各个领域都有着广泛的应用。

qq_34326957的博客 3670

恒玄BES调试笔记-BES2500如何OTA升级ANC和通透参数

前期量产软件anc参数主要是通过anc工具写入flash中,或者anc total gain通过美格信设备校准写入,对于量产后如果想要更新anc参数,如通透模式参数,则无法更新。 这个时候需要通过OTA升级软件,把相关anc参数内置到软件中,从flash中读取total gain。 1、更新强弱降噪和通透参数,由于涉及到个人参数就不列出来了,主要是改动以下相关参数。 extern struct_anc_cfg * anc_coef_list_50p7k[ANC_COEF_...

leezs的博客 2225

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Tcl编程简介

原贴:http://www.tclchina.com/article/chinese/jianjie1.htm Tcl编程简介(一)  简介   Tcl是一种很通用的脚本语言,它几乎在所有的

最实用的Linux博客 6226

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Tcl编程简介(一)

Tcl编程简介(一)  简介   Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为 "tickle”, 实

Nicholas黎的专栏 1853

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Tcl编程简介(二)

Tcl编程简介(二)  列表   字符串的另一种解释为列表。一个列表是类似于结果的一个字 符串包含了用空白分开的很多域。例如 "Al Sue Anne John"

Nicholas黎的专栏 1477

Tcl编程简介(三)

Tcl编程简介(三)    Tcl 内置命令 内置的命令   Tcl提供了下面描述的内置函数。   .其中: ... 表示参数不定具体有:

Nicholas黎的专栏 1262
上一篇: Tcl编程简介(四)
下一篇: Tcl编程简介(六)
Image_Graphics
博客等级 码龄20年 18粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值