如果您尝试使用多个控制信号建模DFF,则可能会发生此错误。在Quartus®II软件将仅在一个推断从单一辅助信号的辅助信号
IF
条件。例如,您可能编写了以下示例结构来建模可以通过两个信号rst1或rst2重置的DFF原语:
always @ (posedge clk or posedge rst1 or posedge rst2) begin if (rst1 == 1'b1 || rst2 == 1'b1) q <= 1'b0; else q <= d; end
always @ (posedge clk or posedge rst1 or posedge rst2) begin if (rst1 == 1'b1 || rst2 == 1'b1) q <= 1'b0; else q <= d; end
要更正此问题,请编辑设计以仅为条件指定一条边。例如,如果您要编辑前面的示例以仅为每个if条件指定一个边,那么Quartus II软件将成功识别DFF原语。然后示例代码如下所示:
always @ (posedge clk or posedge rst1 or posedge rst2) begin if (rst1 == 1'b1) q <= 1'b0; else if (rst2 == 1'b1) q <= 1'b0; else q <= d; end
always @ (posedge clk or posedge rst1 or posedge rst2) begin if (rst1 == 1'b1) q <= 1'b0; else if (rst2 == 1'b1) q <= 1'b0; else q <= d; end
或者,您可以在Always
构造之外生成rst1和rst2的OR
。
这种限制将在Quartus II软件的未来版本中得到解决。
没有回复内容