关联数组
概念:1.用来保存稀疏矩阵的元素,组内标号不用按照顺序,更加的灵活;2.只为实际写入的元素分配空间,这样可以节省空间;3.类似于python中的词典,键值(key)和数值(value)一一对应
例如:
int age[string];//以字符串为索引,查找关联数组中的int类型数据;
integer i_array[*];//未规定索引类型,通配;
关联数组 使用具有一个可选的默认索引的’{index:value}语法
如果指定了默认值,那么读取一个不存在的元素将产生指定的默认值,并且不会发出警告
由字符串索引的4个状态整数组成的关联数组,默认值为-1
integer tab [string] = '{"Peter":20, "Paul":22, "Mary":23, default:-1 };
正则表达式
在UVM中,提供了uvm_re_match函数来支持正则匹配,其定义为:
function int uvm_re_match(string re, string str)
参数re为标准的正则表达式,str为要匹配的字符表达式。返回值为0,表示匹配成功,反之失败;
globs是一种流行简化的正则表达式,它只支持3个元字符(*,+,?)
globs regular expression equivalent remark
* .* 0 or more characters
+ .+ 1 or more characters
? . exactly one character
因为UVM也提供了一个函数uvm_glob_to_re来转换,它可以将glob正则表达式转换为标准的正则表达式
$display(“A -> %s”, uvm_glob_to_re(“uvm_test_top.*.monitor”));
$display(“B -> %s”, uvm_glob_to_re(“uvm_test_top.?.monitor”));
$display(“C -> %s”, uvm_glob_to_re(“uvm_test_top.+.monitor”));
$display(“D -> %s”, uvm_glob_to_re(“monitor”));
A -> /^uvm_test_top\..*\.monitor$/;
B -> /^uvm_test_top\..\.monitor$/;
C -> /^uvm_test_top\..+\.monitor$/;
D -> /^.*monitor.*$/