【问题标题】:Iteration limit 10000 is reached达到迭代限制 10000
【发布时间】:2012-11-01 05:59:40
【问题描述】:

我正在使用以下代码。

    `timescale 1ns / 1ps
module program_counter
    (
    input        clock,
    input       reset,
    input [31:0]     in,
    output reg [31:0] out
    );
        initial 
            begin
                out <= 32'b00000000000000000000000000000001;
            end
    always @(negedge clock)
        begin
            if(reset)
                begin
                    out <= 32'b00000000000000000000000000000001;
                end
            else
                begin
                    out <= in;
                end
        end
endmodule

如图所示显示错误

“错误:在 0 ps:达到迭代限制 10000。检测到可能的零延迟振荡,因为信号无法解析为文件“C:/dewesh/latest_bkup/Program_counter.v”中的稳定值,模拟无法及时推进" 第 12 行。请更正此代码以提前超过当前模拟时间。"

我无法找到问题所在。

【问题讨论】:

  • 32'b00000000000000000000000000000001;32'b1; 相同
  • 32'h**** 对您来说更短。如果要小数,赋值为1,32bit适合int。

标签: verilog


【解决方案1】:

问题是初始的第一行是延迟。这应该在时间 0 驱动。尝试在初始 (#1) 上放置延迟。

您还希望在一个模块中混合可综合和不可综合的代码。这可能不是你想要的。

this 模块中删除初始块,并使用具有时间尺度的测试台实例化该模块,该测试台驱动该模块的输入,并具有适当的延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2018-02-24
    • 2023-03-16
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多