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 延迟之后没有其他事情可做。为了节省仿真时间,它会在此点之前停止仿真。这就是为什么在此之后您看不到任何波形的原因。

有多种方法可以解决此问题:

  1. #90 延迟后添加 $finish() 语句。这应该使模拟器保持活动状态。如果这不起作用,您可以尝试在 $finish().
  2. 之前添加一些虚拟交易
  3. 在模型模拟 GUI 中,有一个选项可以 运行 模拟指定的时间量。你可以用那个。如果您不想每次都点击的麻烦,我相信一定有一个等效的命令行。
  4. 从技术上讲,如果您的设计内部有任何 activity 可能(我无法检查,因为您还没有发布它),ModelSim 应该保持活动状态。也许检查你的设计。

好的,我找到并解决了问题。

我试图实现一个时序电路,它肯定由一个寄存器组成。问题是我通过创建结构 D 触发器实现了这个寄存器,并创建了一个组合循环。然后这个循环导致了 (vsim-3601) iteration limit reached 错误。

寄存器的实现方式如下: https://www.intel.com/content/www/us/en/programmable/quartushelp/13.0/mergedProjects/hdl/vlog/vlog_pro_registers.htm