module abc(input clk, output a);
reg a;
always @(posedge clk)
begin
a=0;
$monitor("%d",a);
end
always @(posedge clk)
begin
a=1;
$monitor("%d",a);
end
第一个clk脉冲之后的第一个输出是什么?如果我们不需要reg的任何默认值(我们想要a的值)...?
答案 0 :(得分:2)
这是比赛条件。 Verilog不保证同步到同一事件的进程之间的执行顺序。一个模拟工具可能会选择第一个块。另一个工具可能会选择第二个块。综合工具将不允许对来自不同块的同一变量进行多次分配。