专栏首页根究FPGAtcl三部曲(三)、数组、流控制与函数

tcl三部曲(三)、数组、流控制与函数

感谢公众号《IC小迷弟》提供的视频讲解与学习资源,谢谢大哥耐心的讲解!推送内容是对视频讲解的部分整理,关于详细内容,大家可以关注IC小迷弟获取全部学习资料。

正文开启,本次分享的是数组、流控制以及函数部分的笔记与操作实例

Part07Array数组

格式:

操作名为arrayName的数组,option选项决定了执行什么操作。

数组是元素的集合,每一个元素是由自己的名称和值的变量(变量的组成:变量名和变量值)。

数组元素的名称由两部分组成:数组名和数组中的元素名。数组名和元素名都可以是任意类型的字符串。

数组元素使用如month(May)这样的形式,即数组名(此处是month)加上圆括号中的元素名(这里是May)。可以使用简单变量的地方都可以使用数组,例如set命令:

选项option

(1)、array getarrayName ?pattern?

返回索引与pattern匹配的元素对的列表。列表中奇数个元素是匹配的索引,其后的元素是索引对应的值。如果没有指定pattern,则返回所有元素。如果arrayName不是数组变量的名称,或者没有匹配索引,则返回空列表。

(2)、array names arrayName ?mode? ?pattern?

返回一个包含mode模式下与pattern匹配的数组索引的列表。mode可以是-exact、-glob或-regexp,默认为-glob。如果未指定mode与pattern则返回所有索引。如果没有匹配的索引或者arrayName不是数组变量的名称,则返回空字符串。

(3)、array size arrayName

返回数组中元素数量,如果arrayName不是数组的名称,则返回0。

Part08 流控制

格式

if expr1 body1 elseif expr2body2 elseif… ?else? ?bodyN?

举个栗子

if { $x<0 } {
…….
} elseif { $x==0 } {
……
} else if { $x==1 } {
……
} else {
……
}

1、需要注意的点是:{一定要在上一行,否则Tcl解析器就会以后if在换行符处已经结束,下一行会被当做新的命令,从而导致解析器报错。

2、if和{之间要有一个空格,否则Tcl解析器会把他们当做一个整体,从而导致报错。

example1:

流控制之while

格式

while test body

test是一个表达式,body是一个脚本,body是一个脚本,如果表达式非0,则运行脚本,知道表达式等于0才停止循环,此时while命令中断,返回一个空字符串。

example1

计算0~100的和:

example2

读取文件(该函数运行环境为DC)

analysis:

set rfile_handle [open “./rpt/pr.rpt” r]

以只读方式打开“./rpt/pr.rpt”文件,将open返回的句柄(fileId)赋值给rfile_handle。

set wfile_handle [open "./rpt/vio.rpt" w]

同上类似,以只写方式打开,如果文件存在,清空文件。

while {![eof $rfile_handle]}

eof即end of file,eof $rfile_hand表示查询是否到达文件的末尾,在未到达文件末尾的情况下执行循环体语句。

gets $rfile_handle line

get fileID line就是读取fileID文件的下一行,忽略换行符,将该行的内容赋值给line

if {[string match"*VIOLATION*" $line]} {

如果line中含有VIOLATION字符

puts wfile_handle line

将string写到fileId中,此处是将上面读到的行信息给只写文件写入

close $rfile_handle

close $wfile_handle

关闭读写文件

流控制之foreach

格式一:

foreach varname list body

varname是一个变量,list是一个列表,body是循环体

格式二:

foreach varlist1 list1?varlist2 list2…? body

varname是一个变量,list是一个列表,body是循环体

example1:

example2:

第一次把a赋给i,b赋给j,

第二次把c赋给i,d赋给j

第三次把e赋给i,f赋给j

example3:

在下述语句中,分别依次取a列表和b列表中的元素附加在x中,空元素使用{}标识。

同上:

example4

流控制之switch

格式:

switch ?options? stringpattern body ?pattern body …?

options表示匹配的方式,switch支持三种匹配方式:

—exact方式(默认)

—glob方式

—regexp方式

example1

example2

Part09 函数

格式(举例说明)

再举个栗子

函数的三种写法

lappend varname value?Value…?把value作为列表元素添加到varName变量中,如果这个变量不存在,就创建它,需要注意的是此处使用list的话不需要$

第一种

第二种

大括号指定type的缺省值为add,有缺省值的参数后面必须带有缺省值,缺省模式下的参数可以不传递

第三种

参数可变型,输入参数个数可变

tcl系列暂时更完,以后再深入学习的话还会继续和大家分享。

本文分享自微信公众号 - 根究FPGA(gh_08b5d93f8fa5),作者:叫什么好呢啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TCL的“互联网+”方法论,是否可复制?

    记得两年前,电视厂商最喜欢将网络电视、智能电视或者互联网电视这些当做噱头,搞得用户云里雾里。已经被训练得非常清醒的用户开始回归理性:只为自己需要的东西买单。或许...

    罗超频道
  • 业绩爆发,押注“泛半导体”,TCL押对了吗?

    8月初, TCL科技发布了半年度报告,上半年实现营业收入743.0亿元,净利润92.5亿元,同比增长7.65倍。

    用户2908108
  • R语言系列第六期:③R语言高级绘图(上)

    这一节将介绍更多的R图形资源。首先是定制R图形的一些常用方法,主要涉及数据和模型的图形绘制。然后是如何自定义其他类型的图形或点线等元素。

    百味科研芝士
  • 电视行业竞争残酷,大屏会是救命稻草吗?

    2019年的电视行业,竞争可谓是空前惨烈,奥维云网(AVC)发布的市场统计数据显示,2019年三季度中国彩电市场零售量1034万台,同比-3.6%;零售额277...

    罗超频道
  • JavaScript流程控制语句与函数

    efonfighting
  • CES2020最全报道|黑科技全面爆发,XR、手机、电视多领域新品全面报道

    北京时间1月8日-11日,2020届国际消费类电子产品展览会(CES2020)正式在洛杉矶拉斯维加斯会展中心拉开帷幕。作为全球最大的消费电子展,本届展会展览了大...

    VRPinea
  • 面板行业上演第三次革命,TCL Mini LED引领行业走向次时代

    你可能已经注意到,在近年推出的各种显示设备上,一个看起来既熟悉又陌生的名词“Mini LED”开始频频出现。作为显示行业里备受追捧的前沿科技,近些年来Mini ...

    罗超频道
  • 5G前夜,TCL瞄准8K

    8K成为5G、AI和IoT时代的必然。电视机厂商认清这个趋势后,就应该在8K上义无反顾地布局,与此同时,借助于智能电视这个入口在AIoT上顺势而为。

    罗超频道
  • TCL成拥抱互联网最积极的“大叔级企业”,或将迎来第二春

    成立于1981年的TCL,今年35岁了,可谓“大叔级企业”,其进入电视行业有30年历史、进入手机行业有17年历史,这一从惠州成长起来的本土企业是中国硬件产业的标...

    罗超频道
  • 苹果再加码,Mini LED成显示行业深水炸弹

    4月21日凌晨,苹果在春季发布会上发布全新配色iPhone 12,搭载M1芯片的全新iMac、智能防丢设备AirTags等新品。压轴亮相的是果粉期待多时、媒体反...

    罗超频道
  • HTML5

    JS 里拖拽三事件, onmousedown onmousemove onmouseup 是实现交互性效果,根据鼠标的移动位置让标签元素联动

    jinghong
  • 创维,彩电业的“技术咖”,能否赢得下一个十年?

    2018中国彩电行业风起云涌,LG、索尼、夏普等外资品牌高调宣布“重返”中国,华为、一加等手机“巨头”虎视眈眈,乘胜“狙击”彩电界。遭遇销量困局的中国家电正迎来...

    曾响铃
  • 量子点技术最新进展:色彩鲜艳且可防蓝光

    目前我们接收信息的硬件,无外乎手机电视Pad等,这些无一不需要显示屏的助力。目前市面上被使用最多的屏幕有两种,分别是OLED 屏幕与LCD屏幕。不过,在色彩显示...

    镁客网
  • 线下体验购物是电商禁区吗?

    有个朋友曾告诉我,如果以后要投资物业,千万别投资商铺,在电子商务的冲击下以后没人会到实体店购物,实体店将沦为试衣间。看了TCL最近搞的一个巡展活动,我觉得那位朋...

    罗超频道
  • 百年电视行业,正在迎来四大关键转折 | CES 2020

    到2020年这一届,CES(国际消费类电子产品展览会)已有52年历史。随着中国科技产业的崛起,中国企业在这一舞台上的存在感正在越来越强烈。在CES最核心的场馆C...

    罗超频道
  • Go 从入门到精通(三)字符串,时间,流程控制,函数

    一、strings和strconv的使用 strings strings.HasPrefix(s string,preffix string) bool: 判断...

    coders
  • SQL | DDL、DQL、DML、DCL 和 TCL 命令介绍

    众所周知,结构化查询语言(SQL)是一种数据库语言,通过它我们可以对现有数据库进行某些操作,也可以使用这种语言来创建数据库。通常SQL 是使用命令来执行所需的任...

    用户9032532
  • 【源码】手把手教你用Python实现Vivado和ModelSim仿真自动化

    我们在Windows系统下使用Vivado的默认设置调用第三方仿真器比如ModelSim进行仿真时,一开始仿真软件都会默认在波形界面中加载testbench顶层...

    网络交换FPGA
  • TCL量子点电视是噱头吗?比OLED好在哪里?

    在智能电视面世之前,电视机的比拼始终围绕着“屏幕”,从黑白到彩色电视,从13寸到110寸,从CRT到PDP等离子到LED再到OLED,科技不断让人们看电视更加舒...

    罗超频道

扫码关注云+社区

领取腾讯云代金券