我試圖執行以下代碼:Verilog的爭用下一個信號
reg [7:0] next_busy;
always @* begin
next_busy = busy; //default assignment
if (condition determined by module input) begin
next_busy[0]= 1'b1;
end
end //always @*
always @(posedge clock) begin
if (reset) begin
busy <= 8'b0;
end else begin
busy <= next_busy;
end
end //always @(posedge clock)
這工作在模擬正常,但在合成似乎有某種爭的next_busy信號。也就是說,如果忙碌不是1(比如上一個週期有復位),那麼它會輸出一個x(如果滿足輸入條件)。然而,如果繁忙已經是1(並且滿足輸入條件),則next_busy被正確地分配1。所以我只是想知道是否有一個正確的方法來做我想做的事情,以便它也可以用於綜合?
您的代碼看起來好像沒什麼問題。在門級仿真中,你看到了哪些爭用?你在那個模塊的其他地方分配了'next_busy'嗎?在合成日誌中是否有提到該信號的警告消息。 – Marty