이재하

Single Cycle branch 명령어 몇개 추가 및 pipeline register 추가

...@@ -4,14 +4,15 @@ input clk; ...@@ -4,14 +4,15 @@ input clk;
4 input[31:0] aluin1, aluin2; 4 input[31:0] aluin1, aluin2;
5 input[3:0] aluctrl; 5 input[3:0] aluctrl;
6 output reg[31:0] aluout; 6 output reg[31:0] aluout;
7 -output alubranch; 7 +// output alubranch;
8 +output reg[5:0] alubranch;
8 9
9 reg overflow; 10 reg overflow;
10 reg[63:0] temp; 11 reg[63:0] temp;
11 reg[31:0] HI, LO; // HI, LO register for multiplication and division. 12 reg[31:0] HI, LO; // HI, LO register for multiplication and division.
12 reg[31:0] tempHI, tempLO; // temporary HI, LO register for multiplication and division. 13 reg[31:0] tempHI, tempLO; // temporary HI, LO register for multiplication and division.
13 14
14 -assign alubranch = aluout == 32'h00000000 ? 1'b1 : 1'b0; 15 +// assign alubranch = aluout == 32'h00000000 ? 1'b1 : 1'b0;
15 16
16 initial begin 17 initial begin
17 temp = 64'h0000000000000000; 18 temp = 64'h0000000000000000;
...@@ -33,6 +34,12 @@ case(aluctrl) ...@@ -33,6 +34,12 @@ case(aluctrl)
33 4'b0110: begin // sub 34 4'b0110: begin // sub
34 aluout = aluin1 - aluin2; 35 aluout = aluin1 - aluin2;
35 overflow = aluin1[31]!=aluin2[31] && aluin1[31]!=aluout[31] ? 1'b1 : 1'b0; // overflow detection. 36 overflow = aluin1[31]!=aluin2[31] && aluin1[31]!=aluout[31] ? 1'b1 : 1'b0; // overflow detection.
37 + alubranch[0] = (aluout == 32'd0) ? 1'b1 : 1'b0; // beq
38 + alubranch[1] = (aluout != 32'd0) ? 1'b1 : 1'b0; // bne
39 + alubranch[2] = (aluin1 > 32'd0) ? 1'b1 : 1'b0; // bgtz
40 + alubranch[3] = (aluin1 < 32'd0) ? 1'b1 : 1'b0; // bltz
41 + alubranch[4] = (aluin1 >= 32'd0) ? 1'b1 : 1'b0; // bgez
42 + alubranch[5] = (aluin1 <= 32'd0) ? 1'b1 : 1'b0; // blez
36 end 43 end
37 44
38 4'b0111: begin // slt 45 4'b0111: begin // slt
......
1 -module Control(opcode, funct, regdst, regwrite, alusrc, aluctrl, memread, memwrite, memtoreg, branch, jump, jumpreg); 1 +module Control(opcode, rt, funct, regdst, regwrite, alusrc, aluctrl, memread, memwrite, memtoreg, branch, jump, jumpreg);
2 2
3 input[5:0] opcode; 3 input[5:0] opcode;
4 +input[4:0] rt;
4 input[5:0] funct; 5 input[5:0] funct;
5 -output reg regdst, regwrite, alusrc, memread, memwrite, memtoreg, branch, jump, jumpreg; 6 +output reg regdst, regwrite, alusrc, memread, memwrite, memtoreg, jump, jumpreg;
6 output reg[3:0] aluctrl; 7 output reg[3:0] aluctrl;
8 +output reg[2:0] branch;
7 9
8 always @(*) begin 10 always @(*) begin
9 case(opcode) 11 case(opcode)
...@@ -14,7 +16,7 @@ always @(*) begin ...@@ -14,7 +16,7 @@ always @(*) begin
14 memread = 1'b0; 16 memread = 1'b0;
15 memwrite = 1'b0; 17 memwrite = 1'b0;
16 memtoreg = 1'b0; 18 memtoreg = 1'b0;
17 - branch = 1'b0; 19 + branch = 3'b000;
18 jump = 1'b0; 20 jump = 1'b0;
19 jumpreg = 1'b0; 21 jumpreg = 1'b0;
20 case(funct) 22 case(funct)
...@@ -41,7 +43,7 @@ always @(*) begin ...@@ -41,7 +43,7 @@ always @(*) begin
41 memread = 1'b0; 43 memread = 1'b0;
42 memwrite = 1'b0; 44 memwrite = 1'b0;
43 // memtoreg = 1'bx; 45 // memtoreg = 1'bx;
44 - branch = 1'b0; 46 + branch = 3'b000;
45 jump = 1'b1; 47 jump = 1'b1;
46 jumpreg = 1'b1; 48 jumpreg = 1'b1;
47 end 49 end
...@@ -57,7 +59,7 @@ always @(*) begin ...@@ -57,7 +59,7 @@ always @(*) begin
57 memread = 1'b0; 59 memread = 1'b0;
58 memwrite = 1'b0; 60 memwrite = 1'b0;
59 memtoreg = 1'b0; 61 memtoreg = 1'b0;
60 - branch = 1'b0; 62 + branch = 3'b000;
61 jump = 1'b0; 63 jump = 1'b0;
62 jumpreg = 1'b0; 64 jumpreg = 1'b0;
63 end 65 end
...@@ -70,7 +72,7 @@ always @(*) begin ...@@ -70,7 +72,7 @@ always @(*) begin
70 memread = 1'b0; 72 memread = 1'b0;
71 memwrite = 1'b0; 73 memwrite = 1'b0;
72 memtoreg = 1'b0; 74 memtoreg = 1'b0;
73 - branch = 1'b0; 75 + branch = 3'b000;
74 jump = 1'b0; 76 jump = 1'b0;
75 jumpreg = 1'b0; 77 jumpreg = 1'b0;
76 end 78 end
...@@ -83,20 +85,88 @@ always @(*) begin ...@@ -83,20 +85,88 @@ always @(*) begin
83 memread = 1'b0; 85 memread = 1'b0;
84 memwrite = 1'b0; 86 memwrite = 1'b0;
85 memtoreg = 1'b0; 87 memtoreg = 1'b0;
86 - branch = 1'b0; 88 + branch = 3'b000;
87 jump = 1'b0; 89 jump = 1'b0;
88 jumpreg = 1'b0; 90 jumpreg = 1'b0;
89 end 91 end
90 92
91 6'b000100: begin // beq instruction 93 6'b000100: begin // beq instruction
92 - // regdst = 1'bx; // don't care 94 + // regdst = 1'bx;
95 + regwrite = 1'b0;
96 + alusrc = 1'b0;
97 + aluctrl = 4'b0110; // sub
98 + memread = 1'b0;
99 + memwrite = 1'b0;
100 + // memtoreg = 1'bx;
101 + branch = 3'b001;
102 + jump = 1'b0;
103 + jumpreg = 1'b0;
104 + end
105 +
106 + 6'b000101: begin // bne instruction
107 + // regdst = 1'bx;
108 + regwrite = 1'b0;
109 + alusrc = 1'b0;
110 + aluctrl = 4'b0110; // sub
111 + memread = 1'b0;
112 + memwrite = 1'b0;
113 + // memtoreg = 1'bx;
114 + branch = 3'b010;
115 + jump = 1'b0;
116 + jumpreg = 1'b0;
117 + end
118 +
119 + 6'b000111: begin // bgtz instruction
120 + // regdst = 1'bx;
121 + regwrite = 1'b0;
122 + alusrc = 1'b0;
123 + aluctrl = 4'b0110; // sub
124 + memread = 1'b0;
125 + memwrite = 1'b0;
126 + // memtoreg = 1'bx;
127 + branch = 3'b011;
128 + jump = 1'b0;
129 + jumpreg = 1'b0;
130 + end
131 +
132 + 6'b000001: begin
133 + case(rt)
134 + 5'b00000: begin // bltz instruction
135 + // regdst = 1'bx;
136 + regwrite = 1'b0;
137 + alusrc = 1'b0;
138 + aluctrl = 4'b0110; // sub
139 + memread = 1'b0;
140 + memwrite = 1'b0;
141 + // memtoreg = 1'bx;
142 + branch = 3'b100;
143 + jump = 1'b0;
144 + jumpreg = 1'b0;
145 + end
146 + 5'b00001: begin // bgez instruction
147 + // regdst = 1'bx;
148 + regwrite = 1'b0;
149 + alusrc = 1'b0;
150 + aluctrl = 4'b0110; // sub
151 + memread = 1'b0;
152 + memwrite = 1'b0;
153 + // memtoreg = 1'bx;
154 + branch = 3'b101;
155 + jump = 1'b0;
156 + jumpreg = 1'b0;
157 + end
158 + endcase
159 + end
160 +
161 + 6'b000111: begin // blez instruction
162 + // regdst = 1'bx;
93 regwrite = 1'b0; 163 regwrite = 1'b0;
94 alusrc = 1'b0; 164 alusrc = 1'b0;
95 aluctrl = 4'b0110; // sub 165 aluctrl = 4'b0110; // sub
96 memread = 1'b0; 166 memread = 1'b0;
97 memwrite = 1'b0; 167 memwrite = 1'b0;
98 // memtoreg = 1'bx; 168 // memtoreg = 1'bx;
99 - branch = 1'b1; 169 + branch = 3'b110;
100 jump = 1'b0; 170 jump = 1'b0;
101 jumpreg = 1'b0; 171 jumpreg = 1'b0;
102 end 172 end
...@@ -109,7 +179,7 @@ always @(*) begin ...@@ -109,7 +179,7 @@ always @(*) begin
109 memread = 1'b0; 179 memread = 1'b0;
110 memwrite = 1'b0; 180 memwrite = 1'b0;
111 // memtoreg = 1'bx; 181 // memtoreg = 1'bx;
112 - branch = 1'b0; 182 + branch = 3'b000;
113 jump = 1'b1; 183 jump = 1'b1;
114 jumpreg = 1'b0; 184 jumpreg = 1'b0;
115 end 185 end
...@@ -122,7 +192,7 @@ always @(*) begin ...@@ -122,7 +192,7 @@ always @(*) begin
122 memread = 1'b1; 192 memread = 1'b1;
123 memwrite = 1'b0; 193 memwrite = 1'b0;
124 memtoreg = 1'b1; 194 memtoreg = 1'b1;
125 - branch = 1'b0; 195 + branch = 3'b000;
126 jump = 1'b0; 196 jump = 1'b0;
127 jumpreg = 1'b0; 197 jumpreg = 1'b0;
128 end 198 end
...@@ -135,7 +205,7 @@ always @(*) begin ...@@ -135,7 +205,7 @@ always @(*) begin
135 memread = 1'b0; 205 memread = 1'b0;
136 memwrite = 1'b1; 206 memwrite = 1'b1;
137 // memtoreg = 1'bx; 207 // memtoreg = 1'bx;
138 - branch = 1'b0; 208 + branch = 3'b000;
139 jump = 1'b0; 209 jump = 1'b0;
140 jumpreg = 1'b0; 210 jumpreg = 1'b0;
141 end 211 end
...@@ -148,7 +218,7 @@ always @(*) begin ...@@ -148,7 +218,7 @@ always @(*) begin
148 memread = 1'b0; 218 memread = 1'b0;
149 memwrite = 1'b0; 219 memwrite = 1'b0;
150 // memtoreg = 1'bx; 220 // memtoreg = 1'bx;
151 - branch = 1'b0; 221 + branch = 3'b000;
152 jump = 1'b0; 222 jump = 1'b0;
153 jumpreg = 1'b0; 223 jumpreg = 1'b0;
154 end 224 end
......
1 +/* Not Finished */
2 +module Stall(clk, in_readreg_num1, in_readreg_num2, in_writereg_num);
3 +
4 +input clk;
5 +input[4:0] in_readreg_num1, in_readreg_num2, in_writereg_num;
6 +
7 +reg[4:0] writeregs;
8 +
9 +endmodule
10 +
11 +
1 +module InstructionMemory(address, instruction);
2 +
3 +input[31:0] address;
4 +output reg[31:0] instruction;
5 +
6 +reg[31:0] instr_mem[127:0];
7 +
8 +initial begin
9 +instr_mem[0] = 32'd0;
10 +instr_mem[1] = 32'b00100100000010000000000011111111; // addi, $0 $8 255
11 +instr_mem[2] = 32'b00000001000010000100100000100000; // add, $8 $8 $9
12 +instr_mem[3] = 32'b00000001000000000101000000100000; // add, $8 $0 $10
13 +instr_mem[4] = 32'b00010001000010100000000000000001; // beq, $8 $10 +1
14 +instr_mem[5] = 32'd0;
15 +instr_mem[6] = 32'b00000001000010010000000000011000; // mult, $8 $9
16 +instr_mem[7] = 32'd0;
17 +instr_mem[8] = 32'b00000000000000000110000000010000; // mfhi, $12
18 +instr_mem[9] = 32'b00000000000000000110100000010010; // mflo, $13
19 +instr_mem[10] = 32'b10101100000011010000000000111100; // sw, $0 $13 60
20 +instr_mem[11] = 32'd0;
21 +instr_mem[12] = 32'b00010001000010110000000000000001; // beq, $8 $11 +1
22 +instr_mem[13] = 32'b10001100000000010000000000111100; // lw, $0 $1 60
23 +instr_mem[14] = 32'd0;
24 +instr_mem[15] = 32'b00000000000000000000000000001000; // jr, $0
25 +
26 +end
27 +
28 +always @ (*) begin
29 + instruction = instr_mem[address/4];
30 +end
31 +
32 +endmodule
1 +D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v
2 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
3 +-- Compiling module testbench
4 +
5 +Top level modules:
6 + testbench
7 +
8 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v
9 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
10 +-- Compiling module test
11 +-- Compiling module testA
12 +
13 +Top level modules:
14 + test
15 +
16 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v
17 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
18 +-- Compiling module Adder
19 +
20 +Top level modules:
21 + Adder
22 +
23 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v
24 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
25 +-- Compiling module MIPS_SingleCycle
26 +
27 +Top level modules:
28 + MIPS_SingleCycle
29 +
30 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v
31 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
32 +-- Compiling module InstructionMemory
33 +
34 +Top level modules:
35 + InstructionMemory
36 +
37 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v
38 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
39 +-- Compiling module Register
40 +
41 +Top level modules:
42 + Register
43 +
44 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v
45 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
46 +-- Compiling module IF_ID
47 +-- Compiling module ID_EX
48 +-- Compiling module EX_MEM
49 +-- Compiling module MEM_WB
50 +-- Compiling module PCcounter
51 +
52 +Top level modules:
53 + IF_ID
54 + ID_EX
55 + EX_MEM
56 + MEM_WB
57 + PCcounter
58 +
59 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v
60 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
61 +-- Compiling module MIPS_Pipeline
62 +
63 +Top level modules:
64 + MIPS_Pipeline
65 +
66 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v
67 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
68 +-- Compiling module Stall
69 +
70 +Top level modules:
71 + Stall
72 +
73 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v
74 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
75 +-- Compiling module SignExtend
76 +
77 +Top level modules:
78 + SignExtend
79 +
80 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v
81 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
82 +-- Compiling module Control
83 +
84 +Top level modules:
85 + Control
86 +
87 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v
88 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
89 +-- Compiling module Mux5bit
90 +-- Compiling module Mux32bit
91 +-- Compiling module MuxBranchSignal
92 +
93 +Top level modules:
94 + Mux5bit
95 + Mux32bit
96 + MuxBranchSignal
97 +
98 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v
99 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
100 +-- Compiling module ALU
101 +
102 +Top level modules:
103 + ALU
104 +
105 +} {} {}} {D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v} {1 {vlog -work work -stats=none {D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v}
106 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
107 +-- Compiling module DataMemory
108 +
109 +Top level modules:
110 + DataMemory
111 +
112 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v
113 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
114 +-- Compiling module ShiftLeft2
115 +
116 +Top level modules:
117 + ShiftLeft2
118 +
119 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v
120 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
121 +-- Compiling module Clock
122 +
123 +Top level modules:
124 + Clock
125 +
126 +} {} {}}
1 +// Test Required
2 +module MIPS_Pipeline;
3 +
4 +wire clk; // clock
5 +wire[31:0] instr_address, addPC4, addPCbranch, tempPC_branch, tempPC_jump, nextPC;
6 +
7 +wire[31:0] instr; // loaded instruction.
8 +
9 +wire[4:0] reg_writereg1; // register number for the write data.
10 +wire[31:0] reg_writedata; // data that will be written in the register.
11 +wire[31:0] reg_readdata1, reg_readdata2; // data from the requested register.
12 +
13 +wire[31:0] alu_input2; // input data of ALU.
14 +wire[31:0] alu_result; // result data of ALU.
15 +wire[5:0] alu_branch; // indicator for branch operation.
16 +
17 +wire[31:0] mem_readdata; // data from the requested address.
18 +
19 +wire ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_jump, ctrl_jumpreg, branch_signal;
20 +wire[3:0] ctrl_aluctrl; // control signals.
21 +wire[2:0] ctrl_branch;
22 +
23 +wire[31:0] extend_output;
24 +
25 +wire[31:0] shiftBranch_output;
26 +wire[31:0] shiftJump_output;
27 +
28 +// IF_ID register outputs
29 +wire[31:0] ifid_instr, ifid_PC_4;
30 +
31 +// ID_EX register outputs
32 +wire[4:0] idex_writereg1, idex_readreg_num1, idex_readreg_num2;
33 +wire idex_regwrite, idex_alusrc, idex_memread, idex_memwrite, idex_memtoreg, idex_jump, idex_jumpreg;
34 +wire[3:0] idex_aluctrl;
35 +wire[2:0] idex_branch;
36 +wire[31:0] idex_readdata1, idex_readdata2, idex_extenddata, idex_PC_4, idex_tempPCjump;
37 +
38 +// EX_MEM register outputs
39 +wire[4:0] exmem_writereg1;
40 +wire exmem_regwrite, exmem_memread, exmem_memwrite, exmem_memtoreg, exmem_branch, exmem_jump;
41 +wire[31:0] exmem_aluresult, exmem_memwritedata, exmem_PC_4, exmem_PCjump, exmem_tempPCbranch;
42 +
43 +// MEM_WB register outputs
44 +wire[4:0] memwb_writereg1;
45 +wire memwb_regwrite, memwb_memtoreg, memwb_jump;
46 +wire[31:0] memwb_aluresult, memwb_memreaddata, memwb_PCbranch, memwb_PCjump;
47 +
48 +
49 +Clock clock(clk);
50 +PCcounter pccounter(clk, nextPC, instr_address);
51 +
52 +// Instruction Fetch
53 +InstructionMemory instrmem(instr_address, instr);
54 +Adder add_pc4(PC, 32'h00000004, addPC4);
55 +
56 +IF_ID ifid(clk, instr, addPC4,
57 + ifid_instr, ifid_PC_4);
58 +
59 +// Instruction Decode
60 +Control ctrl(ifid_instr[31:26], ifid_instr[20:16], ifid_instr[5:0], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg);
61 +Mux5bit mux_regdst(ifid_instr[20:16], ifid_instr[15:11], ctrl_regdst, reg_writereg1);
62 +Register register(clk, ifid_instr[25:21], ifid_instr[20:16], memwb_writereg1, reg_writedata, memwb_regwrite, reg_readdata1, reg_readdata2);
63 +SignExtend extend(ifid_instr[15:0], extend_output);
64 +ShiftLeft2 shiftJump({6'b000000, ifid_instr[25:0]}, shiftJump_output);
65 +
66 +ID_EX idex(clk, reg_writereg1, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg,
67 + reg_readdata1, reg_readdata2, extend_output, ifid_PC_4, shiftJump_output, ifid_instr[25:21], ifid_instr[20:16],
68 + idex_writereg1, idex_regwrite, idex_alusrc, idex_aluctrl, idex_memread, idex_memwrite, idex_memtoreg, idex_branch, idex_jump, idex_jumpreg,
69 + idex_readdata1, idex_readdata2, idex_extenddata, idex_PC_4, idex_tempPCjump, idex_readreg_num1, idex_readreg_num2);
70 +
71 +// Execute
72 +Mux32bit mux_alusrc(idex_readdata2, idex_extend, idex_alusrc, alu_input2);
73 +ALU alu(clk, idex_readdata1, alu_input2, idex_aluctrl, alu_result, alu_branch);
74 +ShiftLeft2 shiftBranch(idex_extend, shiftBranch_output);
75 +Adder add_branch(idex_addPC4, shiftBranch_output, addPCbranch);
76 +MuxBranchSignal mux_branchsignal(alu_branch, idex_branch, branch_signal);
77 +Mux32bit mux_jumpreg({idex_PC_4[31:28], idex_tempPCjump[27:0]}, idex_readdata1, idex_jumpreg, tempPC_jump);
78 +
79 +EX_MEM ex_mem(clk, idex_writereg1, idex_regwrite, idex_memread, idex_memwrite, idex_memtoreg, branch_signal, idex_jump,
80 + alu_result, idex_readdata2, idex_PC_4, tempPC_jump, addPCbranch,
81 + exmem_writereg1, exmem_regwrite, exmem_memread, exmem_memwrite, exmem_memtoreg, exmem_branch, exmem_jump,
82 + exmem_aluresult, exmem_memwritedata, exmem_PC_4, exmem_PCjump, exmem_tempPCbranch);
83 +
84 +// Memory
85 +DataMemory datamem(clk, exmem_aluresult, exmem_memwritedata, exmem_memread, exmem_memwrite, mem_readdata);
86 +Mux32bit mux_branch(exmem_PC_4, exmem_tempPCbranch, exmem_branch , tempPC_branch);
87 +
88 +MEM_WB mem_wb(clk, exmem_writereg1, exmem_regwrite, exmem_memtoreg, exmem_jump,
89 + exmem_aluresult, mem_readdata, tempPC_branch, exmem_PCjump,
90 + memwb_writereg1, memwb_regwrite, memwb_memtoreg, memwb_jump,
91 + memwb_aluresult, memwb_memreaddata, memwb_PCbranch, memwb_PCjump);
92 +
93 +// Writeback
94 +Mux32bit mux_memtoreg(memwb_aluresult, memwb_memreaddata, memwb_memtoreg, reg_writedata);
95 +Mux32bit mux_jump(memwb_PCbranch, memwb_PCjump, memwb_jump, nextPC);
96 +
97 +
98 +
99 +
100 +always @(posedge clk) begin
101 +
102 +end
103 +
104 +/*
105 +wire clk; // clock
106 +reg[31:0] PC, instr_address;
107 +
108 +// IF - ID
109 +wire[31:0] if_id_instruction, if_id_pc_4;
110 +
111 +// ID - EX
112 +wire[31:0] id_ex_reg_readdata1, id_ex_reg_readdata2, id_ex_extenddata, id_ex_pc_4, id_ex_tempPCjump;
113 +wire[4:0] id_ex_writereg, id_hh_readreg1, id_hh_readreg2;
114 +wire id_ex_regwrite, id_ex_alusrc, id_ex_memread, id_ex_memwrite, id_ex_memtoreg, id_ex_branch, id_ex_jump, id_ex_jumpreg;
115 +wire[3:0] id_ex_aluctrl;
116 +
117 +// EX - MEM
118 +wire[31:0] ex_mem_aluresult, ex_mem_memwritedata, ex_mem_PC_4, ex_mem_PCjump, ex_mem_tempPCbranch;
119 +wire[4:0] ex_mem_writereg;
120 +wire ex_mem_regwrite, ex_mem_memread, ex_mem_memwrite, ex_mem_memtoreg, ex_mem_branch, ex_mem_jump;
121 +
122 +// MEM - WB
123 +wire[4:0] mem_wb_writereg_num;
124 +wire mem_wb_regwrite, mem_wb_memtoreg, mem_wb_jump;
125 +wire[31:0] mem_wb_aluresult, mem_wb_memreaddata, mem_wb_PCbranch, mem_wb_PCjump;
126 +
127 +// WB - etc.
128 +wire wb_id_regwrite;
129 +wire[4:0] wb_id_writereg;
130 +wire[31:0] wb_id_reg_writedata;
131 +wire[31:0] wb_nextPC;
132 +
133 +Clock clock(clk);
134 +
135 +InstructionFetch IF(clk, PC, if_id_instruction, if_id_pc_4);
136 +
137 +InstructionDecode ID(clk, if_id_instruction, if_id_pc_4, wb_id_writereg, wb_id_reg_writedata, wb_id_regwrite,
138 + id_ex_writereg, id_ex_regwrite, id_ex_alusrc, id_ex_aluctrl, id_ex_memread, id_ex_memwrite, id_ex_memtoreg, id_ex_branch, id_ex_jump, id_ex_jumpreg,
139 + id_ex_reg_readdata1, id_ex_reg_readdata2, id_ex_extenddata, id_ex_pc_4, id_ex_tempPCjump);
140 +
141 +Execute EX(clk, id_ex_writereg, id_ex_regwrite, id_ex_alusrc, id_ex_aluctrl, id_ex_memread, id_ex_memwrite, id_ex_memtoreg, id_ex_branch, id_ex_jump, id_ex_jumpreg,
142 + id_ex_reg_readdata1, id_ex_reg_readdata2, id_ex_extenddata, id_ex_pc_4, id_ex_tempPCjump,
143 + ex_mem_writereg, ex_mem_regwrite, ex_mem_memread, ex_mem_memwrite, ex_mem_memtoreg, ex_mem_branch, ex_mem_jump,
144 + ex_mem_aluresult, ex_mem_memwritedata, ex_mem_PC_4, ex_mem_PCjump, ex_mem_tempPCbranch);
145 +
146 +Mem MEM(clk, ex_mem_writereg, ex_mem_regwrite, ex_mem_memread, ex_mem_memwrite, ex_mem_memtoreg, ex_mem_branch, ex_mem_jump,
147 + ex_mem_aluresult, ex_mem_memwritedata, ex_mem_PC_4, ex_mem_PCjump, ex_mem_tempPCbranch,
148 + mem_wb_writereg_num, mem_wb_regwrite, mem_wb_memtoreg, mem_wb_jump, mem_wb_aluresult, mem_wb_memreaddata, mem_wb_PCbranch, mem_wb_PCjump);
149 +
150 +WriteBack WB(clk, mem_wb_writereg_num, mem_wb_regwrite, mem_wb_memtoreg, mem_wb_jump, mem_wb_aluresult, mem_wb_memreaddata, mem_wb_PCbranch, mem_wb_PCjump,
151 + wb_id_regwrite, wb_id_writereg, wb_id_reg_writedata, wb_nextPC);
152 +
153 +initial begin
154 + PC = 32'hfffffffc;
155 +end
156 +
157 +always @(posedge clk) begin
158 + instr_address = PC;
159 +end
160 +
161 +always @(negedge clk) begin
162 + PC = PC + 4;
163 +end
164 +*/
165 +endmodule
1 +module MIPS_SingleCycle;
2 +
3 +wire clk; // clock
4 +reg[31:0] PC; // program counter
5 +reg[31:0] instr_address;
6 +wire[31:0] addPC4, addPCbranch, tempPC_branch, tempPC_jump, nextPC;
7 +
8 +wire[31:0] instr; // loaded instruction.
9 +
10 +wire[4:0] reg_writereg1; // register number for the write data.
11 +wire[31:0] reg_writedata; // data that will be written in the register.
12 +wire[31:0] reg_readdata1, reg_readdata2; // data from the requested register.
13 +
14 +wire[31:0] alu_input2; // input data of ALU.
15 +wire[31:0] alu_result; // result data of ALU.
16 +wire[5:0] alu_branch; // indicator for branch operation.
17 +
18 +wire[31:0] mem_readdata; // data from the requested address.
19 +
20 +wire ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_jump, ctrl_jumpreg, branch_signal;
21 +wire[3:0] ctrl_aluctrl;
22 +wire[2:0] ctrl_branch; // control signals.
23 +
24 +wire[31:0] extend_output;
25 +
26 +wire[31:0] shiftBranch_output;
27 +wire[31:0] shiftJump_output;
28 +
29 +Clock clock(clk);
30 +InstructionMemory instrmem(instr_address, instr);
31 +Register register(clk, instr[25:21], instr[20:16], reg_writereg1, reg_writedata, ctrl_regwrite, reg_readdata1, reg_readdata2);
32 +ALU alu(clk, reg_readdata1, alu_input2, ctrl_aluctrl, alu_result, alu_branch);
33 +DataMemory datamem(clk, alu_result, reg_readdata2, ctrl_memread, ctrl_memwrite, mem_readdata);
34 +Control ctrl(instr[31:26], instr[20:16], instr[5:0], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg);
35 +Mux5bit mux_regdst(instr[20:16], instr[15:11], ctrl_regdst, reg_writereg1);
36 +MuxBranchSignal mux_branchsignal(alu_branch, ctrl_branch, branch_signal);
37 +Mux32bit mux_alusrc(reg_readdata2, extend_output, ctrl_alusrc, alu_input2);
38 +Mux32bit mux_memtoreg(alu_result, mem_readdata, ctrl_memtoreg, reg_writedata);
39 +Mux32bit mux_branch(addPC4, addPCbranch, branch_signal , tempPC_branch);
40 +Mux32bit mux_jumpreg({addPC4[31:28], shiftJump_output[27:0]}, reg_readdata1, ctrl_jumpreg, tempPC_jump);
41 +Mux32bit mux_jump(tempPC_branch, tempPC_jump, ctrl_jump, nextPC);
42 +SignExtend extend(instr[15:0], extend_output);
43 +Adder add_pc4(PC, 32'h00000004, addPC4);
44 +Adder add_branch(addPC4, shiftBranch_output, addPCbranch);
45 +ShiftLeft2 shiftBranch(extend_output, shiftBranch_output);
46 +ShiftLeft2 shiftJump({6'b000000, instr[25:0]}, shiftJump_output);
47 +
48 +initial begin
49 + PC = 32'h00000000;
50 +end
51 +
52 +always @(posedge clk) begin
53 + case(nextPC[31]) // if nextPC is available, PC = nextPC.
54 + 1'b0: PC = nextPC;
55 + 1'b1: PC = nextPC;
56 + endcase
57 +
58 + instr_address = PC;
59 +end
60 +
61 +endmodule
1 module Mux5bit(input1, input2, signal, output1); 1 module Mux5bit(input1, input2, signal, output1);
2 -
3 input[4:0] input1, input2; 2 input[4:0] input1, input2;
4 input signal; 3 input signal;
5 output reg[4:0] output1; 4 output reg[4:0] output1;
...@@ -10,11 +9,10 @@ always @(*) begin ...@@ -10,11 +9,10 @@ always @(*) begin
10 1'b1: output1 = input2; 9 1'b1: output1 = input2;
11 endcase 10 endcase
12 end 11 end
13 -
14 endmodule 12 endmodule
15 13
16 -module Mux32bit(input1, input2, signal, output1);
17 14
15 +module Mux32bit(input1, input2, signal, output1);
18 input[31:0] input1, input2; 16 input[31:0] input1, input2;
19 input signal; 17 input signal;
20 output reg[31:0] output1; 18 output reg[31:0] output1;
...@@ -25,5 +23,24 @@ always @(*) begin ...@@ -25,5 +23,24 @@ always @(*) begin
25 1'b1: output1 = input2; 23 1'b1: output1 = input2;
26 endcase 24 endcase
27 end 25 end
26 +endmodule
27 +
28 +
29 +module MuxBranchSignal(input1, signal, output1);
30 +input[5:0] input1;
31 +input[2:0] signal;
32 +output reg output1;
33 +
34 +always @(*) begin
35 + case(signal)
36 + 3'b000: output1 = 1'b0;
37 + 3'b001: output1 = input1[0];
38 + 3'b010: output1 = input1[1];
39 + 3'b011: output1 = input1[2];
40 + 3'b100: output1 = input1[3];
41 + 3'b101: output1 = input1[4];
42 + 3'b110: output1 = input1[5];
43 + endcase
44 +end
28 45
29 endmodule 46 endmodule
......
1 +module IF_ID(clk, in_instruction, in_PC_4,
2 + out_instruction, out_PC_4);
3 +input clk;
4 +input[31:0] in_instruction, in_PC_4;
5 +output reg[31:0] out_instruction, out_PC_4;
6 +
7 +always @(posedge clk) begin
8 + out_instruction <= in_instruction;
9 + out_PC_4 <= in_PC_4;
10 +end
11 +endmodule
12 +
13 +
14 +module ID_EX(clk, in_writereg_num, in_regwrite, in_alusrc, in_aluctrl, in_memread, in_memwrite, in_memtoreg, in_branch, in_jump, in_jumpreg,
15 + in_readdata1, in_readdata2, in_extenddata, in_PC_4, in_tempPCjump, in_readreg_num1, in_readreg_num2,
16 + out_writereg_num, out_regwrite, out_alusrc, out_aluctrl, out_memread, out_memwrite, out_memtoreg, out_branch, out_jump, out_jumpreg,
17 + out_readdata1, out_readdata2, out_extenddata, out_PC_4, out_tempPCjump, out_readreg_num1, out_readreg_num2);
18 +input clk;
19 +input[4:0] in_writereg_num;
20 +input in_regwrite, in_alusrc, in_memread, in_memwrite, in_memtoreg, in_branch, in_jump, in_jumpreg;
21 +input[3:0] in_aluctrl;
22 +input[31:0] in_readdata1, in_readdata2, in_extenddata, in_PC_4, in_tempPCjump, in_readreg_num1, in_readreg_num2;
23 +output reg[4:0] out_writereg_num;
24 +output reg out_regwrite, out_alusrc, out_memread, out_memwrite, out_memtoreg, out_branch, out_jump, out_jumpreg;
25 +output reg[3:0] out_aluctrl;
26 +output reg[31:0] out_readdata1, out_readdata2, out_extenddata, out_PC_4, out_tempPCjump, out_readreg_num1, out_readreg_num2;
27 +
28 +always @(posedge clk) begin
29 + out_writereg_num <= in_writereg_num;
30 + out_regwrite <= in_regwrite;
31 + out_alusrc <= in_alusrc;
32 + out_aluctrl <= in_aluctrl;
33 + out_memread <= in_memread;
34 + out_memwrite <= in_memwrite;
35 + out_memtoreg <= in_memtoreg;
36 + out_branch <= in_branch;
37 + out_jump <= in_jump;
38 + out_jumpreg <= in_jumpreg;
39 +
40 + out_readdata1 <= in_readdata1;
41 + out_readdata2 <= in_readdata2;
42 + out_extenddata <= in_extenddata;
43 + out_PC_4 <= out_PC_4;
44 + out_tempPCjump <= in_tempPCjump;
45 + out_readreg_num1 <= in_readreg_num1;
46 + out_readreg_num2 <= in_readreg_num2;
47 +end
48 +endmodule
49 +
50 +
51 +module EX_MEM(clk, in_writereg_num, in_regwrite, in_memread, in_memwrite, in_memtoreg, in_branch, in_jump,
52 + in_aluresult, in_mem_writedata, in_PC_4, in_PCjump, in_tempPCbranch,
53 + out_writereg_num, out_regwrite, out_memread, out_memwrite, out_memtoreg, out_branch, out_jump,
54 + out_aluresult, out_mem_writedata, out_PC_4, out_PCjump, out_tempPCbranch);
55 +input clk;
56 +input[4:0] in_writereg_num;
57 +input in_regwrite, in_memread, in_memwrite, in_memtoreg, in_branch, in_jump;
58 +input[31:0] in_aluresult, in_mem_writedata, in_PC_4, in_PCjump, in_tempPCbranch;
59 +output reg[4:0] out_writereg_num;
60 +output reg out_regwrite, out_memread, out_memwrite, out_memtoreg, out_branch, out_jump;
61 +output reg[31:0] out_aluresult, out_mem_writedata, out_PC_4, out_PCjump, out_tempPCbranch;
62 +
63 +always @(posedge clk) begin
64 + out_writereg_num <= in_writereg_num;
65 + out_regwrite <= in_regwrite;
66 + out_memread <= in_memread;
67 + out_memwrite <= in_memwrite;
68 + out_memtoreg <= in_memtoreg;
69 + out_branch <= in_branch;
70 + out_jump <= in_jump;
71 +
72 + out_aluresult <= in_aluresult;
73 + out_mem_writedata <= in_mem_writedata;
74 + out_PC_4 <= in_PC_4;
75 + out_PCjump <= in_PCjump;
76 + out_tempPCbranch <= in_tempPCbranch;
77 +end
78 +endmodule
79 +
80 +
81 +module MEM_WB(clk, in_writereg_num, in_regwrite, in_memtoreg, in_jump, in_aluresult, in_memreaddata, in_PCbranch, in_PCjump,
82 + out_writereg_num, out_regwrite, out_memtoreg, out_jump, out_aluresult, out_memreaddata, out_PCbranch, out_PCjump);
83 +input clk;
84 +input[4:0] in_writereg_num;
85 +input in_regwrite, in_memtoreg, in_jump;
86 +input[31:0] in_aluresult, in_memreaddata, in_PCbranch, in_PCjump;
87 +output reg[4:0] out_writereg_num;
88 +output reg out_regwrite, out_memtoreg, out_jump;
89 +output reg[31:0] out_aluresult, out_memreaddata, out_PCbranch, out_PCjump;
90 +
91 +always @(posedge clk) begin
92 + out_writereg_num <= in_writereg_num;
93 + out_regwrite <= in_regwrite;
94 + out_memtoreg <= in_memtoreg;
95 + out_jump <= in_jump;
96 +
97 + out_aluresult <= in_aluresult;
98 + out_memreaddata <= in_memreaddata;
99 + out_PCbranch <= out_PCbranch;
100 + out_PCjump <= out_PCjump;
101 +end
102 +endmodule
103 +
104 +/* Not Finished */
105 +module PCcounter(clk, in_pc, out_nextpc);
106 +input clk;
107 +input[31:0] in_pc;
108 +output reg[31:0] out_nextpc;
109 +reg[31:0] PC;
110 +
111 +initial begin
112 + PC = 32'h00000000;
113 +end
114 +
115 +always @(posedge clk) begin
116 +/*
117 + case(in_pc[31]) // if in_pc is available, PC = in_pc.
118 + 1'b0: PC = in_pc;
119 + 1'b1: PC = in_pc;
120 + endcase
121 +*/
122 + PC <= PC+4;
123 + out_nextpc <= PC;
124 +end
125 +
126 +endmodule
1 +module test;
2 +
3 +wire clk;
4 +reg sig1;
5 +reg[31:0] in1;
6 +wire[31:0] out1, out2;
7 +
8 +Clock clock(clk);
9 +testA ta(clk, sig1, in1, out1, out2);
10 +
11 +initial begin
12 + sig1 <= 1'b0;
13 + in1 <= 32'd0;
14 + #100;
15 + in1 <= 32'hffffffff;
16 + #100;
17 + sig1 <= 1'b1;
18 + in1 <= 32'h0000ffff;
19 + #100;
20 + sig1 <= 1'b1;
21 + in1 <= 32'hffff0000;
22 + #100;
23 +end
24 +
25 +/*
26 +wire clk;
27 +reg[31:0] pc;
28 +wire[31:0] instr, tempPC;
29 +
30 +Clock clock(clk);
31 +InstructionFetch IF(clk, pc, instr, tempPC);
32 +
33 +initial begin
34 + pc = 32'hfffffffc;
35 +end
36 +
37 +always @(negedge clk) begin
38 + pc = pc + 4;
39 +end
40 +*/
41 +endmodule
42 +
43 +module testA(clk, sig1, in1, out1, out2);
44 +
45 +input clk, sig1;
46 +input[31:0] in1;
47 +output reg[31:0] out1, out2;
48 +
49 +always @(posedge clk) begin
50 + out1 <= in1;
51 + if(sig1 == 1) out2 <= in1;
52 +end
53 +
54 +endmodule
...@@ -31,9 +31,9 @@ Register register(clk, instr[25:21], instr[20:16], reg_writereg1, reg_writedata, ...@@ -31,9 +31,9 @@ Register register(clk, instr[25:21], instr[20:16], reg_writereg1, reg_writedata,
31 ALU alu(clk, reg_readdata1, alu_input2, ctrl_aluctrl, alu_result, alu_branch); 31 ALU alu(clk, reg_readdata1, alu_input2, ctrl_aluctrl, alu_result, alu_branch);
32 DataMemory datamem(clk, alu_result, reg_readdata2, ctrl_memread, ctrl_memwrite, mem_readdata); 32 DataMemory datamem(clk, alu_result, reg_readdata2, ctrl_memread, ctrl_memwrite, mem_readdata);
33 Control ctrl(instr[31:26], instr[5:0], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg); 33 Control ctrl(instr[31:26], instr[5:0], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg);
34 -Mux5bit mux_writereg(instr[20:16], instr[15:11], ctrl_regdst, reg_writereg1); 34 +Mux5bit mux_regdst(instr[20:16], instr[15:11], ctrl_regdst, reg_writereg1);
35 -Mux32bit mux_alu(reg_readdata2, extend_output, ctrl_alusrc, alu_input2); 35 +Mux32bit mux_alusrc(reg_readdata2, extend_output, ctrl_alusrc, alu_input2);
36 -Mux32bit mux_writedata(alu_result, mem_readdata, ctrl_memtoreg, reg_writedata); 36 +Mux32bit mux_memtoreg(alu_result, mem_readdata, ctrl_memtoreg, reg_writedata);
37 Mux32bit mux_branch(addPC4, addPCbranch, {ctrl_branch&alu_branch} , tempPC_branch); 37 Mux32bit mux_branch(addPC4, addPCbranch, {ctrl_branch&alu_branch} , tempPC_branch);
38 Mux32bit mux_jumpreg({addPC4[31:28], shiftJump_output[27:0]}, reg_readdata1, ctrl_jumpreg, tempPC_jump); 38 Mux32bit mux_jumpreg({addPC4[31:28], shiftJump_output[27:0]}, reg_readdata1, ctrl_jumpreg, tempPC_jump);
39 Mux32bit mux_jump(tempPC_branch, tempPC_jump, ctrl_jump, nextPC); 39 Mux32bit mux_jump(tempPC_branch, tempPC_jump, ctrl_jump, nextPC);
......
1 +m255
2 +K4
3 +z2
4 +13
5 +!s112 1.1
6 +!i10d 8192
7 +!i10e 25
8 +!i10f 100
9 +cModel Technology
10 +dD:/class/Capstone1/KNW_Project2/Project/Pipeline
11 +vAdder
12 +!s110 1590758368
13 +!i10b 1
14 +!s100 C]ac0M5ljAN8jKk:YMWUe1
15 +IDi2UW;IAjgeEI=Re1d6>j0
16 +Z0 VDg1SIo80bB@j0V0VzS_@n1
17 +Z1 dD:/class/Capstone1/KNW_Project2/Project/MIPS
18 +Z2 w1590245372
19 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v
20 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v
21 +L0 1
22 +Z3 OP;L;10.4a;61
23 +r1
24 +!s85 0
25 +31
26 +!s108 1590758368.000000
27 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v|
28 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v|
29 +!s101 -O0
30 +!i113 1
31 +Z4 o-work work -L mtiAvm -L mtiRnm -L mtiOvm -L mtiUvm -L mtiUPF -L infact -O0
32 +n@adder
33 +vALU
34 +Z5 !s110 1590758369
35 +!i10b 1
36 +!s100 8`_QAORX^JgbcU:FJndD:1
37 +I^ma26jUAmP4?NRZPY^4G=2
38 +R0
39 +R1
40 +w1590755442
41 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v
42 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v
43 +L0 1
44 +R3
45 +r1
46 +!s85 0
47 +31
48 +Z6 !s108 1590758369.000000
49 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v|
50 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v|
51 +!s101 -O0
52 +!i113 1
53 +R4
54 +n@a@l@u
55 +vClock
56 +R5
57 +!i10b 1
58 +!s100 OWQXV6kDYiT>ChTOoCFa]2
59 +IQHn8SmB<S>;8X8GE^RU_a0
60 +R0
61 +R1
62 +R2
63 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v
64 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v
65 +L0 1
66 +R3
67 +r1
68 +!s85 0
69 +31
70 +R6
71 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v|
72 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v|
73 +!s101 -O0
74 +!i113 1
75 +R4
76 +n@clock
77 +vControl
78 +R5
79 +!i10b 1
80 +!s100 RnD5[K2b[j8<X09[R7]kZ2
81 +I_4RCzG]R_IOaidB1NCK7D0
82 +R0
83 +R1
84 +w1590757464
85 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v
86 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v
87 +L0 1
88 +R3
89 +r1
90 +!s85 0
91 +31
92 +R6
93 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v|
94 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v|
95 +!s101 -O0
96 +!i113 1
97 +R4
98 +n@control
99 +vDataMemory
100 +R5
101 +!i10b 1
102 +!s100 RT9n9HH7ShGYTRk0Zj<MK3
103 +IbciGN62QS2]SHi<BkL<2=2
104 +R0
105 +R1
106 +R2
107 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v
108 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v
109 +L0 1
110 +R3
111 +r1
112 +!s85 0
113 +31
114 +R6
115 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v|
116 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v|
117 +!s101 -O0
118 +!i113 1
119 +R4
120 +n@data@memory
121 +vEX_MEM
122 +R5
123 +!i10b 1
124 +!s100 ]8:X<?W@7Q@:C>XWDd6?W2
125 +ISC6^?55L`OXYAVlPjf`nE1
126 +R0
127 +R1
128 +Z7 w1590758341
129 +Z8 8D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v
130 +Z9 FD:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v
131 +L0 51
132 +R3
133 +r1
134 +!s85 0
135 +31
136 +R6
137 +Z10 !s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v|
138 +Z11 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v|
139 +!s101 -O0
140 +!i113 1
141 +R4
142 +n@e@x_@m@e@m
143 +vID_EX
144 +R5
145 +!i10b 1
146 +!s100 AOa7M@:@;]1<l5@<:]DoZ3
147 +I1^7Xh>glK<B3GFZz?nHKG1
148 +R0
149 +R1
150 +R7
151 +R8
152 +R9
153 +L0 14
154 +R3
155 +r1
156 +!s85 0
157 +31
158 +R6
159 +R10
160 +R11
161 +!s101 -O0
162 +!i113 1
163 +R4
164 +n@i@d_@e@x
165 +vIF_ID
166 +R5
167 +!i10b 1
168 +!s100 gnf82IK;Q2HN9lh8hggGU3
169 +I;=kYGK18[WJPiNhbdWnK>2
170 +R0
171 +R1
172 +R7
173 +R8
174 +R9
175 +L0 1
176 +R3
177 +r1
178 +!s85 0
179 +31
180 +R6
181 +R10
182 +R11
183 +!s101 -O0
184 +!i113 1
185 +R4
186 +n@i@f_@i@d
187 +vInstructionMemory
188 +R5
189 +!i10b 1
190 +!s100 6FSBo3he?<YZH8SWT@?520
191 +I[UoXc[5<F^Vo]d2STIEaL3
192 +R0
193 +R1
194 +w1590757768
195 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v
196 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v
197 +L0 1
198 +R3
199 +r1
200 +!s85 0
201 +31
202 +R6
203 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v|
204 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v|
205 +!s101 -O0
206 +!i113 1
207 +R4
208 +n@instruction@memory
209 +vMEM_WB
210 +R5
211 +!i10b 1
212 +!s100 U4fQaKDggSoeYLh<eCFgU0
213 +I@gj2Xh:PnQJOY356SH^a`2
214 +R0
215 +R1
216 +R7
217 +R8
218 +R9
219 +L0 81
220 +R3
221 +r1
222 +!s85 0
223 +31
224 +R6
225 +R10
226 +R11
227 +!s101 -O0
228 +!i113 1
229 +R4
230 +n@m@e@m_@w@b
231 +vMIPS_Pipeline
232 +R5
233 +!i10b 1
234 +!s100 d<3zzA7z4RnP`AU2`TaFC3
235 +Iao5jbloRQ>=BcXMPeBS3V0
236 +R0
237 +R1
238 +w1590757593
239 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v
240 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v
241 +L0 2
242 +R3
243 +r1
244 +!s85 0
245 +31
246 +R6
247 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v|
248 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v|
249 +!s101 -O0
250 +!i113 1
251 +R4
252 +n@m@i@p@s_@pipeline
253 +vMIPS_SingleCycle
254 +R5
255 +!i10b 1
256 +!s100 dPOY;3F4Z@[X550Mf8=`]2
257 +IQZkQc[MJbHhEVdg`K]7Hm0
258 +R0
259 +R1
260 +w1590757617
261 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v
262 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v
263 +L0 1
264 +R3
265 +r1
266 +!s85 0
267 +31
268 +R6
269 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v|
270 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v|
271 +!s101 -O0
272 +!i113 1
273 +R4
274 +n@m@i@p@s_@single@cycle
275 +vMux32bit
276 +R5
277 +!i10b 1
278 +!s100 foJG^YU75_eND1Og;6Z>O1
279 +II3=gjhQD0_cn8mlDL]@bi1
280 +R0
281 +R1
282 +Z12 w1590755668
283 +Z13 8D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v
284 +Z14 FD:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v
285 +L0 15
286 +R3
287 +r1
288 +!s85 0
289 +31
290 +R6
291 +Z15 !s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v|
292 +Z16 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v|
293 +!s101 -O0
294 +!i113 1
295 +R4
296 +n@mux32bit
297 +vMux5bit
298 +R5
299 +!i10b 1
300 +!s100 oSd=[kHDJb<:G7LN4]6@e3
301 +IfiVXg_aB2GQG7?F@=HcEi0
302 +R0
303 +R1
304 +R12
305 +R13
306 +R14
307 +L0 1
308 +R3
309 +r1
310 +!s85 0
311 +31
312 +R6
313 +R15
314 +R16
315 +!s101 -O0
316 +!i113 1
317 +R4
318 +n@mux5bit
319 +vMuxBranchSignal
320 +R5
321 +!i10b 1
322 +!s100 H1RKS9h`Y6QFX88CRc<g[0
323 +IGJT?gXMKEEWH?G^lPN79V2
324 +R0
325 +R1
326 +R12
327 +R13
328 +R14
329 +L0 29
330 +R3
331 +r1
332 +!s85 0
333 +31
334 +R6
335 +R15
336 +R16
337 +!s101 -O0
338 +!i113 1
339 +R4
340 +n@mux@branch@signal
341 +vPCcounter
342 +R5
343 +!i10b 1
344 +!s100 LU5jEj9S38k[SaIDeL1nG0
345 +I81MUZW]CnE2oaQhzNQ:^f3
346 +R0
347 +R1
348 +R7
349 +R8
350 +R9
351 +L0 105
352 +R3
353 +r1
354 +!s85 0
355 +31
356 +R6
357 +R10
358 +R11
359 +!s101 -O0
360 +!i113 1
361 +R4
362 +n@p@ccounter
363 +vRegister
364 +R5
365 +!i10b 1
366 +!s100 Bdb0dL`fj[<g;4lO0DTA?2
367 +I]1XK2c]z?oKE2lz6^YJ@E2
368 +R0
369 +R1
370 +R2
371 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v
372 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v
373 +L0 1
374 +R3
375 +r1
376 +!s85 0
377 +31
378 +R6
379 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v|
380 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v|
381 +!s101 -O0
382 +!i113 1
383 +R4
384 +n@register
385 +vShiftLeft2
386 +R5
387 +!i10b 1
388 +!s100 eI5Ec:gWMIfN>mTKQIBY93
389 +I>^Q9<62c;5[Hn[Q?e7H1W0
390 +R0
391 +R1
392 +R2
393 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v
394 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v
395 +L0 1
396 +R3
397 +r1
398 +!s85 0
399 +31
400 +R6
401 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v|
402 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v|
403 +!s101 -O0
404 +!i113 1
405 +R4
406 +n@shift@left2
407 +vSignExtend
408 +Z17 !s110 1590758370
409 +!i10b 1
410 +!s100 ahVKzC^1fD@70fO3WnVUV0
411 +Il`J_9Ud<V7MLm3fGkfTAf0
412 +R0
413 +R1
414 +R2
415 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v
416 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v
417 +L0 1
418 +R3
419 +r1
420 +!s85 0
421 +31
422 +R6
423 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v|
424 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v|
425 +!s101 -O0
426 +!i113 1
427 +R4
428 +n@sign@extend
429 +vStall
430 +R5
431 +!i10b 1
432 +!s100 DfdOH4n>:HLca08Dem_aV1
433 +IU:EDMN]H5b[DHo4cH[;FR3
434 +R0
435 +R1
436 +w1590758365
437 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v
438 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v
439 +L0 2
440 +R3
441 +r1
442 +!s85 0
443 +31
444 +R6
445 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v|
446 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v|
447 +!s101 -O0
448 +!i113 1
449 +R4
450 +n@stall
451 +vtest
452 +R17
453 +!i10b 1
454 +!s100 k>03:b]McFVP5WBB2X74Q1
455 +I=8dVVickYZ@kW6ZABDlc_2
456 +R0
457 +R1
458 +Z18 w1590335687
459 +Z19 8D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v
460 +Z20 FD:/class/Capstone1/KNW_Project2/Project/MIPS/test.v
461 +L0 1
462 +R3
463 +r1
464 +!s85 0
465 +31
466 +Z21 !s108 1590758370.000000
467 +Z22 !s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v|
468 +Z23 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v|
469 +!s101 -O0
470 +!i113 1
471 +R4
472 +vtestA
473 +R17
474 +!i10b 1
475 +!s100 N_c21cYjoS9<Wi;WjH:Qc0
476 +IdN8m[5hjJ3QH?beTSX`:T3
477 +R0
478 +R1
479 +R18
480 +R19
481 +R20
482 +L0 43
483 +R3
484 +r1
485 +!s85 0
486 +31
487 +R21
488 +R22
489 +R23
490 +!s101 -O0
491 +!i113 1
492 +R4
493 +ntest@a
494 +vtestbench
495 +R17
496 +!i10b 1
497 +!s100 OS>9h:91ecFHGVTRNVN]_2
498 +IR?_j2LXMem;jJUiXH@MhI0
499 +R0
500 +R1
501 +w1590428983
502 +8D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v
503 +FD:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v
504 +L0 1
505 +R3
506 +r1
507 +!s85 0
508 +31
509 +R21
510 +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v|
511 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v|
512 +!s101 -O0
513 +!i113 1
514 +R4
No preview for this file type
No preview for this file type
No preview for this file type
1 -module InstructionMemory(address, instruction);
2 -
3 -input[31:0] address;
4 -output reg[31:0] instruction;
5 -
6 -reg[31:0] instr_mem[127:0];
7 -
8 -initial begin
9 -instr_mem[0] = 32'd0;
10 -instr_mem[1] = 32'b00100100000010000000000011111111; // addi $0 $8 255
11 -instr_mem[2] = 32'b00000001000010000100100000100000; // add $8 $8 $9
12 -instr_mem[3] = 32'b00000001000000000101000000100000; // add $8 $0 $10
13 -instr_mem[4] = 32'b00010001000010110000000000000001; // beq $8 $11 +1
14 -instr_mem[5] = 32'b00000001000010010000000000011000; // mult $8 $9
15 -instr_mem[6] = 32'd0;
16 -instr_mem[7] = 32'b00000000000000000110000000010000; // mfhi $12
17 -instr_mem[8] = 32'b00000000000000000110100000010010; // mflo $13
18 -instr_mem[9] = 32'b10101100000011010000000000111100; // sw $0 $13 60
19 -instr_mem[10] = 32'd0;
20 -instr_mem[11] = 32'b00010001000010110000000000000001; // beq $8 $11 +1
21 -instr_mem[12] = 32'b10001100000000010000000000111100; // lw $0 $1 60
22 -instr_mem[13] = 32'd0;
23 -instr_mem[14] = 32'b00000000000000000000000000001000; // jr $0
24 -
25 -
26 -
27 -end
28 -
29 -always @ (*) begin
30 - instruction = instr_mem[address/4];
31 -end
32 -
33 -endmodule
1 -D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v
2 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
3 --- Compiling module ShiftLeft2
4 -
5 -Top level modules:
6 - ShiftLeft2
7 -
8 -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v
9 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
10 --- Compiling module InstructionMemory
11 -
12 -Top level modules:
13 - InstructionMemory
14 -
15 -} {} {}} {D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v} {1 {vlog -work work -stats=none {D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v}
16 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
17 --- Compiling module DataMemory
18 -
19 -Top level modules:
20 - DataMemory
21 -
22 -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v
23 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
24 --- Compiling module testbench
25 -
26 -Top level modules:
27 - testbench
28 -
29 -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v
30 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
31 --- Compiling module Clock
32 -
33 -Top level modules:
34 - Clock
35 -
36 -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v
37 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
38 --- Compiling module Adder
39 -
40 -Top level modules:
41 - Adder
42 -
43 -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v
44 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
45 --- Compiling module SignExtend
46 -
47 -Top level modules:
48 - SignExtend
49 -
50 -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v
51 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
52 --- Compiling module Register
53 -
54 -Top level modules:
55 - Register
56 -
57 -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v
58 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
59 --- Compiling module Control
60 -
61 -Top level modules:
62 - Control
63 -
64 -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v
65 -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
66 --- Compiling module ALU
67 -
68 -Top level modules:
69 - ALU
70 -
71 -} {} {}}
1 -module test;
2 -
3 -reg[31:0] in1, in2;
4 -reg[3:0] ctrl;
5 -wire[31:0] out;
6 -wire a;
7 -
8 -ALU alu(in1, in2, ctrl, out, a);
9 -
10 -initial begin
11 - in1 = 32'd128;
12 - in2 = 32'd982;
13 - ctrl = 4'b1000;
14 - #100;
15 - in1 = 32'd123;
16 - in2 = 32'd246;
17 - ctrl = 4'b0010;
18 - #100;
19 - ctrl = 4'b1010;
20 - #100;
21 - ctrl = 4'b1011;
22 - #100;
23 -end
24 -
25 -/*
26 -wire clk;
27 -
28 -Clock clock(clk);
29 -*/
30 -
31 -/*
32 -reg[31:0] address, wdata;
33 -reg mr, mw;
34 -wire[31:0] rdata;
35 -
36 -DataMemory damem(address, wdata, mr, mw, rdata);
37 -
38 -initial begin
39 - address = 32'd0;
40 - wdata = 32'd127;
41 - mr = 1'b0;
42 - mw = 1'b1;
43 - #100;
44 - address = 32'd48;
45 - wdata = 32'd255;
46 - mr = 1'b0;
47 - mw = 1'b1;
48 - #100;
49 - address = 32'd48;
50 - wdata = 32'd255;
51 - mr = 1'b1;
52 - mw = 1'b0;
53 - #100;
54 - address = 32'd48;
55 - wdata = 32'd4;
56 - mr = 1'b0;
57 - mw = 1'b1;
58 - #100;
59 -end
60 -*/
61 -
62 -/*
63 -wire[31:0] regout1, regout2;
64 -reg[4:0] ins1, ins2, ins3;
65 -wire[31:0] aluresult;
66 -reg[3:0] aluctrl;
67 -reg rwrite;
68 -reg[31:0] aluin2;
69 -
70 -Register Regi(ins1, ins2, ins3, aluresult, rwrite, regout1, regout2);
71 -ALU alu(regout1, aluin2, aluctrl, aluresult);
72 -
73 -initial begin
74 - rwrite = 1;
75 - ins1 = 5'd0;
76 - ins2 = 5'd29;
77 - ins3 = 5'd7;
78 - aluin2 = 32'h7fffffff;
79 - aluctrl = 4'b0010;
80 - #100;
81 - rwrite = 1;
82 - ins1 = 5'd7;
83 - ins2 = 5'd7;
84 - ins3 = 5'd8;
85 - aluctrl = 4'b0010;
86 - #100;
87 - rwrite = 0;
88 - #100;
89 - rwrite = 1;
90 - ins1 = 5'd0;
91 - ins2 = 5'd29;
92 - ins3 = 5'd7;
93 - aluin2 = 32'h7fffffff;
94 - aluctrl = 4'b0010;
95 - #100;
96 - rwrite = 1;
97 - ins1 = 5'd7;
98 - ins2 = 5'd7;
99 - ins3 = 5'd8;
100 - aluctrl = 4'b0010;
101 - #100;
102 -end
103 -*/
104 -
105 -/*
106 -reg[31:0] input1, input2;
107 -reg[3:0] ctrl;
108 -wire[31:0] output1;
109 -wire zero;
110 -
111 -ALU testalu(input1, input2, ctrl, output1, zero);
112 -
113 -initial begin
114 - input1 <= 32'h0000000f;
115 - input2 <= 32'h000000f0;
116 - ctrl <= 4'h0; // add
117 - #100;
118 - ctrl <= 4'h1; // or
119 - #100;
120 - ctrl <= 4'h2; // add
121 - #100;
122 - ctrl <= 4'h6; // sub
123 - #100;
124 - ctrl <= 4'h7; // slt
125 - #100;
126 - ctrl <= 4'hc; // nor
127 - #100;
128 - input1 <= 32'h000000f0;
129 - input2 <= 32'h0000000f;
130 - ctrl <= 4'h6; // sub
131 - #100;
132 - input1 <= 32'h000000f0;
133 - input2 <= 32'h0000000f;
134 - ctrl <= 4'h6; // sub
135 - #100;
136 - input1 <= 32'h000000f0;
137 - input2 <= 32'h0000000f;
138 - ctrl <= 4'h6; // sub
139 - #100;
140 - input1 <= 32'h000000f0;
141 - input2 <= 32'h0000000f;
142 - ctrl <= 4'h6; // sub
143 - #100;
144 -end
145 -*/
146 -
147 -/*
148 -reg[31:0] input1;
149 -wire[31:0] output1;
150 -
151 -InstructionMemory im(input1, output1);
152 -
153 -initial
154 -begin
155 - input1 = {{28{1'b0}}, 4'b0000};
156 - #100;
157 - input1 = {{28{1'b0}}, 4'b1100};
158 - #100;
159 - input1 = {{28{1'b0}}, 4'b1000};
160 - #100;
161 - input1 = {{28{1'b0}}, 4'b0100};
162 - #100;
163 - input1 = {{28{1'b0}}, 4'b0000};
164 - #100;
165 -end
166 -*/
167 -
168 -/*
169 -reg[7:0] input1;
170 -wire[7:0] output1;
171 -
172 -Adder adder1(input1, 8'b00000001, output1);
173 -
174 -initial
175 -begin
176 - input1 = 8'b00001111;
177 - #100;
178 - input1 = 8'b00001000;
179 - #100;
180 - input1 = 8'b00000000;
181 - #100;
182 - input1 = 8'b11111111;
183 - #100;
184 -end
185 -*/
186 -endmodule
1 -m255
2 -K4
3 -z2
4 -13
5 -!s112 1.1
6 -!i10d 8192
7 -!i10e 25
8 -!i10f 100
9 -cModel Technology
10 -dC:/Modeltech_pe_edu_10.4a/examples
11 -vAdder
12 -Z0 !s110 1590181223
13 -!i10b 1
14 -!s100 C]ac0M5ljAN8jKk:YMWUe1
15 -IPABU2L8BVV2T>WDY4a1F@3
16 -Z1 VDg1SIo80bB@j0V0VzS_@n1
17 -Z2 dD:/class/Capstone1/KNW_Project2/Project/SingleCycle
18 -w1589585757
19 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v
20 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v
21 -L0 1
22 -Z3 OP;L;10.4a;61
23 -r1
24 -!s85 0
25 -31
26 -Z4 !s108 1590181223.000000
27 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v|
28 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v|
29 -!s101 -O0
30 -!i113 1
31 -Z5 o-work work -L mtiAvm -L mtiRnm -L mtiOvm -L mtiUvm -L mtiUPF -L infact -O0
32 -n@adder
33 -vALU
34 -R0
35 -!i10b 1
36 -!s100 :;Xi4U9^j:B2YKA2g;48a2
37 -Ilz@oO[_i9<DDh^X5Z@MYO2
38 -R1
39 -R2
40 -w1590179297
41 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v
42 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v
43 -L0 1
44 -R3
45 -r1
46 -!s85 0
47 -31
48 -R4
49 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v|
50 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v|
51 -!s101 -O0
52 -!i113 1
53 -R5
54 -n@a@l@u
55 -vALUControl
56 -Z6 !s110 1590134077
57 -!i10b 1
58 -!s100 5M;8KH=?8dC:nP8HEC8AT0
59 -Ij7f_HKS32W^mlmZIBXe=P0
60 -R1
61 -R2
62 -w1589611047
63 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v
64 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v
65 -L0 1
66 -R3
67 -r1
68 -!s85 0
69 -31
70 -Z7 !s108 1590134077.000000
71 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v|
72 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v|
73 -!s101 -O0
74 -!i113 1
75 -R5
76 -n@a@l@u@control
77 -vClock
78 -Z8 !s110 1590181224
79 -!i10b 1
80 -!s100 OWQXV6kDYiT>ChTOoCFa]2
81 -IQ3e7_okQ4UFF5[gGVRJ]L2
82 -R1
83 -R2
84 -w1589585780
85 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v
86 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v
87 -L0 1
88 -R3
89 -r1
90 -!s85 0
91 -31
92 -Z9 !s108 1590181224.000000
93 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v|
94 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v|
95 -!s101 -O0
96 -!i113 1
97 -R5
98 -n@clock
99 -vControl
100 -R8
101 -!i10b 1
102 -!s100 h4IKEzP5K:837Y_KUcOW]0
103 -I3T=^6M9lNafR2XL8nj12I1
104 -R1
105 -R2
106 -w1590177608
107 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v
108 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v
109 -L0 1
110 -R3
111 -r1
112 -!s85 0
113 -31
114 -R9
115 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v|
116 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v|
117 -!s101 -O0
118 -!i113 1
119 -R5
120 -n@control
121 -vDataMemory
122 -R8
123 -!i10b 1
124 -!s100 RT9n9HH7ShGYTRk0Zj<MK3
125 -InmT0b<BMV7FknI]N:9n7g0
126 -R1
127 -R2
128 -w1590179259
129 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v
130 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v
131 -L0 1
132 -R3
133 -r1
134 -!s85 0
135 -31
136 -R9
137 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v|
138 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v|
139 -!s101 -O0
140 -!i113 1
141 -R5
142 -n@data@memory
143 -vInstructionMemory
144 -Z10 !s110 1590181225
145 -!i10b 1
146 -!s100 =6Ye0hT1H9KSDP1=FhXga2
147 -ISLBgfdW;aN8g[2DAo[I992
148 -R1
149 -R2
150 -w1590180454
151 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v
152 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v
153 -L0 1
154 -R3
155 -r1
156 -!s85 0
157 -31
158 -Z11 !s108 1590181225.000000
159 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v|
160 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v|
161 -!s101 -O0
162 -!i113 1
163 -R5
164 -n@instruction@memory
165 -vMux32bit
166 -R6
167 -!i10b 1
168 -!s100 6HOE]5bDRSA[<HBJLTnYP0
169 -InTEk>^`Yjc4Xl2[WnZ3^Y3
170 -R1
171 -R2
172 -Z12 w1589610975
173 -Z13 8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v
174 -Z14 FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v
175 -L0 1
176 -R3
177 -r1
178 -!s85 0
179 -31
180 -R7
181 -Z15 !s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v|
182 -Z16 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v|
183 -!s101 -O0
184 -!i113 1
185 -R5
186 -n@mux32bit
187 -vMux5bit
188 -R6
189 -!i10b 1
190 -!s100 1oCn>`bHoZ=?A6[JF911T3
191 -I]EmV`Adl6kHglkN9IK>LX2
192 -R1
193 -R2
194 -R12
195 -R13
196 -R14
197 -L0 16
198 -R3
199 -r1
200 -!s85 0
201 -31
202 -R7
203 -R15
204 -R16
205 -!s101 -O0
206 -!i113 1
207 -R5
208 -n@mux5bit
209 -vRegister
210 -R10
211 -!i10b 1
212 -!s100 Bdb0dL`fj[<g;4lO0DTA?2
213 -I`9^FTXAAIcP>dnBfah`[e1
214 -R1
215 -R2
216 -w1590176245
217 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v
218 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v
219 -L0 1
220 -R3
221 -r1
222 -!s85 0
223 -31
224 -R11
225 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v|
226 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v|
227 -!s101 -O0
228 -!i113 1
229 -R5
230 -n@register
231 -vShiftLeft2
232 -R10
233 -!i10b 1
234 -!s100 eI5Ec:gWMIfN>mTKQIBY93
235 -IWRY1:Un@<nHGbA7hoKFL[1
236 -R1
237 -R2
238 -w1589586193
239 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v
240 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v
241 -L0 1
242 -R3
243 -r1
244 -!s85 0
245 -31
246 -R11
247 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v|
248 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v|
249 -!s101 -O0
250 -!i113 1
251 -R5
252 -n@shift@left2
253 -vSignExtend
254 -R10
255 -!i10b 1
256 -!s100 ahVKzC^1fD@70fO3WnVUV0
257 -Izf_2?i[S@:;mKbJ:CXF753
258 -R1
259 -R2
260 -w1589586199
261 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v
262 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v
263 -L0 1
264 -R3
265 -r1
266 -!s85 0
267 -31
268 -R11
269 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v|
270 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v|
271 -!s101 -O0
272 -!i113 1
273 -R5
274 -n@sign@extend
275 -vtest
276 -!s110 1590134078
277 -!i10b 1
278 -!s100 Sm5D9nHWJl4JV?TA`lU4`0
279 -IW:K2A@A@^WBUal;dbVMEN0
280 -R1
281 -R2
282 -w1589610276
283 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v
284 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v
285 -L0 1
286 -R3
287 -r1
288 -!s85 0
289 -31
290 -!s108 1590134078.000000
291 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v|
292 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v|
293 -!s101 -O0
294 -!i113 1
295 -R5
296 -vtestbench
297 -R10
298 -!i10b 1
299 -!s100 5AnCjSMdS0^a=^L0fjCWj2
300 -IlnGeUJ27C[a2FGBi<YI?;0
301 -R1
302 -R2
303 -w1590179680
304 -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v
305 -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v
306 -L0 1
307 -R3
308 -r1
309 -!s85 0
310 -31
311 -R11
312 -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v|
313 -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v|
314 -!s101 -O0
315 -!i113 1
316 -R5
No preview for this file type
No preview for this file type
No preview for this file type