【路科V0】systemVerilog基础3——字符串类型

news/2024/5/19 19:13:50 标签: 数字验证, systemVerilog

        Verilog语言对于字符串的处理手段非常有限。SV引入了string类型用来容纳可变长度的字符串。

 SV中字符串的特点:

  •          字符串类型变量的存储单元为byte类型( 8位二值逻辑
  •         字符串类型变量长度为N时,其字符成员索引值为从0到N-1
  •         不同于C语言,字符串结尾没有空字符“\0
  •         字符串的内存是动态分配的,用户无需担心内存空间管理。

字符串使用方式:

typedef logic [15:0] r_t;
r_t r;
integer i = 1;
string b = "" ;//声明赋予初值。定义的字符串默认值是空字符串
string a = {"Hi",b} ;//利用连接符号{}
r = r_t' (a) ; //字节类型转换,字符串变成向量类型
b = string'(r); //向量转换成字符串
b = "Hi"; 
b = { 5{ "Hi"}}; //b ={"Hi","Hi","Hi","Hi","Hi"}常量复制
a = { i{ "Hi"}}; //(非常量复制)a里面的i个Hi
a = {i{b}};
a = {a,b} ; 
a = { "Hi",b}; 
b = {"H",""} ;//"H"。""是空字符串
a[0]=-"h";//等同于a[0]= "cough”

字符串内建方法:

str.len()//返回字符串的长度。
str.putc(i, c)//将第i个字符替换为字符c,等同于str[i]=c。
str.getc(i)//返回第i个字符。
str.substr(i,j)//将从第i个字符到第j个字符的字符串返回。
str. {atoi(), atohex(), atooct, atobin}//将字符串转变为十进制、十六进制、八进制或者二进制数据。

示例

str = "123";
int i = str.atoi() ; // assigns 123 to i.
string s ;
initial begin
    s ="IEEE";
    $display (s.getc(0)); //显示'I' 显示第几个字符
    $display (s.tolower()); //显示ieee。把字符串小写
    s.putc(s.len () -1, "-"); //将空格变为'-'。将最后一个字符变成'-'
    s = {s, "P1800"}; //"IEEE-P1800"
    $display(s.substr (2,.5));//显示EE-P
    //创建二个临时字符串并将其打印
    my_log($sformatf( "%s %5d", s, 42));
//$sformatf格式化生成,并返回一个字符串。经常在验证中用来做调试信息的字符串生成
end
task my_log (string message) ; //打印消息
    $disp1ay ("@%0t :%s", $time , message) ;
endtask

//生成一个自己想要的字符串,使用函数
$sformatf()
// $disp1ay打印显示

http://www.niftyadmin.cn/n/586965.html

相关文章

##待写 javaweb面试题

本篇主要写 公众号:JavaPub 拦截器 过滤器 监听器 Session与Cookie XSS和CSRF

JavaScript学习三(流程控制(if,if esle ,switch case))

1.if {}else{}语句 if(条件判断){条件为真执行 }else {条件为假执行 }//if可以单独使用 2.if{} esle if{} else{} 语句 if(条件判断){条件为真执行 }else if(条件判断) {条件为真执行 }else {以上条件都为假执行 }//else if 可以使用多个 3.switch case语句 switch(变量) …

【MySQL面试】10道不得不会的MySQL基础面试题

博主介绍: 🚀自媒体 JavaPub 独立维护人,全网粉丝15w,csdn博客专家、java领域优质创作者,51ctoTOP10博主,知乎/掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和副业。🚀 公众号&…

【路科V0】systemVerilog基础4——接口类型

Verilog是通过模块之间进行端口连接来完成模块间通信的。对于大型设计,通过端口进行连接将会让硬件集成变得乏味和容易出错。SV在Verilog语言基础上扩展了接口(interface) 。 接口 接口(interface)的特点: 接口提供了一种新型的…

vitess介绍

简介 Vitess 是一种用于部署、扩展和管理大型开源数据库实例集群的数据库解决方案。 它目前支持 MySQL、Percona 和 MariaDB。 它的架构设计为在公共或私有云架构中与在专用硬件上一样有效地运行。 它结合并扩展了许多重要的 SQL 功能和 NoSQL 数据库的可扩展性。 Vitess 可以…

JavaScript学习四(object对象,数组,)

1.定义对象 var a new Object(); //表示定义了一个对象 2.给对象添加内容 a.name "zhangsan"; a.score 99; //直接往定义的对象里面添加属性,不用事先和java一样进行定义 alert(a.name);//输出对象a的姓名 3.数组定义 var a new Array();//定义一个数组 a[0…

vitess与mysql的兼容性

支持的mysql 版本 5.6-8.0,但是5.6 从2021年2月不更新了,所以建议5.7之后版本 事务隔离级别 vitess: read committedmysql default: pepeatable read SQL语法 https://github.com/vitessio/vitess/blob/main/go/vt/vtgate/planbuilder/testdata/uns…

【Java并发面试】10道不得不会的Java并发基础面试题

博主介绍: 🚀自媒体 JavaPub 独立维护人,全网粉丝15w,csdn博客专家、java领域优质创作者,51ctoTOP10博主,知乎/掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和副业。🚀 公众号&…