Verilog:Vivado 综合工具是否自动将信号添加到灵敏度列表?

Verilog: Does Vivado Synthesis tool, add signals to sensitivity list automatically?

module Test( input i );
 (* MARK_DEBUG = "TRUE" *) reg b;

 always @(i)
 begin
      if(i)
           b = 1'h0;
      else
           b = ~b;
 end
endmodule

综合此代码后,我在使用 ModelSim 模拟器的 Post-Synthesis-Simulation 过程中得到以下结果:

** 错误(可抑制):(vsim-3601) 在 20 ns 时达到迭代限制 10000000。

但我对行为模拟阶段没有任何问题。

Vivado 似乎自动将 "b" 信号添加到敏感列表,是吗?

从它所暗示的硬件的角度考虑这个模块。

b 不能实现为寄存器或锁存器,因为它是从组合 always 块分配的。然而,由此产生的电路包含一个组合循环,当 i 为 0 时,它不会稳定在任何值上:

是的,Xilinx 的综合引擎(ISE、Vivado 中的 XST)会自动将丢失的信号添加到敏感度列表中。不报错,默认警告

WARNING: [Synth 8-614] signal 'my_signal' is read in the process but is not in the sensitivity list