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
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