-
Notifications
You must be signed in to change notification settings - Fork 0
/
decoder_2to4_tb.v
97 lines (86 loc) · 3.11 KB
/
decoder_2to4_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
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
86
87
88
89
90
91
92
93
94
95
96
97
// *************************************************
// * 'Test Bench' *
// * decoder 2to4 *
// *************************************************
module decoder_2to4_tb;
reg x, y, E;
wire D0, D1, D2, D3;
decoder_2to4 dut(
.x(x),
.y(y),
.E(E),
.D0(D0),
.D1(D1),
.D2(D2),
.D3(D3)
);
// Test patterns for all input modes
initial begin
// mode 1
x = 0; y = 0; E = 0;
#10;
$display("**********************************************");
$display("Input : x=%b, y=%b, E=%b", x, y, E);
$display("Output : D0=%b, D1=%b, D2=%b, D3=%b", D0, D1, D2, D3);
if (D0 !== 1 || D1 !== 0 || D2 !== 0 || D3 !== 0)
$display("Test case 1 failed!");
// mode 2
x = 0; y = 0; E = 1;
#10;
$display("**********************************************");
$display("Input : x=%b, y=%b, E=%b", x, y, E);
$display("Output : D0=%b, D1=%b, D2=%b, D3=%b", D0, D1, D2, D3);
if (D0 !== 1 || D1 !== 1 || D2 !== 1 || D3 !== 0)
$display("Test case 2 failed!");
// mode 3
x = 0; y = 1; E = 0;
#10;
$display("**********************************************");
$display("Input : x=%b, y=%b, E=%b", x, y, E);
$display("Output : D0=%b, D1=%b, D2=%b, D3=%b", D0, D1, D2, D3);
if (D0 !== 1 || D1 !== 0 || D2 !== 1 || D3 !== 0)
$display("Test case 3 failed!");
// mode 4
x = 0; y = 1; E = 1;
#10;
$display("**********************************************");
$display("Input : x=%b, y=%b, E=%b", x, y, E);
$display("Output : D0=%b, D1=%b, D2=%b, D3=%b", D0, D1, D2, D3);
if (D0 !== 1 || D1 !== 1 || D2 !== 0 || D3 !== 1)
$display("Test case 4 failed!");
// mode 5
x = 1; y = 0; E = 0;
#10;
$display("**********************************************");
$display("Input : x=%b, y=%b, E=%b", x, y, E);
$display("Output : D0=%b, D1=%b, D2=%b, D3=%b", D0, D1, D2, D3);
if (D0 !== 1 || D1 !== 1 || D2 !== 1 || D3 !== 0)
$display("Test case 5 failed!");
// mode 6
x = 1; y = 0; E = 1;
#10;
$display("**********************************************");
$display("Input : x=%b, y=%b, E=%b", x, y, E);
$display("Output : D0=%b, D1=%b, D2=%b, D3=%b", D0, D1, D2, D3);
if (D0 !== 1 || D1 !== 0 || D2 !== 1 || D3 !== 1)
$display("Test case 6 failed!");
// mode 7
x = 1; y = 1; E = 0;
#10;
$display("**********************************************");
$display("Input : x=%b, y=%b, E=%b", x, y, E);
$display("Output : D0=%b, D1=%b, D2=%b, D3=%b", D0, D1, D2, D3);
if (D0 !== 1 || D1 !== 1 || D2 !== 0 || D3 !== 1)
$display("Test case 7 failed!");
// mode 8
x = 1; y = 1; E = 1;
#10;
$display("**********************************************");
$display("Input : x=%b, y=%b, E=%b", x, y, E);
$display("Output : D0=%b, D1=%b, D2=%b, D3=%b", D0, D1, D2, D3);
if (D0 !== 0 || D1 !== 1 || D2 !== 1 || D3 !== 1)
$display("Test case 8 failed!");
$display("**********************************************");
$display("All test cases passed!");
end
endmodule