diff --git a/PipelineProcessor.sim/sim_1/behav/xsim/xelab.pb b/PipelineProcessor.sim/sim_1/behav/xsim/xelab.pb index d9fa7c5..1fb651b 100644 Binary files a/PipelineProcessor.sim/sim_1/behav/xsim/xelab.pb and b/PipelineProcessor.sim/sim_1/behav/xsim/xelab.pb differ 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 e41ffff..3bebf20 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 @@ -300,31 +300,31 @@ IKI_DLLESPEC extern void execute_318(char*, char *); IKI_DLLESPEC extern void execute_319(char*, char *); IKI_DLLESPEC extern void execute_320(char*, char *); IKI_DLLESPEC extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); -IKI_DLLESPEC extern void transaction_63(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_65(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_62(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_64(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_71(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_72(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_73(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_74(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_75(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_76(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_78(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_79(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_80(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_81(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_82(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_83(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_87(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_91(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_86(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_90(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_108(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_109(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_110(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_155(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_154(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_189(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_190(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_191(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_216(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_215(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_262(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_263(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_264(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_295(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_294(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_323(char*, char*, unsigned, unsigned, unsigned); IKI_DLLESPEC extern void transaction_324(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_325(char*, char*, unsigned, unsigned, unsigned); -funcp funcTab[270] = {(funcp)execute_2, (funcp)execute_158, (funcp)execute_159, (funcp)execute_313, (funcp)execute_314, (funcp)execute_237, (funcp)execute_238, (funcp)execute_309, (funcp)execute_310, (funcp)execute_311, (funcp)execute_312, (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_315, (funcp)execute_316, (funcp)execute_317, (funcp)execute_318, (funcp)execute_319, (funcp)execute_320, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_63, (funcp)transaction_65, (funcp)transaction_72, (funcp)transaction_73, (funcp)transaction_75, (funcp)transaction_76, (funcp)transaction_79, (funcp)transaction_80, (funcp)transaction_81, (funcp)transaction_82, (funcp)transaction_83, (funcp)transaction_87, (funcp)transaction_91, (funcp)transaction_109, (funcp)transaction_110, (funcp)transaction_155, (funcp)transaction_190, (funcp)transaction_191, (funcp)transaction_216, (funcp)transaction_263, (funcp)transaction_264, (funcp)transaction_295, (funcp)transaction_324, (funcp)transaction_325}; +funcp funcTab[270] = {(funcp)execute_2, (funcp)execute_158, (funcp)execute_159, (funcp)execute_313, (funcp)execute_314, (funcp)execute_237, (funcp)execute_238, (funcp)execute_309, (funcp)execute_310, (funcp)execute_311, (funcp)execute_312, (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_315, (funcp)execute_316, (funcp)execute_317, (funcp)execute_318, (funcp)execute_319, (funcp)execute_320, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_62, (funcp)transaction_64, (funcp)transaction_71, (funcp)transaction_72, (funcp)transaction_74, (funcp)transaction_75, (funcp)transaction_78, (funcp)transaction_79, (funcp)transaction_80, (funcp)transaction_81, (funcp)transaction_82, (funcp)transaction_86, (funcp)transaction_90, (funcp)transaction_108, (funcp)transaction_109, (funcp)transaction_154, (funcp)transaction_189, (funcp)transaction_190, (funcp)transaction_215, (funcp)transaction_262, (funcp)transaction_263, (funcp)transaction_294, (funcp)transaction_323, (funcp)transaction_324}; const int NumRelocateId= 270; void relocate(char *dp) 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 9a47aa0..96561c0 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 ef306d2..28b8907 100644 --- a/PipelineProcessor.srcs/sources_1/new/CPU.v +++ b/PipelineProcessor.srcs/sources_1/new/CPU.v @@ -9,6 +9,7 @@ module CPU ( // first, we split the clock wire clk; phase_locked_loop pll ( + .reset(hardware_reset), .clk_in1 (hardware_clk), .clk_out1(clk), .locked(clock_locked) @@ -208,7 +209,7 @@ module CPU ( .register_write_addr(WB_register_write_address) ); - DataMemory data_memory ( + DataMemory #(.START_ADDRESS(32'h40000000)) data_memory ( .clk(clk), .reset(reset), .address(MEM_data_memory_address), diff --git a/PipelineProcessor.srcs/sources_1/new/ControlUnit.v b/PipelineProcessor.srcs/sources_1/new/ControlUnit.v index 6ea8ca1..6f32ea6 100644 --- a/PipelineProcessor.srcs/sources_1/new/ControlUnit.v +++ b/PipelineProcessor.srcs/sources_1/new/ControlUnit.v @@ -67,7 +67,7 @@ module ControlUnit ( assign register_write_destination_source = (opcode == 6'h23 || opcode == 6'h8 || opcode == 6'h9 || opcode == 6'hc || opcode == 6'ha || opcode == 6'hb || - (opcode == 6'h0 && + opcode == 6'hf || (opcode == 6'h0 && (funct == 6'h0 || funct == 6'h2 || funct == 6'h3))) ? 0 : 1; diff --git a/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v b/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v index 6ad9887..b252f18 100644 --- a/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v +++ b/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v @@ -1,16 +1,17 @@ `timescale 1ns / 1ps module InstructionMemory ( - input [31:0] address, + input [31:0] address, output reg [31:0] instruction ); -always @(*) begin - case (address[31:2]) - 20'd0: instruction <= 32'h20210001; - 20'd10: instruction <= 32'h08000000; - default: instruction <= 32'h00000000; - endcase -end + always @(*) begin + case (address[31:2]) + 20'd0: instruction <= 32'h3c104000; + 20'd6: instruction <= 32'h2011000a; + 20'd11: instruction <= 32'hae11000f; + default: instruction <= 32'h00000000; + endcase + end endmodule diff --git a/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v b/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v index e831f95..c2c6122 100644 --- a/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v +++ b/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v @@ -49,7 +49,7 @@ module MemoryAccess ( // .write_data(memory_write_data_include_forward), // .read_data(memory_read_data) // ); - assign data_memory = MEM_memory_write; + assign data_memory_write = MEM_memory_write; 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; diff --git a/PipelineProcessor.xpr b/PipelineProcessor.xpr index ea874e2..2827212 100644 --- a/PipelineProcessor.xpr +++ b/PipelineProcessor.xpr @@ -60,7 +60,7 @@