data/full_repos/permissive/461569093/CodesForFSM/A2_RawatA.srcs/sources_1/new/count.v
data/verilator_xmls/7ab6b6ef-5d46-488e-a8af-2bff338ac03f.xml
module counter
    (
    input wire clk, reset, 
	input in,
	input max_tick,

    output wire [3:0] d3, d2, d1, d0

    );



    reg [3:0] d3_out, d2_out, d1_out, d0_out;
    reg [3:0] d3_next, d2_next, d1_next, d0_next;
    
   always @(posedge clk)
    begin

       d3_out <= d3_next;
       d2_out <= d2_next;
       d1_out <= d1_next;
       d0_out <= d0_next;
    end
    
   always @*
    begin
       d0_next = d0_out;
       d1_next = d1_out;
       d2_next = d2_out;
       d3_next = d3_out;
       
       if (max_tick)
          begin
             d0_next = 4'b0;
             d1_next = 4'b0;
             d2_next = 4'b0;
             d3_next = 4'b0;
          end
          
       else if (in)

          if (d0_out != 9)

             d0_next = d0_out + 1;
          else
             begin
                d0_next = 4'b0;
                if (d1_out != 9)

                   d1_next = d1_out + 1;
                else
                   begin
                      d1_next = 4'b0;
                      if (d2_out != 9)

                         d2_next = d2_out + 1;
                      else
                         begin
                             d2_next = 4'b0;
                             if(d3_out != 9)

                                 d3_next = d3_out + 1;
                             else 
                                 d3_next = 4'b0;
                         end
                   end
             end
    end

    assign d0 = d0_out;
    assign d1 = d1_out;
    assign d2 = d2_out;
    assign d3 = d3_out;
    
endmodule
module counter
    (
    input wire clk, reset, 
	input in,
	input max_tick,

    output wire [3:0] d3, d2, d1, d0

    );




    reg [3:0] d3_out, d2_out, d1_out, d0_out;
    reg [3:0] d3_next, d2_next, d1_next, d0_next;
    
   always @(posedge clk)
    begin

       d3_out <= d3_next;
       d2_out <= d2_next;
       d1_out <= d1_next;
       d0_out <= d0_next;
    end
    
   always @*
    begin
       d0_next = d0_out;
       d1_next = d1_out;
       d2_next = d2_out;
       d3_next = d3_out;
       
       if (max_tick)
          begin
             d0_next = 4'b0;
             d1_next = 4'b0;
             d2_next = 4'b0;
             d3_next = 4'b0;
          end
          
       else if (in)

          if (d0_out != 9)

             d0_next = d0_out + 1;
          else
             begin
                d0_next = 4'b0;
                if (d1_out != 9)

                   d1_next = d1_out + 1;
                else
                   begin
                      d1_next = 4'b0;
                      if (d2_out != 9)

                         d2_next = d2_out + 1;
                      else
                         begin
                             d2_next = 4'b0;
                             if(d3_out != 9)

                                 d3_next = d3_out + 1;
                             else 
                                 d3_next = 4'b0;
                         end
                   end
             end
    end

    assign d0 = d0_out;
    assign d1 = d1_out;
    assign d2 = d2_out;
    assign d3 = d3_out;
    
endmodule