这是一个例子 . 在SystemVerilog中,它具有数组赋值模式和结构赋值模式语法 . 无论这里的union构造是打包还是解包,无论它是否是可合成的,它是否是赋值模式的有效用法?如果是的话,对于工会 x
应该是什么 Value ?
typedef struct {
int a;
byte b;
union packed {
int c;
bit [31:0] d;
} x;
} S;
module top (s);
output S s;
assign s = '{int:2, default:1};
endmodule
如果不是,这是否意味着我必须为解压缩结构的每个字段指定初始值?
initial begin
s.a = 2;
s.b = 1;
s.x.c = 2;
end
2 回答
我稍微修改了你的代码来打印指定的值 .
以下是ncsim的结果:
从vcs:
希望这能回答你的问题 .
我试过这个修改过的例子:
Modelsim给出了这个输出:
而VCS给出了这个输出:
这表明模拟器以他们想要的方式处理这些代码,并且没有预期的标准行为 .
以下语法使用起来更安全:
有了这个,Modelsim和VCS都给出了: