1
什麼是不進行重置復位知道alaways_ff塊中一個失敗的後果是什麼?在復位感知always_ff塊中不復位寄存器的含義是什麼?
實施例1:
always_ff @(posedge clk, negedge rst) begin
if (~rst) begin
reg_a <='0;
reg_b <='0;
end else begin
if (condition_1) begin
reg_a <= some_signal;
end else if (condition_2) begin
reg_b <= some signal;
end
end
end
實施例2:
always_ff @(posedge clk, negedge rst) begin
if (~rst) begin
reg_a <='0;
end else begin
if (condition_1) begin
reg_a <= some_signal;
end else if (condition_2) begin
reg_b <= some signal;
end
end
end
實施例1和2之間的唯一區別是,實施例2中,reg_b沒有任何復位條件。後端/合成中這個錯誤的後果是什麼?我有前端RTL設計背景,在sylthesis方面經驗不多。所以,我想明白爲什麼上面的例子2是不好的做法。
一個明顯的問題是 - 剛剛復位後reg_b將X例如2.因此,如果reg_b在任何控制邏輯使用,那麼它可能會在設計中引入錯誤。除此之外,這可以創造什麼其他問題?
合成器和掉毛工具可能會標記警告,但我想不出超出你已經提到的任何功能性問題。 – Greg