Система Verilog DPI Checker, маскирующая 128-битное значение - PullRequest
0 голосов
/ 12 октября 2019

Я пишу средство проверки DPI (файл .cpp). В этом случае Checker считывает 128-битное значение в каждой строке, и я хочу замаскировать его 128-битной маской и сравнить его со значением RTL, но проблема, которую яЯ вижу, это тип данных, из которого я создаю маску, содержит только 32-разрядное значение, и мне нужно сделать побитовое и с исходными данными. Кто-нибудь может дать какие-либо предложения?

typedef struct {
   BitVector<128>   data
} read_line;

svBitVecVal  mask;
mask = 0xffffffffffffffffffffffffffffffff;

BitVector<128>   data_masked;
data_masked = read_line->data & mask;

Здесь svBitVecVal может содержать максимум 32-битное значение. data_masked не покажет правильное значение, если маска больше 32-битной.

1 Ответ

1 голос
/ 12 октября 2019

Я не знаю, откуда вы взяли ваш BitVector шаблон, но svBitVecVal обычно используется как svBitVecVal*, указывая на массив из 32 бит chunks .

mask должен быть массивом из 4 элементов для хранения 128 битов.

И вам нужно сначала либо преобразовать mask в тип BitVector, либо убедиться, что он имеет правильную перегруженную функцию, чтобы сделать это за вас.

...