Я хотел бы найти пересечение между двумя списками в SystemVerilog. От Specman естьКак сделать перекрестки в 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 упоминает об пересекаться ключевое слово, но это, кажется, не относится к этому случаю. Есть ли более элегантный способ?
Ах, это правда. Я должен был использовать другое имя для моего примера. Эта функция именно то, что я искал, спасибо. –
FYI: назначение распакованных массивов должно быть использовано '' {} '(с главной одинарной кавычкой) вместо' {} '. 'listA [$] = {A, B, C};' должен быть 'listA [$] = '{A, B, C};' См. § 7 для примеров. – Greg