如何在C中进行SystemVerilog风格的位向量切片赋值?

我正在将一些SystemVerilog代码移植到SystemC/C++.我使用std :: bitset来表示位向量,但我可以看到它没有提供访问切片的方法.

例如,如果我想使用SystemVerilog代码将reg1设置为reg2的4-8位:

bit [3:0] reg1;
bit [15:0] reg2;
reg1 = reg2[7:4];

我怎么能用std :: bitset做这个?

bitset<4> reg1;
bitset<16> reg2;
reg1[0] = reg2[4];
reg1[1] = reg2[5];
reg1[2] = reg2[6];
reg1[3] = reg2[7];

有没有更好的办法?

解决方法:

现在您正在使用SystemC,为什么不使用sc_bv<>本地表示HDL信号?因为SystemC有一组数据类型来表示HDL位/逻辑和字逻辑运算符,所以将SystemVerilog / Verilog数据类型映射到C/C++代码应该更容易.

sc_bv<4> reg1;
sc_bv<16> reg2;
reg1 = reg2.range(7,4);
上一篇:分配bitset的不同区域c


下一篇:bitset习题