diff --git a/PipelineProcessor.sim/sim_1/behav/xsim/xelab.pb b/PipelineProcessor.sim/sim_1/behav/xsim/xelab.pb index 27c36ec..d9fa7c5 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 5f222df..e41ffff 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 @@ -55,23 +55,21 @@ typedef void (*funcp)(char *, char *); extern int main(int, char**); IKI_DLLESPEC extern void execute_2(char*, char *); -IKI_DLLESPEC extern void execute_156(char*, char *); +IKI_DLLESPEC extern void execute_158(char*, char *); +IKI_DLLESPEC extern void execute_159(char*, char *); IKI_DLLESPEC extern void execute_313(char*, char *); IKI_DLLESPEC extern void execute_314(char*, char *); -IKI_DLLESPEC extern void execute_234(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_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 execute_312(char*, char *); IKI_DLLESPEC extern void vlog_simple_process_execute_0_fast_no_reg_no_agg(char*, char*, char*); IKI_DLLESPEC extern void vlog_const_rhs_process_execute_0_fast_no_reg_no_agg(char*, char*, char*); -IKI_DLLESPEC extern void execute_232(char*, char *); -IKI_DLLESPEC extern void execute_233(char*, char *); -IKI_DLLESPEC extern void execute_162(char*, char *); +IKI_DLLESPEC extern void execute_235(char*, char *); +IKI_DLLESPEC extern void execute_236(char*, char *); +IKI_DLLESPEC extern void execute_165(char*, char *); IKI_DLLESPEC extern void execute_8(char*, char *); IKI_DLLESPEC extern void execute_9(char*, char *); IKI_DLLESPEC extern void execute_10(char*, char *); @@ -185,18 +183,15 @@ IKI_DLLESPEC extern void execute_118(char*, char *); IKI_DLLESPEC extern void execute_119(char*, char *); IKI_DLLESPEC extern void execute_120(char*, char *); IKI_DLLESPEC extern void execute_129(char*, char *); -IKI_DLLESPEC extern void execute_163(char*, char *); -IKI_DLLESPEC extern void execute_164(char*, char *); -IKI_DLLESPEC extern void execute_168(char*, char *); -IKI_DLLESPEC extern void execute_169(char*, char *); -IKI_DLLESPEC extern void execute_178(char*, char *); -IKI_DLLESPEC extern void execute_179(char*, char *); -IKI_DLLESPEC extern void execute_180(char*, char *); +IKI_DLLESPEC extern void execute_166(char*, char *); +IKI_DLLESPEC extern void execute_167(char*, char *); +IKI_DLLESPEC extern void execute_171(char*, char *); +IKI_DLLESPEC extern void execute_172(char*, char *); IKI_DLLESPEC extern void execute_181(char*, char *); IKI_DLLESPEC extern void execute_182(char*, char *); -IKI_DLLESPEC extern void execute_190(char*, char *); -IKI_DLLESPEC extern void execute_191(char*, char *); -IKI_DLLESPEC extern void execute_192(char*, char *); +IKI_DLLESPEC extern void execute_183(char*, char *); +IKI_DLLESPEC extern void execute_184(char*, char *); +IKI_DLLESPEC extern void execute_185(char*, char *); IKI_DLLESPEC extern void execute_193(char*, char *); IKI_DLLESPEC extern void execute_194(char*, char *); IKI_DLLESPEC extern void execute_195(char*, char *); @@ -230,30 +225,27 @@ IKI_DLLESPEC extern void execute_222(char*, char *); IKI_DLLESPEC extern void execute_223(char*, char *); IKI_DLLESPEC extern void execute_224(char*, char *); IKI_DLLESPEC extern void execute_225(char*, char *); +IKI_DLLESPEC extern void execute_226(char*, char *); +IKI_DLLESPEC extern void execute_227(char*, char *); IKI_DLLESPEC extern void execute_228(char*, char *); +IKI_DLLESPEC extern void execute_231(char*, char *); IKI_DLLESPEC extern void execute_135(char*, char *); -IKI_DLLESPEC extern void execute_235(char*, char *); -IKI_DLLESPEC extern void execute_236(char*, char *); -IKI_DLLESPEC extern void execute_237(char*, char *); -IKI_DLLESPEC extern void execute_134(char*, char *); -IKI_DLLESPEC extern void execute_141(char*, char *); -IKI_DLLESPEC extern void execute_238(char*, char *); IKI_DLLESPEC extern void execute_239(char*, char *); -IKI_DLLESPEC extern void execute_240(char*, char *); IKI_DLLESPEC extern void execute_241(char*, char *); IKI_DLLESPEC extern void execute_242(char*, char *); +IKI_DLLESPEC extern void execute_134(char*, char *); +IKI_DLLESPEC extern void execute_142(char*, char *); IKI_DLLESPEC extern void execute_243(char*, char *); IKI_DLLESPEC extern void execute_244(char*, char *); IKI_DLLESPEC extern void execute_245(char*, char *); IKI_DLLESPEC extern void execute_246(char*, char *); -IKI_DLLESPEC extern void execute_263(char*, char *); -IKI_DLLESPEC extern void execute_269(char*, char *); -IKI_DLLESPEC extern void execute_270(char*, char *); +IKI_DLLESPEC extern void execute_247(char*, char *); +IKI_DLLESPEC extern void execute_248(char*, char *); +IKI_DLLESPEC extern void execute_249(char*, char *); IKI_DLLESPEC extern void execute_250(char*, char *); IKI_DLLESPEC extern void execute_251(char*, char *); -IKI_DLLESPEC extern void execute_252(char*, char *); -IKI_DLLESPEC extern void execute_253(char*, char *); -IKI_DLLESPEC extern void execute_254(char*, char *); +IKI_DLLESPEC extern void execute_268(char*, char *); +IKI_DLLESPEC extern void execute_274(char*, char *); IKI_DLLESPEC extern void execute_255(char*, char *); IKI_DLLESPEC extern void execute_256(char*, char *); IKI_DLLESPEC extern void execute_257(char*, char *); @@ -262,38 +254,45 @@ IKI_DLLESPEC extern void execute_259(char*, char *); IKI_DLLESPEC extern void execute_260(char*, char *); IKI_DLLESPEC extern void execute_261(char*, char *); IKI_DLLESPEC extern void execute_262(char*, char *); -IKI_DLLESPEC extern void execute_139(char*, char *); +IKI_DLLESPEC extern void execute_263(char*, char *); IKI_DLLESPEC extern void execute_264(char*, char *); IKI_DLLESPEC extern void execute_265(char*, char *); -IKI_DLLESPEC extern void execute_268(char*, char *); -IKI_DLLESPEC extern void execute_145(char*, char *); -IKI_DLLESPEC extern void execute_271(char*, char *); -IKI_DLLESPEC extern void execute_272(char*, char *); +IKI_DLLESPEC extern void execute_266(char*, char *); +IKI_DLLESPEC extern void execute_267(char*, char *); +IKI_DLLESPEC extern void execute_139(char*, char *); +IKI_DLLESPEC extern void execute_140(char*, char *); +IKI_DLLESPEC extern void execute_269(char*, char *); +IKI_DLLESPEC extern void execute_270(char*, char *); IKI_DLLESPEC extern void execute_273(char*, char *); +IKI_DLLESPEC extern void execute_146(char*, char *); IKI_DLLESPEC extern void execute_275(char*, char *); IKI_DLLESPEC extern void execute_276(char*, char *); -IKI_DLLESPEC extern void execute_282(char*, char *); -IKI_DLLESPEC extern void execute_285(char*, char *); +IKI_DLLESPEC extern void execute_277(char*, char *); +IKI_DLLESPEC extern void execute_279(char*, char *); +IKI_DLLESPEC extern void execute_280(char*, char *); IKI_DLLESPEC extern void execute_286(char*, char *); -IKI_DLLESPEC extern void execute_144(char*, char *); -IKI_DLLESPEC extern void execute_274(char*, char *); -IKI_DLLESPEC extern void execute_147(char*, char *); IKI_DLLESPEC extern void execute_289(char*, char *); IKI_DLLESPEC extern void execute_290(char*, char *); -IKI_DLLESPEC extern void execute_149(char*, char *); -IKI_DLLESPEC extern void execute_297(char*, char *); -IKI_DLLESPEC extern void execute_151(char*, char *); -IKI_DLLESPEC extern void execute_299(char*, char *); -IKI_DLLESPEC extern void execute_153(char*, char *); -IKI_DLLESPEC extern void execute_300(char*, char *); +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_302(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_158(char*, char *); -IKI_DLLESPEC extern void execute_159(char*, char *); -IKI_DLLESPEC extern void execute_160(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_161(char*, char *); +IKI_DLLESPEC extern void execute_162(char*, char *); +IKI_DLLESPEC extern void execute_163(char*, char *); +IKI_DLLESPEC extern void execute_164(char*, char *); IKI_DLLESPEC extern void execute_315(char*, char *); IKI_DLLESPEC extern void execute_316(char*, char *); IKI_DLLESPEC extern void execute_317(char*, char *); @@ -301,42 +300,36 @@ 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_7(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_8(char*, char*, unsigned, unsigned, unsigned); +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_66(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_68(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_70(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_77(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_78(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_75(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void transaction_76(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_84(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_85(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_86(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_88(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_92(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_96(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_595(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_599(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_114(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_115(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_160(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_195(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_196(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_221(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_268(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_269(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_300(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_329(char*, char*, unsigned, unsigned, unsigned); -IKI_DLLESPEC extern void transaction_330(char*, char*, unsigned, unsigned, unsigned); -funcp funcTab[277] = {(funcp)execute_2, (funcp)execute_156, (funcp)execute_313, (funcp)execute_314, (funcp)execute_234, (funcp)execute_305, (funcp)execute_306, (funcp)execute_307, (funcp)execute_308, (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_232, (funcp)execute_233, (funcp)execute_162, (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_163, (funcp)execute_164, (funcp)execute_168, (funcp)execute_169, (funcp)execute_178, (funcp)execute_179, (funcp)execute_180, (funcp)execute_181, (funcp)execute_182, (funcp)execute_190, (funcp)execute_191, (funcp)execute_192, (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_228, (funcp)execute_135, (funcp)execute_235, (funcp)execute_236, (funcp)execute_237, (funcp)execute_134, (funcp)execute_141, (funcp)execute_238, (funcp)execute_239, (funcp)execute_240, (funcp)execute_241, (funcp)execute_242, (funcp)execute_243, (funcp)execute_244, (funcp)execute_245, (funcp)execute_246, (funcp)execute_263, (funcp)execute_269, (funcp)execute_270, (funcp)execute_250, (funcp)execute_251, (funcp)execute_252, (funcp)execute_253, (funcp)execute_254, (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_139, (funcp)execute_264, (funcp)execute_265, (funcp)execute_268, (funcp)execute_145, (funcp)execute_271, (funcp)execute_272, (funcp)execute_273, (funcp)execute_275, (funcp)execute_276, (funcp)execute_282, (funcp)execute_285, (funcp)execute_286, (funcp)execute_144, (funcp)execute_274, (funcp)execute_147, (funcp)execute_289, (funcp)execute_290, (funcp)execute_149, (funcp)execute_297, (funcp)execute_151, (funcp)execute_299, (funcp)execute_153, (funcp)execute_300, (funcp)execute_301, (funcp)execute_302, (funcp)execute_303, (funcp)execute_304, (funcp)execute_158, (funcp)execute_159, (funcp)execute_160, (funcp)execute_161, (funcp)execute_315, (funcp)execute_316, (funcp)execute_317, (funcp)execute_318, (funcp)execute_319, (funcp)execute_320, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_7, (funcp)transaction_8, (funcp)transaction_65, (funcp)transaction_66, (funcp)transaction_68, (funcp)transaction_70, (funcp)transaction_77, (funcp)transaction_78, (funcp)transaction_80, (funcp)transaction_81, (funcp)transaction_84, (funcp)transaction_85, (funcp)transaction_86, (funcp)transaction_87, (funcp)transaction_88, (funcp)transaction_92, (funcp)transaction_96, (funcp)transaction_595, (funcp)transaction_599, (funcp)transaction_114, (funcp)transaction_115, (funcp)transaction_160, (funcp)transaction_195, (funcp)transaction_196, (funcp)transaction_221, (funcp)transaction_268, (funcp)transaction_269, (funcp)transaction_300, (funcp)transaction_329, (funcp)transaction_330}; -const int NumRelocateId= 277; +IKI_DLLESPEC extern void transaction_91(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_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_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_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}; +const int NumRelocateId= 270; void relocate(char *dp) { - iki_relocate(dp, "xsim.dir/test_cpu_behav/xsim.reloc", (void **)funcTab, 277); + iki_relocate(dp, "xsim.dir/test_cpu_behav/xsim.reloc", (void **)funcTab, 270); /*Populate the transaction function pointer field in the whole net structure */ } @@ -344,21 +337,12 @@ void relocate(char *dp) void sensitize(char *dp) { iki_sensitize(dp, "xsim.dir/test_cpu_behav/xsim.reloc"); -} - - // Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net - -void wrapper_func_0(char *dp) - -{ - } void simulate(char *dp) { iki_schedule_processes_at_time_zero(dp, "xsim.dir/test_cpu_behav/xsim.reloc"); - wrapper_func_0(dp); - + // Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net iki_execute_processes(); // Schedule resolution functions for the multiply driven Verilog nets that have strength 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 b561ac3..9a47aa0 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/sim_1/new/test_cpu.v b/PipelineProcessor.srcs/sim_1/new/test_cpu.v index 05e1272..a5ffb94 100644 --- a/PipelineProcessor.srcs/sim_1/new/test_cpu.v +++ b/PipelineProcessor.srcs/sim_1/new/test_cpu.v @@ -13,8 +13,14 @@ module test_cpu (); CPU cpu( .hardware_clk(sim_clk), - .reset(reset), + .hardware_reset(reset), .clock_locked(clk_locked), .bcd_control(bcd_control) ); + + initial begin + reset = 1; + #30; + reset = 0; + end endmodule diff --git a/PipelineProcessor.srcs/sources_1/new/CPU.v b/PipelineProcessor.srcs/sources_1/new/CPU.v index a7ad8fa..ef306d2 100644 --- a/PipelineProcessor.srcs/sources_1/new/CPU.v +++ b/PipelineProcessor.srcs/sources_1/new/CPU.v @@ -1,7 +1,7 @@ `timescale 1ns / 1ps module CPU ( input hardware_clk, - input reset, + input hardware_reset, output clock_locked, output [11:0] bcd_control ); @@ -14,9 +14,12 @@ module CPU ( .locked(clock_locked) ); + wire reset; + assign reset = hardware_reset || ~clock_locked; + // Out of IF - wire IF_fetched_instruction; - wire IF_PC_plus_4; + wire [31:0] IF_fetched_instruction; + wire [31:0] IF_PC_plus_4; // Out of ID wire [1:0] ID_PC_jump; @@ -89,6 +92,7 @@ module CPU ( InstFetch instruction_fetch ( .clk(clk), + .reset(reset), .branch_target(EX_branch_target), .jump_target(ID_jump_target), .jump_register_target(ID_jump_register_target), @@ -101,12 +105,13 @@ module CPU ( InstDecode instruction_decode ( .clk(clk), + .reset(reset), .prev_fetched_instruction(IF_fetched_instruction), .prev_PC_plus_4(IF_PC_plus_4), .IFIDSrc(hazard_IFID_source), - .WB_write_enable(WB_write_enable), - .WB_write_address(WB_write_address), - .WB_write_data(WB_write_data), + .WB_write_enable(WB_register_write), + .WB_write_address(WB_register_write_address), + .WB_write_data(WB_register_write_data), .PC_jump(ID_PC_jump), .jump_target(ID_jump_target), .jump_register_target(ID_jump_register_target), @@ -131,6 +136,7 @@ module CPU ( Execution execution ( .clk(clk), + .reset(reset), .prev_is_branch(ID_is_branch), .prev_WB_source(ID_WB_source), .prev_memory_write(ID_memory_write), @@ -166,6 +172,7 @@ module CPU ( MemoryAccess memory_access ( .clk(clk), + .reset(reset), .prev_register_write(EX_register_write), .prev_WB_source(EX_WB_source), .prev_memory_write(EX_memory_write), @@ -190,6 +197,7 @@ module CPU ( WriteBack write_back ( .clk(clk), + .reset(reset), .prev_register_write(MEM_register_write), .prev_WB_source(MEM_WB_source), .prev_memory_read_data(MEM_memory_read_data), @@ -202,6 +210,7 @@ module CPU ( DataMemory data_memory ( .clk(clk), + .reset(reset), .address(MEM_data_memory_address), .write_enable(MEM_data_memory_write), .write_data(MEM_data_memory_write_data), diff --git a/PipelineProcessor.srcs/sources_1/new/DataMemory.v b/PipelineProcessor.srcs/sources_1/new/DataMemory.v index 65642f6..0bebe85 100644 --- a/PipelineProcessor.srcs/sources_1/new/DataMemory.v +++ b/PipelineProcessor.srcs/sources_1/new/DataMemory.v @@ -2,6 +2,7 @@ module DataMemory ( input clk, + input reset, input [31:0] address, input write_enable, input [31:0] write_data, @@ -13,12 +14,26 @@ module DataMemory ( reg [31:0] memory_data[MEM_SIZE + START_ADDRESS - 1:START_ADDRESS]; - assign bcd_hardwire = memory_data[START_ADDRESS + 4]; + assign bcd_hardwire = memory_data[START_ADDRESS+4]; + + integer i; + + initial begin + for (i = START_ADDRESS; i < MEM_SIZE + START_ADDRESS; i = i + 1) begin + memory_data[i] <= 32'h00000000; + end + end always @(posedge clk) begin - if (write_enable) begin - memory_data[address] <= write_data; + if (reset) begin + for (i = START_ADDRESS; i < MEM_SIZE + START_ADDRESS; i = i + 1) begin + memory_data[i] <= 32'h00000000; + end + end else begin + if (write_enable) begin + memory_data[address] <= write_data; + end + read_data <= memory_data[address]; end - read_data <= memory_data[address]; end endmodule diff --git a/PipelineProcessor.srcs/sources_1/new/Execution.v b/PipelineProcessor.srcs/sources_1/new/Execution.v index b3bb78a..ff35fc1 100644 --- a/PipelineProcessor.srcs/sources_1/new/Execution.v +++ b/PipelineProcessor.srcs/sources_1/new/Execution.v @@ -1,6 +1,7 @@ `timescale 1ns / 1ps module Execution ( input clk, + input reset, // From prev stage input prev_is_branch, input prev_WB_source, @@ -96,7 +97,7 @@ module Execution ( assign rt_address = EX_rt_address; always @(posedge clk) begin - if (IDEXSrc == 1'b1) begin + if (IDEXSrc == 1'b1 || reset == 1'b1) begin EX_register_write <= 1'b0; EX_WB_source <= 1'b0; EX_memory_write <= 1'b0; diff --git a/PipelineProcessor.srcs/sources_1/new/InstDecode.v b/PipelineProcessor.srcs/sources_1/new/InstDecode.v index 3228bce..3bb217a 100644 --- a/PipelineProcessor.srcs/sources_1/new/InstDecode.v +++ b/PipelineProcessor.srcs/sources_1/new/InstDecode.v @@ -1,6 +1,7 @@ `timescale 1ns / 1ps module InstDecode ( input clk, + input reset, // From prev stage input [31:0] prev_fetched_instruction, input [31:0] prev_PC_plus_4, @@ -65,7 +66,7 @@ module InstDecode ( // Signals to connect from control unit to register file and immediate extend unit wire write_ra; wire ra_addr_source; - wire extendop; + wire [1:0] extendop; ControlUnit control_unit ( .opcode(opcode), @@ -93,6 +94,7 @@ module InstDecode ( RegisterFile register_file ( .clk(clk), + .reset(reset), .read_addr1(rs), .read_addr2(rt), .write_enable(WB_write_enable), @@ -108,31 +110,36 @@ module InstDecode ( assign register_file_read_A = RF_read_A_out; assign jump_register_target = RF_read_A_out; - ImmediateExtender immediate_extender( + ImmediateExtender immediate_extender ( .immediate(immediate), .extendop(extendop), .extended_immediate(extended_immediate) ); always @(posedge clk) 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 (reset) begin + 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 + end end endmodule diff --git a/PipelineProcessor.srcs/sources_1/new/InstFetch.v b/PipelineProcessor.srcs/sources_1/new/InstFetch.v index 626463e..85f884a 100644 --- a/PipelineProcessor.srcs/sources_1/new/InstFetch.v +++ b/PipelineProcessor.srcs/sources_1/new/InstFetch.v @@ -1,6 +1,7 @@ `timescale 1ns / 1ps module InstFetch ( input clk, + input reset, input [31:0] branch_target, input [31:0] jump_target, input [31:0] jump_register_target, @@ -17,22 +18,27 @@ module InstFetch ( .instruction(fetched_instruction) ); - wire adder_out; + wire [31:0] adder_out; assign adder_out = PC + 4; + assign PC_plus_4 = adder_out; always @(posedge clk) begin - if (need_stall) begin - PC <= PC; + if (reset) begin + PC <= 32'h00000000; end else begin - if (PC_branch) begin - PC <= branch_target; + if (need_stall) begin + PC <= PC; end else begin - case (PC_jump) - 2'b00: PC <= adder_out; - 2'b01: PC <= jump_target; - 2'b10: PC <= jump_register_target; - default: PC <= adder_out; - endcase + if (PC_branch) begin + PC <= branch_target; + end else begin + case (PC_jump) + 2'b00: PC <= adder_out; + 2'b01: PC <= jump_target; + 2'b10: PC <= jump_register_target; + default: PC <= adder_out; + endcase + end end end end diff --git a/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v b/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v index 6f11662..6ad9887 100644 --- a/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v +++ b/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v @@ -8,7 +8,7 @@ module InstructionMemory ( always @(*) begin case (address[31:2]) 20'd0: instruction <= 32'h20210001; - 20'd1: instruction <= 32'h08000000; + 20'd10: instruction <= 32'h08000000; default: instruction <= 32'h00000000; endcase end diff --git a/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v b/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v index 0945405..e831f95 100644 --- a/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v +++ b/PipelineProcessor.srcs/sources_1/new/MemoryAccess.v @@ -1,6 +1,7 @@ `timescale 1ns / 1ps module MemoryAccess ( input clk, + input reset, // From prev stage input prev_register_write, input prev_WB_source, @@ -61,12 +62,22 @@ module MemoryAccess ( assign register_write_destination = MEM_register_write_destination; always @(posedge clk) begin - MEM_register_write <= prev_register_write; - MEM_WB_source <= prev_WB_source; - MEM_memory_write <= prev_memory_write; - MEM_ALU_result <= prev_ALU_result; - MEM_memory_write_data <= prev_memory_write_data; - MEM_register_write_destination <= prev_register_write_destination; - MEM_rt_address <= prev_rt_address; + if (reset) begin + MEM_register_write <= 1'b0; + MEM_WB_source <= 1'b0; + MEM_memory_write <= 1'b0; + MEM_ALU_result <= 32'h00000000; + MEM_memory_write_data <= 32'h00000000; + MEM_register_write_destination <= 5'b00000; + MEM_rt_address <= 5'b00000; + end else begin + MEM_register_write <= prev_register_write; + MEM_WB_source <= prev_WB_source; + MEM_memory_write <= prev_memory_write; + MEM_ALU_result <= prev_ALU_result; + MEM_memory_write_data <= prev_memory_write_data; + MEM_register_write_destination <= prev_register_write_destination; + MEM_rt_address <= prev_rt_address; + end end endmodule diff --git a/PipelineProcessor.srcs/sources_1/new/RegisterFile.v b/PipelineProcessor.srcs/sources_1/new/RegisterFile.v index 6686494..5a84825 100644 --- a/PipelineProcessor.srcs/sources_1/new/RegisterFile.v +++ b/PipelineProcessor.srcs/sources_1/new/RegisterFile.v @@ -2,6 +2,7 @@ module RegisterFile ( input clk, + input reset, input [4:0] read_addr1, input [4:0] read_addr2, input write_enable, @@ -14,7 +15,8 @@ module RegisterFile ( output [31:0] read_output2 ); - reg [31:0] registers[31:1]; + reg [31:0] registers[1:31]; + integer i; assign read_output1 = (read_addr1 == 5'b00000) ? 32'h00000000 : (read_addr1 == write_ra_addr) ? write_ra_data : @@ -24,22 +26,34 @@ module RegisterFile ( (read_addr2 == write_ra_addr) ? write_ra_data : (read_addr2 == write_addr) ? write_data : registers[read_addr2]; + initial begin + for (i = 1; i < 32; i = i + 1) begin + registers[i] <= 32'h00000000; + end + end + always @(posedge clk) begin - if (write_addr == write_ra_addr) begin - if (write_ra) begin - registers[write_ra_addr] <= write_ra_data; + if (reset) begin + for (i = 1; i < 32; i = i + 1) begin + registers[i] <= 32'h00000000; + end + end else begin + if (write_addr == write_ra_addr) begin + if (write_ra) begin + registers[write_ra_addr] <= write_ra_data; + end else begin + if (write_enable) begin + registers[write_addr] <= write_data; + end + end end else begin + if (write_ra) begin + registers[write_ra_addr] <= write_ra_data; + end if (write_enable) begin registers[write_addr] <= write_data; end end - end else begin - if (write_ra) begin - registers[write_ra_addr] <= write_ra_data; - end - if (write_enable) begin - registers[write_addr] <= write_data; - end end end diff --git a/PipelineProcessor.srcs/sources_1/new/WriteBack.v b/PipelineProcessor.srcs/sources_1/new/WriteBack.v index 708022f..812146e 100644 --- a/PipelineProcessor.srcs/sources_1/new/WriteBack.v +++ b/PipelineProcessor.srcs/sources_1/new/WriteBack.v @@ -1,6 +1,7 @@ `timescale 1ns / 1ps module WriteBack ( input clk, + input reset, // From prev stage input prev_register_write, input prev_WB_source, @@ -24,10 +25,18 @@ module WriteBack ( assign register_write_addr = WB_register_write_destination; always @(posedge clk) begin - WB_register_write <= prev_register_write; - WB_WB_source <= prev_WB_source; - WB_memory_read_data <= prev_memory_read_data; - WB_ALU_result <= prev_ALU_result; - WB_register_write_destination <= prev_register_write_destination; + if (reset) begin + WB_register_write <= 1'b0; + WB_WB_source <= 1'b0; + WB_memory_read_data <= 32'h00000000; + WB_ALU_result <= 32'h00000000; + WB_register_write_destination <= 5'b00000; + end else begin + WB_register_write <= prev_register_write; + WB_WB_source <= prev_WB_source; + WB_memory_read_data <= prev_memory_read_data; + WB_ALU_result <= prev_ALU_result; + WB_register_write_destination <= prev_register_write_destination; + end end endmodule diff --git a/PipelineProcessor.xpr b/PipelineProcessor.xpr index 480e77b..ea874e2 100644 --- a/PipelineProcessor.xpr +++ b/PipelineProcessor.xpr @@ -60,7 +60,7 @@