Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何使用“;带有”;systemverilog中的运算符_String_Methods_Unique_System Verilog - Fatal编程技术网

String 如何使用“;带有”;systemverilog中的运算符

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、

我是一个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、3、1)中选择了一个where
x感谢您的友好回复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