达到迭代限制10000

时间:2012-11-01 05:59:40

标签: verilog

我正在使用以下代码。

    `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行。请更正此代码,以便超越当前的模拟时间。”

我无法找到问题所在。

1 个答案:

答案 0 :(得分:0)

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

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

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