보통은 디자인상에 무한루프가 존재할때 생기는 에러이며 혹은 런타임 옵

션이 임의로 변경되었을 때 나타날 수도 있습니다. 그래서 첨부된 사진 대

로 Iteration 값을 5000으로 바꿔 주시면 됩니다.

'verilog' 카테고리의 다른 글

12비트 74163 카운터 & Test Bench  (0) 2012.11.11
74163 카운터 & Test Bench  (0) 2012.11.11
4비트 Shift 레지스터 & Test Bench  (0) 2012.11.11
Synchronous Reset D플립플롭 & Test Bench  (0) 2012.11.11
8비트 Full Adder & Test Bench  (0) 2012.11.11
AND

module Top_counter_74163(Qin1,Qin2,Qin3,Carry, Din1,Din2,Din3, CLK, LdN, ClrN,P,T);

    

    input [3:0] Din1;

    input [3:0] Din2;

    input [3:0] Din3;

    input CLK,LdN,ClrN,P,T;

    

    output [3:0] Qin1;

    output [3:0] Qin2;

    output [3:0] Qin3;

    output [2:0] Carry;

    

    wire [3:0] Qin1;

    wire [3:0] Qin2;

    wire [3:0] Qin3;

    wire [2:0] Carry;

    

    counter_74163 A1(.Q(Qin1),

                     .Cout(Carry[0]),

                     .D(Din1),

                     .CLK(CLK),

                     .LdN(LdN),

                     .ClrN(ClrN),

                     .P(P),

                     .T(T)

                     );

                     

    counter_74163 A2(.Q(Qin2),

                     .Cout(Carry[1]),

                     .D(Din2),

                     .CLK(CLK),

                     .LdN(LdN),

                     .ClrN(ClrN),

                     .P(P),

                     .T(Carry[0])

                     );

                     

    counter_74163 A3(.Q(Qin3),

                     .Cout(Carry[2]),

                     .D(Din3),

                     .CLK(CLK),

                     .LdN(LdN),

                     .ClrN(ClrN),

                     .P(P),

                     .T(Carry[1])

                     );

   endmodule


module tb_74163_12bit();

    

    reg CLK,LdN,ClrN,P,T;

    reg [3:0] Din1;

    reg [3:0] Din2;

    reg [3:0] Din3; 

    

    wire [3:0] Qin1;

    wire [3:0] Qin2;

    wire [3:0] Qin3;

    wire [2:0] Carry;

    

    Top_counter_74163 m1(.Qin1(Qin1),

                         .Qin2(Qin2),

                         .Qin3(Qin3),

                         .Carry(Carry),

                         .Din1(Din1),

                         .Din2(Din2),

                         .Din3(Din3),

                         .CLK(CLK),

                         .LdN(LdN),

                         .ClrN(ClrN),

                         .P(P),

                         .T(T));

    

    initial CLK=1'b0;

    always #5 CLK=~CLK;

    

    initial

       begin

          #5  LdN=0;

          #10 LdN=1;

          #40 LdN=0;

          #10 LdN=1;

          #35 LdN=0;

          #10 LdN=1;

          #55 LdN=0;

          #10 LdN=1;

      end

    

    initial 

       begin

           Din1=4'b1100;

      #55  Din1=4'b1101;

      #45  Din1=4'b1101;

      #55  Din1=4'b1000;

       end

       

    initial 

       begin

           Din2=4'b1110;

      #55  Din2=4'b1111;

      #100 Din2=4'b1100;

    end

    

    initial 

       begin

            Din3=4'b1110;

      #100  Din3=4'b1111;

      #55   Din3=4'b1110;

    end

        

    initial

       begin

            T=1;

            P=1;

       #215 P=0;

       #10  P=1; 

       end

    

    initial

       begin

            ClrN=1;

       #185 ClrN=0;

       #10  ClrN=1; 

       end   

   endmodule

AND

module counter_74163(Q,Cout,D,CLK,LdN,ClrN,P,T);

    

    input [3:0] D;

    input CLK,LdN,ClrN,P,T;

    output [3:0] Q;

    output Cout;

    reg [3:0] Q;

    wire Cout;

    

    assign Cout=(Q[3]&Q[2]&Q[1]&Q[0]&T);

    

    always@(posedge CLK)

    begin

        if(!ClrN)

          Q <= 4'b0000;

        else

        begin

            if(!LdN)

            Q<=D;

            else

            if((P&&T)==1'b0)

            Q<=Q;

            else

            Q <= Q+1;

          end

    end

endmodule


module tb_counter_74163();

    

    reg CLK,LdN,ClrN,P,T;

    reg [3:0] D;

    

    wire [3:0] Q;

    wire Cout;

    

    counter_74163 m1(Q,Cout,D,CLK,LdN,ClrN,P,T);


 initial CLK=1'b0;

    always #5 CLK=~CLK;

    

    initial

       begin

          #20 LdN=0;

          #20 LdN=1;

      end

      

    initial

       begin

           T=1;

           P=1;

           LdN=1;

           ClrN=1;

           D=4'b0111;

        end

   endmodule

AND