wangjicheng886的个人空间 https://blog.eetop.cn/1774723 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

skill语言(9)——文件读写

热度 4已有 2098 次阅读| 2023-5-18 16:45 |系统分类:芯片设计| SKILL学习资料

注:数据来源“小目老师” “IC技术搬运工”

https://mp.weixin.qq.com/s/qxZB4m2CG69nmannkSiT5w


一。格式化输出


首先介绍一下skill语言的格式化输出,skill语言的格式化输出与C语言很像,需要按照格式需要使用一定的格式化输出语句,下面是Cadence官方手册中列出的skill语言格式规范。


Image



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)

Image


Image


使用格式化输出函数时,数据格式必须能够保持正确,虽然有时候数据格式错误脚本也能执行,但是会造成输出结果错误。


(2)


Image


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() 函数按数据原有格式输出内容,并在内容后面加上换行符




Image


读文件前首先需要函数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文件,并且依次向其中写入五行数据,最后关闭文件。

Image



读写文件时需要注意infile()和outfile()的正确使用,否则无法进行文件读写,调试脚本时可以根据CIW窗口提示信息及时更正。


Image


在实际项目中文件读写很有必要,比如可以将仿真结果直接输出到文件,或者在数字标准单元库的设计中需要按照文件中的命名新建cell,又或者使用配置文件初始化设计环境,关于文件读写的操作需要在实践中体会。





4

点赞

刚表态过的朋友 (4 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 28

    粉丝
  • 7

    好友
  • 19

    获赞
  • 8

    评论
  • 128

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-4 21:22 , Processed in 0.029043 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部