FPGA中modelsim仿真出错( Error: (vsim-3601) Iteration limit reached at time 55445 ns.)

有时候在用modelsim做仿真的时候,会出现这个错误:Error:(vsim-3601) Iteration limit reached at time 55445 ns.

翻译一下,就是,在55445ns的时候,超出了迭代的限制。一般modelsim的迭代限制为5000次。

FPGA中modelsim仿真出错( Error: (vsim-3601) Iteration limit reached at time 55445 ns.)_第1张图片

FPGA中modelsim仿真出错( Error: (vsim-3601) Iteration limit reached at time 55445 ns.)_第2张图片

可以看到,默认的设置为5000

一般认为出现这种错误,是因为在代码里面出现了回环,通常是组合电路的问题。比方说在一个组合逻辑块里面,对敏感变量进行赋值。

作为敏感变量,只要变化,就会触发组合逻辑块的赋值,而赋值又会立马让敏感变量变化,然后再触发组合逻辑块赋值。

这样循环往复,每次触发变化的时间,是几乎可以忽略不计的。一旦敏感变量触发组合电路的赋值,便会不断地,触发--赋值--触发---赋值。。。

并且组合电路动作,几乎不花时间,这样实际上就是一个死循环。

解决办法:找到代码中采用电平敏感描述组合的逻辑块,查找问题;具体,就是避免在敏感变量A所触发的逻辑块中,再次对敏感变量A进行赋值操作。

于是modelsim会爆出错误。

FPGA中modelsim仿真出错( Error: (vsim-3601) Iteration limit reached at time 55445 ns.)_第3张图片

再举个例子:

比方我的组合电路如下,为电平敏感的,只要always块中变量变化,就会不断的触发此电路进行赋值


FPGA中modelsim仿真出错( Error: (vsim-3601) Iteration limit reached at time 55445 ns.)_第4张图片

按照上述的代码,modelsim仿真的时候,会报错如下:



然后,我们将敏感变量具体指定,并保证在敏感变量所触发的模块中,不再对同一个敏感变量进行赋值操作。更改如下:

FPGA中modelsim仿真出错( Error: (vsim-3601) Iteration limit reached at time 55445 ns.)_第5张图片

如此则,不会再出现上述的错误:

FPGA中modelsim仿真出错( Error: (vsim-3601) Iteration limit reached at time 55445 ns.)_第6张图片

FPGA中modelsim仿真出错( Error: (vsim-3601) Iteration limit reached at time 55445 ns.)_第7张图片


你可能感兴趣的:(FPGA的Verilog,modelsim,10.1c)