verilog中always塊語句中的暫存器變數自加問題

white_xiaoze發表於2019-05-11

verilog中always塊語句中的暫存器變數自加問題

f = f + 1 ;

當我們使用always塊語句時,必須要在敏感訊號列表裡列出來所有需要的量,
比如

input a,b,c;
reg f;
always@(a,b,c)
begin
f = a+b+c;
end

可是如果我想在always塊裡實現對中間變數的自加,
比如

input a,b,rst;
reg f;
reg y;

always@(b,rst)
begin
	if (rst)
		f = f ;
	else
		f = f+1 ;
	y = b + f ;
end

模擬軟體便會給出以下警告:
Signal < f > missing in the sensitivity list is added for synthesis purposes.
HDL and post-synthesis simulations may differ as a result.

雖然只是一個警告,不影響我們繼續綜合和實現,但是這個警告:
“HDL和合成後模擬可能有所不同。”
還是令人心憂不已。不知道這對以後的硬體實現有什麼影響。
有待解決。

相關文章