From ddf47c7eee0c74df0c074a431009b0b45d58ebdf Mon Sep 17 00:00:00 2001 From: "jose.rodriguezlabra" Date: Fri, 12 Apr 2019 00:01:27 -0400 Subject: [PATCH] Tweaked forwarding check. Program 3 works with a few stalls --- CPU9bits_tb_behav.wcfg | 224 ++++++++++++------ lab2CA.runs/impl_1/gen_run.xml | 12 +- lab2CA.sim/sim_1/behav/xsim/xelab.pb | Bin 30862 -> 5030 bytes .../xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c | 70 +++--- .../webtalk/xsim_webtalk.tcl | 28 ++- .../xsim/xsim.dir/CPU9bits_tb_behav/xsim.mem | Bin 27451 -> 26659 bytes lab2CA.sim/sim_1/behav/xsim/xvlog.pb | Bin 9619 -> 10157 bytes lab2CA.srcs/sources_1/new/BasicModules.v | 4 +- lab2CA.srcs/sources_1/new/CPU9bits.v | 37 +-- lab2CA.srcs/sources_1/new/FDModule.v | 12 +- lab2CA.srcs/sources_1/new/dataMemory.v | 202 ++++++++-------- lab2CA.srcs/sources_1/new/instructionMemory.v | 21 +- lab2CA.xpr | 4 +- 13 files changed, 356 insertions(+), 258 deletions(-) diff --git a/CPU9bits_tb_behav.wcfg b/CPU9bits_tb_behav.wcfg index 56a2585..ec4321f 100644 --- a/CPU9bits_tb_behav.wcfg +++ b/CPU9bits_tb_behav.wcfg @@ -11,41 +11,15 @@ - - - + + + - + - - - Program Counter - label - - clk - clk - - - reset - reset - - - En - En - - - Din[8:0] - Din[8:0] - UNSIGNEDDECRADIX - - - Dout[8:0] - Dout[8:0] - UNSIGNEDDECRADIX - - + Fetch Unit label @@ -57,24 +31,17 @@ AddrIn[8:0] AddrIn[8:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX AddrOut[8:0] AddrOut[8:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX progC_out[8:0] progC_out[8:0] - - - result_m[8:0] - result_m[8:0] - - - cout - cout + SIGNEDDECRADIX @@ -83,6 +50,7 @@ instIn[3:0] instIn[3:0] + SIGNEDDECRADIX functBit @@ -91,14 +59,17 @@ aluOut[3:0] aluOut[3:0] + SIGNEDDECRADIX FU[2:0] FU[2:0] + SIGNEDDECRADIX bank[1:0] bank[1:0] + SIGNEDDECRADIX addi @@ -132,6 +103,7 @@ Registers label + En En @@ -139,37 +111,32 @@ write_index[1:0] write_index[1:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX op0_idx[1:0] op0_idx[1:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX op1_idx[1:0] op1_idx[1:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX write_data[8:0] write_data[8:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX op0[8:0] op0[8:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX op1[8:0] op1[8:0] - UNSIGNEDDECRADIX - - - decOut[3:0] - decOut[3:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX r0_out[8:0] @@ -258,16 +225,17 @@ address[8:0] address[8:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX readData[8:0] readData[8:0] - BINARYRADIX + SIGNEDDECRADIX - memory[100:0][8:0] - memory[100:0][8:0] + memory[18:0][8:0] + memory[18:0][8:0] + SIGNEDDECRADIX switch @@ -276,14 +244,17 @@ A[8:0] A[8:0] + SIGNEDDECRADIX B[8:0] B[8:0] + SIGNEDDECRADIX out[8:0] out[8:0] + SIGNEDDECRADIX switch @@ -314,12 +285,14 @@ En - Din[50:0] - Din[50:0] + Din[52:0] + Din[52:0] + SIGNEDDECRADIX - Dout[50:0] - Dout[50:0] + Dout[52:0] + Dout[52:0] + SIGNEDDECRADIX @@ -336,19 +309,33 @@ address[8:0] address[8:0] - UNSIGNEDDECRADIX + SIGNEDDECRADIX writeData[8:0] writeData[8:0] + SIGNEDDECRADIX readData[8:0] readData[8:0] + SIGNEDDECRADIX - memory[100:0][8:0] - memory[100:0][8:0] + memory[1:0][8:0] + memory[1:0][8:0] + SIGNEDDECRADIX + + + [1][8:0] + [1][8:0] + SIGNEDDECRADIX + + + [0][8:0] + [0][8:0] + SIGNEDDECRADIX + @@ -356,7 +343,7 @@ label - Mux 3 + Mux 3 - Addi label switch @@ -378,8 +365,31 @@ SIGNEDDECRADIX + + Mux 6 - Link + label + + switch + switch + + + A[8:0] + A[8:0] + SIGNEDDECRADIX + + + B[8:0] + B[8:0] + SIGNEDDECRADIX + + + out[8:0] + out[8:0] + SIGNEDDECRADIX + + - Mux 4 + Mux 4 - Mem label switch @@ -402,7 +412,7 @@ - Mux 5 + Mux 5 - Bank label switch @@ -424,27 +434,97 @@ SIGNEDDECRADIX - - Mux 6 + + Divider label - + + + op0 - Mux + label + + switch switch - + A[8:0] A[8:0] SIGNEDDECRADIX - + B[8:0] B[8:0] SIGNEDDECRADIX - + out[8:0] out[8:0] SIGNEDDECRADIX + + A[1:0] + A[1:0] + + + B[8:0] + B[8:0] + + + + op1 - Mux + label + + + switch + switch + + + A[8:0] + A[8:0] + SIGNEDDECRADIX + + + B[8:0] + B[8:0] + SIGNEDDECRADIX + + + out[8:0] + out[8:0] + SIGNEDDECRADIX + + + A[1:0] + A[1:0] + + + B[8:0] + B[8:0] + + + + ALU + label + + + opcode[3:0] + opcode[3:0] + SIGNEDDECRADIX + + + operand0[8:0] + operand0[8:0] + SIGNEDDECRADIX + + + operand1[8:0] + operand1[8:0] + SIGNEDDECRADIX + + + result[8:0] + result[8:0] + SIGNEDDECRADIX + diff --git a/lab2CA.runs/impl_1/gen_run.xml b/lab2CA.runs/impl_1/gen_run.xml index dd35d50..8982876 100644 --- a/lab2CA.runs/impl_1/gen_run.xml +++ b/lab2CA.runs/impl_1/gen_run.xml @@ -1,11 +1,11 @@ + - + - @@ -25,19 +25,20 @@ - - + + - + + @@ -48,7 +49,6 @@ - diff --git a/lab2CA.sim/sim_1/behav/xsim/xelab.pb b/lab2CA.sim/sim_1/behav/xsim/xelab.pb index a1ea57e90b62c3b79e548cc53b1ceb789eddbc83..df572324c344090bd482d672fb7ebd26d0967898 100644 GIT binary patch delta 13 VcmeDC$hb^>!yl&2PtsQj001zJ2DAVG literal 30862 zcmd7b-EQ1O6bEpUR;d^e3gV-*fMi5NQR#koW^B*&s%_dzMGb<|0ODrlkJ;TRUVHJ_ z$@UK3fVbc!cqyI$>}-;{n-pw$m2<9=-A(3r{xe?xtVDZALbi5{wPVQkiYv`_t#HL~868aen9I8+x5=(V;E+jGjDo`r6M|IO{R#dDA!M zmlv1+*mz@mll)399hIwBdPeTo=kJgmcs4XQp(#F9S-eYHM;eaj&-uQZ9PuH zzI88-t*6z`8tbVtDmze7|7`Vo(Z4sz+fR!m(aGe_$!r;8^<(&Jll-~4duOn$G+54j zu$K*2(HS`@ZWNIAwob#a*1XKjUn6tpA zREeRmdOe+lS@|VWK{2uN7jqr@arrna2U?V0XSqeK-V_MUq2a%uqdq<=8 z54JbX8TlHyWDn`~=Gm9T#@&sduh_#L^M+2D!Pa7Hc`~jkgLBS($P5@n2K;R7kQs1@ z3>;h;I1m}QxH51dGVpL^;6Y>{aAhDMGLX13kgYQKZL_-%J|vsvCHV}D0WS>p5F`W} zR|qyp2x&t`KmE(FPGC#U(}xB1Vc!j1)wS6qgt&h!`m@F;WmQQe0xBAY!Dr z#7IHJNO6ggf{2mg5+el>BgG{~3L-{|ONxWvdn z#900Z1g5_`Fc2{^Tw-J(Vr00)$Uwx%aEXzDh>_tEBLfj5!zD%rB1Vo&j2uLa9G4h5 zh!{C8F>(+wa$I8MAY$aW#K=L!$Z?60gNTvi5+er@BgZ914kAX5ON<;uj2xF3Ifxh? zTw-)U#OUA>qXQyF2bUNf5HUKq#OQ#C(ZMA~2SkhxE-^YFVsvnc(E$;ogG-DKh!`DQ zVst>n=-?8g10qHjml$0TF}k?K=z@sR#U(};M2s#jF}fgPba9E%1rei*ON=gv7+qXq zbV0=E;u50^B1RXN7+nxCy12yXf{4+>B}NZKj2JzQe+ zK*Z?b5~BwqMh}-5JrFT^xWwpzh|$9(Mh`@c9xgF@AYv4_#3(?-C~%2UfQV7x5~BbS zqrfFb0U}0$ON;_Ui~^S!1&A00E-?xaF$!E_6d+<0xWp(x#3*oyQGke1;u50-5u?N< zMhPNDiA#(UM2r%b7$t}pB`z^a5HU(zVw50al(@twLBuF=iBW=xQQ{J#1QDaeB}Um! zjK8np6TGihO*K%Fv22Rd>eH)t$)~&NY#yszMXzg@LPfpv&$3+#lWx6T${xA-vgyjQ zA5htB#j3iJSmQW7wEV=6Ul@Jd+=bic^j~?U5zsf}%i3}M?}*fsXGUbQ>Sl7uc~*qgu`PSKkk{3e&MQ4{CQWPJCLgWT%+y4i zTxAzf%8#OvU3MF~pi)(1qo$?CO#}RjTwMupRxCzzWH+reZCa^EuB}vhr1EgOpIpeS zA{C}l^Ig#~Ki)jQ4was&$s--BrYrTl=}HaA$15wfn>N6js;V@@kZ{ zE8Ag)rU+Wiu)}$lX00l9m{f9crTipnHLDIg-%Ry5AH{0i`0|xC-Hsmld}TW>iybvr z9F^Vss-A;Q&$ps!)jQ;i|ETI`I-kx|*{H8+;SSf(Sedff;nYu>)(V(F ze%G{0hjXCvhwV1MfOeSBy(jxkCzLjgjg!^Bl15LGky_-cJmXjk!~N2<9AxceNdaut_vPt_GE2ZEo{2= zza;OkZ2hW>Ytu5%$*1=V9q09%=F?WP$G6VZ6ZMB(L8{zeC8w OBr5OM!!(PwH~t0m+=zn! diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c index a1ea386..091e7b6 100644 --- a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c +++ b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c @@ -47,22 +47,22 @@ extern int main(int, char**); extern void execute_2(char*, char *); extern void execute_3(char*, char *); extern void execute_240(char*, char *); -extern void execute_611(char*, char *); -extern void execute_612(char*, char *); +extern void execute_609(char*, char *); +extern void execute_610(char*, char *); extern void vlog_simple_process_execute_0_fast_no_reg_no_agg(char*, char*, char*); extern void execute_246(char*, char *); extern void vlog_const_rhs_process_execute_0_fast_no_reg_no_agg(char*, char*, char*); +extern void execute_601(char*, char *); +extern void execute_602(char*, char *); extern void execute_603(char*, char *); extern void execute_604(char*, char *); extern void execute_605(char*, char *); extern void execute_606(char*, char *); extern void execute_607(char*, char *); extern void execute_608(char*, char *); -extern void execute_609(char*, char *); -extern void execute_610(char*, char *); extern void execute_247(char*, char *); -extern void execute_248(char*, char *); -extern void execute_249(char*, char *); +extern void execute_278(char*, char *); +extern void execute_279(char*, char *); extern void execute_280(char*, char *); extern void execute_281(char*, char *); extern void execute_282(char*, char *); @@ -74,28 +74,28 @@ extern void execute_287(char*, char *); extern void execute_288(char*, char *); extern void execute_289(char*, char *); extern void execute_290(char*, char *); -extern void execute_291(char*, char *); -extern void execute_292(char*, char *); extern void execute_7(char*, char *); extern void execute_8(char*, char *); +extern void execute_267(char*, char *); extern void execute_269(char*, char *); +extern void execute_270(char*, char *); +extern void execute_11(char*, char *); +extern void execute_248(char*, char *); +extern void execute_249(char*, char *); +extern void execute_23(char*, char *); extern void execute_271(char*, char *); extern void execute_272(char*, char *); -extern void execute_11(char*, char *); -extern void execute_250(char*, char *); -extern void execute_251(char*, char *); -extern void execute_23(char*, char *); extern void execute_273(char*, char *); extern void execute_274(char*, char *); extern void execute_275(char*, char *); extern void execute_276(char*, char *); extern void execute_277(char*, char *); -extern void execute_278(char*, char *); -extern void execute_279(char*, char *); extern void execute_26(char*, char *); extern void execute_36(char*, char *); extern void execute_40(char*, char *); extern void execute_42(char*, char *); +extern void execute_291(char*, char *); +extern void execute_292(char*, char *); extern void execute_293(char*, char *); extern void execute_294(char*, char *); extern void execute_295(char*, char *); @@ -108,38 +108,38 @@ extern void execute_301(char*, char *); extern void execute_302(char*, char *); extern void execute_303(char*, char *); extern void execute_304(char*, char *); -extern void execute_305(char*, char *); -extern void execute_306(char*, char *); +extern void execute_485(char*, char *); extern void execute_487(char*, char *); -extern void execute_489(char*, char *); +extern void execute_488(char*, char *); extern void execute_490(char*, char *); +extern void execute_491(char*, char *); extern void execute_492(char*, char *); extern void execute_493(char*, char *); extern void execute_494(char*, char *); -extern void execute_495(char*, char *); -extern void execute_496(char*, char *); extern void execute_45(char*, char *); extern void execute_46(char*, char *); +extern void execute_420(char*, char *); +extern void execute_421(char*, char *); extern void execute_422(char*, char *); extern void execute_423(char*, char *); extern void execute_424(char*, char *); extern void execute_425(char*, char *); -extern void execute_426(char*, char *); -extern void execute_427(char*, char *); -extern void execute_351(char*, char *); -extern void execute_332(char*, char *); +extern void execute_349(char*, char *); +extern void execute_330(char*, char *); +extern void execute_370(char*, char *); +extern void execute_371(char*, char *); extern void execute_372(char*, char *); extern void execute_373(char*, char *); extern void execute_374(char*, char *); extern void execute_375(char*, char *); -extern void execute_376(char*, char *); -extern void execute_377(char*, char *); -extern void execute_419(char*, char *); -extern void execute_420(char*, char *); +extern void execute_417(char*, char *); +extern void execute_418(char*, char *); extern void execute_129(char*, char *); -extern void execute_467(char*, char *); +extern void execute_465(char*, char *); extern void execute_160(char*, char *); extern void execute_173(char*, char *); +extern void execute_495(char*, char *); +extern void execute_496(char*, char *); extern void execute_497(char*, char *); extern void execute_498(char*, char *); extern void execute_499(char*, char *); @@ -156,24 +156,22 @@ extern void execute_509(char*, char *); extern void execute_510(char*, char *); extern void execute_511(char*, char *); extern void execute_512(char*, char *); -extern void execute_513(char*, char *); -extern void execute_514(char*, char *); extern void execute_242(char*, char *); extern void execute_243(char*, char *); extern void execute_244(char*, char *); +extern void execute_611(char*, char *); +extern void execute_612(char*, char *); extern void execute_613(char*, char *); extern void execute_614(char*, char *); extern void execute_615(char*, char *); -extern void execute_616(char*, char *); -extern void execute_617(char*, char *); extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); -extern void transaction_131(char*, char*, unsigned, unsigned, unsigned); -funcp funcTab[124] = {(funcp)execute_2, (funcp)execute_3, (funcp)execute_240, (funcp)execute_611, (funcp)execute_612, (funcp)vlog_simple_process_execute_0_fast_no_reg_no_agg, (funcp)execute_246, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_603, (funcp)execute_604, (funcp)execute_605, (funcp)execute_606, (funcp)execute_607, (funcp)execute_608, (funcp)execute_609, (funcp)execute_610, (funcp)execute_247, (funcp)execute_248, (funcp)execute_249, (funcp)execute_280, (funcp)execute_281, (funcp)execute_282, (funcp)execute_283, (funcp)execute_284, (funcp)execute_285, (funcp)execute_286, (funcp)execute_287, (funcp)execute_288, (funcp)execute_289, (funcp)execute_290, (funcp)execute_291, (funcp)execute_292, (funcp)execute_7, (funcp)execute_8, (funcp)execute_269, (funcp)execute_271, (funcp)execute_272, (funcp)execute_11, (funcp)execute_250, (funcp)execute_251, (funcp)execute_23, (funcp)execute_273, (funcp)execute_274, (funcp)execute_275, (funcp)execute_276, (funcp)execute_277, (funcp)execute_278, (funcp)execute_279, (funcp)execute_26, (funcp)execute_36, (funcp)execute_40, (funcp)execute_42, (funcp)execute_293, (funcp)execute_294, (funcp)execute_295, (funcp)execute_296, (funcp)execute_297, (funcp)execute_298, (funcp)execute_299, (funcp)execute_300, (funcp)execute_301, (funcp)execute_302, (funcp)execute_303, (funcp)execute_304, (funcp)execute_305, (funcp)execute_306, (funcp)execute_487, (funcp)execute_489, (funcp)execute_490, (funcp)execute_492, (funcp)execute_493, (funcp)execute_494, (funcp)execute_495, (funcp)execute_496, (funcp)execute_45, (funcp)execute_46, (funcp)execute_422, (funcp)execute_423, (funcp)execute_424, (funcp)execute_425, (funcp)execute_426, (funcp)execute_427, (funcp)execute_351, (funcp)execute_332, (funcp)execute_372, (funcp)execute_373, (funcp)execute_374, (funcp)execute_375, (funcp)execute_376, (funcp)execute_377, (funcp)execute_419, (funcp)execute_420, (funcp)execute_129, (funcp)execute_467, (funcp)execute_160, (funcp)execute_173, (funcp)execute_497, (funcp)execute_498, (funcp)execute_499, (funcp)execute_500, (funcp)execute_501, (funcp)execute_502, (funcp)execute_503, (funcp)execute_504, (funcp)execute_505, (funcp)execute_506, (funcp)execute_507, (funcp)execute_508, (funcp)execute_509, (funcp)execute_510, (funcp)execute_511, (funcp)execute_512, (funcp)execute_513, (funcp)execute_514, (funcp)execute_242, (funcp)execute_243, (funcp)execute_244, (funcp)execute_613, (funcp)execute_614, (funcp)execute_615, (funcp)execute_616, (funcp)execute_617, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_131}; -const int NumRelocateId= 124; +extern void transaction_133(char*, char*, unsigned, unsigned, unsigned); +funcp funcTab[122] = {(funcp)execute_2, (funcp)execute_3, (funcp)execute_240, (funcp)execute_609, (funcp)execute_610, (funcp)vlog_simple_process_execute_0_fast_no_reg_no_agg, (funcp)execute_246, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_601, (funcp)execute_602, (funcp)execute_603, (funcp)execute_604, (funcp)execute_605, (funcp)execute_606, (funcp)execute_607, (funcp)execute_608, (funcp)execute_247, (funcp)execute_278, (funcp)execute_279, (funcp)execute_280, (funcp)execute_281, (funcp)execute_282, (funcp)execute_283, (funcp)execute_284, (funcp)execute_285, (funcp)execute_286, (funcp)execute_287, (funcp)execute_288, (funcp)execute_289, (funcp)execute_290, (funcp)execute_7, (funcp)execute_8, (funcp)execute_267, (funcp)execute_269, (funcp)execute_270, (funcp)execute_11, (funcp)execute_248, (funcp)execute_249, (funcp)execute_23, (funcp)execute_271, (funcp)execute_272, (funcp)execute_273, (funcp)execute_274, (funcp)execute_275, (funcp)execute_276, (funcp)execute_277, (funcp)execute_26, (funcp)execute_36, (funcp)execute_40, (funcp)execute_42, (funcp)execute_291, (funcp)execute_292, (funcp)execute_293, (funcp)execute_294, (funcp)execute_295, (funcp)execute_296, (funcp)execute_297, (funcp)execute_298, (funcp)execute_299, (funcp)execute_300, (funcp)execute_301, (funcp)execute_302, (funcp)execute_303, (funcp)execute_304, (funcp)execute_485, (funcp)execute_487, (funcp)execute_488, (funcp)execute_490, (funcp)execute_491, (funcp)execute_492, (funcp)execute_493, (funcp)execute_494, (funcp)execute_45, (funcp)execute_46, (funcp)execute_420, (funcp)execute_421, (funcp)execute_422, (funcp)execute_423, (funcp)execute_424, (funcp)execute_425, (funcp)execute_349, (funcp)execute_330, (funcp)execute_370, (funcp)execute_371, (funcp)execute_372, (funcp)execute_373, (funcp)execute_374, (funcp)execute_375, (funcp)execute_417, (funcp)execute_418, (funcp)execute_129, (funcp)execute_465, (funcp)execute_160, (funcp)execute_173, (funcp)execute_495, (funcp)execute_496, (funcp)execute_497, (funcp)execute_498, (funcp)execute_499, (funcp)execute_500, (funcp)execute_501, (funcp)execute_502, (funcp)execute_503, (funcp)execute_504, (funcp)execute_505, (funcp)execute_506, (funcp)execute_507, (funcp)execute_508, (funcp)execute_509, (funcp)execute_510, (funcp)execute_511, (funcp)execute_512, (funcp)execute_242, (funcp)execute_243, (funcp)execute_244, (funcp)execute_611, (funcp)execute_612, (funcp)execute_613, (funcp)execute_614, (funcp)execute_615, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_133}; +const int NumRelocateId= 122; void relocate(char *dp) { - iki_relocate(dp, "xsim.dir/CPU9bits_tb_behav/xsim.reloc", (void **)funcTab, 124); + iki_relocate(dp, "xsim.dir/CPU9bits_tb_behav/xsim.reloc", (void **)funcTab, 122); /*Populate the transaction function pointer field in the whole net structure */ } diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/xsim_webtalk.tcl b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/xsim_webtalk.tcl index 66eb116..de6b4d8 100644 --- a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/xsim_webtalk.tcl +++ b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/xsim_webtalk.tcl @@ -1,6 +1,6 @@ webtalk_init -webtalk_dir C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/ webtalk_register_client -client project -webtalk_add_data -client project -key date_generated -value "Thu Apr 11 21:13:26 2019" -context "software_version_and_target_device" +webtalk_add_data -client project -key date_generated -value "Thu Apr 11 23:44:27 2019" -context "software_version_and_target_device" webtalk_add_data -client project -key product_version -value "XSIM v2018.3 (64-bit)" -context "software_version_and_target_device" webtalk_add_data -client project -key build_version -value "2405991" -context "software_version_and_target_device" webtalk_add_data -client project -key os_platform -value "WIN64" -context "software_version_and_target_device" @@ -14,7 +14,7 @@ webtalk_add_data -client project -key target_package -value "not_applicable" -co webtalk_add_data -client project -key target_speed -value "not_applicable" -context "software_version_and_target_device" webtalk_add_data -client project -key random_id -value "17336daf-0d92-4f07-b4a4-ff1c52043edb" -context "software_version_and_target_device" webtalk_add_data -client project -key project_id -value "0a5803efda44405bb28bbf43ba22e808" -context "software_version_and_target_device" -webtalk_add_data -client project -key project_iteration -value "153" -context "software_version_and_target_device" +webtalk_add_data -client project -key project_iteration -value "183" -context "software_version_and_target_device" webtalk_add_data -client project -key os_name -value "Microsoft Windows 8 or later , 64-bit" -context "user_environment" webtalk_add_data -client project -key os_release -value "major release (build 9200)" -context "user_environment" webtalk_add_data -client project -key cpu_name -value "Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz" -context "user_environment" @@ -22,11 +22,21 @@ webtalk_add_data -client project -key cpu_speed -value "2594 MHz" -context "user webtalk_add_data -client project -key total_processors -value "1" -context "user_environment" webtalk_add_data -client project -key system_ram -value "8.000 GB" -context "user_environment" webtalk_register_client -client xsim -webtalk_add_data -client xsim -key Command -value "xsim" -context "xsim\\command_line_options" -webtalk_add_data -client xsim -key trace_waveform -value "true" -context "xsim\\usage" -webtalk_add_data -client xsim -key runtime -value "315 ns" -context "xsim\\usage" -webtalk_add_data -client xsim -key iteration -value "0" -context "xsim\\usage" -webtalk_add_data -client xsim -key Simulation_Time -value "0.06_sec" -context "xsim\\usage" -webtalk_add_data -client xsim -key Simulation_Memory -value "5980_KB" -context "xsim\\usage" -webtalk_transmit -clientid 4273905684 -regid "" -xml C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.xml -html C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.html -wdm C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.wdm -intro "

XSIM Usage Report


" +webtalk_add_data -client xsim -key File_Counter -value "12" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Command -value "xelab" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Vhdl2008 -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key GenDLL -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key SDFModeling -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key HWCosim -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key DPI_Used -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Debug -value "typical" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Simulation_Image_Code -value "121 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Simulation_Image_Data -value "26 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Nets -value "0" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Processes -value "418" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Instances -value "204" -context "xsim\\usage" +webtalk_add_data -client xsim -key Xilinx_HDL_Libraries_Used -value "secureip unimacro_ver unisims_ver " -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Time -value "1.41_sec" -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Memory -value "48168_KB" -context "xsim\\usage" +webtalk_transmit -clientid 3886063125 -regid "" -xml C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.xml -html C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.html -wdm C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.wdm -intro "

XSIM Usage Report


" webtalk_terminate diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/xsim.mem b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/xsim.mem index 25b0fbbd52bc8dc8a715599c54ceb6422820e5d5..dfe2f8ae6623f27077e831869150d8efad0e2f33 100644 GIT binary patch literal 26659 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 literal 27451 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 oid|_f>!oSL-!Qa+r%_U;dcHo30cqDPP5=M^ diff --git a/lab2CA.sim/sim_1/behav/xsim/xvlog.pb b/lab2CA.sim/sim_1/behav/xsim/xvlog.pb index d51267795233c9309dddff68c7babe475d0767d3..836b474cf57030882d0d763fc3cb1265053a831c 100644 GIT binary patch delta 342 zcmbR2z1Dxj1L?31CN9I$yp+`BoW!Ek6oul-+@$;*1=V65g~a0G(p;cWN@`kSX-zEi>6jhKnOPKeqsAj=|(c8DVw_E|&7l zqErx@F>LY%NsGz)(p*dej39w}2`(lxBLOBOcBt`IFop%A17j4sp@FWEiK#^fLjh|A h>jXvy0VXc0x|9>{&5WF-Iq delta 12 UcmZ4MKiPZ31L@7bWH)mH04ZGt3;+NC diff --git a/lab2CA.srcs/sources_1/new/BasicModules.v b/lab2CA.srcs/sources_1/new/BasicModules.v index ed7a182..60e64c6 100644 --- a/lab2CA.srcs/sources_1/new/BasicModules.v +++ b/lab2CA.srcs/sources_1/new/BasicModules.v @@ -850,8 +850,8 @@ module fDPipReg( input wire clk, input wire reset, input wire En, - input wire [50:0] Din, - output reg [50:0] Dout); + input wire [52:0] Din, + output reg [52:0] Dout); always @(posedge clk) begin if (reset == 1'b1) begin diff --git a/lab2CA.srcs/sources_1/new/CPU9bits.v b/lab2CA.srcs/sources_1/new/CPU9bits.v index 5c24257..a70e4bc 100644 --- a/lab2CA.srcs/sources_1/new/CPU9bits.v +++ b/lab2CA.srcs/sources_1/new/CPU9bits.v @@ -9,7 +9,8 @@ module CPU9bits( wire [8:0] RFIn,FUAddr, op0_ext, op1_ext, wr_ext, op0_sub, op1_sub, op0_zero, op1_zero, op0_and, op1_and, newOp0, newOp1; wire [1:0] instr, op0_idx, op1_idx; wire fetchBranch, RegEn, compare0, compare1; - wire [50:0] FDOut, FDPipOut, EMIn; + wire [50:0] EMIn; + wire [52:0] FDOut,FDPipOut; wire [61:0] EMOut, EMPipOut; @@ -25,26 +26,26 @@ module CPU9bits( .RFIn(RFIn), .AddrIn(FUAddr), .RFIdx(instr), - .result(FDOut), - .done(done), - .compare0(compare0), - .compare1(compare1), - .op0_idx(op0_idx), - .op1_idx(op1_idx) + .result(FDOut), //////////////////// + .done(done) + //.compare0(compare0), + //.compare1(compare1), + //.op0_idx(op0_idx), + //.op1_idx(op1_idx) ); fDPipReg pipe1( .clk(clk), .reset(reset), .En(1'b0), - .Din(FDOut), - .Dout(FDPipOut) + .Din(FDOut), /////////////////// + .Dout(FDPipOut)/////////////////// ); EMModule EM( .reset(reset), .clk(clk), - .PipIn(EMIn), + .PipIn(EMIn),///////////////// .PipOut(EMOut) ); @@ -66,12 +67,12 @@ module CPU9bits( ); sign_extend_2bit ext0( - .A(op0_idx), + .A(FDPipOut[46:45]), .B(op0_ext) ); sign_extend_2bit ext1( - .A(op1_idx), + .A(FDPipOut[44:43]), .B(op1_ext) ); @@ -104,26 +105,28 @@ module CPU9bits( and_9bit and0( .A(~op0_zero), - .B({8'b00000000,compare0}), + .B({8'b00000000,FDPipOut[52]}), .C(op0_and) ); and_9bit and1( .A(~op1_zero), - .B({8'b00000000,compare1}), + .B({8'b00000000,FDPipOut[51]}), .C(op1_and) ); mux_2_1 mux0( .switch(op0_and[0]), - .A(FDOut[41:33]), + //.switch(1'b0), + .A(FDPipOut[41:33]), .B(EMPipOut[33:25]), //ALUOut .out(newOp0) ); mux_2_1 mux1( .switch(op1_and[0]), - .A(FDOut[32:24]), + //.switch(1'b0), + .A(FDPipOut[32:24]), .B(EMPipOut[33:25]), //ALUOut .out(newOp1) ); @@ -154,7 +157,7 @@ module CPU9bits_tb(); reset = 1'b1; #10 reset = 1'b0; - #300 + #200 $finish; end diff --git a/lab2CA.srcs/sources_1/new/FDModule.v b/lab2CA.srcs/sources_1/new/FDModule.v index c0ee74a..3229008 100644 --- a/lab2CA.srcs/sources_1/new/FDModule.v +++ b/lab2CA.srcs/sources_1/new/FDModule.v @@ -4,9 +4,9 @@ module FDModule( input wire reset, clk, FUIdx, En, input wire [8:0] RFIn, AddrIn, input wire[1:0] RFIdx, - output wire [1:0] op0_idx, op1_idx, - output wire [50:0] result, - output wire done, compare0, compare1 + //output wire [1:0] op0_idx, op1_idx, + output wire [52:0] result, + output wire done//, compare0, compare1 ); @@ -16,9 +16,9 @@ module FDModule( wire [1:0] bankS; wire addiS, RegEn, loadS, halt, link, js, dataMemEn ; - assign result = {instr,op0,op1,PCout,addiS,RegEn,loadS,link,js,dataMemEn,aluOp,FU,bankS}; // concat all signals into one - assign op0_idx = instr[4:3]; - assign op1_idx = instr[2:1]; + assign result = {compare0,compare1,instr,op0,op1,PCout,addiS,RegEn,loadS,link,js,dataMemEn,aluOp,FU,bankS}; // concat all signals into one + //assign op0_idx = instr[4:3];46-45 + //assign op1_idx = instr[2:1];44-43 instructionMemory iM( diff --git a/lab2CA.srcs/sources_1/new/dataMemory.v b/lab2CA.srcs/sources_1/new/dataMemory.v index c69b4e8..9054504 100644 --- a/lab2CA.srcs/sources_1/new/dataMemory.v +++ b/lab2CA.srcs/sources_1/new/dataMemory.v @@ -97,107 +97,107 @@ module dataMemory( // Program 1 Test Data - memory[0] <= 9'd100; - memory[1] <= 9'd58; - memory[2] <= 9'd6; - memory[3] <= 9'd12; - memory[4] <= 9'b110110000; // -80 - memory[5] <= 9'd17; - memory[6] <= 9'b111011011; // -37 - memory[7] <= 9'd25; - memory[8] <= -9'd83; // -83 - memory[9] <= -9'd98; // -98 - memory[10] <= -9'd98; // -98 - memory[11] <= -9'd74; // -74 - memory[12] <= 9'd70; - memory[13] <= -9'd38; // -38 - memory[14] <= 9'd52; - memory[15] <= -9'd96; // -96 - memory[16] <= -9'd32; // -32 - memory[17] <= -9'd93; // -93 - memory[18] <= -9'd40; // -40 - memory[19] <= 9'd59; - memory[20] <= 9'd10; - memory[21] <= 9'd81; - memory[22] <= -9'd23; // -28 - memory[23] <=- 9'd99; // -99 - memory[24] <= -9'd41; // -41 - memory[25] <= 9'd33; - memory[26] <= 9'd98; - memory[27] <= 9'd73; - memory[28] <= -9'd1; // -1 - memory[29] <= 9'd28; - memory[30] <= 9'd5; - memory[31] <= -9'd74; // -74 - memory[32] <= -9'd41; // -41 - memory[33] <= 9'd41; - memory[34] <= 9'd39; - memory[35] <= 9'd62; - memory[36] <= 9'd19; - memory[37] <= -9'd40; // -40 - memory[38] <= -9'd8; // -8 - memory[39] <= 9'd92; - memory[40] <= 9'd37; - memory[41] <= 9'd50; - memory[42] <= -9'd72; // -72 - memory[43] <= -9'd5; // -5 - memory[44] <= 9'd19; - memory[45] <= 9'd58; - memory[46] <= -9'd13; // -13 - memory[47] <= 9'd0; - memory[48] <= -9'd97; // -97 - memory[49] <= 9'd54; - memory[50] <= -9'd17; // -17 - memory[51] <= -9'd83; // -83 - memory[52] <= 9'd53; - memory[53] <= 9'd82; - memory[54] <= -9'd94; // -94 - memory[55] <= -9'd77; // -77 - memory[56] <= -9'd74; // -74 - memory[57] <= -9'd52; // -52 - memory[58] <= 9'd85; - memory[59] <= -9'd65; // -65 - memory[60] <= -9'd10; // -10 - memory[61] <= -9'd45; // -45 - memory[62] <= -9'd92; // -92 - memory[63] <= -9'd30; // -30 - memory[64] <= 9'd18; - memory[65] <= -9'd95; // -95 - memory[66] <= -9'd27; // -27 - memory[67] <= -9'd74; // -74 - memory[68] <= 9'd62; - memory[69] <= 9'd64; - memory[70] <= -9'd9; // -9 - memory[71] <= 9'd66; - memory[72] <= -9'd71; // -71 - memory[73] <= -9'd31; // -31 - memory[74] <= 9'd34; - memory[75] <= 9'd12; - memory[76] <= 9'd3; - memory[77] <= 9'd82; - memory[78] <= 9'd13; - memory[79] <= -9'd78; // -78 - memory[80] <= -9'd8; // -8 - memory[81] <= 9'd88; - memory[82] <= 9'd42; - memory[83] <= 9'd42; - memory[84] <= 9'd21; - memory[85] <= -9'd44; // -44 - memory[86] <= 9'd30; - memory[87] <= -9'd93; // -93 - memory[88] <= 9'd2; - memory[89] <= -9'd34; // -34 - memory[90] <= 9'd92; - memory[91] <= -9'd45; // -45 - memory[92] <= 9'd26; - memory[93] <= -9'd79; // -79 - memory[94] <= 9'd43; - memory[95] <= -9'd25; // -25 - memory[96] <= -9'd24; // -24 - memory[97] <= -9'd25; // -25 - memory[98] <= -9'd19; // -19 - memory[99] <= -9'd49; // -49 - memory[100] <= -9'd8; // -8 +// memory[0] <= 9'd100; +// memory[1] <= 9'd58; +// memory[2] <= 9'd6; +// memory[3] <= 9'd12; +// memory[4] <= 9'b110110000; // -80 +// memory[5] <= 9'd17; +// memory[6] <= 9'b111011011; // -37 +// memory[7] <= 9'd25; +// memory[8] <= -9'd83; // -83 +// memory[9] <= -9'd98; // -98 +// memory[10] <= -9'd98; // -98 +// memory[11] <= -9'd74; // -74 +// memory[12] <= 9'd70; +// memory[13] <= -9'd38; // -38 +// memory[14] <= 9'd52; +// memory[15] <= -9'd96; // -96 +// memory[16] <= -9'd32; // -32 +// memory[17] <= -9'd93; // -93 +// memory[18] <= -9'd40; // -40 +// memory[19] <= 9'd59; +// memory[20] <= 9'd10; +// memory[21] <= 9'd81; +// memory[22] <= -9'd23; // -28 +// memory[23] <=- 9'd99; // -99 +// memory[24] <= -9'd41; // -41 +// memory[25] <= 9'd33; +// memory[26] <= 9'd98; +// memory[27] <= 9'd73; +// memory[28] <= -9'd1; // -1 +// memory[29] <= 9'd28; +// memory[30] <= 9'd5; +// memory[31] <= -9'd74; // -74 +// memory[32] <= -9'd41; // -41 +// memory[33] <= 9'd41; +// memory[34] <= 9'd39; +// memory[35] <= 9'd62; +// memory[36] <= 9'd19; +// memory[37] <= -9'd40; // -40 +// memory[38] <= -9'd8; // -8 +// memory[39] <= 9'd92; +// memory[40] <= 9'd37; +// memory[41] <= 9'd50; +// memory[42] <= -9'd72; // -72 +// memory[43] <= -9'd5; // -5 +// memory[44] <= 9'd19; +// memory[45] <= 9'd58; +// memory[46] <= -9'd13; // -13 +// memory[47] <= 9'd0; +// memory[48] <= -9'd97; // -97 +// memory[49] <= 9'd54; +// memory[50] <= -9'd17; // -17 +// memory[51] <= -9'd83; // -83 +// memory[52] <= 9'd53; +// memory[53] <= 9'd82; +// memory[54] <= -9'd94; // -94 +// memory[55] <= -9'd77; // -77 +// memory[56] <= -9'd74; // -74 +// memory[57] <= -9'd52; // -52 +// memory[58] <= 9'd85; +// memory[59] <= -9'd65; // -65 +// memory[60] <= -9'd10; // -10 +// memory[61] <= -9'd45; // -45 +// memory[62] <= -9'd92; // -92 +// memory[63] <= -9'd30; // -30 +// memory[64] <= 9'd18; +// memory[65] <= -9'd95; // -95 +// memory[66] <= -9'd27; // -27 +// memory[67] <= -9'd74; // -74 +// memory[68] <= 9'd62; +// memory[69] <= 9'd64; +// memory[70] <= -9'd9; // -9 +// memory[71] <= 9'd66; +// memory[72] <= -9'd71; // -71 +// memory[73] <= -9'd31; // -31 +// memory[74] <= 9'd34; +// memory[75] <= 9'd12; +// memory[76] <= 9'd3; +// memory[77] <= 9'd82; +// memory[78] <= 9'd13; +// memory[79] <= -9'd78; // -78 +// memory[80] <= -9'd8; // -8 +// memory[81] <= 9'd88; +// memory[82] <= 9'd42; +// memory[83] <= 9'd42; +// memory[84] <= 9'd21; +// memory[85] <= -9'd44; // -44 +// memory[86] <= 9'd30; +// memory[87] <= -9'd93; // -93 +// memory[88] <= 9'd2; +// memory[89] <= -9'd34; // -34 +// memory[90] <= 9'd92; +// memory[91] <= -9'd45; // -45 +// memory[92] <= 9'd26; +// memory[93] <= -9'd79; // -79 +// memory[94] <= 9'd43; +// memory[95] <= -9'd25; // -25 +// memory[96] <= -9'd24; // -24 +// memory[97] <= -9'd25; // -25 +// memory[98] <= -9'd19; // -19 +// memory[99] <= -9'd49; // -49 +// memory[100] <= -9'd8; // -8 diff --git a/lab2CA.srcs/sources_1/new/instructionMemory.v b/lab2CA.srcs/sources_1/new/instructionMemory.v index e9f16a1..953d9c3 100644 --- a/lab2CA.srcs/sources_1/new/instructionMemory.v +++ b/lab2CA.srcs/sources_1/new/instructionMemory.v @@ -5,7 +5,7 @@ module instructionMemory( output reg [8:0] readData ); - reg [8:0] memory [8:0]; // Maximum of 512 memory locations + reg [8:0] memory [18:0]; // Maximum of 512 memory locations // Vivado will give warnings of unconnected ports on the "address" bus if they are unused initial begin @@ -13,12 +13,19 @@ module instructionMemory( memory[0] <= 9'b000000000; //Stall memory[1] <= 9'b000000000; //Stall memory[2] <= 9'b011000000; //addi - memory[3] <= 9'b011001001; //addi - memory[4] <= 9'b000100000; //load - memory[5] <= 9'b000101010; //load - memory[6] <= 9'b010100010; //add - memory[7] <= 9'b111100000; //shift left - memory[8] <= 9'b111100000; //shift left + memory[3] <= 9'b000000000; //Stall + memory[4] <= 9'b000000000; //Stall + memory[5] <= 9'b011001001; //addi + memory[6] <= 9'b000000000; //Stall + memory[7] <= 9'b000000000; //Stall + memory[8] <= 9'b000100000; //load + memory[9] <= 9'b000000000; //Stall + memory[10] <= 9'b000101010; //load + memory[11] <= 9'b010100010; //add + memory[12] <= 9'b111100000; //shift left + memory[13] <= 9'b111100000; //shift left + memory[14] <= 9'b000000000; //Stall + memory[15] <= 9'b000000000; //Stall // //Testing all instructions // memory[6] <= 9'b010100011; //sub diff --git a/lab2CA.xpr b/lab2CA.xpr index f36c02f..47f180c 100644 --- a/lab2CA.xpr +++ b/lab2CA.xpr @@ -3,7 +3,7 @@ - +