系统Verilog DPI检测器屏蔽128位值
我正在编写一个DPI检查器(.cpp文件),在这个文件中,检查器读取每行上的128位值,我想用128位掩码将其屏蔽,并将其与RTL值进行比较,但我看到的问题是,我创建掩码时使用的数据类型仅包含32位值,我需要对原始数据进行逐位求和。有人能提供一些建议吗系统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;
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位
您需要首先将掩码
转换为位向量
类型,或者确保它具有正确的重载函数来为您执行此操作