data/full_repos/permissive/208113388/tlx/ocx_leaf_inferd_regfile.v
data/verilator_xmls/ff35fc56-150a-45b1-969e-f85ee6b4c129.xml
module ocx_leaf_inferd_regfile
    (

        clka   ,
        ena    ,
        addra  ,
        dina   ,
   

        clkb   ,
        rstb_n ,
        enb    ,
        addrb  ,
        doutb
    ) ;





       
        parameter  REGFILE_DEPTH   =    16 ;
        parameter  REGFILE_WIDTH   =   576 ;
        parameter  ADDR_WIDTH      =     4 ;
   




   

        input                        clka   ;
        input                        ena    ;
        input  [ADDR_WIDTH-1:0]      addra  ;
        input  [REGFILE_WIDTH-1:0]   dina   ;
   

        input                        clkb   ;
        input                        rstb_n ;
        input                        enb    ;
        input  [ADDR_WIDTH-1:0]      addrb  ;
        output [REGFILE_WIDTH-1:0]   doutb  ;







        (* RAM_STYLE="DISTRIBUTED" *)
        reg    [REGFILE_WIDTH-1:0]   regfile [REGFILE_DEPTH-1:0]   ;
        reg    [REGFILE_WIDTH-1:0]   output_reg  ;







        always @ (posedge clka) begin
              if(ena)    begin   regfile[addra] <= dina;  end
        end


        always @ (posedge clkb) begin
            if    (!rstb_n)         begin  output_reg  <= {REGFILE_WIDTH{1'b0}};   end
            else if (enb)           begin  output_reg  <= regfile[addrb];          end
        end

        assign  doutb  =  output_reg ;


endmodule
module ocx_leaf_inferd_regfile
    (

        clka   ,
        ena    ,
        addra  ,
        dina   ,
   

        clkb   ,
        rstb_n ,
        enb    ,
        addrb  ,
        doutb
    ) ;






       
        parameter  REGFILE_DEPTH   =    16 ;
        parameter  REGFILE_WIDTH   =   576 ;
        parameter  ADDR_WIDTH      =     4 ;
   




   

        input                        clka   ;
        input                        ena    ;
        input  [ADDR_WIDTH-1:0]      addra  ;
        input  [REGFILE_WIDTH-1:0]   dina   ;
   

        input                        clkb   ;
        input                        rstb_n ;
        input                        enb    ;
        input  [ADDR_WIDTH-1:0]      addrb  ;
        output [REGFILE_WIDTH-1:0]   doutb  ;







        (* RAM_STYLE="DISTRIBUTED" *)
        reg    [REGFILE_WIDTH-1:0]   regfile [REGFILE_DEPTH-1:0]   ;
        reg    [REGFILE_WIDTH-1:0]   output_reg  ;







        always @ (posedge clka) begin
              if(ena)    begin   regfile[addra] <= dina;  end
        end


        always @ (posedge clkb) begin
            if    (!rstb_n)         begin  output_reg  <= {REGFILE_WIDTH{1'b0}};   end
            else if (enb)           begin  output_reg  <= regfile[addrb];          end
        end

        assign  doutb  =  output_reg ;


endmodule