systemverilog 字符串类型
转载: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() |
字符串转整数——返回一个32bit整数(不考虑此字符串表示的数字的长度),对于atoi, 字符串将被看作十进制;对于atoh,十六进制;对于atooct,八进制;对于atob,二进制。对于比较大的数字,使用系统任务$sscanf更加合适[1]. |
|
str.atoreal() |
字符串转实数——此方法返回字符串str表示的实数 |
|
str.itoa(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.
参考
- ↑ Dave Rich, Verification Guild, 2007, "String manipulation through atohex();", accessed on August 22 2010
- ↑ 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 字符串类型的更多相关文章
- StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)
本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...
- Redis命令拾遗一(字符串类型)
文章归博客园和作者“蜗牛”共同所有 .转载和爬虫请注明原文Redis系列链接 http://www.cnblogs.com/tdws/tag/NoSql/ Redis有五种基本数据类型.他们分别是字符 ...
- Java中,关于字符串类型、随机验证码、 时间类型
一.字符串类型:String类型 定义一个字符串 String a="Hello World"; String b= new String ("Hello World&q ...
- 学习笔记:MySQL字符串类型
字符串类型 a) char和varchar 1.都需要指定字符的长度,char中的长度是字符的长度,而varchar的长度是字节的长度 2. char中指定的长度就是实际占用的长度,而 ...
- Redis常用命令入门1:字符串类型命令
Redis总共有五种数据类型,在学习的时候,一定要开一个redis-cli程序,边看边练,提高效率. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号 ...
- Spark1.3使用外部数据源时条件过滤只要是字符串类型的值均报错
CREATE TEMPORARY TABLE spark_tbls USING org.apache.spark.sql.jdbc OPTIONS ( url 'jdbc:mysql://hadoop ...
- Redis从基础命令到实战之字符串类型
字符串类型是Redis中最基本的数据类型,能存储任何形式的字符串和和二进制数据.本文以代码形式列举常用的操作命令,并在实践部分演示一个简单的商品管理功能,实现了通常使用关系型数据库开发的增改查功能,注 ...
- 后台返回字符串类型function的处理 (递归算法)
$(function(){ $.ajax({ type: "post", url: "${ctx}/modules/fos/reference/echart", ...
- mysql中的字符串类型数据索引优化
摘自 "高性能mysql" 对于一些字符串类型较长的字段搜索时, 可以参考如下方法
随机推荐
- 聊一聊开闭原则(OCP).
目录 简述 最早提出(梅耶开闭原则) 重新定义(多态开闭原则) 深入探讨 OCP的两个特点 对外扩展开放(Open for extension) 对内修改关闭 抽象 关闭修改.对外扩展? 简述 在面向 ...
- Elasticsearch的基本使用
1. 概述 之前聊了一下 Elasticsearch 的安装,今天我们来说说 Elasticsearch 的基本使用. 2. Elasticsearch索引的使用 索引(index)相当于是mysql ...
- selenium用css、xpath表达式进行元素定位
绝对路径选择 从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的 绝对路径 Xpath : /html/body/div CSS : html>body&g ...
- PTA——c++函数
1.在C++中,关于下列设置缺省参数值的描述中,()是正确的. 在指定了缺省值的参数右边,不能出现没有指定缺省值的参数: 2.使用地址作为实参传给形参,下列说法正确的是() 实参与形参操作的是同一对象 ...
- Java基础系列(40)- Arrays类
Arrays类 数据的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作 查看 ...
- Docker系列(10)- 常用命令小结
#橙色前面笔记已记录,黑色后面笔记将完善#勤加练习!!!attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像 build ...
- [转载]解决虚拟机中Centos7出现错误:Failed to start LSB: Bring up/down networking
1.执行 service network restart 出现以下错误 Restarting network (via systemctl): Job for network.service fai ...
- truncate表时报“唯一/主键被启用的外部关键字引用”解决办法
前言:清空表时提示"唯一/主键被启用的外部关键字引用"这一警告信息 原因:是因为主键被子表引用,所以对主键进行更改就好了 解决: 使用 alter table table_name ...
- Oracle部署迁移手册
第1章 安装准备 1.1 安装环境 操作系统:Redhat6.5 x64 32核CPU 62G内存 系统盘300G 数据磁盘3T Oracle软件:Oracle Database 11g Enterp ...
- 【Golang】三个点(...)用法
众所周知,Go语言是严格类型语言,而开发的时候又遇到传入参数不定的情况,怎么办? 这里的三个点(-),就给我们编程人员带来很大的灵活性,具体如下 在Golang中,三个点一共会用在四个地方(话说三个点 ...