-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMod_tb.v
More file actions
85 lines (70 loc) · 1.75 KB
/
Mod_tb.v
File metadata and controls
85 lines (70 loc) · 1.75 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
`timescale 1ns/1ns
module Mod_tb ();
reg [7 : 0] data_in;
reg rdy,
clk,
reset_n;
wire[4 : 0] dmod;
wire mod_en,
rd;
integer i;
integer MCD;
reg [7 : 0] mem[63 : 0];
always #5 clk = ~clk;
// Test Task
task test;
input [7 : 0] data;
integer i;
begin
data_in = data;
for(i = 0; i < 10; i = i + 1) begin
@(posedge clk);
data_in = data_in + 1;
end
end
endtask
// Test dump
initial begin
$dumpfile("waves.dump");
// $dumpvars(0, umod);
$dumpvars;
// $shm_open("waves.shm");
// $shm_probe();
end
// Test Output File
initial begin
MCD = $fopen("wave.dat");
$fmonitor(MCD, $time, "dmod = %b, mod_en = %b, rd = %b", dmod, mod_en, rd);
end
// Test Readmem(Input File)
initial begin
$readmemb("wave.txt", mem);
$display("mem = %b", mem[0]);
$display("mem = %b", mem[1]);
$display("mem = %b", mem[2]);
$display("mem = %b", mem[15]);
$display("mem = %b", mem[16]);
end
initial begin
clk = 0;
reset_n = 0;
rdy = 0;
data_in = 0;
@(posedge clk);
reset_n = 1;
@(posedge clk);
rdy = 0;
// data_in = 8'b0000_0000;
test(8'b0000_0000);
#10;
$fclose(MCD);
$finish;
end
data_mod_fsm umod( .clk(clk),
.reset_n(reset_n),
.rdy(rdy),
.data_in(data_in),
.dmod(dmod),
.mod_en(mod_en),
.rd(rd));
endmodule