systemverilog

时间:2017-02-11 11:18:00

标签: verilog union system-verilog verification

  

typedef union {
        逻辑[1:0] c3;
        bit [3:0] a3;
        字节b3;
    } pack3;

     

pack3 p3;

根据LRM,默认初始化是根据union的第一个成员,即上例中的逻辑,因此,c3分配给X并且rest分配给0,但是当我在ModelSim中编译并检查对象窗口时,则有a3和b3的结果不同。当我指定p3.a3 = 4' b0010时; a3和b3的值发生了变化,但没有c3。请解释一下?我知道每个变量只有可用的内存,因此任何值的更新都反映了所有。

1 个答案:

答案 0 :(得分:1)

如果您写入解压缩联盟的一个成员并尝试阅读其他成员,则无法保证({{3}中 7.3 Unions 部分末尾提到的一项特殊规定除外) })。如果要在重叠成员的布局中保证,则需要使用压缩联合。