ModelSim 仿真比预期提前停止
ModelSim Simulation Stops Earlier than Expected
我正在尝试 运行 ModelSim 上的测试平台。我成功地编译和分析了我的电路代码,只有一个警告:
Warning (20028): Parallel compilation is not licensed and has been disabled
这是我的测试平台场景:
initial begin
clk = 0;
end
initial begin
forever begin
#1;
clk = ~clk;
end
end
initial begin
inc_or_res = 1;
ld_reg8 = 1;
#10;
inc_or_res = 0;
#90;
end
如您所见,在我定义的延迟下,它必须 运行 至少 100ps。
这是我得到的模拟结果。如您所见,它在 11ps 处停止。所以我无法测试我的场景。是什么原因?它不会在我的其他测试平台中给我这样的错误。
模型 sim 足够聪明,可以理解在 #90
延迟之后没有其他事情可做。为了节省仿真时间,它会在此点之前停止仿真。这就是为什么在此之后您看不到任何波形的原因。
有多种方法可以解决此问题:
- 在
#90
延迟后添加 $finish()
语句。这应该使模拟器保持活动状态。如果这不起作用,您可以尝试在 $finish()
. 之前添加一些虚拟交易
- 在模型模拟 GUI 中,有一个选项可以 运行 模拟指定的时间量。你可以用那个。如果您不想每次都点击的麻烦,我相信一定有一个等效的命令行。
- 从技术上讲,如果您的设计内部有任何 activity 可能(我无法检查,因为您还没有发布它),ModelSim 应该保持活动状态。也许检查你的设计。
好的,我找到并解决了问题。
我试图实现一个时序电路,它肯定由一个寄存器组成。问题是我通过创建结构 D 触发器实现了这个寄存器,并创建了一个组合循环。然后这个循环导致了 (vsim-3601) iteration limit reached 错误。
我正在尝试 运行 ModelSim 上的测试平台。我成功地编译和分析了我的电路代码,只有一个警告:
Warning (20028): Parallel compilation is not licensed and has been disabled
这是我的测试平台场景:
initial begin
clk = 0;
end
initial begin
forever begin
#1;
clk = ~clk;
end
end
initial begin
inc_or_res = 1;
ld_reg8 = 1;
#10;
inc_or_res = 0;
#90;
end
如您所见,在我定义的延迟下,它必须 运行 至少 100ps。
这是我得到的模拟结果。如您所见,它在 11ps 处停止。所以我无法测试我的场景。是什么原因?它不会在我的其他测试平台中给我这样的错误。
模型 sim 足够聪明,可以理解在 #90
延迟之后没有其他事情可做。为了节省仿真时间,它会在此点之前停止仿真。这就是为什么在此之后您看不到任何波形的原因。
有多种方法可以解决此问题:
- 在
#90
延迟后添加$finish()
语句。这应该使模拟器保持活动状态。如果这不起作用,您可以尝试在$finish()
. 之前添加一些虚拟交易
- 在模型模拟 GUI 中,有一个选项可以 运行 模拟指定的时间量。你可以用那个。如果您不想每次都点击的麻烦,我相信一定有一个等效的命令行。
- 从技术上讲,如果您的设计内部有任何 activity 可能(我无法检查,因为您还没有发布它),ModelSim 应该保持活动状态。也许检查你的设计。
好的,我找到并解决了问题。
我试图实现一个时序电路,它肯定由一个寄存器组成。问题是我通过创建结构 D 触发器实现了这个寄存器,并创建了一个组合循环。然后这个循环导致了 (vsim-3601) iteration limit reached 错误。