diff --git a/PipelineProcessor.sim/sim_1/behav/xsim/xsim.dir/test_cpu_behav/obj/xsim_2.c b/PipelineProcessor.sim/sim_1/behav/xsim/xsim.dir/test_cpu_behav/obj/xsim_2.c
index fc1db81..46ffc81 100644
--- a/PipelineProcessor.sim/sim_1/behav/xsim/xsim.dir/test_cpu_behav/obj/xsim_2.c
+++ b/PipelineProcessor.sim/sim_1/behav/xsim/xsim.dir/test_cpu_behav/obj/xsim_2.c
@@ -61,7 +61,6 @@ IKI_DLLESPEC extern void execute_312(char*, char *);
IKI_DLLESPEC extern void execute_313(char*, char *);
IKI_DLLESPEC extern void execute_237(char*, char *);
IKI_DLLESPEC extern void execute_238(char*, char *);
-IKI_DLLESPEC extern void execute_309(char*, char *);
IKI_DLLESPEC extern void execute_310(char*, char *);
IKI_DLLESPEC extern void execute_311(char*, char *);
IKI_DLLESPEC extern void vlog_simple_process_execute_0_fast_no_reg_no_agg(char*, char*, char*);
@@ -276,18 +275,18 @@ IKI_DLLESPEC extern void execute_145(char*, char *);
IKI_DLLESPEC extern void execute_278(char*, char *);
IKI_DLLESPEC extern void execute_148(char*, char *);
IKI_DLLESPEC extern void execute_293(char*, char *);
-IKI_DLLESPEC extern void execute_294(char*, char *);
IKI_DLLESPEC extern void execute_150(char*, char *);
IKI_DLLESPEC extern void execute_301(char*, char *);
IKI_DLLESPEC extern void execute_152(char*, char *);
IKI_DLLESPEC extern void execute_153(char*, char *);
IKI_DLLESPEC extern void execute_303(char*, char *);
-IKI_DLLESPEC extern void execute_155(char*, char *);
IKI_DLLESPEC extern void execute_304(char*, char *);
+IKI_DLLESPEC extern void execute_155(char*, char *);
IKI_DLLESPEC extern void execute_305(char*, char *);
IKI_DLLESPEC extern void execute_306(char*, char *);
IKI_DLLESPEC extern void execute_307(char*, char *);
IKI_DLLESPEC extern void execute_308(char*, char *);
+IKI_DLLESPEC extern void execute_309(char*, char *);
IKI_DLLESPEC extern void execute_161(char*, char *);
IKI_DLLESPEC extern void execute_162(char*, char *);
IKI_DLLESPEC extern void execute_163(char*, char *);
@@ -323,12 +322,12 @@ IKI_DLLESPEC extern void transaction_262(char*, char*, unsigned, unsigned, unsig
IKI_DLLESPEC extern void transaction_293(char*, char*, unsigned, unsigned, unsigned);
IKI_DLLESPEC extern void transaction_322(char*, char*, unsigned, unsigned, unsigned);
IKI_DLLESPEC extern void transaction_323(char*, char*, unsigned, unsigned, unsigned);
-funcp funcTab[269] = {(funcp)execute_2, (funcp)execute_158, (funcp)execute_159, (funcp)execute_312, (funcp)execute_313, (funcp)execute_237, (funcp)execute_238, (funcp)execute_309, (funcp)execute_310, (funcp)execute_311, (funcp)vlog_simple_process_execute_0_fast_no_reg_no_agg, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_235, (funcp)execute_236, (funcp)execute_165, (funcp)execute_8, (funcp)execute_9, (funcp)execute_10, (funcp)execute_11, (funcp)execute_12, (funcp)execute_13, (funcp)execute_14, (funcp)execute_15, (funcp)execute_16, (funcp)execute_17, (funcp)execute_18, (funcp)execute_19, (funcp)execute_20, (funcp)execute_21, (funcp)execute_22, (funcp)execute_24, (funcp)execute_25, (funcp)execute_26, (funcp)execute_27, (funcp)execute_28, (funcp)execute_29, (funcp)execute_30, (funcp)execute_31, (funcp)execute_32, (funcp)execute_33, (funcp)execute_34, (funcp)execute_35, (funcp)execute_36, (funcp)execute_37, (funcp)execute_38, (funcp)execute_39, (funcp)execute_40, (funcp)execute_41, (funcp)execute_42, (funcp)execute_43, (funcp)execute_44, (funcp)execute_45, (funcp)execute_46, (funcp)execute_47, (funcp)execute_48, (funcp)execute_49, (funcp)execute_50, (funcp)execute_51, (funcp)execute_52, (funcp)execute_53, (funcp)execute_54, (funcp)execute_55, (funcp)execute_56, (funcp)execute_57, (funcp)execute_58, (funcp)execute_59, (funcp)execute_60, (funcp)execute_61, (funcp)execute_62, (funcp)execute_63, (funcp)execute_64, (funcp)execute_65, (funcp)execute_66, (funcp)execute_67, (funcp)execute_68, (funcp)execute_69, (funcp)execute_70, (funcp)execute_71, (funcp)execute_72, (funcp)execute_73, (funcp)execute_74, (funcp)execute_75, (funcp)execute_76, (funcp)execute_77, (funcp)execute_78, (funcp)execute_79, (funcp)execute_80, (funcp)execute_81, (funcp)execute_82, (funcp)execute_83, (funcp)execute_84, (funcp)execute_85, (funcp)execute_86, (funcp)execute_87, (funcp)execute_88, (funcp)execute_89, (funcp)execute_90, (funcp)execute_91, (funcp)execute_92, (funcp)execute_93, (funcp)execute_94, (funcp)execute_95, (funcp)execute_96, (funcp)execute_97, (funcp)execute_98, (funcp)execute_99, (funcp)execute_100, (funcp)execute_101, (funcp)execute_102, (funcp)execute_103, (funcp)execute_104, (funcp)execute_105, (funcp)execute_106, (funcp)execute_107, (funcp)execute_108, (funcp)execute_109, (funcp)execute_110, (funcp)execute_111, (funcp)execute_112, (funcp)execute_113, (funcp)execute_114, (funcp)execute_115, (funcp)execute_116, (funcp)execute_117, (funcp)execute_118, (funcp)execute_119, (funcp)execute_120, (funcp)execute_129, (funcp)execute_166, (funcp)execute_167, (funcp)execute_171, (funcp)execute_172, (funcp)execute_181, (funcp)execute_182, (funcp)execute_183, (funcp)execute_184, (funcp)execute_185, (funcp)execute_193, (funcp)execute_194, (funcp)execute_195, (funcp)execute_196, (funcp)execute_197, (funcp)execute_198, (funcp)execute_199, (funcp)execute_200, (funcp)execute_201, (funcp)execute_202, (funcp)execute_203, (funcp)execute_204, (funcp)execute_205, (funcp)execute_206, (funcp)execute_207, (funcp)execute_208, (funcp)execute_209, (funcp)execute_210, (funcp)execute_211, (funcp)execute_212, (funcp)execute_213, (funcp)execute_214, (funcp)execute_215, (funcp)execute_216, (funcp)execute_217, (funcp)execute_218, (funcp)execute_219, (funcp)execute_220, (funcp)execute_221, (funcp)execute_222, (funcp)execute_223, (funcp)execute_224, (funcp)execute_225, (funcp)execute_226, (funcp)execute_227, (funcp)execute_228, (funcp)execute_231, (funcp)execute_135, (funcp)execute_239, (funcp)execute_241, (funcp)execute_242, (funcp)execute_134, (funcp)execute_142, (funcp)execute_243, (funcp)execute_244, (funcp)execute_245, (funcp)execute_246, (funcp)execute_247, (funcp)execute_248, (funcp)execute_249, (funcp)execute_250, (funcp)execute_251, (funcp)execute_268, (funcp)execute_274, (funcp)execute_255, (funcp)execute_256, (funcp)execute_257, (funcp)execute_258, (funcp)execute_259, (funcp)execute_260, (funcp)execute_261, (funcp)execute_262, (funcp)execute_263, (funcp)execute_264, (funcp)execute_265, (funcp)execute_266, (funcp)execute_267, (funcp)execute_139, (funcp)execute_140, (funcp)execute_269, (funcp)execute_270, (funcp)execute_273, (funcp)execute_146, (funcp)execute_275, (funcp)execute_276, (funcp)execute_277, (funcp)execute_279, (funcp)execute_280, (funcp)execute_286, (funcp)execute_289, (funcp)execute_290, (funcp)execute_145, (funcp)execute_278, (funcp)execute_148, (funcp)execute_293, (funcp)execute_294, (funcp)execute_150, (funcp)execute_301, (funcp)execute_152, (funcp)execute_153, (funcp)execute_303, (funcp)execute_155, (funcp)execute_304, (funcp)execute_305, (funcp)execute_306, (funcp)execute_307, (funcp)execute_308, (funcp)execute_161, (funcp)execute_162, (funcp)execute_163, (funcp)execute_164, (funcp)execute_314, (funcp)execute_315, (funcp)execute_316, (funcp)execute_317, (funcp)execute_318, (funcp)execute_319, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_61, (funcp)transaction_63, (funcp)transaction_70, (funcp)transaction_71, (funcp)transaction_73, (funcp)transaction_74, (funcp)transaction_77, (funcp)transaction_78, (funcp)transaction_79, (funcp)transaction_80, (funcp)transaction_81, (funcp)transaction_85, (funcp)transaction_89, (funcp)transaction_107, (funcp)transaction_108, (funcp)transaction_153, (funcp)transaction_188, (funcp)transaction_189, (funcp)transaction_214, (funcp)transaction_261, (funcp)transaction_262, (funcp)transaction_293, (funcp)transaction_322, (funcp)transaction_323};
-const int NumRelocateId= 269;
+funcp funcTab[268] = {(funcp)execute_2, (funcp)execute_158, (funcp)execute_159, (funcp)execute_312, (funcp)execute_313, (funcp)execute_237, (funcp)execute_238, (funcp)execute_310, (funcp)execute_311, (funcp)vlog_simple_process_execute_0_fast_no_reg_no_agg, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_235, (funcp)execute_236, (funcp)execute_165, (funcp)execute_8, (funcp)execute_9, (funcp)execute_10, (funcp)execute_11, (funcp)execute_12, (funcp)execute_13, (funcp)execute_14, (funcp)execute_15, (funcp)execute_16, (funcp)execute_17, (funcp)execute_18, (funcp)execute_19, (funcp)execute_20, (funcp)execute_21, (funcp)execute_22, (funcp)execute_24, (funcp)execute_25, (funcp)execute_26, (funcp)execute_27, (funcp)execute_28, (funcp)execute_29, (funcp)execute_30, (funcp)execute_31, (funcp)execute_32, (funcp)execute_33, (funcp)execute_34, (funcp)execute_35, (funcp)execute_36, (funcp)execute_37, (funcp)execute_38, (funcp)execute_39, (funcp)execute_40, (funcp)execute_41, (funcp)execute_42, (funcp)execute_43, (funcp)execute_44, (funcp)execute_45, (funcp)execute_46, (funcp)execute_47, (funcp)execute_48, (funcp)execute_49, (funcp)execute_50, (funcp)execute_51, (funcp)execute_52, (funcp)execute_53, (funcp)execute_54, (funcp)execute_55, (funcp)execute_56, (funcp)execute_57, (funcp)execute_58, (funcp)execute_59, (funcp)execute_60, (funcp)execute_61, (funcp)execute_62, (funcp)execute_63, (funcp)execute_64, (funcp)execute_65, (funcp)execute_66, (funcp)execute_67, (funcp)execute_68, (funcp)execute_69, (funcp)execute_70, (funcp)execute_71, (funcp)execute_72, (funcp)execute_73, (funcp)execute_74, (funcp)execute_75, (funcp)execute_76, (funcp)execute_77, (funcp)execute_78, (funcp)execute_79, (funcp)execute_80, (funcp)execute_81, (funcp)execute_82, (funcp)execute_83, (funcp)execute_84, (funcp)execute_85, (funcp)execute_86, (funcp)execute_87, (funcp)execute_88, (funcp)execute_89, (funcp)execute_90, (funcp)execute_91, (funcp)execute_92, (funcp)execute_93, (funcp)execute_94, (funcp)execute_95, (funcp)execute_96, (funcp)execute_97, (funcp)execute_98, (funcp)execute_99, (funcp)execute_100, (funcp)execute_101, (funcp)execute_102, (funcp)execute_103, (funcp)execute_104, (funcp)execute_105, (funcp)execute_106, (funcp)execute_107, (funcp)execute_108, (funcp)execute_109, (funcp)execute_110, (funcp)execute_111, (funcp)execute_112, (funcp)execute_113, (funcp)execute_114, (funcp)execute_115, (funcp)execute_116, (funcp)execute_117, (funcp)execute_118, (funcp)execute_119, (funcp)execute_120, (funcp)execute_129, (funcp)execute_166, (funcp)execute_167, (funcp)execute_171, (funcp)execute_172, (funcp)execute_181, (funcp)execute_182, (funcp)execute_183, (funcp)execute_184, (funcp)execute_185, (funcp)execute_193, (funcp)execute_194, (funcp)execute_195, (funcp)execute_196, (funcp)execute_197, (funcp)execute_198, (funcp)execute_199, (funcp)execute_200, (funcp)execute_201, (funcp)execute_202, (funcp)execute_203, (funcp)execute_204, (funcp)execute_205, (funcp)execute_206, (funcp)execute_207, (funcp)execute_208, (funcp)execute_209, (funcp)execute_210, (funcp)execute_211, (funcp)execute_212, (funcp)execute_213, (funcp)execute_214, (funcp)execute_215, (funcp)execute_216, (funcp)execute_217, (funcp)execute_218, (funcp)execute_219, (funcp)execute_220, (funcp)execute_221, (funcp)execute_222, (funcp)execute_223, (funcp)execute_224, (funcp)execute_225, (funcp)execute_226, (funcp)execute_227, (funcp)execute_228, (funcp)execute_231, (funcp)execute_135, (funcp)execute_239, (funcp)execute_241, (funcp)execute_242, (funcp)execute_134, (funcp)execute_142, (funcp)execute_243, (funcp)execute_244, (funcp)execute_245, (funcp)execute_246, (funcp)execute_247, (funcp)execute_248, (funcp)execute_249, (funcp)execute_250, (funcp)execute_251, (funcp)execute_268, (funcp)execute_274, (funcp)execute_255, (funcp)execute_256, (funcp)execute_257, (funcp)execute_258, (funcp)execute_259, (funcp)execute_260, (funcp)execute_261, (funcp)execute_262, (funcp)execute_263, (funcp)execute_264, (funcp)execute_265, (funcp)execute_266, (funcp)execute_267, (funcp)execute_139, (funcp)execute_140, (funcp)execute_269, (funcp)execute_270, (funcp)execute_273, (funcp)execute_146, (funcp)execute_275, (funcp)execute_276, (funcp)execute_277, (funcp)execute_279, (funcp)execute_280, (funcp)execute_286, (funcp)execute_289, (funcp)execute_290, (funcp)execute_145, (funcp)execute_278, (funcp)execute_148, (funcp)execute_293, (funcp)execute_150, (funcp)execute_301, (funcp)execute_152, (funcp)execute_153, (funcp)execute_303, (funcp)execute_304, (funcp)execute_155, (funcp)execute_305, (funcp)execute_306, (funcp)execute_307, (funcp)execute_308, (funcp)execute_309, (funcp)execute_161, (funcp)execute_162, (funcp)execute_163, (funcp)execute_164, (funcp)execute_314, (funcp)execute_315, (funcp)execute_316, (funcp)execute_317, (funcp)execute_318, (funcp)execute_319, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_61, (funcp)transaction_63, (funcp)transaction_70, (funcp)transaction_71, (funcp)transaction_73, (funcp)transaction_74, (funcp)transaction_77, (funcp)transaction_78, (funcp)transaction_79, (funcp)transaction_80, (funcp)transaction_81, (funcp)transaction_85, (funcp)transaction_89, (funcp)transaction_107, (funcp)transaction_108, (funcp)transaction_153, (funcp)transaction_188, (funcp)transaction_189, (funcp)transaction_214, (funcp)transaction_261, (funcp)transaction_262, (funcp)transaction_293, (funcp)transaction_322, (funcp)transaction_323};
+const int NumRelocateId= 268;
void relocate(char *dp)
{
- iki_relocate(dp, "xsim.dir/test_cpu_behav/xsim.reloc", (void **)funcTab, 269);
+ iki_relocate(dp, "xsim.dir/test_cpu_behav/xsim.reloc", (void **)funcTab, 268);
/*Populate the transaction function pointer field in the whole net structure */
}
diff --git a/PipelineProcessor.sim/sim_1/behav/xsim/xsim.dir/test_cpu_behav/xsim.mem b/PipelineProcessor.sim/sim_1/behav/xsim/xsim.dir/test_cpu_behav/xsim.mem
index bbd5aab..5e04a5c 100644
Binary files a/PipelineProcessor.sim/sim_1/behav/xsim/xsim.dir/test_cpu_behav/xsim.mem and b/PipelineProcessor.sim/sim_1/behav/xsim/xsim.dir/test_cpu_behav/xsim.mem differ
diff --git a/PipelineProcessor.srcs/sources_1/new/CPU.v b/PipelineProcessor.srcs/sources_1/new/CPU.v
index e3adab6..6d3d7bb 100644
--- a/PipelineProcessor.srcs/sources_1/new/CPU.v
+++ b/PipelineProcessor.srcs/sources_1/new/CPU.v
@@ -74,7 +74,7 @@ module CPU (
wire [4:0] WB_register_write_address;
// Out of hazard control
- wire [1:0] hazard_IFID_source;
+ wire hazard_IFID_source;
wire hazard_IDEX_source;
wire hazard_IF_need_stall;
diff --git a/PipelineProcessor.srcs/sources_1/new/DataMemory.v b/PipelineProcessor.srcs/sources_1/new/DataMemory.v
index e6315d5..1eb3ba5 100644
--- a/PipelineProcessor.srcs/sources_1/new/DataMemory.v
+++ b/PipelineProcessor.srcs/sources_1/new/DataMemory.v
@@ -6,7 +6,7 @@ module DataMemory (
input [31:0] address,
input write_enable,
input [31:0] write_data,
- output reg [31:0] read_data,
+ output [31:0] read_data,
output [31:0] bcd_hardwire
);
parameter integer MEM_SIZE_IN_WORD = 64;
@@ -16,7 +16,9 @@ module DataMemory (
reg [31:0] memory_data[MEM_SIZE_IN_WORD + StartAddressInWord - 1 : StartAddressInWord];
- assign bcd_hardwire = memory_data[StartAddressInWord + 4];
+ assign bcd_hardwire = memory_data[StartAddressInWord+4];
+
+ assign read_data = memory_data[address[31:2]];
integer i;
@@ -35,7 +37,6 @@ module DataMemory (
if (write_enable) begin
memory_data[address[31:2]] <= write_data;
end
- read_data <= memory_data[address[31:2]];
end
end
endmodule
diff --git a/PipelineProcessor.srcs/sources_1/new/HazardUnit.v b/PipelineProcessor.srcs/sources_1/new/HazardUnit.v
index 0ad1208..aa678d5 100644
--- a/PipelineProcessor.srcs/sources_1/new/HazardUnit.v
+++ b/PipelineProcessor.srcs/sources_1/new/HazardUnit.v
@@ -3,7 +3,7 @@ module HazardUnit (
input [1:0] PC_jump,
input is_loadword,
input PC_branch,
- output [1:0] IFID_source,
+ output IFID_source,
output IDEX_source,
output IF_need_stall
);
@@ -11,10 +11,9 @@ module HazardUnit (
wire is_jump;
assign is_jump = PC_jump == 2'b01 || PC_jump == 2'b10;
-assign IFID_source = (is_loadword == 1'b1) ? 2'b10 :
- (PC_branch == 1'b1 || is_jump == 1'b1) ? 2'b01 : 2'b00;
+assign IFID_source = (PC_branch == 1'b1 || is_jump == 1'b1 || is_loadword == 1'b1) ? 1'b1 : 1'b0;
-assign IDEX_source = (is_loadword == 1'b1 || PC_branch == 1'b1 || is_jump == 1'b1) ? 1 : 0;
+assign IDEX_source = (PC_branch == 1'b1 || is_jump == 1'b1) ? 1'b1 : 1'b0;
-assign IF_need_stall = (is_loadword == 1'b1) ? 1 : 0;
+assign IF_need_stall = (is_loadword == 1'b1) ? 1'b1 : 1'b0;
endmodule
diff --git a/PipelineProcessor.srcs/sources_1/new/InstDecode.v b/PipelineProcessor.srcs/sources_1/new/InstDecode.v
index 3bb217a..3b817cf 100644
--- a/PipelineProcessor.srcs/sources_1/new/InstDecode.v
+++ b/PipelineProcessor.srcs/sources_1/new/InstDecode.v
@@ -6,7 +6,7 @@ module InstDecode (
input [31:0] prev_fetched_instruction,
input [31:0] prev_PC_plus_4,
// For hazard unit
- input [1:0] IFIDSrc,
+ input IFIDSrc,
// From WB stage
input WB_write_enable,
input [4:0] WB_write_address,
@@ -121,24 +121,13 @@ module InstDecode (
IFID_instruction <= 32'h00000000;
IFID_PC_plus_4 <= 32'h00000000;
end else begin
- case (IFIDSrc)
- 2'b00: begin
- IFID_instruction <= prev_fetched_instruction;
- IFID_PC_plus_4 <= prev_PC_plus_4;
- end
- 2'b01: begin
- IFID_instruction <= 32'h00000000;
- IFID_PC_plus_4 <= 32'h00000000;
- end
- 2'b10: begin
- IFID_instruction <= IFID_instruction;
- IFID_PC_plus_4 <= IFID_PC_plus_4;
- end
- default: begin
- IFID_instruction <= 32'h00000000;
- IFID_PC_plus_4 <= 32'h00000000;
- end
- endcase
+ if (IFIDSrc == 1'b1) begin
+ IFID_instruction <= 32'h00000000;
+ IFID_PC_plus_4 <= 32'h00000000;
+ end else begin
+ IFID_instruction <= prev_fetched_instruction;
+ IFID_PC_plus_4 <= prev_PC_plus_4;
+ end
end
end
diff --git a/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v b/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v
index c2c6122..44a0ecd 100644
--- a/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v
+++ b/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v
@@ -53,7 +53,7 @@ module MemoryAccess (
assign data_memory_address = MEM_ALU_result;
assign data_memory_write_data = (MEM_write_data_source == 1'b0) ?
MEM_memory_write_data : WB_forwarded_data;
- assign read_data = data_memory_read_data;
+ assign memory_read_data = data_memory_read_data;
assign rt_address = MEM_rt_address;
assign register_write = MEM_register_write;
diff --git a/PipelineProcessor.xpr b/PipelineProcessor.xpr
index d4db360..b50b370 100644
--- a/PipelineProcessor.xpr
+++ b/PipelineProcessor.xpr
@@ -60,7 +60,7 @@
-
+