// Whatever the initial content of this memory is at reset, it will never change | |
// see demo3.smtc for assumptions and assertions | |
module demo3(input clk, rst, input [15:0] addr, output reg [31:0] data); | |
reg [31:0] mem [0:2**16-1]; | |
reg [15:0] addr_q; | |
always @(posedge clk) begin | |
if (rst) begin | |
data <= mem[0] ^ 123456789; | |
addr_q <= 0; | |
end else begin | |
mem[addr_q] <= data ^ 123456789; | |
data <= mem[addr] ^ 123456789; | |
addr_q <= addr; | |
end | |
end | |
endmodule |