-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestGPR.v
More file actions
95 lines (83 loc) · 2.24 KB
/
Copy pathTestGPR.v
File metadata and controls
95 lines (83 loc) · 2.24 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
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 13:36:19 04/19/2020
// Design Name: GeneralPurposeRegister
// Module Name: D:/Final_Year_Project/EC_448_Major_Project/TestGPR.v
// Project Name: EC_448_Major_Project
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: GeneralPurposeRegister
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
module TestGPR;
// Inputs
reg clk;
reg enable;
reg alu2in_enable;
reg acc_enable;
reg [2:0] mode;
reg [2:0] src_addr;
reg [2:0] dst_addr;
reg [15:0] acc_input;
// Outputs
wire [15:0] alu_1st_in;
wire [15:0] alu_2nd_in;
// Bidirs
wire [15:0] data;
reg [15:0] data_in;
// Instantiate the Unit Under Test (UUT)
GeneralPurposeRegister uut (
.clk(clk),
.enable(enable),
.alu2in_enable(alu2in_enable),
.acc_enable(acc_enable),
.mode(mode),
.src_addr(src_addr),
.dst_addr(dst_addr),
.acc_input(acc_input),
.alu_1st_in(alu_1st_in),
.alu_2nd_in(alu_2nd_in),
.data(data)
);
assign data = (enable === 1'b1 && mode === 3'b010) ? data_in : 16'hzzzz;
initial begin
// Initialize Inputs
clk = 0;
enable = 0;
alu2in_enable = 1;
acc_enable = 0;
mode = 0;
src_addr = 0;
dst_addr = 0;
acc_input = 0;
data_in = 0;
#20 enable = 1; data_in = 16'h1234; mode = 3'b010; dst_addr = 3'b011;
#20 enable = 0; data_in = 16'h4321; dst_addr = 3'b001;
#20 enable = 1; data_in = 16'h4321; dst_addr = 3'b000;
#20 mode = 3'b001; src_addr = 3'b011;
#20 src_addr = 3'b010;
#20 src_addr = 3'b001;
#20 src_addr = 3'b000;
#20 mode = 3'b100; src_addr = 3'b000; dst_addr = 3'b001;
#20 mode = 3'b001; src_addr = 3'b001;
#20 mode = 3'b011; dst_addr = 3'b000;
#20 mode = 3'b001; src_addr = 3'b000;
#20 enable = 0; acc_enable = 1; acc_input = 16'hffff;
#20 enable = 1; acc_enable = 0; mode = 3'b001; src_addr = 3'b000;
#20 enable = 0;
end
initial begin
forever #10 clk = ~clk;
end
endmodule