System verilog 系统Verilog-等待语句
我对等待声明的确切含义感到困惑 在这种情况下会发生什么:System verilog 系统Verilog-等待语句,system-verilog,System Verilog,我对等待声明的确切含义感到困惑 在这种情况下会发生什么: forever begin wait (vif.xn_valid == 1'b1); @(posedge vif.clk); end forever begin wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp; end forever begin wait(vif.cyc_tic
forever begin
wait (vif.xn_valid == 1'b1);
@(posedge vif.clk);
end
forever begin
wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
forever begin
wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
等待语句阻塞了吗?是
@(posedge vif.clk)
每次在循环内执行,而不考虑等待表达式的计算
在这种情况下:
forever begin
wait (vif.xn_valid == 1'b1);
@(posedge vif.clk);
end
forever begin
wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
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之后的代码;
仅当等待表达式的计算结果为真时执行?在本例中
forever begin
wait (vif.xn_valid == 1'b1);
@(posedge vif.clk);
end
循环阻塞,直到表达式vif.xn_valid==1'b1为真,然后它阻塞,直到vif.clk上有一个posedge
等待语句阻塞,直到条件为真。如果条件已为真,则立即执行
在这种情况下:
forever begin
wait (vif.xn_valid == 1'b1);
@(posedge vif.clk);
end
forever begin
wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
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为真,然后它阻塞,直到vif.clk上有一个posedge。这与:
forever begin
wait(vif.cyc_tic == 1'b1);
@(posedge vif.clk);
#0 fact_log2_samp_t = vif.fact_log2_samp;
end