【System Verilog】系统函数

打印格式

类型说明
\n换行符
\t制表符
\符号转义(\\,\“)
\v垂直标签
\f换页
\r回车
%h或%x十六进制
%d十进制
%b二进制
%o八进制
%p打印数组
%f打印浮点型,以十进制格式打印实数
%e以指数格式显示实数(“%6.3lf”指定输出宽度为6,精度为3,由于实际长度超过6故应该按实际位数输出,小数位数超过3位部分被截去)
%c打印ASCII码
%s打印字符串
%t打印当前时间
%l打印出library的名称和module的实例化名称
%v打印线网(net)类型变量的强度
%m打印所在模块的层次信息

标志符

类型说明
n

数据最小宽度为n。>n,正常输出;<n ,左补空格。(eg:%5d表示输出位宽为5的数据)

0

小于指定宽度左边补0. eg:%05d表示输出位宽为5的数据不足的左边补0

如果未指定宽度,则表示输出所有位数。eg:%0h表示靠左输出所有位数

-表示左对齐;默认右对齐

+

表示右对齐

#

输出十六进制时,前面会加前缀(0x)

空格

正数输出空格,负数输出(-)
.n

对于实数,表示输出n位小数;对于字符串,表示截取的字符个数.

打印函数

类型说明
$display(format,args)$display就是Verilog的printf语句,在stdout上显示格式化的字符串,打印完会自动换行
$write(format,args)类似$display,但是不会自动换行
$sscanf(str,format,args)$sscanf 将字符串按照某个模板格式进行扫描,其字符串格式和C语言中的printf()函数类似
$sformat(str,format,args)$sformat是$sscanf的反函数。将字符串按照给定的格式填入相应的参数args中
$sformatf(format,args)$sformatf任务和$sformat相似,除了其返回字符串结果。字符串作为$sformatf的返回值,而不是像$sformt一样放在第一个参数上

$psprintf()

返回一个格式化的临时字符串,并且可以传递给其他子程序. 这样可以不用定义新的临时字符串并在格式化语句与函数调用过程中传递这个字符串

文件操作函数

类型说明

fb=$fopen(filename,type)

mcd=$fopen(“file_name”)

打开文件,如果文件打开成功返回1,失败返回0

$fclose(fb/mcd)

关闭文件
$fwrite(fd, format, args)以指定格式写数据到文件,打印的内容默认不带换行
$fdisplay(fd,format,args)以指定格式写数据到文件,打印的内容默认带换行

$fscanf(fd,format,args)

以指定格式从文件中读取数据

$fgets(str,fd)

一次读取一行数据并以string类型存起来

$fgetc(fd)从打开的文件中每次读取一个字符,并如果读取成功,返回读取到的字符的ASCII码;如果到达文件末尾(EOF),则返回-1;如果在读取过程中发生错误,则返回-2

fread(integra_var,fd)

fread(mem,fd,start,count)

用于从文件读取二进制数据

$readmemb(filename, memory)

$readmemb(filename, memory,start,end)

按行读取指定文件中的二进制数据,并将数据加载到 memory 数组中

$readmemh(filename, memory)

$readmemh(filename, memory,start,end)

按行读取指定文件中的十六进制数据,并将数据加载到 memory 数组中

$ferror(fd,str)

当文件操作有误时,$ferror函数会将错误描述存入到str变量里

$ftell(fd)

用于确定文件中当前的读取或写入位置

$fseek(fd, offset, operation)

用来改变当前读写的位置,0表示文件起始位置,1表示当前位置,2表示文件末尾地址

$rewind(fd)

等价于$fseek(fd,0,0),重新将文件指针的位置指向文件首部

$fflush(fd)将写buffer的内容(需要写出的内容),一次性写到文件里;如果没有指定文件,将会写到所有打开的文件中

$feof(fd)

检测文件结尾,1表示当前读到结尾,0表示未读到结尾

文件类型

字符串处理函数

类型说明
str.len()返回字符串的长度
str.putc(i,x)将str中的第i个字符替换成x中第一个字符,等价于str[i] = x
str.getc(i)返回str中的第i个字符的ASCII码值,等价于x = str[i]
str.toupper()将字符串中所有小写字符转变为大写,返回全部大写的字符串
str.tolower()将字符串中所有大写字符转变为小写,返回全部小写的字符串
str.compare(s)比较字符串str和s,大小写敏感,返回比较结果
str.icompare(s)与compare函数类似,但是不关心大小写
str.substr(i,j)返回由str中第i和第j位之间的字符串

str.atoi()

str.atohex()

str.atooct()

str.atobin()

str.atoreal()

str.atof()

str.atol()

返回一个str中由ASCII码字符表示的整型/

十六进制数/

八进制数/

二进制数/

实数/

双精度浮点型/

长整型

str.itoa()整型转换为字符串

系统参数获取函数

类型说明
$value$plusargs(user_string,variable)参数传递函数,即获取仿真运行命令+variable=value跟着的value值
$test$plusargs (string)条件编译函数,即匹配仿真运行命令+string

 数据处理函数

类型说明

$clog2(n)

2的对数,即log2

$ceil(expression)

$ceil(ceil_num, num)

向上取整,返回取整值

ceil_num存储num取整后的整数值

$floor(expression)

$floor(floor_num, num)

向下取整,返回取整值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值