这是我的代码。它的编译效果很好,但是当我尝试对其进行仿真时,程序向我显示错误“错误加载设计”。
关于许可证,我已经确认这不是问题。
我认为也许是有关时钟或组合模块的问题,但我找不到tchem。
module tb_elevator;
reg [3:0] t_I;
reg t_CLK;
wire [1:0] t_B;
wire t_M;
parameter t = 20;
always #(t) begin t_CLK = ~t_CLK; t_I = 4'b0000; end
circuit_0 Test (t_M, t_B, t_CLK, t_I);
initial begin
t_CLK = 1'b0; #200;
t_I = 4'b1000; #10; //4->1
t_I = 4'b0010; #10;
t_I = 4'b0100; #10;//3->1
t_I = 4'b0001; #10;
t_I = 4'b0001; #10;//1->4
t_I = 4'b1000; #10;
t_I = 4'b1000; #10;//4->4
t_I = 4'b1000; #10;
t_I = 4'b1000; #10;//4->2
t_I = 4'b1000; #10;
$finish;
end
endmodule
我在测试台上找不到错误,错误应该在下面的代码中出现。
module circuit_0 (M, B, CLK, I);
input [3:0] I;
input CLK;
output reg [1:0] B;
output reg M;
wire [1:0] A;
circuit_1 C1 (A, CLK, I);
circuit_2 C2 (M, B, CLK, A);
endmodule
module circuit_1 (Y, CLK, X);
input [3:0] X;
input CLK;
output [1:0] Y;
reg [1:0] Y;
always @ (posedge CLK or posedge |X)
begin
if (X[3]==1) begin Y <= 2'b11; end
else if (X[2]==1) begin Y <= 2'b10; end
else if (X[1]==1) begin Y <= 2'b01; end
else if (X[0]==1) begin Y <= 2'b00; end
else begin Y <= Y; end
end
endmodule
module circuit_2 (Y, Z, CLK, X);
input [1:0] X;
input CLK;
output [1:0] Z;
output reg Y;
reg [1:0] T;
reg [1:0] Z;
always @ (posedge CLK)
begin
T[0] <= (~X[0])*Z[0]*(~Z[1]) + X[0]*(~Z[0])*Z[1];
T[1] <= ~((~X[0])^Z[0] + X[1]^Z[1]);
Z <= T^Z;
Y <= T[1];
end
endmodule