`timescale 1ns / 1ps module memory(CLK, DIN, DOUT, EN, WR, CLR, ADDR); input CLK; input [63:0] DIN; output [63:0] DOUT; input EN; input WR; input CLR; input [5:0] ADDR; reg [63:0] mem[0:63]; reg [63:0] dout_reg; assign DOUT[63:0] = dout_reg[63:0]; reg en_old; always @(posedge CLK) begin if (EN != en_old) begin en_old <= EN; if (WR == 1'b1) begin mem[ADDR][63:0] <= DIN[63:0]; end else if (CLR == 1'b0) begin dout_reg[63:0] <= mem[ADDR][63:0]; end else begin dout_reg[63:0] <= 64'hffffffffffffffff; end end end endmodule