系统Verilog DPI检测器屏蔽128位值

系统Verilog DPI检测器屏蔽128位值,verilog,system-verilog,monitor,bitvector,system-verilog-dpi,Verilog,System Verilog,Monitor,Bitvector,System Verilog Dpi,我正在编写一个DPI检查器(.cpp文件),在这个文件中,检查器读取每行上的128位值,我想用128位掩码将其屏蔽,并将其与RTL值进行比较,但我看到的问题是,我创建掩码时使用的数据类型仅包含32位值,我需要对原始数据进行逐位求和。有人能提供一些建议吗 typedef struct { BitVector<128> data } read_line; svBitVecVal mask; mask = 0xffffffffffffffffffffffffffffffff;

我正在编写一个DPI检查器(.cpp文件),在这个文件中,检查器读取每行上的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;
typedef结构{
位向量数据
}读线;
svBitVecVal掩模;
掩码=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
位向量数据被屏蔽;
数据屏蔽=读取行->数据和屏蔽;

此处
svBitVecVal
最多只能保存32位的值<如果掩码大于32位,则代码>数据屏蔽将不会显示正确的值。

我不知道您的
位向量
模板来自何处,但
svBitVecVal
通常用作指向32位块数组的
svBitVecVal*

掩码
需要是一个4元素数组才能容纳128位

您需要首先将
掩码
转换为
位向量
类型,或者确保它具有正确的重载函数来为您执行此操作