-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfib_tb.v
More file actions
118 lines (109 loc) · 4.2 KB
/
fib_tb.v
File metadata and controls
118 lines (109 loc) · 4.2 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
`timescale 1ns / 1ps
module fib_tb;
// Inputs
reg clk;
reg rst;
reg b_control;
reg [15:0] data_reg;
// Outputs
wire [10:0] mem_addr;
wire mem_write;
// Bidirs
wire [15:0] mem_data;
// Instantiate the Unit Under Test (UUT)
core uut (mem_addr,mem_write,mem_data,clk,rst);
buffer uub (mem_data,data_reg,b_control);
initial begin
clk = 0;
rst = 0;
b_control = 0;
data_reg = 16'b0000000000000000;
#2 rst = 1;
#1 rst = 0;
b_control = 1;
#1 data_reg = 16'b0000111111111111;
#10 data_reg = 16'b0000000000000000;
#10 data_reg = 16'b0001011111111110;
#10 data_reg = 16'b0000000000000001;
#10 data_reg = 16'b0001011111111101;
#10 data_reg = 16'b0000000000001010;
#10 data_reg = 16'b1101100000111111; //branch
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 9
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 8
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 7
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 6
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 5
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 4
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 3
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 2
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch 1
#10 data_reg = 16'b1010100000000000; //to return
#10 data_reg = 16'b1000100000000000; //SWAP
#10 data_reg = 16'b1001000000000000; //OVER
#10 data_reg = 16'b0010100000000000; //+
#10 data_reg = 16'b1011100000000000; //from return-
#10 data_reg = 16'b1110000000000000; //exit
#10 data_reg = 16'b1101100000111111; //branch
#10 data_reg = 16'b1001100000000000; //drop
#10 data_reg = 16'b0001111111110000;
#6 b_control = 0;
end
always begin
#5 clk = 1;
#5 clk = 0;
end
endmodule