我正在使用以下代码。
`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行。请更正此代码,以便超越当前的模拟时间。”
我无法找到问题所在。
答案 0 :(得分:0)
问题是初始的第一行是零延迟。这应该在时间0驱动。尝试在初始(#1)上放置延迟。
您还希望在一个模块中混合可合成和不可合成的代码。这可能不是你想要的。
从这个模块中删除初始块,并使用具有时间刻度的测试平台来实例化该模块,该测试平台驱动该模块的输入,并有适当的延迟。