首页 理论教育介绍DC-Tcl技术

介绍DC-Tcl技术

【摘要】:DC-Tcl所提供的编程结构,即变量、循环和子程序等,有利于SYNOPSYS的命令建立脚本。DC-Tcl把Tcl集成到SYNOPSYS的工具里。Tcl命令可以用两种方式执行,一种是在DC-Tcl里交互式地执行,见例6.1;另一种是批处理模式,如例6.2所示。例6.3为一个典型的DC-Tcl脚本。例6.3Tcl的变量名由字符、数字和下划线组成。是DC-Tcl的两个通配符,“*”表示0至n个任意字符,“?”

Tcl是Tool command language的缩写,发音为“tickle”,意思是工具命令语言。它最初是由加州大学伯克利分校的John K.Ousterhout开发出来的。Tcl的功能非常强大并且易于学习。它广泛应用于网络通信、计算机管理、网页设计和各种应用。它是一种脚本语言,易于控制和扩展应用。它是一种公开的工业标准界面语言。SYNOPSYS公司的大多数工具:Design Compiler、Prime Time、Physical Com-piler和Formality等都支持Tcl。

DC-Tcl在Tcl的基础上,扩展丰富了Tcl的功能,使用者既能灵活方便地使用Tcl命令,又能根据电路特性,对设计进行分析和优化。由于越来越多的工具支持Tcl,不同工具之间的命令移植也更加方便。

DC-Tcl所提供的编程结构,即变量、循环和子程序等,有利于SYNOPSYS的命令建立脚本。特别说明的是,DC-Tcl所写的脚本,并不适用于Tcl shell。DC-Tcl把Tcl集成到SYNOPSYS的工具里。

Tcl命令可以用两种方式执行,一种是在DC-Tcl里交互式地执行,见例6.1;另一种是批处理模式,如例6.2所示。

例6.1

例6.2

unix命令tee既可以在屏幕上显示运行结果,又可以把结果写到指定的文件里。

Tcl命令可以由一个字或多个字组成,字与字之间由空格分隔。Tcl脚本由一系列的命令组成,如果在一条命令中需要换行,则要加上“\”分隔。例6.3为一个典型的DC-Tcl脚本。

例6.3

Tcl的变量名由字符、数字和下划线组成。变量前加“978-7-111-55094-5-Chapter06-10.jpg”,表示变量的替换,与C语言和Verilog不同,不需要首先声明变量,可以是任意长度字符串,见例6.4。

例6.4

Tcl可以在一个命令里嵌套使用另外一个命令的返回值,用[]将嵌套命令包住即可。在例6.5中,第三个例子先执行expr978-7-111-55094-5-Chapter06-12.jpgx-9,结果为25,再执行

例6.5

set y“x-9 is25”。“expr”是进行数学运算的Tcl函数。

“#”为DC-Tcl的注释符号,如果要注释一行,在该行前需要加注释符“#”;如要在同一行加注释,注释符“#”前需加分号,见例6.6。

例6.6

“*”和“?”是DC-Tcl的两个通配符,“*”表示0至n个任意字符,“?”表示1个任意字符。

例如:

表示列出所有report开头的命令

表示把输出约束加到以out开头的所有端口上。

在DC中,每个设计有6个设计实体组成,它们分别是design、port、cell、pin、net和clock,前5个设计实体在网表中都有定义,clock是个特殊的端口,用下面的命令定义时钟。

create_clock-period 4[get_ports clk]

例6.7和例6.8分别展示了6个设计实体在Verilog代码和线路图中的表达。

例6.7

例6.8

命令get_*能返回到当前设计中,包括DC的memory和库中的设计实体。get_cells返回到设计中的单元和实例,get_clocks返回到当前设计中的时钟,get_designs返回DC memory中的designs等,如例6.9所示。

例6.9

命令all_*和get_*一样,能返回到当前设计中的实体,不同的是all_*能返回所有索引物集,如例6.10所示。

例6.10