前言
以前在写Verilog时遇到要处理字串的情况总会觉得很不方便,不像其他语言有内建很多字串处理的操作,不过现在SV当中新增了string这个资料型态,里面就提供了很多好用的操作来处理字串,写起来方便多了!
string的基本介绍
string类型可以容纳一个可变长度的字串,一个字符为一个byte的资料,并且string的记忆体空间是动态分配的不需要自己处理!
常见的操作方式
[Example1]https://edaplayground.com/x/kdAf)
宣告:
string a = "";
串接:
string b = {"Hello ","World"};
重複N次
string c = {n{b}};
取片段
string d = c.substr(i,j);
转型
typedef logic[15:0] r_t;
r_t r = r_t'(d);
string的内建函数
Example2
取字串长度
str.len()
取代某一个字符
str.putc(i,j)
取出某一个字符
str.getc(i)
转成小写
string.tolower()
进制转换函数
Example3
ASCII转integer
str.atoi()
integer转ASCII
str.itoa()
后记
实际上写起来还是有些不方便,像是取片段不支援直接用[:]而是要用substr的函数,跟高阶语言比起来写法没有那么灵活,不过以一个验证语言来说应该是够用了。