我正在尝试实现以下代码:
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 信号存在某种争用。也就是说,如果busy 不是1(比如前一个周期有一个复位),那么它输出一个x(如果满足输入条件)。但是,如果busy 已经为1(并且满足输入条件),则next_busy 被正确分配为1。所以我只是想知道是否有一种正确的方法来做我想做的事情,这样它也可以在综合中起作用?