如果信号仅在always_ff中的复位逻辑中定义,那么在综合中会发生什么?

时间:2017-03-08 21:44:37

标签: verilog system-verilog asic

让我们说下面的代码:

always_ff @(posedge clk, negedge rst) begin
   if (~rst) begin
      bad_singal <= '0;
      good_signal <= '0;
   end else begin
      // do something
      // bad_signal is not used here or anywhere in design. 
      if (some condition)
         good_signal <= 1'b1;
   end
end

合成中的bad_signal会发生什么?由于合成工具在设计中的任何地方都没有使用,因此合成工具是否会优化失败?

3 个答案:

答案 0 :(得分:4)

如果信号或寄存器没有驱动任何东西,那么是 - 任何合格的综合工具都会将其修剪掉,无论它是如何设置的。发生这种情况时,许多综合工具会报告警告。

答案 1 :(得分:1)

它应该在技术上推断出一个锁存器。

答案 2 :(得分:0)

如果不使用它将被优化掉。如果它在某个地方被使用,它将被绑在地上,因为它的值总是0