TCL.docx
- 文档编号:18364177
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:55
- 大小:75.14KB
TCL.docx
《TCL.docx》由会员分享,可在线阅读,更多相关《TCL.docx(55页珍藏版)》请在冰点文库上搜索。
TCL
目录
第一章引言5
1.1数字集成电路发展介绍
1.2通用数字集成电路设计流程介绍
1.3EDA工具介绍
1.4大型集成电路生产厂家介绍
1.5著名设计公司介绍
第二章EDA工具运行环境简介6
2.1Linux系统6
2.1.1Linux简介6
2.1.2Linux常用命令6
2.2vi编辑器6
2.2.1基本操作6
2.2.2使用技巧6
2.3TCL语言与EDA工具6
第三章Tcl语言简介7
3.1Tcl基础7
3.1.1Tcl命令的基本语法7
3.1.2Tcl软件包8
3.1.3Tcl脚本文件和Source命令8
3.2变量赋值与替换8
3.2.1变量赋值与释放8
3.2.2$替换9
3.3Tcl表达式和计算命令Expr11
3.3.1Tcl表达式11
3.3.2Expr命令12
3.3.3incr命令13
3.4Tcl中的字符串操作1
3.4.1format命令1
3.4.2string命令2
3.4.3正则表达式匹配命令5
3.5列表操作7
3.5.1创建列表8
3.5.2访问列表元素8
3.5.3列表元素的插入和删除9
3.5.4列表元素修改10
3.5.5列表搜索11
3.5.6列表排序12
3.6数组12
3.6.1创建数组12
3.6.2数组操作命令13
3.7Tcl中的控制结构15
3.7.1If命令15
3.7.2switch命令16
3.7.3For循环17
3.7.4Foreach命令18
3.7.5while命令18
3.7.6break与continue19
3.8过程体19
3.9error命令21
3.10return命令与Exit命令22
3.10.1Return命令22
3.10.2exit命令23
3.11env--环境变量数组23
3.12Sysopsys中的Tcl命令23
3.12.1创建对象集合24
3.12.2显示集合中的所有对象24
3.12.3过滤对象24
3.12.4从集合中增加或者删除对象25
3.12.5在集合上进行重复操作26
3.12.6帮助命令27
第四章实验系统规范与设计实现
4.1代码规则
4.1.1基本代码指南
4.1.2算数代码指南
4.2自动机设计基础
4.2.1自动机设计指南
4.2.2自动机的RTL实现
4.3流水线设计基础
4.3.1数据驱动数据流水线基础
4.3.2数据驱动流水线设计指南
4.4固定周期设计基础
4.5设计实例
4.5.1设计实例1:
VGA显示控制器
4.5.2设计实例2:
简单ATM交换器输入端
9
第五章动态验证
5.1仿真验证介绍
5.1.1数字设计验证基础
5.1.2验证平台基础
5.2仿真工具和使用
5.2.1仿真工具1:
SynopsysVCS
5.2.2仿真工具2:
Verdi
5.3系统验证平台及验证IP复用
5.4验证实例
5.4.1验证实例1:
数据转换FIFO
5.4.2验证实例2:
VGA显示控制器
第六章逻辑综合30
6.1逻辑综合简介30
6.1.1基本概念30
6.1.2逻辑推断30
6.2图形用户接口30
6.2.1DesignAnalyzer30
6.2.2DesignVision30
6.3基于TCL的命令行接口30
6.3.1工具启动30
5.3.2设计读入与链接30
5.3.3工作环境设置30
5.3.4设计约束30
5.3.5设计优化30
5.3.6保存设计30
5.3.7导出报告30
6.4综合报告分析30
6.4.1面积报告30
6.4.2时序报告30
6.4.3标准延时文件30
6.4.4设计检查报告30
6.4.5时序检查报告30
6.4.6其他报告30
6.5常见Error及解决30
第七章静态时序分析31
7.1静态时序分析简介31
7.1.1基本概念31
7.1.2PrimeTime简介31
7.2PT命令行接口31
7.2.1设计读入31
7.2.2工作环境设定31
7.2.3时钟创建31
7.2.4时序检查设置31
7.2.5导出报告31
7.3时序报告分析31
7.3.1建立时间分析报告31
7.3.2保持时间分析报告31
7.3.3门控时钟检查报告31
7.3.4恢复/撤销检查报告31
7.3.5脉冲宽度检查报告31
第八章等价性检验工具Formality32
8.1Formality的基本概念32
8.1.1参考设计与实现设计32
8.1.2比较点32
8.1.3设计等价32
8.1.4容器32
8.2基于Formality工具的ASIC设计流程32
8.3Formality验证流程32
8.3.1启动Formaltiy工具32
8.3.2Guidance32
8.3.3读入设计32
8.3.4Setup32
8.3.5匹配比较点32
7.3.6运行验证32
7.3.7基于GUI图形界面的调试32
8.4Formality使用举例32
附录A:
SystemVerilog简介
A.1SystemVerilog设计子集
A.2SystemVerilog验证子集
附录B:
xsoc简介
第一章待定
第二章EDA工具运行环境简介
二.1Linux系统
二.1.1Linux简介
二.1.2Linux常用命令
二.22.2vi编辑器
二.2.1基本操作
二.2.2使用技巧
二.3TCL语言与EDA工具
第三章Tcl语言简介
Tcl(ToolCommandLanguage)是一种解释性的脚本语言,由美国加州大学Berkeley分校的JohnOusterhout创建。
Tcl包含了少量的语法规则和一个核心命令集合,支持变量、过程和控制结构,具有可编程能力。
用Tcl编写的程序可以在Unix,Windows和AppleMacintosh等操作系统下运行,通常用它进行快速原型、脚本、图形用户界面GUI(GraphicsUserInterface)和测试任务等的编程。
本节简单介绍Tcl语言的基本命令、控制结构和编程,它们是后续编写EDA工具的脚本的基础。
三.1Tcl基础
三.1.1Tcl命令的基本语法
一条Tcl命令基本语法为:
commandarg1arg2....
上面是Tcl命令的基本形式,其中“命令”是内建命令或者是Tcl的一个过程,命令和变元之间,变元和变元之间用空格分开,用分号(;)和换行来中止一条命令。
一条命令可以是一行,多条命令也可以在一行,这时命令之间用‘;’分开。
例1-1用Tcl命令把“HelloWorld”输出在显示设备上。
%puts“HelloWorld”;#在输出设备上显示HelloWorld。
%puts{HelloWorld};#本条命令与上面一条结果一样。
=>HelloWorld
下面对上面的命令说明:
(1)%是系统提示符;
(2)分号后的“#”所跟的字符串表示注释。
注意,当注释和命令在一行的时候,必须在#前增加分号,否则,系统给出错误提示。
(3)因为Tcl语句中各命令参数是以空格来分隔的,所以字符串中如果有空格的话,一定要用双引号(“”)或者大括号({})将字符串括起来,否则Tcl会认为字符串中的单词是参数而产生错误。
(4)在本书中,用=>表示Tcl命令执行的结果。
三.1.2Tcl软件包
在window操作系统中使用Tcl,需要安装一个Tcl的软件包。
Tcl软件包是免费的,有多种版本,本章所使用的软件包是ActiveTcl,读者可以在网上下载。
下载后,在Windows下直接安装在Windows下就可以了。
在Windows环境下大部分EDA工具如QuartusII,Modelsim,ActiveHDL等都内嵌一个Tcl解释器,支持Tcl脚本。
在Unix或者Linux操作系统中,默认安装了Tcl命令解释器,可以直接使用。
为了便于学习,ClifFlynt开发了一套简单的自学工具TclTour,共有43个短小课程,读者可以跟着教程自学,非常方便。
TclTour可以在
三.1.3Tcl脚本文件和Source命令
Tcl可以用单条命令的方式执行,也可以将完成任务的所有命令形成一个脚本文件,用过source命令运行。
Tcl文件的后缀是.tcl.
Source的语法:
Sourcefilename.tcl
例1-2一个简单的脚本文件
#Thisisasimpleexampleof.tclfile.
puts“WewillstudybasicusageofTcl”;#outputthestringondisplaydevice.
上面的例子,存成一个简单的文件:
sample.tcl。
%sourcesample
三.2变量赋值与替换
三.2.1变量赋值与释放
在Tcl中,变量的类型只有字符串一种,变量使用前不需要申明,变量的赋值通过set命令实现。
变量赋值后,变在占用了内存空间。
unset命令与set命令作用相反,它取消变量定义,并释放变量所占的内存空间。
【语法】setVarnameValue
UnsetVarname
set命令将一个值Value赋给一个变量,Set命令包含了两个参数:
第一个是变量名,第二个是值。
变量名可以是任何长度,由任何字符组成,大小写敏感。
例2-1变量赋值
%setvar5
=>5
%setb$var
=>5
%puts“b=$b”
=>b=5
这两条命令的第一条是把5赋给变量var,第二条$进行了替换操作,将变量var替换成5,然后赋值给b。
输出变量值时,注意要在变量前增加$。
三.2.2$替换
在Tcl中,有多种替换形式,下面进行介绍。
(1)$替换
“$”符实现引用替换,用以引用参数值。
Tcl的替换只进行一遍解释,不支持嵌套的$。
例2-2$替换
%setamount5
=>5
%setbamount
=>amount
%setc$$b;#只完成一次替换
=>$amount
(2)方括号[]替换
替换的第二种形式是命令替换,一个嵌套命令用方括号[]界定,Tcl解释器提取[]中所有内容并计算。
Tcl重写外层的命令,用嵌套命令的结果替换[]以及其内容。
Tcl支持任意层的命令嵌套。
例2-3[]替换举例
%setvarfoobar
%setlen[stringlength$var];#变量len的值为6
=>6
在上例中[]的stringlength$var是嵌套命令,stringlength计算字符串的长度。
Tcl首先进行$替换,然后计算字符串foobar的长度并返回,命令替换引起外部命令重写为:
%setlen6
例2-4嵌套命令
%setx7
%setlen[expr[stringlengthfoobar]+$x];#expr命令用于求一个数学表达式。
=>13
(3)反斜杠\替换(BackslashSubstitution)
Tcl解释器的另外一类替换是反斜杠“\”替换,通常用于引用对解释器具有特殊意义的字符。
例如,用反斜杠”\”说明一个$,{}或者<>等一些特殊的文字。
例2-5反斜杠\替换
%setdollar\$foo;#引用\后的字符串
=>$foo
%setx$dollar
=>$foo
当一条命令非常长的时候,可以利用反斜杠\将一条长命令写成多行。
%settotalLength[expr[stringlength$one]+\
[stringlength$two]]
上面命令等价于:
settotalLength[expr[stringlength$one]+[stringlength$two]]
如果没有反斜杠\,expr命令在+之后中止。
在续行的时候,需要注意的是换行符一定要紧跟着\否则就会出现错误
例2-6不规范的续行
%seta[list1234\
567];#多余了两个空格
=>invalidcommandname5
%seta[list1234\
567]
=>1234567
(4)大括号({})和双引(“”)
双引号和大括号都可以界定一个字符串。
两者的差别在于双引号:
双引号允许在字符串中进行“$”“[]”和“\”的替换,而大括号则阻止这些替换。
大括号和双引不允许嵌套。
如果在字符串中显示引号和大括号,需要用\说明。
例2-7允许与禁止替换
%setsHello
%putsstdout"Thelengthof$sis[stringlength$s]";#允许替换发生
=>ThelengthofHellois5
%putsstdout{Thelengthof$sis[stringlength$s]};#阻止替换发生
=>Thelengthof$sis[stringlength$s]
在第二条命令中,Tcl解释器对puts命令做了变量和命令的替换,而第三条命令则是阻止了替换。
例2-8格式输出
%Setnamebook
%Setvalue10
%puts[format"Item:
%s\t%5.3f"$name$value]
=>Item:
book3.000
第一个变量说明这是一个格式说明,通常包含一些特殊的字符,如newline,tab和空格等,最简单的方法是用反斜杠序列说明\n表示newline,\t表示tab。
必须在format命令调用前替换反斜杠,这样必须使用引号来形成格式说明符。
这里的格式用tab对齐name和value,%s和%5.3f用于说明name和value的格式。
如果命令参数仅仅是由一个嵌套的命令组成,那么没有必要用双引号。
例2-9不必要的双引号
%setx8
%sety9
%putsstdout"[expr$x+$y]";#引号是多余的
=>17
%putsstdout[expr$x+$y];#与前一条命令结果相同
%putsstdout"$x+$y=[expr{$x+$y}]"
例2-10用\显示字符串中引号
%puts"\"(5-3)*4\"is:
[expr(5-3)*4]"
=>“(5-3)*4”is:
8
在本例中,为了显示引号,在””增加\,否则Tcl解释器报错。
另外,expr(5-3)*4需要用[]替换,否则Tcl命令解释器把它当成了一个字符串。
三.3Tcl表达式和计算命令Expr
三.3.1Tcl表达式
一个Tcl表达式由操作数、运算符和括号组成,在操作数和操作符以及括号之间可以用空格分开。
表达式的操作数默认是十进制,也可以八进制(操作数第一个字符时0)或者十六进制(操作数的前两个字符时0x)。
操作数可以是整数也可以是浮点数。
表达式的运算符包括逻辑运算符和算术运算符,如表3-1所示。
表3-1算术与逻辑运算符
此外,Tcl还支持诸多的函数,如表3-2所示。
表3-2Tcl支持的内建函数
函数名
说明
abs(arg)
取绝对值
acos(arg)
反余弦
asin(arg)
反正弦
atan(arg)
反正切
atan2
比值取反正切
ceil(arg)
返回不小于arg值的整数值
cos(arg)
余弦
cosh(arg)
双曲余弦
double(arg)
转换双精度
exp(arg)
exp运算(e的幂)
floor(arg)
fmod
取余(结果为浮点型)
hypot(x,y)
根据直角三角形两直边长度计算出斜边长度
函数名说明
int(arg)
取整
log(arg)
自然对数
log10(arg)
以十为底的对数
pow
幂运算
rand()
取0到1之间的随机实数(无输入参数)
round(arg)
四舍五入取整数
sin(arg)正玄函数
sinh(arg)双曲正玄函数
sqrt(arg)
求二次根
srand(arg)
以整数arg为随机数生成器的种子产生随机数
tan(arg)正切函数
tanh(arg)双曲正切函数
三.3.2Expr命令
在Tcl语言中用expr命令用于分析和计算数学表达式。
【语法】exprarg?
arg…?
语法格式中两个问号(?
)之间的参数是可以省略的。
Tcl把arg级联在一起,把它当成一个Tcl表达式,计算后返回值。
例3-1简单的计算
%expr7.2/4
=>1.8
例3-2Expr命令举例
%setx100
%sety256
%setz[expr"$y+$x"]
=>356
%setz_label"$yplus$xis:
"
%puts{z_label[expr$y+$x]}
=>z_label[expr$y+$x]
%puts"{z_label[expr$y+$x]}"
=>{z_label356}
例3-2内部数学表达式的使用
%puts"pi=[expr2*asin(1.0)]";#asin是内部函数
=>3.1415926535
用{}将表达式括起来,不但使表达式意思更清楚,也使得expr命令的执行效率更高。
%setlen[expr{[stringlengthfoobar]+$x}]
注意表达式中{}的位置是在将表达式括起来,与命令setlen{[expr[stringlengthfoobar]+$x]}的意思完全不一样。
三.3.3incr命令
incr命令根据指定的步长来增加或减少变量的值。
当步长为负时,减少参数值;当步长为正时,增加参数值。
默认步长为+1。
[语法]:
incrvarName?
step?
例3-3Incr命令举例
%seta10
%incra2;#指定步长为2
=>a=12
%setb20;#默认步长为1
%incrb
=>a=9
三.4Tcl中的字符串操作
Tcl把所有的输入都当作字符串看待,提供了较强的字符串操作功能。
本节介绍常用的字符串命令
三.4.1format命令
按formatstring提供的格式,把arg1arg2…argN按照formatstring的格式形成一个新字符串并返回。
[语法]formatformatstringarg1arg2…argN
Formatstring格式说明包含了位置说明、旗标、域宽、精确度、字符长度和转换字符等部分。
Formatstring由反斜杠、字符和%field组成。
%field是字符串,以下面表格中的任意一个字符结束,这个字符说明了格式数据所对应的数据类型。
d
带正负号整数(Signedinteger)
u
无正负号整数(Unsignedinterger)
i
带正负号整数。
表示成为hex(0x)或octal(0)
o
无正负号的八进制数值。
(Unsignedoctal)
xorX
无正负号的十六进制数值。
(Unsignedhexadecimal),x表示为输出小写的结果。
c
把数字对映成为ASCII字符
s
字符串
f
浮点数,格式为a.b
eorE
浮点数,格式为科学符号,a.bE+-c
gorG
浮点数,格式为%f或%e,依实际长度取短的表示
由于在格式定义的时候常会有空白夹杂其中,切记要使用双引号或大括号将定义内容括起来。
(1)位置指示
位置指示的表示方法为i$,意思是直接取得第i个参数的值,参数的计数是从1开始。
例4-1位置指示
%format{%2$s}onetwothree
=>two
%setstr[format"%3\$s%1\$s%2\$s""are""right""You"]
=>youareright
因为在Tcl中,$符号有特殊意义,上面的命令大括号阻止了格式化字符串中$符号的变量置换作用,所以i$的功能正确。
但如果上面命令将大括号换成了“”,我们必须利用反斜线”\”仰制$符号的变量置换:
%format"%2\$s"onetwothere;
=>two
(2)格式化旗标
-
靠左对齐
+
显示数值的正、负符号
space
0
以0补满
#
遇到octal将前缀填入“0”,遇到Hex时前缀填入“0x”
(3)字符宽度:
说明字符串占据的字符数;
(4)精度:
说明一个浮点数全部的位数和小数占的位数。
例4-2format命令举例
%setnameFord
%setage15
%setmsg[format"%sis%5dyearsold"$name$age]
%putsmsg
=>Fordis15yearsold
%format"%#05x"20;#用16进制表示20,宽度五位,数字前填入0x。
=>0x014
三.4.2string命令
字符串是Tcl中最重要的数据类型,所以Tcl提供了大量的字符串操作命令。
【语法】stringsubcommand?
arg…?
字符串操作的第一个参数是subcomand,由该参数确定字符串要进行的操作。
下面简单介绍一些字符串常用的命令。
4.2.1字符串子命令-长度索引范围
(1)stringlengthstring:
返回string包含的字符数。
(2)StringindexstringcharIndexth:
返回第Index在串中的字符,字符串的索引从0开始。
(3)stringrangestringfirstlast:
返回从字符串中位置first到last之
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCL