【发布时间】:2021-12-16 22:24:15
【问题描述】:
我有一个用于时序逻辑网络的简单 Verilog 代码。它由一个设计文件和一个测试台文件组成;它可以编译,但运行时间太长。我不知道为什么;除了clk,我没有在里面放任何循环。也许我在使用二进制数时有一些语法错误。我使用在线 EDA Playground 软件运行它;我没有在 Xilinx 上尝试过。
模拟器:Icarus Verilog 0.9.7,编译选项:-Wall。 “执行 中断或达到最大运行时间。”
这是日志写的。
设计文件:
module hazimodul(
input clk,
input rst,
input ce,
input x,
output z
);
reg[1:0] all;
reg[3:0] y;
reg[0:0] zout;
always@(posedge clk)
begin
if(rst)
begin
zout <= 1'b0;
all <= 2'b00;
y <= 4'b0111;
end
else if(ce)
begin
if(all == 2'b00)
begin
if(x== 1'b0)
zout<=1'b0;
else
all <=2'b01;
end
if(all==2'b01)
begin
zout <= y[3:3];
y <= {y[2:0],y[3:3]};
if (y == 4'b0111)
all <= 2'b10;
end
if(all==2'b10)
begin
if(x == 1'b0)
all <= 2'b00;
end
end
end
assign z = zout;
endmodule
测试文件:
module test;
reg clk;
reg rst;
reg x;
reg ce;
// Outputs
wire z;
// Instantiate the Unit Under Test (UUT)
hazimodul uut (
.clk(clk),
.rst(rst),
.x(x),
.ce(ce),
.z(z)
);
initial begin
// Initialize Inputs
clk = 0;
rst = 0;
x=0;
ce=0;
#10;
rst<=1;
#20;
rst<=0;
#30
ce<=1;
#40
x<=1;
#80
x<=0;
#90
x<=1;
end
always #5
clk <=~clk;
endmodule
【问题讨论】:
标签: verilog infinite-loop system-verilog