如何在SystemVerilog中进行交叉?

时间:2015-08-27 17:46:27

标签: 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 intersect[$];

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

IEEE 1800-2012确实提到了一个交叉关键字,但似乎并不适用于这种情况。有更优雅的方式吗?

1 个答案:

答案 0 :(得分:3)

@csrf_exempt def user_find(request): args = json.loads(request.body, object_hook=utils._datetime_decoder) providedEmail = args['providedEmail'] try: user = User.objects.get(email=providedEmail) user_dict = {'exists': 'true', 'name': user.first_name, 'id': user.id} return HttpResponse(json.dumps(user_dict)) except User.DoesNotExist: user_dict = {'exists': 'false'} return HttpResponse(json.dumps(user_dict)) 是SVA中使用的关键字。建议不要使用任何关键字作为变量名。

查看IEEE Std 1800-2012§7.12数组操作方法

我相信这是所需的等效功能:

intersect