如何在 SystemVerilog 中做交集?
How to do Intersections in SystemVerilog?
我想在 SystemVerilog 中找到两个列表之间的交集。来自 Specman
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
是 SVA 中使用的关键字。不建议使用任何关键字作为变量名。
查看 IEEE Std 1800-2012 § 7.12 数组操作方法
我相信这是期望的等效函数是:
myIntersect = listA.find with ( item inside {listB} );
我想在 SystemVerilog 中找到两个列表之间的交集。来自 Specman
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
是 SVA 中使用的关键字。不建议使用任何关键字作为变量名。
查看 IEEE Std 1800-2012 § 7.12 数组操作方法
我相信这是期望的等效函数是:
myIntersect = listA.find with ( item inside {listB} );