String 如何使用“;带有”;systemverilog中的运算符
我是一个systemverilog用户,在我看来,我遇到了一个奇怪的行为,将为固定数组调用的唯一方法与“with”子句相结合String 如何使用“;带有”;systemverilog中的运算符,string,methods,unique,system-verilog,String,Methods,Unique,System Verilog,我是一个systemverilog用户,在我看来,我遇到了一个奇怪的行为,将为固定数组调用的唯一方法与“with”子句相结合 模块tb; int数组[9]='{4,7,2,5,7,1,6,3,1}; int res[$]; 初始开始 res=array.unique(x)与(x让我解释一下你得到的结果 unique方法的with子句定义了用于确定唯一性的表达式。它将从具有匹配表达式的元素集中删除除一个之外的所有任意元素 因为您选择了一个结果为1'b0或1'b1的表达式,所以它从四个元素(2、1、
模块tb;
int数组[9]='{4,7,2,5,7,1,6,3,1};
int res[$];
初始开始
res=array.unique(x)与(x让我解释一下你得到的结果
unique
方法的with
子句定义了用于确定唯一性的表达式。它将从具有匹配表达式的元素集中删除除一个之外的所有任意元素
因为您选择了一个结果为1'b0或1'b1的表达式,所以它从四个元素(2、1、3、1)中选择了一个wherex感谢您的友好回复dave_59。我理解为从一个数组中分别选择一个,该数组由with子句分隔为true和false。顺便问一下,一个问题是为什么选择2为true,选择4为false?选择它有什么特别的原因吗?我想知道的是,{2,1,3}应该被选择为true和{4,7,5,6}因为应选择唯一项,所以为false。选择是任意的,这取决于实现。{1,7}也是可能的结果。我建议尝试使用(x%3);
尝试array.unique(x)并查看结果。
module tb;
int array[9] = '{4, 7, 2, 5, 7, 1, 6, 3, 1};
int res[$];
initial begin
res = array.unique(x) with (x <= 3);
$display ("unique : %p", res);
end
endmodule
module tb;
int array[9] = '{4, 7, 2, 5, 7, 1, 6, 3, 1};
int res[$];
initial begin
res = array.find(x) with (x <= 3);
res = res.unique;
$display ("unique : %p", res);
end
endmodule