-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathData_Memory_tb.v
55 lines (41 loc) · 1.21 KB
/
Data_Memory_tb.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//
// $ iverilog -o Data_Memory_tb.vvp Data_Memory_tb.v
// $ vvp Data_Memory_tb.vvp
//
`include "Data_Memory.v"
module Data_Memory_tb;
reg clk;
// Address input, shared b/w read and write
reg [15 : 0] mem_access_addr;
reg [15 : 0] mem_write_data;
reg mem_write_en;
reg mem_read;
// Read port
wire [15 : 0] mem_read_data;
Data_Memory uut (
.mem_access_addr(mem_access_addr),
.mem_write_data(mem_write_data),
.mem_write_en(mem_write_en),
.mem_read(mem_read),
.mem_read_data(mem_read_data)
);
integer i;
initial begin
$dumpfile("Data_Memory_tb_waveform.vcd");
$dumpvars(0, Data_Memory_tb);
$monitor("data: %b", mem_read_data);
// Enable write and read
mem_write_en = 1'b1;
mem_read = 1'b1;
// Read the 'mem_read_data' bus
for ( i = 0; i < 8; i = i + 1 ) begin
#1
mem_access_addr = i;
end
#2
$finish;
end
always begin
#1 clk = ~ clk;
end
endmodule