OpenRAM/compiler/tests/sram_tb.v

79 lines
958 B
Verilog

module sram;
reg [3:0] addr;
reg [1:0] data;
reg clk;
reg csb;
reg web;
reg oeb;
wire [1:0] data_in = !oeb ? 2'bzz : data;
sram_2_16_1_freepdk45 U0 (.DATA(data_in),
.ADDR(addr),
.CSb (csb),
.WEb (web),
.OEb (oeb),
.clk (clk)
);
initial
begin
$monitor("%g addr=%b data=%b",
$time, addr, data_in,);
clk = 0;
csb = 1;
web = 1;
oeb = 1;
addr = 0;
data = 0;
// write
#10 data=2'b10;
addr=4'h1;
web = 0;
oeb = 1;
csb = 0;
// write another
#10 data=2'b01;
addr=4'hC;
web = 0;
oeb = 1;
csb = 0;
// read undefined
#10 data=2'b11;
addr=4'h0;
web = 1;
oeb = 0;
csb = 0;
// read defined
#10 data=2'b11;
addr=4'hC;
web = 1;
oeb = 0;
csb = 0;
// read defined
#10 data=2'b11;
addr=4'h1;
web = 1;
oeb = 0;
csb = 0;
#30 $finish;
end
always
#5 clk = !clk;
endmodule