为什么闩锁不能推断出以下逻辑?

时间:2017-04-03 14:38:50

标签: verilog synthesis vlsi

为什么以下代码不会推断锁存?

工具如何知道要分配给" e"如果d和rst都是" 0" ?

module tmp(input d,
        input clk,
        input rst,
        output reg o,
        output reg e);

 always@(posedge clk)
         if(rst) begin
               o <=0;
               e <= 1;
               end
         else if(d) begin
                     o<=1;
                     e<=0;
               end
          else
                    o <=1;
endmodule

1 个答案:

答案 0 :(得分:2)

您的始终阻止模型顺序逻辑(即带有触发器的逻辑)。如果drst都是1'b0,则不会执行具有e分配的代码行。因此,e将保留(即记住)其先前的值。但那没关系,因为e将被合成为D型触发器。人字拖具有状态,他们有存储。不需要闩锁。