

module bhv_spram (
     clka,
     ena,
     dina,
     addra,
     
     clkb,
     enb,
     doutb,
     addrb
);

//=================================================
function integer clog2(input integer depth);
begin
        for(clog2=0;depth>0;clog2=clog2+1)
                depth =depth>>1;
end
endfunction
//=================================================
parameter  width = 16;
parameter  depth = 1024;
localparam aw    = clog2(depth-1);
//=================================================
input              clka ;
input              ena  ;
input  [width-1:0] dina ;
input  [aw-1:0]    addra ;

input              clkb ;
input              enb  ;
output [width-1:0] doutb   ;
input  [aw-1:0]    addrb   ;

//================================================
wire               clka;
wire               ena;
wire   [width-1:0] dina;
wire   [aw-1:0]    addra;

wire               clkb;
wire               enb;
reg    [width-1:0] doutb;
wire   [aw-1:0]    addrb;

//================================================

reg [width-1:0] mem[0:depth-1];



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

always@(posedge clkb)begin
        if(enb)begin
                doutb <=mem[addrb];
        end
        //else begin
        //      doutb <=0;
        //end
end

endmodule


