Ready-to-run snippets

Code Examples

Ready-to-run Verilog, SystemVerilog, and UVM examples. Click any to open it live in the IDE.

← All examples

Memory Example

Verilog Memories

Memory Example — a ready-to-run Verilog example.

Open in IDE
Related tutorial:
design.v
module des (    input           clk,
                input           rstn,
                input [1:0]     addr,
                input           wr,
                input           sel,
                input [3:0]     wdata,
                output [3:0]    rdata);

    reg [3:0] register [0:3];
    integer i;

    always @ (posedge clk) begin
        if (!rstn) begin
            for (i = 0; i < 4; i = i+1) begin
                register[i] <= 0;
            end
        end else begin
            if (sel & wr)
            register[addr] <= wdata;
            else
            register[addr] <= register[addr];
        end
    end

    assign rdata = (sel & ~wr) ? register[addr] : 0;
endmodule
testbench.v
// Enter testbench code
Admin mode — edit and delete controls are visible on each row. Use the IDE to add new snippets via File → Save as Snippet.