热度 5| ||
注:数据来源“小目老师” “IC技术搬运工”
https://mp.weixin.qq.com/s/qxZB4m2CG69nmannkSiT5w
一。格式化输出
首先介绍一下skill语言的格式化输出,skill语言的格式化输出与C语言很像,需要按照格式需要使用一定的格式化输出语句,下面是Cadence官方手册中列出的skill语言格式规范。
format /ˈfɔːmæt/ n 总体安排;计划;设计;(出版物的)版式,开本;格式
specification /ˌspesɪfɪˈkeɪʃn/ n 规格;规范;明细单;说明书
type of argument 参数类型
fixnum 整数型
integer in decimal radix 十进制整数
integer /ˈɪntɪdʒə(r)/ n 整数
decimal /ˈdesɪml/ adj 十进制的 n 小数
octal 八进制
hexadecimal /ˌheksəˈdesɪml/ adj 十六进制的
Floating-point number in the style 科学计数法表示的浮点数
The first character 第一个字符
prints out a string(without quotes) or the print name of a symbol 打印一个字符串(不包括引号)或者符号的名称
对于格式化输出函数,skill语言提供了标准的C stdio库函数printf(),sprintf(),fprintf(),以下为一些实例。
(1)
使用格式化输出函数时,数据格式必须能够保持正确,虽然有时候数据格式错误脚本也能执行,但是会造成输出结果错误。
(2)
sprintf()函数可以将输出结果赋值给另一个变量,所以skill语言中多用sprintf()函数将其它变量类型转换成字符串变量。
请大家注意sprintf()函数的使用方法,因为这个函数在skill语言里用处很大,更多格式化输出示例可以直接参考C语言相关手册。
二。读文件操作
skill语言中对文件读、写基本上是按照模板的格式套用的,读文件时可以按行读取文件中的数据,然后用格式化输出语句显示出来。或者读取完数据按照需要对其进行处理,比如输出一行数据中特定几列或者使用正则表达式筛选有用数据等,读文件可以按照下面的格式进行。
let(
(in_port file_line)
in_port = infile("~/.bashrc")
when( in_port
while( gets(file_line in_port)
println( file_line )
);while
close(in_port)
);when
);let
函数:
infile() 打开文件
gets() 函数获取文件中一行数据并保存在变量中
close() 函数关闭文件
println() 函数按数据原有格式输出内容,并在内容后面加上换行符
读文件前首先需要函数infile()打开文件,然后通过gets()函数获取文件中一行数据并保存在变量中,记得每次打开文件后都要用close()函数关闭文件。上面内容读取用户目录下的.bashrc文件,并按行输出在CIW窗口,println()函数按数据原有格式输出内容,并在内容后面加上换行符。
三。写文件操作
写文件时首先需要打开文件,与读文件不同的是这时使用outfile()函数,然后使用函数fprintf()将需要写入的内容格式化输入到打开的文件内,最后要注意使用函数close()关闭文件。
let(
(out_port)
out_port = outfile("~/Desktop/file_write.txt")
for( i 1 5
fprintf( out_port "This is line: %d \n" i)
);for
close(out_port)
);let
函数:
outfile() 打开文件
fprintf() 将需要写入的内容格式化输入到打开的文件内
上面代码在用户桌面新建file_write.txt文件,并且依次向其中写入五行数据,最后关闭文件。
读写文件时需要注意infile()和outfile()的正确使用,否则无法进行文件读写,调试脚本时可以根据CIW窗口提示信息及时更正。
在实际项目中文件读写很有必要,比如可以将仿真结果直接输出到文件,或者在数字标准单元库的设计中需要按照文件中的命名新建cell,又或者使用配置文件初始化设计环境,关于文件读写的操作需要在实践中体会。