0

我正在使用以下代码。

    `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 行中解析到稳定值,因此模拟无法及时推进. 请更正此代码以提前超过当前模拟时间。”

我无法找到问题所在。

4

1 回答 1

0

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

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

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

于 2012-11-01T07:22:10.520 回答