【发布时间】:2021-09-02 22:21:11
【问题描述】:
always @ (RSTDAC_B or EN or DSR or DSR_B )
begin
if (RSTDAC_B === 1'b0) begin stepp = 1'b0; stepn = 1'b0; end
else if (RSTDAC_B === 1'b1) begin
if (EN & DSR === 1'b1) begin stepn = 1'b1;end
else if (EN & DSR_B === 1'b1) begin stepp = 1'b1;end
end
end
上面的代码来自一个在设计中实例化了 8 次的动态寄存器模块。目的是当 EN(able) 为高电平时,stepp 或 stepn 为高电平,具体取决于 DSR 或 DSR_B 是否为高电平。我看到当 DSR_B 变高时, stepp 和 stepn 在 8 个实例中有 6 个都变高。在 2 种情况下,设计行为符合预期,只有在 EN 和 DSR_B 为高电平时 stepp 才会变为高电平。
我在多个工具上都看到过这种情况,所以我认为这不是工具的问题。谢谢
【问题讨论】:
-
您描述了可能由状态逻辑中的故障引起的典型行为(您有一个锁存器)。至少在 DSR 中检查故障。
标签: logic verilog system-verilog