转载:https://blog.csdn.net/Holden_Liu/article/details/100727957

传统的Veriog仅仅支持文字表述上的字符串, 而SystemVerilog将字符串作为了内建的数据类型。类似C++的std::string类型,SystemVerilog字符串类型支持很多操作和函数。

SytemVerilog字符串类型支持的操作和方法:

一些有用的系统任务

SytemVerilog字符串类型支持的操作和方法

操作

                                                 描述

strA==strB

相等——操作数可以是字符串类型或者字符串文字,如果两个字符串由相同的字符序列组成,则返回1.

strA!=strB

不等于—— 对相等操作取反

strA<strB strA<=strB strA>strB strA>=strB

比较——如果相应的按字典序的比较条件满足时,则返回1

{strA,strB,..,strN}

连接——扩展指定的字符串。操作符可以是字符串类型,也可以是字符串文字。当所有的操作符都是字符串文字时,此操作完成整体的连接,结果也是一个字符串文字。

str.len()

长度——返回代表字符串的长度的整数

str.putc(i, c)

字符输入——将字符串str中的第i个字符替换成字符c。i必须是一个整数,c必须是一个字节类型的字符

str.getc(i)

获取字符——返回字符串str的第i个字符。i必须是整数,返回的字符表示为一个字节。

str.toupper()

转成大写——返回str中所有字符变成大写的字符串

str.tolower()

转成小写——返回str中所有字符变成小写的字符串

strA.compare(strB)

比较——比较strA和strB.从第一个字符开始比较。如果相等,则继续后续字符,知道两者有不同或者到达某个字符串的结尾。如果相等,返回’0‘;如果strA在strB之后,则返回整数;如果strA在strB之前,则返回负数.

strA.icompare(strB)

比较——和compare方法类似,但是不关心大小写。

str.substr(i, j)

子串——i和j都是整数,返回一个新的字符串,由str的第i和和第j个中间的所有字符组成

str.atoi() 
str.atohex() 
str.atooct() 
str.atobin()

字符串转整数——返回一个32bit整数(不考虑此字符串表示的数字的长度),对于atoi, 字符串将被看作十进制;对于atoh,十六进制;对于atooct,八进制;对于atob,二进制。对于比较大的数字,使用系统任务$sscanf更加合适[1].

str.atoreal()

字符串转实数——此方法返回字符串str表示的实数

str.itoa(i
str.hextoa(i
str.octtoa(i
str.bintoa(i)

整数转字符串——atoi,atohex,atooct,atobin的反运算。此系列方法输入一个整数i,将其对应的表示方式存在字符串str中。

str.realtoa(r)

实数转字符串——atoreal的反运算。此方法输入一个实数r,将其对应的表示方式存在字符串str中。

字符串在构建日志信息的时候非常有用。有许多很方便有用的SystemVerilog系统函数,以下列举其中的几个:

Useful SystemVerilog System Tasks

Useful SystemVerilog System Tasks
Task Name Description
$sscanf(str,format,args);

$sscanf 将字符串按照某个模板格式进行扫描,其字符串格式和C语言中的printf()函数类似

$sformat(str,format,args);

$sformat是$sscanf的反函数。将字符串按照给定的格式填入相应的参数args中

$display(format,args);

$display就是Verilog的printf语句,在stdout上显示格式化的字符串

$sformatf(format,args);

$sformatf任务和$sformat相似,除了其返回字符串结果。字符串作为$sformatf的返回值,而不是像$sformt一样放在第一个参数上。

注意

  • 一个流行的$sformatf的替代方式是$psprintf. 它实际上是由Vera遗留下来的。$sformtf 在后来成为了SystemVerilog的语言标准。然而,大部分流行的SystemVerilog编译器都支持$psprintf,尽管它没有成为标准。如果想符合标准,请使用$sformatf.

参考

  1.  Dave Rich, Verification Guild, 2007, "String manipulation through atohex();", accessed on August 22 2010
  2.  Ben Cohen, Verification Guild, 2006, "$psprintf // In VCS not in P1800", accessed on August 22 201
int fh;

str_num.itas(num);

fh = $fopen({"aa_",str_num,"_bbb.log"},“w”);

$fdisplay(fh,"data:%h, time:%0t",data,$time);
string rm_file;
$sformat(rm_file,"rm_out_data_%0d.log",cmd_cnt);//将打印字符串放入rm_file
int rm_out_file; // as file handle
rm_out_file = $fopen(rm_file); //
$fclose(rm_out_file);

$sscanf

http://docs.roxen.com/pike/7.0/tutorial/strings/sscanf.xml

$sformat和$sformatf区别

https://baijiahao.baidu.com/s?id=1665683787389360422&wfr=spider&for=pc

systemverilog 字符串类型的更多相关文章

  1. StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...

  2. Redis命令拾遗一(字符串类型)

    文章归博客园和作者“蜗牛”共同所有 .转载和爬虫请注明原文Redis系列链接 http://www.cnblogs.com/tdws/tag/NoSql/ Redis有五种基本数据类型.他们分别是字符 ...

  3. Java中,关于字符串类型、随机验证码、 时间类型

    一.字符串类型:String类型 定义一个字符串 String a="Hello World"; String b= new String ("Hello World&q ...

  4. 学习笔记:MySQL字符串类型

    字符串类型 a)         char和varchar 1.都需要指定字符的长度,char中的长度是字符的长度,而varchar的长度是字节的长度 2. char中指定的长度就是实际占用的长度,而 ...

  5. Redis常用命令入门1:字符串类型命令

    Redis总共有五种数据类型,在学习的时候,一定要开一个redis-cli程序,边看边练,提高效率. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号 ...

  6. Spark1.3使用外部数据源时条件过滤只要是字符串类型的值均报错

    CREATE TEMPORARY TABLE spark_tbls USING org.apache.spark.sql.jdbc OPTIONS ( url 'jdbc:mysql://hadoop ...

  7. Redis从基础命令到实战之字符串类型

    字符串类型是Redis中最基本的数据类型,能存储任何形式的字符串和和二进制数据.本文以代码形式列举常用的操作命令,并在实践部分演示一个简单的商品管理功能,实现了通常使用关系型数据库开发的增改查功能,注 ...

  8. 后台返回字符串类型function的处理 (递归算法)

    $(function(){ $.ajax({ type: "post", url: "${ctx}/modules/fos/reference/echart", ...

  9. mysql中的字符串类型数据索引优化

    摘自 "高性能mysql" 对于一些字符串类型较长的字段搜索时, 可以参考如下方法

随机推荐

  1. 聊一聊开闭原则(OCP).

    目录 简述 最早提出(梅耶开闭原则) 重新定义(多态开闭原则) 深入探讨 OCP的两个特点 对外扩展开放(Open for extension) 对内修改关闭 抽象 关闭修改.对外扩展? 简述 在面向 ...

  2. Elasticsearch的基本使用

    1. 概述 之前聊了一下 Elasticsearch 的安装,今天我们来说说 Elasticsearch 的基本使用. 2. Elasticsearch索引的使用 索引(index)相当于是mysql ...

  3. selenium用css、xpath表达式进行元素定位

    绝对路径选择 从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的 绝对路径 Xpath : /html/body/div CSS : html>body&g ...

  4. PTA——c++函数

    1.在C++中,关于下列设置缺省参数值的描述中,()是正确的. 在指定了缺省值的参数右边,不能出现没有指定缺省值的参数: 2.使用地址作为实参传给形参,下列说法正确的是() 实参与形参操作的是同一对象 ...

  5. Java基础系列(40)- Arrays类

    Arrays类 数据的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作 查看 ...

  6. Docker系列(10)- 常用命令小结

    #橙色前面笔记已记录,黑色后面笔记将完善#勤加练习!!!attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像 build ...

  7. [转载]解决虚拟机中Centos7出现错误:Failed to start LSB: Bring up/down networking

    1.执行 service network restart 出现以下错误 Restarting network (via systemctl):  Job for network.service fai ...

  8. truncate表时报“唯一/主键被启用的外部关键字引用”解决办法

    前言:清空表时提示"唯一/主键被启用的外部关键字引用"这一警告信息 原因:是因为主键被子表引用,所以对主键进行更改就好了 解决: 使用 alter table table_name ...

  9. Oracle部署迁移手册

    第1章 安装准备 1.1 安装环境 操作系统:Redhat6.5 x64 32核CPU 62G内存 系统盘300G 数据磁盘3T Oracle软件:Oracle Database 11g Enterp ...

  10. 【Golang】三个点(...)用法

    众所周知,Go语言是严格类型语言,而开发的时候又遇到传入参数不定的情况,怎么办? 这里的三个点(-),就给我们编程人员带来很大的灵活性,具体如下 在Golang中,三个点一共会用在四个地方(话说三个点 ...