我的verilog模型在模拟时出现错误(编译正确)

时间:2019-05-27 12:46:45

标签: verilog modelsim

这是我的代码。它的编译效果很好,但是当我尝试对其进行仿真时,程序向我显示错误“错误加载设计”。

关于许可证,我已经确认这不是问题。

我认为也许是有关时钟或组合模块的问题,但我找不到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

enter image description here

0 个答案:

没有答案