我对等待陈述的确切含义感到困惑。
在这种情况下会发生什么:
forever begin
wait (vif.xn_valid == 1'b1);
@(posedge vif.clk);
end
等待语句是否阻塞?是
@(posedge vif.clk)
每次在循环内执行,无论等待表达式的评估是什么?
在这种情况下:
forever begin
wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
等待后的代码(#0 fact_log2_samp_t = vif.fact_log2_samp;
)只有在等待表达式的计算结果为真时才执行?
答案 0 :(得分:1)
在这种情况下
forever begin
wait (vif.xn_valid == 1'b1);
@(posedge vif.clk);
end
循环阻塞,直到表达式(vif.xn_valid == 1'b1)
为真,然后阻塞直到posedge
上有vif.clk
。
wait
语句将阻塞,直到条件为真。如果条件已经为真,则立即执行。
在这种情况下:
forever begin
wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
循环阻塞直到表达式(vif.cyc_tic == 1'b1)
为真,然后阻塞直到posedge
上有vif.clk
。它与:
forever begin
wait(vif.cyc_tic == 1'b1);
@(posedge vif.clk);
#0 fact_log2_samp_t = vif.fact_log2_samp;
end