Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.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
System verilog 如何在SystemVerilog中进行交叉?_System Verilog - Fatal编程技术网

System verilog 如何在SystemVerilog中进行交叉?

System verilog 如何在SystemVerilog中进行交叉?,system-verilog,System Verilog,我想在SystemVerilog中找到两个列表之间的交集。从斯派克曼那里有 var intersect: list of my_enum; intersect = listA.all(it in listB); 我觉得这很奇怪。但在SystemVerilog中我能想到的最好的方法是: typedef enum {A, B, C, D} my_enum; my_enum listA[$] = {A, B, C}; my_enum listB[$] = {B, C, D}; my_enum int

我想在SystemVerilog中找到两个列表之间的交集。从斯派克曼那里有

var intersect: list of my_enum;
intersect = listA.all(it in listB);
我觉得这很奇怪。但在SystemVerilog中我能想到的最好的方法是:

typedef enum {A, B, C, D} my_enum;
my_enum listA[$] = {A, B, C};
my_enum listB[$] = {B, C, D};
my_enum intersect[$];

foreach(listA[i])
  if(listA[i] inside listB)
    intersect.push_back(listA[i]);

IEEE 1800-2012确实提到了intersect关键字,但它似乎不适用于这种情况。还有更优雅的方法吗?

intersect
是SVAs中使用的一个关键字。不建议使用任何关键字作为变量名

查看§7.12数组操作方法

我相信这是理想的等效函数:

myIntersect = listA.find with ( item inside {listB} );

啊,是这样。我应该用一个不同的名字作为我的例子。这个函数正是我想要的,谢谢。仅供参考:未打包的数组分配应该使用
{}
(带前导单引号)而不是
{}
<代码>列表A[$]={A,B,C}应该是
listA[$]='{A,B,C}示例见§7。