From dcc9692e9994313dcf163fb8ec90e4a2faa2b773 Mon Sep 17 00:00:00 2001 From: tilk Date: Mon, 1 Apr 2024 14:50:26 +0000 Subject: [PATCH] More metrics for RF, RS and ROB (#632) --- .doctrees/api.doctree | Bin 21253 -> 21253 bytes .doctrees/auto_graph.doctree | Bin 45216 -> 49013 bytes .doctrees/coreblocks.func_blocks.lsu.doctree | Bin 53003 -> 54557 bytes .doctrees/coreblocks.params.doctree | Bin 372086 -> 373215 bytes .doctrees/current-graph.doctree | Bin 46437 -> 50234 bytes .doctrees/environment.pickle | Bin 508297 -> 510305 bytes .doctrees/transactron.lib.doctree | Bin 855172 -> 901330 bytes _sources/auto_graph.rst.txt | 475 +++++++++-------- api.html | 2 +- assumptions.html | 2 +- auto_graph.html | 477 ++++++++++-------- components/icache.html | 2 +- coreblocks.backend.html | 2 +- coreblocks.cache.html | 2 +- coreblocks.core_structs.html | 2 +- coreblocks.frontend.decoder.html | 2 +- coreblocks.frontend.fetch.html | 2 +- coreblocks.frontend.html | 2 +- coreblocks.func_blocks.fu.html | 2 +- ...unc_blocks.fu.unsigned_multiplication.html | 2 +- coreblocks.func_blocks.html | 2 +- coreblocks.func_blocks.interface.html | 2 +- coreblocks.func_blocks.lsu.html | 7 +- coreblocks.html | 2 +- coreblocks.params.html | 11 +- coreblocks.peripherals.html | 2 +- coreblocks.priv.csr.html | 2 +- coreblocks.priv.html | 2 +- coreblocks.priv.traps.html | 2 +- coreblocks.scheduler.html | 2 +- current-graph.html | 477 ++++++++++-------- development-environment.html | 2 +- genindex.html | 48 +- home.html | 2 +- index.html | 2 +- miscellany/exceptions-summary.html | 2 +- modules-coreblocks.html | 2 +- modules-transactron.html | 2 +- objects.inv | Bin 10635 -> 10682 bytes problem-checklist.html | 2 +- py-modindex.html | 2 +- scheduler/overview.html | 2 +- search.html | 2 +- searchindex.js | 2 +- shared-structs/implementation/rs-impl.html | 2 +- shared-structs/rs.html | 2 +- synthesis/synthesis.html | 2 +- transactions.html | 2 +- transactron.core.html | 2 +- transactron.html | 2 +- transactron.lib.html | 257 +++++++--- transactron.testing.html | 2 +- transactron.utils.amaranth_ext.html | 2 +- transactron.utils.html | 2 +- 54 files changed, 1086 insertions(+), 744 deletions(-) diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index fa328de345c554491363bf89873eba647e2aef9e..42234fc028d8843c07edcc1ddf6b744861f0b356 100644 GIT binary patch delta 605 zcmZuvyH3L}6jdcyc(+9fLQoI_2BfAFG%1x};R~3da$Q3#65G0V0%AczV)FoUet?0_ z75xP!CMJG^l@Uig8Ufq&J=f84*AyzZD%(`mVw1L;N_pGhw-J5oV{mCSS{ z=Dj2$vOb!~^u*|39)h(>8S_|hMwpTfiV+Tpc?-78VX(CC_DD)1E@BJT2}>z(me-lC zjz~NKH1)8AOwa!6nwRFbVS!`rnzgI>0w}FY?#$kq#tA^qe+o#1nH~#yOsq?kDBk(% zRTUs65mr{;Q$#AtPBZNk2u~7*JD(Y3x-5WqBNErG3OuHnrKpkQdReS@E6C%8%s+PYI-yoM(EjIGMXK*TIGv_)dAQ;O#ThcfaO_ zM|u)TnZ!a-&aBipWj%6Xf@ZB{*YLANfdIu8F1}C@pduuIA`47?3+FV$gVs}N{4u<5 jESs73-lFq&>mKA8xCZ%EbJ^ak{_`R-k4t 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 B9$^3g delta 2944 zcmZ`)Yfw{X8lIDokb4L>i6oH3O#%eu1PGF#1SweMB8a*bQ3JB6R=KHx6)kulYK4k< zROpV%MXD_~BS)dPA8b3jt~=VYvpciS?o_F>{n2) zc)QTGIGj=QzvH2_MTPCcBmzW1EKDPO=A6*P17ExWFH8opYJ4EFve*~mGZaRoMz0_Q z)1hK`q=^VCO-7e461rq5G_oD|U_gvdWN|EIOtuK4hsEfS#jzBx+<_{2Jbc+A*yRC} z7|L}*W2IeW_{T^b}D*uU&S7o>nb{2P)T5JkSXY6*7KK=K84#0$-Rcw^h*9HDF|06{Qiz!$ zbrc_uG&BxsmtaPtLa8dt6{r3J6Y*|@Xl$_&BHC5&Gh38OPQD0Gy{4(4(HQ{43DYsLM zgJuQRn=67z{$OtBVKT|c$#y6y(VMJcp~iwJCff2*2t;%O?$b+=Mw@YhPQ(^#3TUeU zGHV&`rP3IqgDwfSQuu5Z?6%q22#V!$d}q6dxy(eaz_&6}*x3H?&Kwy$%l->Vwgs-N zY_D97nJgO$?S5{A{l{Ep$}XWe@}wh|CFf-q;CMIrD z^)fr!38WzqU8rZ2>(-D&Dmc7vs}x-o%R%>qU`vIOsEu!{B4OT~kKxTOHUi7|ut$o< z&88sgsC43Sr8|g@R_39l(n#L19i3YqVsz_PKO{%PR#rzYq+?qfzTK7*beh=4K77_8 z3@^L>jL|AH2UW?@_NEB`*~X2CK63nZRUoaic)$9o|Iuo5aBz^~F&W!i`1re9&vnj_ z+r)jS_GJwZJ9hewnLGW)cXm$j@oB9R!ulk1)Joy1&BIKy5D#i|&|jMcZQZ8~U2mk& z*}&a)xIvDM4d&o?eATcTv-2_}^3aVA=IzE!d^{eJK;n^M%#%&g_{yW<(Jtuf)JXM2 zpz4~`+atl6COPJsqG0jVc|CcU8edE@QQ*!MC1UEsSY~qZ`i=Qbb#*PS>Y5sNqsLX# zQ2#5s((toph?+N2Y1r1BfzBo+WhJ{Ta(8#L9<$AF;2-<#&>a*8#3zRWH;nPf5wqkr@|_ zj#e4oY}JJ5hy|2dhrhLk;cLQ^x7kQKd2NPBt7MhiQ?t{>t=53A>aA#WwJlcs7{s2_ z5xCu!PCRGZbY#^W(mhXEeaJ+#8{Wq5Gv50^hX&BxVK;mkMQFZtwx zb=`^H?iEo#U$S-G8QvZp9-Y@>bW{mtkBZwr9#JyNo-g<$vtGoI31boZ#X|o}QCNS$ zMWr#!1rdceE~bz#AuGPTs0Mv0E?D|YnV`o*Ncrzy)?@lL0j4e$^U@{gZ(oGRmqbYE z<)}RCe3QY?CrMBBlK03p(NymWVx8+Xp{_3~G%ZlF>dr;DH^_wu4VKYwGlbKwa<}J| zz3w`9y=NXhum2aJX_8fIR+XlK@@d(24Iv)^A6hlNAIAWL~{%p@Z^exh)mF+ zzNqty!_M+vL8n3NtDbTkEJr88ec;6wT+v&eSDw>yBSvXSf-Tld`z%GW0_b?G3wKiV03n_D+A#*v2imb5qCq%I0?h5^kpc)Oh4-G+J-w z{uJ;h&88!pAiu%qgFS=0C&>TfdHC)`(zAB?oqwyu+{jY$D=5Z?qZZag-u1IB+eFt% Qlm3442&H3Iznc>Jf9tPB&j0`b diff --git a/.doctrees/coreblocks.func_blocks.lsu.doctree b/.doctrees/coreblocks.func_blocks.lsu.doctree index 41b943d0007ac4e5164fcfe455fa9058281d8890..833b02aa8137e2e22e29cf9e58815ed88f91dea7 100644 GIT binary patch delta 9504 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 diff --git a/.doctrees/current-graph.doctree b/.doctrees/current-graph.doctree index f7ba510687a1db81c744a41f8fc6be77478f19f3..e677b553d916514bde19f584f6805b491c264246 100644 GIT binary patch delta 4355 zcmZ`*dsLg{89yHoAmI`yBn_m2k3d4Xg#;2Plv}Y-z+$l!Z3P=r2$vQT2w@affws1e zX(`Q*Qc4wQi&l%f)Ni^u&#c{a^SGU3y_~sIr{ZzWGcUBB<8fzm)xGcceKcJENWS-d zp5OaCzvuE^KK{a;V?MOZO>M3#jMJeT8Rb2M*D=jbG z0f$N>3?5Y_^HiQ!<!FR!$JJO3&+7;oTVvxfVw5Lux4G?(hTclMt*hH*cL^)3t|se`Y;CQLR(ET= zo!wq0-*&boCb790zK(U2RTx7rRUh z#>j>)MdDsfs(d-jR;3Ygmr03{v7x-aYR5Gfxp-cv>TJ4=g|0lK-4mK5G zaXJuhc#qA&1e=cn)+qI+kU*JC1zqF;~a zbUGR{SEV2EL1dE9$+Vk3+$ePN^gVj6JL&g+u%;W4ZPri zBr>D1T+a=o{1cbe)U;MhTubKj5w;vp8-p5M(Hu;43favp|D(Hnp$J)v8l0gMZk$M5j>~KkT9stOhaX6 zC<1Z`SRR7YnHJp6^e%jzjClv%h0tUKbKPbcgWp-w&}J#%7yjE)f_Dmq0#T2-S%e8; zR+S!1*eJQ{S=qiky%4<=-{+Y5Mg6%J{F8bnQP1W2gUd}?)!W|9#M^vc3f|9)fZ8L) zjS5;HKYmVQrYWO`MM}QI2aUC);RxU1!mK+KD4;$`!Q~c(NU*y!7cZ6=aIG{69VJr4 zm1bjG$$orRQVdV2o*vx)D-B~%RTczIc@aJ;D?n{o36y2In3|H{!SX`>d#w6HJ}kl68a^tA5}eJa#e=hT2*l^W_6#twjGX)()bl zj`|NrPMuJE@s8p?t$WB9!}Y>BLA%3RpCFJYHM|uY#JyV|?StqBFW`%PUcg*x5Le&u zD_^t?%CN6_6FwwA`IrP#&4p05yot)@AdEE25#O9lJAs>T*}$M|zYt5{ejygRMQARk z_Lo6-U=u#uU%)+hV7D)RctVCBoSSg#vJ5fL$iO*^(Lu&n9ou3})}3~DtIOVQcerb{ z-m$g8>1Z@rG1nZ00%wfMXx(02v$eauy|-3tYiO`{xOs#TuQ*dMawwWm4MlK^jM8R| zNO$hR>m3!08TWT?VoVt6j6-{84BDTR6YaUqnVOyU=GHE^-BsG!X1CINk4;M}V9R<+ z4tA6gg|pdZYtOJ+ZH)!Ip-2??jk|y#zjarV z|7lkdcch!~A;Y6RapZrdCoagu=27DO8{p49THNlH;oF`F32zvuqN7m%qX48G3?umb zgLKv2gBFY))GB4Ac6URImH%I43gVzPQnPeu!e)!s2sRlBI4wu@vSSJd^BE7oIG-tvUv7vnrQIy z={UyhnXoL_pU|RiLX6roL7ugv3bjCL)h&x#V@diYiJ<4;T2LKLj7ea=Du$i_&W`0B zkDpD%hMQMN+s|yItT!xnzX~W@>z_N<xG#f(gX+CuOK752(Lh zo*?V?7Qe;Q%>^LeNm68GXa=-GQuk%&3Ny{Sn)<5yr|~qG`k}+YOphA;vsBip}9t8s>uA@ zOxDWg{CK87G~yi*bNu_~&8JvV_rp`^;;7?sC3amZqBD5)?_AoxOtSasEOEum)5&7! ZQj++iq>!DLRJ^2fwuafq{b_bm`hS@rG)Djc delta 3031 zcmZ`)e@v5i8qeEO=ucXp1re|4uv8jiXs;Ez&VBC z$1MZVRTfdVIf^gfAeW4}ySOt;%+B1!U6xa~?99$x)ZBI#Z`s{F@7q#29e=#ve8120 zd47C9&+~oW>0`og{w5H4L~m@I7!#EV1=>q+2yem>QV31RQh1aSED(odIAjgBiVT>M zh2ud;15^o-?11Qr0JjcA;45(|DKvOhoXr`q8cDJMM`Y{p$<(Z}4u!HTUg?teGe{3N zz!Me%hg5>^6-K2KP%h#z8Oj)#jz}P_BuTONCZ!I?M*qT+0L7-z!27sg_3 z9M2MpBP48Uyheydtr?PP@ z$-vd@6o@QFd}%SkXA$9q#eogkW@M0T*631RCCvG0c$jD9o%Gri*p+_=omL}X_|;aE z9~%hrQL!A~Tc6^1Q5x!8aI!FE>%A zQ3;ys)wsC16lpb1-U)|Uc1DKBo0Eh3>6+zmZ*c|nrY$9ST4SKMZ-v776->1?0i6Pm zoPJ_CztgpyXs)9(CCB+)TF1=`&PIj5*4>7wKE#Qz3WD zaJQ)hwe6vBx^2+A^KsUFi}f`d7${o!c&Azv_~R~0F+fv8%NleH%}JB4@8%>XxJMsFgxLO$6~ZC3irlj@C-`v`@ITu?$hACwnli`N>Dtpkg^F! z`DG>EYF2UB^z!QUrF$A1+nsgw^{(btXT7^=n|V{>&x&zu-+Cq+f7zD<#XcpIMZ0{8 z9@DNzM|&@}9k9ZCFf=gX75I360e|k7Lj%aiqm1EM}-|8Jx+RZDV^({ zM0J*Qm8-RWyOUqD0=E4ZqoL|r82MU(nie z_+?sEM^f0whld#=0!K3gMEv0>OG8tQv%fxyw4Oy+(Ot+`;OI^#6t`yKPu-a^i?piR zx!bkVRo{x*?s(|Cb=cigiKd=ZJnj+UMo$W6dcxQrdh!`|@YP9%$zmO^nHhwg{7Fz% zjf&npID0>Rr{^`k(n9@oLBCOh+vl82HfwoX%plxrqPx(FSG=+Cc^AzV-@6pP@epc& zEhBn3UK64Ce7V3Ph5mR9+~>u(a-N3@vgV2s{dh{dc$l6h-$up5MI`MUPR8GdHDTF- zqTTO{!G?>xi?G>3`elicW@nYF^_3P^qpPWP4*dE%i^H;|tIAeYW~1wB0@v_iRP*3@ z=Dac(o-6*{ONKxS{*#fklFJ4xzED63Ixmz4w9X4_BIbsaR#mN7hj_1+Q0XJ40P6hZ zXgYgFasy}2h?V?Jk0he)avIT0`dNyf7!%kpF4qe2kEdev{rU5*M%gwBk|F*)cTPa>Kp#*_KI zHbDNv36A_T6P1KBPtJDgnTa?QPja*3HG-rOxS_ p-v#zcbdF}wzo8t*ky1Tl%y1Kf$ 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 T{@A%0f2Wpc+pE#*v^L}a14iG8 delta 57878 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 bR|T@#M0U`?!0Tps2h|3aG=1JdS-t)Tax<5- diff --git a/.doctrees/transactron.lib.doctree b/.doctrees/transactron.lib.doctree index 2b7d0e276c7fd4d399e03d3e7ae66c94836c46a1..5b8c3cd8d32055a5e381243f7ca5828bdfe96330 100644 GIT binary patch delta 66855 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 C2Gywm diff --git a/_sources/auto_graph.rst.txt b/_sources/auto_graph.rst.txt index 5d0d74fa6..6c23526fd 100644 --- a/_sources/auto_graph.rst.txt +++ b/_sources/auto_graph.rst.txt @@ -4,12 +4,12 @@ subgraph TransactionModule["TransactionModule"] subgraph CoreTestElaboratable["elaboratable CoreTestElaboratable"] subgraph Core["core Core"] - Core_DiscardBranchVerify["DiscardBranchVerify"] Core_InitFreeRFFifo["InitFreeRFFifo"] + Core_DiscardBranchVerify["DiscardBranchVerify"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_request["request"] WishboneMaster_result["result"] WishboneMaster_WishboneMaster["WishboneMaster"] + WishboneMaster_request["request"] subgraph Forwarder["result Forwarder"] Forwarder_read["read"] Forwarder_write["write"] @@ -25,8 +25,8 @@ end end subgraph WishboneMasterAdapter["bus_master_instr_adapter WishboneMasterAdapter"] - WishboneMasterAdapter_get_read_response["get_read_response"] WishboneMasterAdapter_request_read["request_read"] + WishboneMasterAdapter_get_read_response["get_read_response"] subgraph Serializer["bus_serializer Serializer"] Serializer_Serializer["Serializer"] Serializer_Serializer1["Serializer"] @@ -37,28 +37,28 @@ end end subgraph WishboneMasterAdapter1["bus_master_data_adapter WishboneMasterAdapter"] + WishboneMasterAdapter1_request_read["request_read"] WishboneMasterAdapter1_get_write_response["get_write_response"] - WishboneMasterAdapter1_get_read_response["get_read_response"] WishboneMasterAdapter1_request_write["request_write"] - WishboneMasterAdapter1_request_read["request_read"] + WishboneMasterAdapter1_get_read_response["get_read_response"] subgraph Serializer1["bus_serializer Serializer"] Serializer1_Serializer["Serializer"] Serializer1_Serializer1["Serializer"] Serializer1_Serializer2["Serializer"] Serializer1_Serializer3["Serializer"] subgraph BasicFifo1["pending_requests BasicFifo"] - BasicFifo1_read["read"] BasicFifo1_write["write"] + BasicFifo1_read["read"] end end end subgraph CoreInstructionCounter["core_counter CoreInstructionCounter"] - CoreInstructionCounter_decrement["decrement"] CoreInstructionCounter_increment["increment"] + CoreInstructionCounter_decrement["decrement"] end subgraph FIFO["fifo_fetch FIFO"] - FIFO_write["write"] FIFO_read["read"] + FIFO_write["write"] end subgraph MethodMap["core_counter_increment_discard_map MethodMap"] MethodMap_method["method"] @@ -67,25 +67,25 @@ MethodProduct_method["method"] end subgraph BasicFifo2["free_rf_fifo BasicFifo"] - BasicFifo2_write["write"] BasicFifo2_read["read"] + BasicFifo2_write["write"] end subgraph SimpleCommonBusCacheRefiller["icache_refiller SimpleCommonBusCacheRefiller"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] + SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] SimpleCommonBusCacheRefiller_start_refill["start_refill"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1["SimpleCommonBusCacheRefiller"] - SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] subgraph Forwarder2["resp_fwd Forwarder"] - Forwarder2_read["read"] Forwarder2_write["write"] + Forwarder2_read["read"] end end subgraph ICache["icache ICache"] - ICache_ICache["ICache"] - ICache_issue_req["issue_req"] ICache_accept_res["accept_res"] - ICache_ICache1["ICache"] ICache_MemRead["MemRead"] + ICache_issue_req["issue_req"] + ICache_ICache["ICache"] + ICache_ICache1["ICache"] subgraph HwCounter["perf_loads HwCounter"] HwCounter__incr["_incr"] end @@ -101,9 +101,9 @@ subgraph HwCounter4["perf_flushes HwCounter"] HwCounter4__incr["_incr"] end - subgraph LatencyMeasurer["req_latency LatencyMeasurer"] - LatencyMeasurer__start["_start"] - LatencyMeasurer__stop["_stop"] + subgraph FIFOLatencyMeasurer["req_latency FIFOLatencyMeasurer"] + FIFOLatencyMeasurer__start["_start"] + FIFOLatencyMeasurer__stop["_stop"] subgraph HwExpHistogram["histogram HwExpHistogram"] HwExpHistogram__add["_add"] end @@ -113,10 +113,10 @@ end end subgraph ArgumentsToResultsZipper["req_zipper ArgumentsToResultsZipper"] - ArgumentsToResultsZipper_write_results["write_results"] ArgumentsToResultsZipper_read["read"] - ArgumentsToResultsZipper_peek_arg["peek_arg"] ArgumentsToResultsZipper_write_args["write_args"] + ArgumentsToResultsZipper_write_results["write_results"] + ArgumentsToResultsZipper_peek_arg["peek_arg"] subgraph BasicFifo3["fifo BasicFifo"] BasicFifo3_peek["peek"] BasicFifo3_read["read"] @@ -136,28 +136,47 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] + RegisterFile_perf["perf"] RegisterFile_read2["read2"] - RegisterFile_write["write"] - RegisterFile_read1["read1"] RegisterFile_free["free"] + RegisterFile_read1["read1"] + RegisterFile_write["write"] + subgraph TaggedLatencyMeasurer["perf_rf_valid_time TaggedLatencyMeasurer"] + TaggedLatencyMeasurer__stop["_stop"] + TaggedLatencyMeasurer__start["_start"] + subgraph HwExpHistogram1["histogram HwExpHistogram"] + HwExpHistogram1__add["_add"] + end + subgraph AsyncMemoryBank["slots AsyncMemoryBank"] + AsyncMemoryBank_write["write"] + AsyncMemoryBank_read["read"] + end + end + subgraph HwExpHistogram2["perf_num_valid HwExpHistogram"] + HwExpHistogram2__add["_add"] + end end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_peek["peek"] ReorderBuffer_put["put"] - ReorderBuffer_get_indices["get_indices"] - ReorderBuffer_mark_done["mark_done"] ReorderBuffer_retire["retire"] - subgraph LatencyMeasurer1["perf_rob_wait_time LatencyMeasurer"] - LatencyMeasurer1__start["_start"] - LatencyMeasurer1__stop["_stop"] - subgraph HwExpHistogram1["histogram HwExpHistogram"] - HwExpHistogram1__add["_add"] + ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_get_indices["get_indices"] + ReorderBuffer_peek["peek"] + ReorderBuffer_perf["perf"] + subgraph FIFOLatencyMeasurer1["perf_rob_wait_time FIFOLatencyMeasurer"] + FIFOLatencyMeasurer1__stop["_stop"] + FIFOLatencyMeasurer1__start["_start"] + subgraph HwExpHistogram3["histogram HwExpHistogram"] + HwExpHistogram3__add["_add"] end subgraph FIFO2["fifo FIFO"] FIFO2_write["write"] FIFO2_read["read"] end end + subgraph HwExpHistogram4["perf_rob_size HwExpHistogram"] + HwExpHistogram4__add["_add"] + end end subgraph Fetch["fetch Fetch"] Fetch_Fetch["Fetch"] @@ -165,14 +184,14 @@ Fetch_Fetch1["Fetch"] Fetch_stall_exception["stall_exception"] subgraph BasicFifo4["fetch_target_queue BasicFifo"] - BasicFifo4_read["read"] BasicFifo4_write["write"] + BasicFifo4_read["read"] end end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] - ExceptionCauseRegister_report["report"] ExceptionCauseRegister_get["get"] ExceptionCauseRegister_clear["clear"] + ExceptionCauseRegister_report["report"] subgraph BasicFifo5["fu_report_fifo BasicFifo"] BasicFifo5_read["read"] BasicFifo5_write["write"] @@ -185,8 +204,8 @@ subgraph Collector["result_collector Collector"] Collector_method["method"] subgraph Forwarder4["forwarder Forwarder"] - Forwarder4_read["read"] Forwarder4_write["write"] + Forwarder4_read["read"] end subgraph ManyToOneConnectTrans["connect ManyToOneConnectTrans"] subgraph ConnectTrans1["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -209,47 +228,62 @@ RSFuncBlock_get_result["get_result"] RSFuncBlock_select["select"] subgraph RS["rs RS"] + RS_update["update"] RS_RS["RS"] - RS_take["take"] RS_RS1["RS"] + RS_perf["perf"] RS_RS2["RS"] - RS_insert["insert"] + RS_select["select"] + RS_take["take"] RS_RS3["RS"] RS_RS4["RS"] - RS_update["update"] - RS_select["select"] + RS_insert["insert"] + subgraph TaggedLatencyMeasurer1["perf_rs_wait_time TaggedLatencyMeasurer"] + TaggedLatencyMeasurer1__stop["_stop"] + TaggedLatencyMeasurer1__start["_start"] + subgraph HwExpHistogram5["histogram HwExpHistogram"] + HwExpHistogram5__add["_add"] + end + subgraph AsyncMemoryBank1["slots AsyncMemoryBank"] + AsyncMemoryBank1_write["write"] + AsyncMemoryBank1_read["read"] + end + end + subgraph HwExpHistogram6["perf_num_full HwExpHistogram"] + HwExpHistogram6__add["_add"] + end end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph TaggedCounter["perf_instr TaggedCounter"] TaggedCounter__incr["_incr"] end subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] + ShiftFuncUnit_issue["issue"] subgraph FIFO4["fifo FIFO"] - FIFO4_read["read"] FIFO4_write["write"] + FIFO4_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_issue["issue"] JumpBranchFuncUnit_accept["accept"] + JumpBranchFuncUnit_issue["issue"] subgraph FIFO5["fifo_branch_resolved FIFO"] - FIFO5_write["write"] FIFO5_read["read"] + FIFO5_write["write"] end subgraph TaggedCounter1["perf_instr TaggedCounter"] TaggedCounter1__incr["_incr"] @@ -266,20 +300,20 @@ WakeupSelect2_WakeupSelect["WakeupSelect"] end subgraph ExceptionFuncUnit["func_unit_3 ExceptionFuncUnit"] - ExceptionFuncUnit_issue["issue"] ExceptionFuncUnit_accept["accept"] + ExceptionFuncUnit_issue["issue"] subgraph FIFO7["fifo FIFO"] - FIFO7_read["read"] FIFO7_write["write"] + FIFO7_read["read"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] WakeupSelect3_WakeupSelect["WakeupSelect"] end subgraph PrivilegedFuncUnit["func_unit_4 PrivilegedFuncUnit"] - PrivilegedFuncUnit_accept["accept"] - PrivilegedFuncUnit_precommit["precommit"] PrivilegedFuncUnit_issue["issue"] + PrivilegedFuncUnit_precommit["precommit"] + PrivilegedFuncUnit_accept["accept"] subgraph BasicFifo6["fetch_resume_fifo BasicFifo"] BasicFifo6_read["read"] BasicFifo6_write["write"] @@ -291,8 +325,8 @@ subgraph Collector1["collector Collector"] Collector1_method["method"] subgraph Forwarder5["forwarder Forwarder"] - Forwarder5_write["write"] Forwarder5_read["read"] + Forwarder5_write["write"] end subgraph ManyToOneConnectTrans1["connect ManyToOneConnectTrans"] subgraph ConnectTrans4["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -314,36 +348,36 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] + LSUDummy_insert["insert"] + LSUDummy_LSUDummy["LSUDummy"] + LSUDummy_update["update"] + LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_select["select"] LSUDummy_precommit["precommit"] - LSUDummy_LSUDummy["LSUDummy"] LSUDummy_get_result["get_result"] - LSUDummy_LSUDummy1["LSUDummy"] - LSUDummy_insert["insert"] LSUDummy_LSUDummy2["LSUDummy"] - LSUDummy_update["update"] subgraph Forwarder6["forwarder Forwarder"] Forwarder6_read["read"] Forwarder6_write["write"] end subgraph LSURequester["requester LSURequester"] - LSURequester_issue_cond2["issue_cond2"] - LSURequester_accept_cond1["accept_cond1"] - LSURequester_issue_cond0["issue_cond0"] - LSURequester_issue["issue"] LSURequester_accept_cond0["accept_cond0"] + LSURequester_issue["issue"] + LSURequester_accept_cond1["accept_cond1"] + LSURequester_issue_cond2["issue_cond2"] LSURequester_issue_cond1["issue_cond1"] + LSURequester_issue_cond0["issue_cond0"] LSURequester_accept["accept"] end end subgraph CSRUnit["rs_block_2 CSRUnit"] + CSRUnit_insert["insert"] + CSRUnit_CSRUnit["CSRUnit"] CSRUnit_select["select"] + CSRUnit_fetch_resume["fetch_resume"] CSRUnit_update["update"] - CSRUnit_CSRUnit["CSRUnit"] - CSRUnit_precommit["precommit"] CSRUnit_get_result["get_result"] - CSRUnit_insert["insert"] - CSRUnit_fetch_resume["fetch_resume"] + CSRUnit_precommit["precommit"] end subgraph MethodTryProduct["InstructionPrecommitKey_unifier MethodTryProduct"] MethodTryProduct_MethodTryProduct["MethodTryProduct"] @@ -379,46 +413,46 @@ GenericCSRRegisters_GenericCSRRegisters["GenericCSRRegisters"] subgraph MachineModeCSRRegisters["m_mode MachineModeCSRRegisters"] subgraph CSRRegister["mcause CSRRegister"] - CSRRegister__fu_write["_fu_write"] - CSRRegister_write["write"] CSRRegister__fu_read["_fu_read"] + CSRRegister_write["write"] + CSRRegister__fu_write["_fu_write"] end subgraph CSRRegister1["mtvec CSRRegister"] + CSRRegister1__fu_write["_fu_write"] CSRRegister1__fu_read["_fu_read"] CSRRegister1_read["read"] - CSRRegister1__fu_write["_fu_write"] end subgraph CSRRegister2["mepc CSRRegister"] + CSRRegister2_read["read"] + CSRRegister2__fu_write["_fu_write"] CSRRegister2_write["write"] CSRRegister2__fu_read["_fu_read"] - CSRRegister2__fu_write["_fu_write"] - CSRRegister2_read["read"] end end subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] DoubleCounterCSR_increment["increment"] subgraph CSRRegister3["register_low CSRRegister"] + CSRRegister3__fu_read["_fu_read"] CSRRegister3_read["read"] CSRRegister3_write["write"] - CSRRegister3__fu_read["_fu_read"] end subgraph CSRRegister4["register_high CSRRegister"] CSRRegister4_read["read"] - CSRRegister4__fu_read["_fu_read"] CSRRegister4_write["write"] + CSRRegister4__fu_read["_fu_read"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5_write["write"] CSRRegister5__fu_read["_fu_read"] CSRRegister5_read["read"] + CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] CSRRegister6_write["write"] - CSRRegister6__fu_read["_fu_read"] CSRRegister6_read["read"] + CSRRegister6__fu_read["_fu_read"] end end end @@ -441,8 +475,8 @@ RegAllocation_RegAllocation["RegAllocation"] end subgraph FIFO10["rename_out_buf FIFO"] - FIFO10_read["read"] FIFO10_write["write"] + FIFO10_read["read"] end subgraph Renaming["renaming Renaming"] Renaming_Renaming["Renaming"] @@ -455,8 +489,8 @@ ROBAllocation_ROBAllocation["ROBAllocation"] end subgraph FIFO12["rs_select_out_buf FIFO"] - FIFO12_read["read"] FIFO12_write["write"] + FIFO12_read["read"] end subgraph RSSelection["rs_selector RSSelection"] RSSelection_RSSelection["RSSelection"] @@ -476,24 +510,24 @@ ConnectTrans11_ConnectTrans["ConnectTrans"] end subgraph Retirement["retirement Retirement"] - Retirement_Retirement_cond1["Retirement_cond1"] Retirement_core_state["core_state"] - Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement["Retirement"] + Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement1["Retirement"] Retirement_Retirement2["Retirement"] Retirement_Retirement3["Retirement"] Retirement_Retirement4["Retirement"] + Retirement_Retirement_cond1["Retirement_cond1"] subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister7["register_low CSRRegister"] CSRRegister7_read["read"] - CSRRegister7__fu_read["_fu_read"] CSRRegister7_write["write"] + CSRRegister7__fu_read["_fu_read"] end subgraph CSRRegister8["register_high CSRRegister"] - CSRRegister8__fu_read["_fu_read"] CSRRegister8_write["write"] + CSRRegister8__fu_read["_fu_read"] CSRRegister8_read["read"] end end @@ -514,32 +548,34 @@ end end subgraph TransactionManager["transactionManager TransactionManager"] + TransactionManager_issue_cond2_LSUDummy["issue_cond2_LSUDummy"] + TransactionManager_issue_cond1_LSUDummy["issue_cond1_LSUDummy"] TransactionManager_issue_cond0_LSUDummy["issue_cond0_LSUDummy"] - TransactionManager_Retirement_cond0_Retirement["Retirement_cond0_Retirement"] + TransactionManager_Retirement_cond1_Retirement["Retirement_cond1_Retirement"] + TransactionManager_accept_cond0_LSUDummy["accept_cond0_LSUDummy"] + TransactionManager_Retirement_Retirement_cond0["Retirement_Retirement_cond0"] TransactionManager_accept_cond1_LSUDummy["accept_cond1_LSUDummy"] - TransactionManager_issue_cond1_LSUDummy["issue_cond1_LSUDummy"] - TransactionManager_issue_cond2_LSUDummy["issue_cond2_LSUDummy"] - TransactionManager_Retirement_Retirement_cond1["Retirement_Retirement_cond1"] - TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] end end Core_InitFreeRFFifo --> BasicFifo2_write - Retirement_Retirement2 --> BasicFifo2_write - TransactionManager_Retirement_Retirement_cond1 --> BasicFifo2_write - TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write + Retirement_Retirement4 --> BasicFifo2_write + TransactionManager_Retirement_cond1_Retirement --> BasicFifo2_write + TransactionManager_Retirement_Retirement_cond0 --> BasicFifo2_write FIFO5_read --> Core_DiscardBranchVerify WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write - SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> WishboneMasterAdapter_request_read - SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> Serializer_Serializer1 - SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> BasicFifo_write - SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> WishboneMaster_request - WishboneMasterAdapter_get_read_response --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller - Serializer_Serializer --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller - BasicFifo_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller - WishboneMaster_result --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller - Forwarder_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller - SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Forwarder2_write + RegisterFile_perf --> HwExpHistogram2__add + ReorderBuffer_perf --> HwExpHistogram4__add + SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMasterAdapter_request_read + SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer + SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write + SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request + WishboneMasterAdapter_get_read_response --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 + Serializer_Serializer1 --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 + BasicFifo_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 + WishboneMaster_result --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 + Forwarder_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 + SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> Forwarder2_write ICache_ICache1 <--> HwCounter4__incr ArgumentsToResultsZipper_peek_arg --> ICache_MemRead BasicFifo3_peek --> ICache_MemRead @@ -551,28 +587,28 @@ SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache Forwarder2_read --> ICache_ICache ICache_ICache <--> HwCounter3__incr - Fetch_Fetch --> ICache_issue_req - Fetch_Fetch <--> HwCounter__incr - Fetch_Fetch <--> LatencyMeasurer__start - Fetch_Fetch --> FIFO1_write - Fetch_Fetch --> ArgumentsToResultsZipper_write_args - Fetch_Fetch --> BasicFifo3_write - Fetch_Fetch --> BasicFifo4_write - BasicFifo4_read --> Fetch_Fetch1 - ICache_accept_res --> Fetch_Fetch1 - Fetch_Fetch1 <--> LatencyMeasurer__stop - FIFO1_read --> Fetch_Fetch1 - Fetch_Fetch1 --> HwExpHistogram__add - ArgumentsToResultsZipper_read --> Fetch_Fetch1 - BasicFifo3_read --> Fetch_Fetch1 - Forwarder3_read --> Fetch_Fetch1 - Fetch_Fetch1 --> MethodProduct_method + Fetch_Fetch1 --> ICache_issue_req + Fetch_Fetch1 <--> HwCounter__incr + Fetch_Fetch1 <--> FIFOLatencyMeasurer__start + Fetch_Fetch1 --> FIFO1_write + Fetch_Fetch1 --> ArgumentsToResultsZipper_write_args + Fetch_Fetch1 --> BasicFifo3_write + Fetch_Fetch1 --> BasicFifo4_write + BasicFifo4_read --> Fetch_Fetch + ICache_accept_res --> Fetch_Fetch + Fetch_Fetch <--> FIFOLatencyMeasurer__stop + FIFO1_read --> Fetch_Fetch + Fetch_Fetch --> HwExpHistogram__add + ArgumentsToResultsZipper_read --> Fetch_Fetch + BasicFifo3_read --> Fetch_Fetch + Forwarder3_read --> Fetch_Fetch + Fetch_Fetch --> MethodProduct_method AdapterTrans_AdapterTrans_method --> MethodProduct_method - Fetch_Fetch1 --> FIFO_write + Fetch_Fetch --> FIFO_write AdapterTrans_AdapterTrans_method --> FIFO_write - Fetch_Fetch1 --> MethodMap_method + Fetch_Fetch --> MethodMap_method AdapterTrans_AdapterTrans_method --> MethodMap_method - Fetch_Fetch1 <--> CoreInstructionCounter_increment + Fetch_Fetch <--> CoreInstructionCounter_increment AdapterTrans_AdapterTrans_method <--> CoreInstructionCounter_increment FIFO_read --> DecodeStage_DecodeStage DecodeStage_DecodeStage <--> HwCounter6__incr @@ -582,32 +618,34 @@ RegAllocation_RegAllocation --> FIFO9_write FIFO9_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename - Retirement_Retirement2 --> FRAT_rename - TransactionManager_Retirement_Retirement_cond1 --> FRAT_rename + Retirement_Retirement4 --> FRAT_rename + TransactionManager_Retirement_cond1_Retirement --> FRAT_rename Renaming_Renaming --> FIFO10_write FIFO10_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put - ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start + ROBAllocation_ROBAllocation <--> FIFOLatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO2_write ROBAllocation_ROBAllocation --> FIFO11_write - FIFO11_read --> RSSelection_RSSelection - RSSelection_RSSelection --> Forwarder8_write - Forwarder8_read --> RSSelection_RSSelection3 - Forwarder8_read --> RSSelection_RSSelection2 + FIFO11_read --> RSSelection_RSSelection3 + RSSelection_RSSelection3 --> Forwarder8_write + Forwarder8_read --> RSSelection_RSSelection Forwarder8_read --> RSSelection_RSSelection1 - RSFuncBlock_select --> RSSelection_RSSelection3 - RS_select --> RSSelection_RSSelection3 - RSSelection_RSSelection3 --> FIFO12_write - RSSelection_RSSelection2 --> FIFO12_write + Forwarder8_read --> RSSelection_RSSelection2 + RSFuncBlock_select --> RSSelection_RSSelection + RS_select --> RSSelection_RSSelection + RSSelection_RSSelection --> FIFO12_write RSSelection_RSSelection1 --> FIFO12_write - RSSelection_RSSelection2 <--> LSUDummy_select - RSSelection_RSSelection1 <--> CSRUnit_select + RSSelection_RSSelection2 --> FIFO12_write + RSSelection_RSSelection1 <--> LSUDummy_select + RSSelection_RSSelection2 <--> CSRUnit_select FIFO12_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion Retirement_core_state --> RSInsertion_RSInsertion RSInsertion_RSInsertion --> RSFuncBlock_insert RSInsertion_RSInsertion --> RS_insert + RSInsertion_RSInsertion --> TaggedLatencyMeasurer1__start + RSInsertion_RSInsertion --> AsyncMemoryBank1_write RSInsertion_RSInsertion --> LSUDummy_insert RSInsertion_RSInsertion --> CSRUnit_insert BasicFifo5_read --> ConnectTrans_ConnectTrans @@ -617,22 +655,40 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume - Retirement_Retirement1 --> Fetch_resume + Retirement_Retirement --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done ResultAnnouncement_ResultAnnouncement --> RegisterFile_write + ResultAnnouncement_ResultAnnouncement --> TaggedLatencyMeasurer__start + ResultAnnouncement_ResultAnnouncement --> AsyncMemoryBank_write ResultAnnouncement_ResultAnnouncement --> MethodProduct1_method ResultAnnouncement_ResultAnnouncement --> RSFuncBlock_update ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update ResultAnnouncement_ResultAnnouncement --> CSRUnit_update - RS_RS --> WakeupSelect_WakeupSelect + RS_perf --> HwExpHistogram6__add + RS_RS2 --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect RS_take --> WakeupSelect3_WakeupSelect RS_take --> WakeupSelect4_WakeupSelect + WakeupSelect_WakeupSelect --> TaggedLatencyMeasurer1__stop + WakeupSelect1_WakeupSelect --> TaggedLatencyMeasurer1__stop + WakeupSelect2_WakeupSelect --> TaggedLatencyMeasurer1__stop + WakeupSelect3_WakeupSelect --> TaggedLatencyMeasurer1__stop + WakeupSelect4_WakeupSelect --> TaggedLatencyMeasurer1__stop + AsyncMemoryBank1_read --> WakeupSelect_WakeupSelect + AsyncMemoryBank1_read --> WakeupSelect1_WakeupSelect + AsyncMemoryBank1_read --> WakeupSelect2_WakeupSelect + AsyncMemoryBank1_read --> WakeupSelect3_WakeupSelect + AsyncMemoryBank1_read --> WakeupSelect4_WakeupSelect + WakeupSelect_WakeupSelect --> HwExpHistogram5__add + WakeupSelect1_WakeupSelect --> HwExpHistogram5__add + WakeupSelect2_WakeupSelect --> HwExpHistogram5__add + WakeupSelect3_WakeupSelect --> HwExpHistogram5__add + WakeupSelect4_WakeupSelect --> HwExpHistogram5__add WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> TaggedCounter__incr WakeupSelect_WakeupSelect --> FIFO3_write @@ -650,7 +706,7 @@ ConnectTrans3_ConnectTrans --> BasicFifo5_write WakeupSelect2_WakeupSelect --> FIFO6_write WakeupSelect2_WakeupSelect --> FIFO5_write - RS_RS2 --> WakeupSelect3_WakeupSelect + RS_RS --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO7_write RS_RS1 --> WakeupSelect4_WakeupSelect @@ -671,12 +727,12 @@ PrivilegedFuncUnit_accept --> ConnectTrans8_ConnectTrans CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo6_write - LSUDummy_LSUDummy2 --> Forwarder6_write + LSUDummy_LSUDummy --> Forwarder6_write TransactionManager_issue_cond2_LSUDummy --> Forwarder6_write - TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write - TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write - TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write TransactionManager_issue_cond0_LSUDummy --> Forwarder6_write + TransactionManager_accept_cond0_LSUDummy --> Forwarder6_write + TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write + TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -698,45 +754,54 @@ LSUDummy_get_result --> ConnectTrans2_ConnectTrans Forwarder6_read --> ConnectTrans2_ConnectTrans CSRUnit_get_result --> ConnectTrans3_ConnectTrans - MethodTryProduct_MethodTryProduct1 --> PrivilegedFuncUnit_precommit - MethodTryProduct_MethodTryProduct1 <--> InterruptController_mret + MethodTryProduct_MethodTryProduct2 --> PrivilegedFuncUnit_precommit + MethodTryProduct_MethodTryProduct2 <--> InterruptController_mret MethodTryProduct_MethodTryProduct --> LSUDummy_precommit - MethodTryProduct_MethodTryProduct2 --> CSRUnit_precommit + MethodTryProduct_MethodTryProduct1 --> CSRUnit_precommit ConnectTrans9_ConnectTrans --> Forwarder7_write ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo6_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans - ReorderBuffer_peek --> Retirement_Retirement - ReorderBuffer_peek --> Retirement_Retirement3 + ReorderBuffer_peek --> Retirement_Retirement1 ReorderBuffer_peek --> Retirement_Retirement2 - ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond1 - ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement - Retirement_Retirement --> MethodTryProduct_method - ExceptionCauseRegister_get --> Retirement_Retirement3 - ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond1 - ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement - Retirement_Retirement2 <--> ReorderBuffer_retire - TransactionManager_Retirement_Retirement_cond1 <--> ReorderBuffer_retire - TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire - Retirement_Retirement2 <--> LatencyMeasurer1__stop - TransactionManager_Retirement_Retirement_cond1 <--> LatencyMeasurer1__stop - TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop - FIFO2_read --> Retirement_Retirement2 - FIFO2_read --> TransactionManager_Retirement_Retirement_cond1 - FIFO2_read --> TransactionManager_Retirement_cond0_Retirement - Retirement_Retirement2 --> HwExpHistogram1__add - TransactionManager_Retirement_Retirement_cond1 --> HwExpHistogram1__add - TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add - CoreInstructionCounter_decrement --> Retirement_Retirement2 - CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond1 - CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement - RRAT_peek --> Retirement_Retirement2 - RRAT_peek --> TransactionManager_Retirement_Retirement_cond1 - Retirement_Retirement2 --> RegisterFile_free - TransactionManager_Retirement_Retirement_cond1 --> RegisterFile_free - TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free - CSRRegister1_read --> Retirement_Retirement1 - Retirement_Retirement1 <--> ExceptionCauseRegister_clear + ReorderBuffer_peek --> Retirement_Retirement4 + ReorderBuffer_peek --> TransactionManager_Retirement_cond1_Retirement + ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond0 + Retirement_Retirement1 --> MethodTryProduct_method + ExceptionCauseRegister_get --> Retirement_Retirement2 + ExceptionCauseRegister_get --> TransactionManager_Retirement_cond1_Retirement + ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond0 + Retirement_Retirement4 <--> ReorderBuffer_retire + TransactionManager_Retirement_cond1_Retirement <--> ReorderBuffer_retire + TransactionManager_Retirement_Retirement_cond0 <--> ReorderBuffer_retire + Retirement_Retirement4 <--> FIFOLatencyMeasurer1__stop + TransactionManager_Retirement_cond1_Retirement <--> FIFOLatencyMeasurer1__stop + TransactionManager_Retirement_Retirement_cond0 <--> FIFOLatencyMeasurer1__stop + FIFO2_read --> Retirement_Retirement4 + FIFO2_read --> TransactionManager_Retirement_cond1_Retirement + FIFO2_read --> TransactionManager_Retirement_Retirement_cond0 + Retirement_Retirement4 --> HwExpHistogram3__add + TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram3__add + TransactionManager_Retirement_Retirement_cond0 --> HwExpHistogram3__add + CoreInstructionCounter_decrement --> Retirement_Retirement4 + CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond1_Retirement + CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond0 + RRAT_peek --> Retirement_Retirement4 + RRAT_peek --> TransactionManager_Retirement_cond1_Retirement + Retirement_Retirement4 --> RegisterFile_free + TransactionManager_Retirement_cond1_Retirement --> RegisterFile_free + TransactionManager_Retirement_Retirement_cond0 --> RegisterFile_free + Retirement_Retirement4 --> TaggedLatencyMeasurer__stop + TransactionManager_Retirement_cond1_Retirement --> TaggedLatencyMeasurer__stop + TransactionManager_Retirement_Retirement_cond0 --> TaggedLatencyMeasurer__stop + AsyncMemoryBank_read --> Retirement_Retirement4 + AsyncMemoryBank_read --> TransactionManager_Retirement_cond1_Retirement + AsyncMemoryBank_read --> TransactionManager_Retirement_Retirement_cond0 + Retirement_Retirement4 --> HwExpHistogram1__add + TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram1__add + TransactionManager_Retirement_Retirement_cond0 --> HwExpHistogram1__add + CSRRegister1_read --> Retirement_Retirement + Retirement_Retirement <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -749,52 +814,52 @@ GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans1_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt TransactionManager_issue_cond2_LSUDummy <--> LSURequester_issue_cond2 - TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy1 - TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy1 - TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy1 + TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy2 + TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy2 + TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy2 TransactionManager_issue_cond2_LSUDummy --> LSURequester_issue - TransactionManager_issue_cond1_LSUDummy --> LSURequester_issue TransactionManager_issue_cond0_LSUDummy --> LSURequester_issue - TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy - TransactionManager_accept_cond1_LSUDummy <--> LSUDummy_LSUDummy - LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 - LSURequester_accept --> TransactionManager_accept_cond1_LSUDummy - TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 - WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 - Serializer1_Serializer1 --> TransactionManager_LSUDummy_accept_cond0 - BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 + TransactionManager_issue_cond1_LSUDummy --> LSURequester_issue + TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 + TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write + TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer + TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write + TransactionManager_issue_cond1_LSUDummy --> BasicFifo1_write + TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request + TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request + TransactionManager_accept_cond0_LSUDummy <--> LSURequester_accept_cond0 + WishboneMasterAdapter1_get_write_response --> TransactionManager_accept_cond0_LSUDummy + Serializer1_Serializer1 --> TransactionManager_accept_cond0_LSUDummy + BasicFifo1_read --> TransactionManager_accept_cond0_LSUDummy BasicFifo1_read --> TransactionManager_accept_cond1_LSUDummy - WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 + WishboneMaster1_result --> TransactionManager_accept_cond0_LSUDummy WishboneMaster1_result --> TransactionManager_accept_cond1_LSUDummy - Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 + Forwarder1_read --> TransactionManager_accept_cond0_LSUDummy Forwarder1_read --> TransactionManager_accept_cond1_LSUDummy - TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement4 - TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement4 - TransactionManager_Retirement_Retirement_cond1 --> CSRRegister_write - TransactionManager_Retirement_cond0_Retirement --> CSRRegister_write - TransactionManager_Retirement_Retirement_cond1 --> CSRRegister2_write - TransactionManager_Retirement_cond0_Retirement --> CSRRegister2_write - TransactionManager_Retirement_Retirement_cond1 <--> InterruptController_entry - TransactionManager_Retirement_cond0_Retirement <--> InterruptController_entry - TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement_cond1 - TransactionManager_accept_cond1_LSUDummy <--> LSURequester_accept_cond1 - WishboneMasterAdapter1_get_read_response --> TransactionManager_accept_cond1_LSUDummy - Serializer1_Serializer --> TransactionManager_accept_cond1_LSUDummy - TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement_cond0 - TransactionManager_Retirement_cond0_Retirement --> RRAT_commit - TransactionManager_Retirement_cond0_Retirement <--> DoubleCounterCSR2_increment - CSRRegister7_read --> TransactionManager_Retirement_cond0_Retirement - TransactionManager_Retirement_cond0_Retirement --> CSRRegister7_write - CSRRegister8_read --> TransactionManager_Retirement_cond0_Retirement - TransactionManager_Retirement_cond0_Retirement --> CSRRegister8_write - TransactionManager_Retirement_cond0_Retirement <--> HwCounter7__incr + TransactionManager_accept_cond0_LSUDummy <--> LSUDummy_LSUDummy1 + TransactionManager_accept_cond1_LSUDummy <--> LSUDummy_LSUDummy1 + LSURequester_accept --> TransactionManager_accept_cond0_LSUDummy + LSURequester_accept --> TransactionManager_accept_cond1_LSUDummy TransactionManager_issue_cond1_LSUDummy <--> LSURequester_issue_cond1 TransactionManager_issue_cond1_LSUDummy --> WishboneMasterAdapter1_request_read TransactionManager_issue_cond1_LSUDummy --> Serializer1_Serializer3 - TransactionManager_issue_cond1_LSUDummy --> BasicFifo1_write - TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write - TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request - TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request - TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 - TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write - TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer2 + TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 + TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement3 + TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement3 + TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write + TransactionManager_Retirement_Retirement_cond0 --> CSRRegister_write + TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write + TransactionManager_Retirement_Retirement_cond0 --> CSRRegister2_write + TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry + TransactionManager_Retirement_Retirement_cond0 <--> InterruptController_entry + TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement_cond0 + TransactionManager_Retirement_Retirement_cond0 --> RRAT_commit + TransactionManager_Retirement_Retirement_cond0 <--> DoubleCounterCSR2_increment + CSRRegister7_read --> TransactionManager_Retirement_Retirement_cond0 + TransactionManager_Retirement_Retirement_cond0 --> CSRRegister7_write + CSRRegister8_read --> TransactionManager_Retirement_Retirement_cond0 + TransactionManager_Retirement_Retirement_cond0 --> CSRRegister8_write + TransactionManager_Retirement_Retirement_cond0 <--> HwCounter7__incr + TransactionManager_accept_cond1_LSUDummy <--> LSURequester_accept_cond1 + WishboneMasterAdapter1_get_read_response --> TransactionManager_accept_cond1_LSUDummy + Serializer1_Serializer2 --> TransactionManager_accept_cond1_LSUDummy diff --git a/api.html b/api.html index 301606e39..a64d2a0d0 100644 --- a/api.html +++ b/api.html @@ -259,7 +259,7 @@

    transactron

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/assumptions.html b/assumptions.html index 5714ab429..2949bba04 100644 --- a/assumptions.html +++ b/assumptions.html @@ -104,7 +104,7 @@

    List of assumptions made during development

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/auto_graph.html b/auto_graph.html index ef3752d69..91bc261ff 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -83,12 +83,12 @@ subgraph TransactionModule["TransactionModule"] subgraph CoreTestElaboratable["elaboratable CoreTestElaboratable"] subgraph Core["core Core"] - Core_DiscardBranchVerify["DiscardBranchVerify"] Core_InitFreeRFFifo["InitFreeRFFifo"] + Core_DiscardBranchVerify["DiscardBranchVerify"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_request["request"] WishboneMaster_result["result"] WishboneMaster_WishboneMaster["WishboneMaster"] + WishboneMaster_request["request"] subgraph Forwarder["result Forwarder"] Forwarder_read["read"] Forwarder_write["write"] @@ -104,8 +104,8 @@ end end subgraph WishboneMasterAdapter["bus_master_instr_adapter WishboneMasterAdapter"] - WishboneMasterAdapter_get_read_response["get_read_response"] WishboneMasterAdapter_request_read["request_read"] + WishboneMasterAdapter_get_read_response["get_read_response"] subgraph Serializer["bus_serializer Serializer"] Serializer_Serializer["Serializer"] Serializer_Serializer1["Serializer"] @@ -116,28 +116,28 @@ end end subgraph WishboneMasterAdapter1["bus_master_data_adapter WishboneMasterAdapter"] + WishboneMasterAdapter1_request_read["request_read"] WishboneMasterAdapter1_get_write_response["get_write_response"] - WishboneMasterAdapter1_get_read_response["get_read_response"] WishboneMasterAdapter1_request_write["request_write"] - WishboneMasterAdapter1_request_read["request_read"] + WishboneMasterAdapter1_get_read_response["get_read_response"] subgraph Serializer1["bus_serializer Serializer"] Serializer1_Serializer["Serializer"] Serializer1_Serializer1["Serializer"] Serializer1_Serializer2["Serializer"] Serializer1_Serializer3["Serializer"] subgraph BasicFifo1["pending_requests BasicFifo"] - BasicFifo1_read["read"] BasicFifo1_write["write"] + BasicFifo1_read["read"] end end end subgraph CoreInstructionCounter["core_counter CoreInstructionCounter"] - CoreInstructionCounter_decrement["decrement"] CoreInstructionCounter_increment["increment"] + CoreInstructionCounter_decrement["decrement"] end subgraph FIFO["fifo_fetch FIFO"] - FIFO_write["write"] FIFO_read["read"] + FIFO_write["write"] end subgraph MethodMap["core_counter_increment_discard_map MethodMap"] MethodMap_method["method"] @@ -146,25 +146,25 @@ MethodProduct_method["method"] end subgraph BasicFifo2["free_rf_fifo BasicFifo"] - BasicFifo2_write["write"] BasicFifo2_read["read"] + BasicFifo2_write["write"] end subgraph SimpleCommonBusCacheRefiller["icache_refiller SimpleCommonBusCacheRefiller"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] + SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] SimpleCommonBusCacheRefiller_start_refill["start_refill"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1["SimpleCommonBusCacheRefiller"] - SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] subgraph Forwarder2["resp_fwd Forwarder"] - Forwarder2_read["read"] Forwarder2_write["write"] + Forwarder2_read["read"] end end subgraph ICache["icache ICache"] - ICache_ICache["ICache"] - ICache_issue_req["issue_req"] ICache_accept_res["accept_res"] - ICache_ICache1["ICache"] ICache_MemRead["MemRead"] + ICache_issue_req["issue_req"] + ICache_ICache["ICache"] + ICache_ICache1["ICache"] subgraph HwCounter["perf_loads HwCounter"] HwCounter__incr["_incr"] end @@ -180,9 +180,9 @@ subgraph HwCounter4["perf_flushes HwCounter"] HwCounter4__incr["_incr"] end - subgraph LatencyMeasurer["req_latency LatencyMeasurer"] - LatencyMeasurer__start["_start"] - LatencyMeasurer__stop["_stop"] + subgraph FIFOLatencyMeasurer["req_latency FIFOLatencyMeasurer"] + FIFOLatencyMeasurer__start["_start"] + FIFOLatencyMeasurer__stop["_stop"] subgraph HwExpHistogram["histogram HwExpHistogram"] HwExpHistogram__add["_add"] end @@ -192,10 +192,10 @@ end end subgraph ArgumentsToResultsZipper["req_zipper ArgumentsToResultsZipper"] - ArgumentsToResultsZipper_write_results["write_results"] ArgumentsToResultsZipper_read["read"] - ArgumentsToResultsZipper_peek_arg["peek_arg"] ArgumentsToResultsZipper_write_args["write_args"] + ArgumentsToResultsZipper_write_results["write_results"] + ArgumentsToResultsZipper_peek_arg["peek_arg"] subgraph BasicFifo3["fifo BasicFifo"] BasicFifo3_peek["peek"] BasicFifo3_read["read"] @@ -215,28 +215,47 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] + RegisterFile_perf["perf"] RegisterFile_read2["read2"] - RegisterFile_write["write"] - RegisterFile_read1["read1"] RegisterFile_free["free"] + RegisterFile_read1["read1"] + RegisterFile_write["write"] + subgraph TaggedLatencyMeasurer["perf_rf_valid_time TaggedLatencyMeasurer"] + TaggedLatencyMeasurer__stop["_stop"] + TaggedLatencyMeasurer__start["_start"] + subgraph HwExpHistogram1["histogram HwExpHistogram"] + HwExpHistogram1__add["_add"] + end + subgraph AsyncMemoryBank["slots AsyncMemoryBank"] + AsyncMemoryBank_write["write"] + AsyncMemoryBank_read["read"] + end + end + subgraph HwExpHistogram2["perf_num_valid HwExpHistogram"] + HwExpHistogram2__add["_add"] + end end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_peek["peek"] ReorderBuffer_put["put"] - ReorderBuffer_get_indices["get_indices"] - ReorderBuffer_mark_done["mark_done"] ReorderBuffer_retire["retire"] - subgraph LatencyMeasurer1["perf_rob_wait_time LatencyMeasurer"] - LatencyMeasurer1__start["_start"] - LatencyMeasurer1__stop["_stop"] - subgraph HwExpHistogram1["histogram HwExpHistogram"] - HwExpHistogram1__add["_add"] + ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_get_indices["get_indices"] + ReorderBuffer_peek["peek"] + ReorderBuffer_perf["perf"] + subgraph FIFOLatencyMeasurer1["perf_rob_wait_time FIFOLatencyMeasurer"] + FIFOLatencyMeasurer1__stop["_stop"] + FIFOLatencyMeasurer1__start["_start"] + subgraph HwExpHistogram3["histogram HwExpHistogram"] + HwExpHistogram3__add["_add"] end subgraph FIFO2["fifo FIFO"] FIFO2_write["write"] FIFO2_read["read"] end end + subgraph HwExpHistogram4["perf_rob_size HwExpHistogram"] + HwExpHistogram4__add["_add"] + end end subgraph Fetch["fetch Fetch"] Fetch_Fetch["Fetch"] @@ -244,14 +263,14 @@ Fetch_Fetch1["Fetch"] Fetch_stall_exception["stall_exception"] subgraph BasicFifo4["fetch_target_queue BasicFifo"] - BasicFifo4_read["read"] BasicFifo4_write["write"] + BasicFifo4_read["read"] end end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] - ExceptionCauseRegister_report["report"] ExceptionCauseRegister_get["get"] ExceptionCauseRegister_clear["clear"] + ExceptionCauseRegister_report["report"] subgraph BasicFifo5["fu_report_fifo BasicFifo"] BasicFifo5_read["read"] BasicFifo5_write["write"] @@ -264,8 +283,8 @@ subgraph Collector["result_collector Collector"] Collector_method["method"] subgraph Forwarder4["forwarder Forwarder"] - Forwarder4_read["read"] Forwarder4_write["write"] + Forwarder4_read["read"] end subgraph ManyToOneConnectTrans["connect ManyToOneConnectTrans"] subgraph ConnectTrans1["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -288,47 +307,62 @@ RSFuncBlock_get_result["get_result"] RSFuncBlock_select["select"] subgraph RS["rs RS"] + RS_update["update"] RS_RS["RS"] - RS_take["take"] RS_RS1["RS"] + RS_perf["perf"] RS_RS2["RS"] - RS_insert["insert"] + RS_select["select"] + RS_take["take"] RS_RS3["RS"] RS_RS4["RS"] - RS_update["update"] - RS_select["select"] + RS_insert["insert"] + subgraph TaggedLatencyMeasurer1["perf_rs_wait_time TaggedLatencyMeasurer"] + TaggedLatencyMeasurer1__stop["_stop"] + TaggedLatencyMeasurer1__start["_start"] + subgraph HwExpHistogram5["histogram HwExpHistogram"] + HwExpHistogram5__add["_add"] + end + subgraph AsyncMemoryBank1["slots AsyncMemoryBank"] + AsyncMemoryBank1_write["write"] + AsyncMemoryBank1_read["read"] + end + end + subgraph HwExpHistogram6["perf_num_full HwExpHistogram"] + HwExpHistogram6__add["_add"] + end end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph TaggedCounter["perf_instr TaggedCounter"] TaggedCounter__incr["_incr"] end subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] + ShiftFuncUnit_issue["issue"] subgraph FIFO4["fifo FIFO"] - FIFO4_read["read"] FIFO4_write["write"] + FIFO4_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_issue["issue"] JumpBranchFuncUnit_accept["accept"] + JumpBranchFuncUnit_issue["issue"] subgraph FIFO5["fifo_branch_resolved FIFO"] - FIFO5_write["write"] FIFO5_read["read"] + FIFO5_write["write"] end subgraph TaggedCounter1["perf_instr TaggedCounter"] TaggedCounter1__incr["_incr"] @@ -345,20 +379,20 @@ WakeupSelect2_WakeupSelect["WakeupSelect"] end subgraph ExceptionFuncUnit["func_unit_3 ExceptionFuncUnit"] - ExceptionFuncUnit_issue["issue"] ExceptionFuncUnit_accept["accept"] + ExceptionFuncUnit_issue["issue"] subgraph FIFO7["fifo FIFO"] - FIFO7_read["read"] FIFO7_write["write"] + FIFO7_read["read"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] WakeupSelect3_WakeupSelect["WakeupSelect"] end subgraph PrivilegedFuncUnit["func_unit_4 PrivilegedFuncUnit"] - PrivilegedFuncUnit_accept["accept"] - PrivilegedFuncUnit_precommit["precommit"] PrivilegedFuncUnit_issue["issue"] + PrivilegedFuncUnit_precommit["precommit"] + PrivilegedFuncUnit_accept["accept"] subgraph BasicFifo6["fetch_resume_fifo BasicFifo"] BasicFifo6_read["read"] BasicFifo6_write["write"] @@ -370,8 +404,8 @@ subgraph Collector1["collector Collector"] Collector1_method["method"] subgraph Forwarder5["forwarder Forwarder"] - Forwarder5_write["write"] Forwarder5_read["read"] + Forwarder5_write["write"] end subgraph ManyToOneConnectTrans1["connect ManyToOneConnectTrans"] subgraph ConnectTrans4["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -393,36 +427,36 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] + LSUDummy_insert["insert"] + LSUDummy_LSUDummy["LSUDummy"] + LSUDummy_update["update"] + LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_select["select"] LSUDummy_precommit["precommit"] - LSUDummy_LSUDummy["LSUDummy"] LSUDummy_get_result["get_result"] - LSUDummy_LSUDummy1["LSUDummy"] - LSUDummy_insert["insert"] LSUDummy_LSUDummy2["LSUDummy"] - LSUDummy_update["update"] subgraph Forwarder6["forwarder Forwarder"] Forwarder6_read["read"] Forwarder6_write["write"] end subgraph LSURequester["requester LSURequester"] - LSURequester_issue_cond2["issue_cond2"] - LSURequester_accept_cond1["accept_cond1"] - LSURequester_issue_cond0["issue_cond0"] - LSURequester_issue["issue"] LSURequester_accept_cond0["accept_cond0"] + LSURequester_issue["issue"] + LSURequester_accept_cond1["accept_cond1"] + LSURequester_issue_cond2["issue_cond2"] LSURequester_issue_cond1["issue_cond1"] + LSURequester_issue_cond0["issue_cond0"] LSURequester_accept["accept"] end end subgraph CSRUnit["rs_block_2 CSRUnit"] + CSRUnit_insert["insert"] + CSRUnit_CSRUnit["CSRUnit"] CSRUnit_select["select"] + CSRUnit_fetch_resume["fetch_resume"] CSRUnit_update["update"] - CSRUnit_CSRUnit["CSRUnit"] - CSRUnit_precommit["precommit"] CSRUnit_get_result["get_result"] - CSRUnit_insert["insert"] - CSRUnit_fetch_resume["fetch_resume"] + CSRUnit_precommit["precommit"] end subgraph MethodTryProduct["InstructionPrecommitKey_unifier MethodTryProduct"] MethodTryProduct_MethodTryProduct["MethodTryProduct"] @@ -458,46 +492,46 @@ GenericCSRRegisters_GenericCSRRegisters["GenericCSRRegisters"] subgraph MachineModeCSRRegisters["m_mode MachineModeCSRRegisters"] subgraph CSRRegister["mcause CSRRegister"] - CSRRegister__fu_write["_fu_write"] - CSRRegister_write["write"] CSRRegister__fu_read["_fu_read"] + CSRRegister_write["write"] + CSRRegister__fu_write["_fu_write"] end subgraph CSRRegister1["mtvec CSRRegister"] + CSRRegister1__fu_write["_fu_write"] CSRRegister1__fu_read["_fu_read"] CSRRegister1_read["read"] - CSRRegister1__fu_write["_fu_write"] end subgraph CSRRegister2["mepc CSRRegister"] + CSRRegister2_read["read"] + CSRRegister2__fu_write["_fu_write"] CSRRegister2_write["write"] CSRRegister2__fu_read["_fu_read"] - CSRRegister2__fu_write["_fu_write"] - CSRRegister2_read["read"] end end subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] DoubleCounterCSR_increment["increment"] subgraph CSRRegister3["register_low CSRRegister"] + CSRRegister3__fu_read["_fu_read"] CSRRegister3_read["read"] CSRRegister3_write["write"] - CSRRegister3__fu_read["_fu_read"] end subgraph CSRRegister4["register_high CSRRegister"] CSRRegister4_read["read"] - CSRRegister4__fu_read["_fu_read"] CSRRegister4_write["write"] + CSRRegister4__fu_read["_fu_read"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5_write["write"] CSRRegister5__fu_read["_fu_read"] CSRRegister5_read["read"] + CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] CSRRegister6_write["write"] - CSRRegister6__fu_read["_fu_read"] CSRRegister6_read["read"] + CSRRegister6__fu_read["_fu_read"] end end end @@ -520,8 +554,8 @@ RegAllocation_RegAllocation["RegAllocation"] end subgraph FIFO10["rename_out_buf FIFO"] - FIFO10_read["read"] FIFO10_write["write"] + FIFO10_read["read"] end subgraph Renaming["renaming Renaming"] Renaming_Renaming["Renaming"] @@ -534,8 +568,8 @@ ROBAllocation_ROBAllocation["ROBAllocation"] end subgraph FIFO12["rs_select_out_buf FIFO"] - FIFO12_read["read"] FIFO12_write["write"] + FIFO12_read["read"] end subgraph RSSelection["rs_selector RSSelection"] RSSelection_RSSelection["RSSelection"] @@ -555,24 +589,24 @@ ConnectTrans11_ConnectTrans["ConnectTrans"] end subgraph Retirement["retirement Retirement"] - Retirement_Retirement_cond1["Retirement_cond1"] Retirement_core_state["core_state"] - Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement["Retirement"] + Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement1["Retirement"] Retirement_Retirement2["Retirement"] Retirement_Retirement3["Retirement"] Retirement_Retirement4["Retirement"] + Retirement_Retirement_cond1["Retirement_cond1"] subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister7["register_low CSRRegister"] CSRRegister7_read["read"] - CSRRegister7__fu_read["_fu_read"] CSRRegister7_write["write"] + CSRRegister7__fu_read["_fu_read"] end subgraph CSRRegister8["register_high CSRRegister"] - CSRRegister8__fu_read["_fu_read"] CSRRegister8_write["write"] + CSRRegister8__fu_read["_fu_read"] CSRRegister8_read["read"] end end @@ -593,32 +627,34 @@ end end subgraph TransactionManager["transactionManager TransactionManager"] + TransactionManager_issue_cond2_LSUDummy["issue_cond2_LSUDummy"] + TransactionManager_issue_cond1_LSUDummy["issue_cond1_LSUDummy"] TransactionManager_issue_cond0_LSUDummy["issue_cond0_LSUDummy"] - TransactionManager_Retirement_cond0_Retirement["Retirement_cond0_Retirement"] + TransactionManager_Retirement_cond1_Retirement["Retirement_cond1_Retirement"] + TransactionManager_accept_cond0_LSUDummy["accept_cond0_LSUDummy"] + TransactionManager_Retirement_Retirement_cond0["Retirement_Retirement_cond0"] TransactionManager_accept_cond1_LSUDummy["accept_cond1_LSUDummy"] - TransactionManager_issue_cond1_LSUDummy["issue_cond1_LSUDummy"] - TransactionManager_issue_cond2_LSUDummy["issue_cond2_LSUDummy"] - TransactionManager_Retirement_Retirement_cond1["Retirement_Retirement_cond1"] - TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] end end Core_InitFreeRFFifo --> BasicFifo2_write -Retirement_Retirement2 --> BasicFifo2_write -TransactionManager_Retirement_Retirement_cond1 --> BasicFifo2_write -TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write +Retirement_Retirement4 --> BasicFifo2_write +TransactionManager_Retirement_cond1_Retirement --> BasicFifo2_write +TransactionManager_Retirement_Retirement_cond0 --> BasicFifo2_write FIFO5_read --> Core_DiscardBranchVerify WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write -SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> WishboneMasterAdapter_request_read -SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> Serializer_Serializer1 -SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> BasicFifo_write -SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> WishboneMaster_request -WishboneMasterAdapter_get_read_response --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller -Serializer_Serializer --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller -BasicFifo_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller -WishboneMaster_result --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller -Forwarder_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller -SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Forwarder2_write +RegisterFile_perf --> HwExpHistogram2__add +ReorderBuffer_perf --> HwExpHistogram4__add +SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMasterAdapter_request_read +SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer +SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write +SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request +WishboneMasterAdapter_get_read_response --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 +Serializer_Serializer1 --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 +BasicFifo_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 +WishboneMaster_result --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 +Forwarder_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 +SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> Forwarder2_write ICache_ICache1 <--> HwCounter4__incr ArgumentsToResultsZipper_peek_arg --> ICache_MemRead BasicFifo3_peek --> ICache_MemRead @@ -630,28 +666,28 @@ SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache Forwarder2_read --> ICache_ICache ICache_ICache <--> HwCounter3__incr -Fetch_Fetch --> ICache_issue_req -Fetch_Fetch <--> HwCounter__incr -Fetch_Fetch <--> LatencyMeasurer__start -Fetch_Fetch --> FIFO1_write -Fetch_Fetch --> ArgumentsToResultsZipper_write_args -Fetch_Fetch --> BasicFifo3_write -Fetch_Fetch --> BasicFifo4_write -BasicFifo4_read --> Fetch_Fetch1 -ICache_accept_res --> Fetch_Fetch1 -Fetch_Fetch1 <--> LatencyMeasurer__stop -FIFO1_read --> Fetch_Fetch1 -Fetch_Fetch1 --> HwExpHistogram__add -ArgumentsToResultsZipper_read --> Fetch_Fetch1 -BasicFifo3_read --> Fetch_Fetch1 -Forwarder3_read --> Fetch_Fetch1 -Fetch_Fetch1 --> MethodProduct_method +Fetch_Fetch1 --> ICache_issue_req +Fetch_Fetch1 <--> HwCounter__incr +Fetch_Fetch1 <--> FIFOLatencyMeasurer__start +Fetch_Fetch1 --> FIFO1_write +Fetch_Fetch1 --> ArgumentsToResultsZipper_write_args +Fetch_Fetch1 --> BasicFifo3_write +Fetch_Fetch1 --> BasicFifo4_write +BasicFifo4_read --> Fetch_Fetch +ICache_accept_res --> Fetch_Fetch +Fetch_Fetch <--> FIFOLatencyMeasurer__stop +FIFO1_read --> Fetch_Fetch +Fetch_Fetch --> HwExpHistogram__add +ArgumentsToResultsZipper_read --> Fetch_Fetch +BasicFifo3_read --> Fetch_Fetch +Forwarder3_read --> Fetch_Fetch +Fetch_Fetch --> MethodProduct_method AdapterTrans_AdapterTrans_method --> MethodProduct_method -Fetch_Fetch1 --> FIFO_write +Fetch_Fetch --> FIFO_write AdapterTrans_AdapterTrans_method --> FIFO_write -Fetch_Fetch1 --> MethodMap_method +Fetch_Fetch --> MethodMap_method AdapterTrans_AdapterTrans_method --> MethodMap_method -Fetch_Fetch1 <--> CoreInstructionCounter_increment +Fetch_Fetch <--> CoreInstructionCounter_increment AdapterTrans_AdapterTrans_method <--> CoreInstructionCounter_increment FIFO_read --> DecodeStage_DecodeStage DecodeStage_DecodeStage <--> HwCounter6__incr @@ -661,32 +697,34 @@ RegAllocation_RegAllocation --> FIFO9_write FIFO9_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename -Retirement_Retirement2 --> FRAT_rename -TransactionManager_Retirement_Retirement_cond1 --> FRAT_rename +Retirement_Retirement4 --> FRAT_rename +TransactionManager_Retirement_cond1_Retirement --> FRAT_rename Renaming_Renaming --> FIFO10_write FIFO10_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put -ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start +ROBAllocation_ROBAllocation <--> FIFOLatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO2_write ROBAllocation_ROBAllocation --> FIFO11_write -FIFO11_read --> RSSelection_RSSelection -RSSelection_RSSelection --> Forwarder8_write -Forwarder8_read --> RSSelection_RSSelection3 -Forwarder8_read --> RSSelection_RSSelection2 +FIFO11_read --> RSSelection_RSSelection3 +RSSelection_RSSelection3 --> Forwarder8_write +Forwarder8_read --> RSSelection_RSSelection Forwarder8_read --> RSSelection_RSSelection1 -RSFuncBlock_select --> RSSelection_RSSelection3 -RS_select --> RSSelection_RSSelection3 -RSSelection_RSSelection3 --> FIFO12_write -RSSelection_RSSelection2 --> FIFO12_write +Forwarder8_read --> RSSelection_RSSelection2 +RSFuncBlock_select --> RSSelection_RSSelection +RS_select --> RSSelection_RSSelection +RSSelection_RSSelection --> FIFO12_write RSSelection_RSSelection1 --> FIFO12_write -RSSelection_RSSelection2 <--> LSUDummy_select -RSSelection_RSSelection1 <--> CSRUnit_select +RSSelection_RSSelection2 --> FIFO12_write +RSSelection_RSSelection1 <--> LSUDummy_select +RSSelection_RSSelection2 <--> CSRUnit_select FIFO12_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion Retirement_core_state --> RSInsertion_RSInsertion RSInsertion_RSInsertion --> RSFuncBlock_insert RSInsertion_RSInsertion --> RS_insert +RSInsertion_RSInsertion --> TaggedLatencyMeasurer1__start +RSInsertion_RSInsertion --> AsyncMemoryBank1_write RSInsertion_RSInsertion --> LSUDummy_insert RSInsertion_RSInsertion --> CSRUnit_insert BasicFifo5_read --> ConnectTrans_ConnectTrans @@ -696,22 +734,40 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume -Retirement_Retirement1 --> Fetch_resume +Retirement_Retirement --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done ResultAnnouncement_ResultAnnouncement --> RegisterFile_write +ResultAnnouncement_ResultAnnouncement --> TaggedLatencyMeasurer__start +ResultAnnouncement_ResultAnnouncement --> AsyncMemoryBank_write ResultAnnouncement_ResultAnnouncement --> MethodProduct1_method ResultAnnouncement_ResultAnnouncement --> RSFuncBlock_update ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update ResultAnnouncement_ResultAnnouncement --> CSRUnit_update -RS_RS --> WakeupSelect_WakeupSelect +RS_perf --> HwExpHistogram6__add +RS_RS2 --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect RS_take --> WakeupSelect3_WakeupSelect RS_take --> WakeupSelect4_WakeupSelect +WakeupSelect_WakeupSelect --> TaggedLatencyMeasurer1__stop +WakeupSelect1_WakeupSelect --> TaggedLatencyMeasurer1__stop +WakeupSelect2_WakeupSelect --> TaggedLatencyMeasurer1__stop +WakeupSelect3_WakeupSelect --> TaggedLatencyMeasurer1__stop +WakeupSelect4_WakeupSelect --> TaggedLatencyMeasurer1__stop +AsyncMemoryBank1_read --> WakeupSelect_WakeupSelect +AsyncMemoryBank1_read --> WakeupSelect1_WakeupSelect +AsyncMemoryBank1_read --> WakeupSelect2_WakeupSelect +AsyncMemoryBank1_read --> WakeupSelect3_WakeupSelect +AsyncMemoryBank1_read --> WakeupSelect4_WakeupSelect +WakeupSelect_WakeupSelect --> HwExpHistogram5__add +WakeupSelect1_WakeupSelect --> HwExpHistogram5__add +WakeupSelect2_WakeupSelect --> HwExpHistogram5__add +WakeupSelect3_WakeupSelect --> HwExpHistogram5__add +WakeupSelect4_WakeupSelect --> HwExpHistogram5__add WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> TaggedCounter__incr WakeupSelect_WakeupSelect --> FIFO3_write @@ -729,7 +785,7 @@ ConnectTrans3_ConnectTrans --> BasicFifo5_write WakeupSelect2_WakeupSelect --> FIFO6_write WakeupSelect2_WakeupSelect --> FIFO5_write -RS_RS2 --> WakeupSelect3_WakeupSelect +RS_RS --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO7_write RS_RS1 --> WakeupSelect4_WakeupSelect @@ -750,12 +806,12 @@ PrivilegedFuncUnit_accept --> ConnectTrans8_ConnectTrans CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo6_write -LSUDummy_LSUDummy2 --> Forwarder6_write +LSUDummy_LSUDummy --> Forwarder6_write TransactionManager_issue_cond2_LSUDummy --> Forwarder6_write -TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write -TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write -TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write TransactionManager_issue_cond0_LSUDummy --> Forwarder6_write +TransactionManager_accept_cond0_LSUDummy --> Forwarder6_write +TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write +TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -777,45 +833,54 @@ LSUDummy_get_result --> ConnectTrans2_ConnectTrans Forwarder6_read --> ConnectTrans2_ConnectTrans CSRUnit_get_result --> ConnectTrans3_ConnectTrans -MethodTryProduct_MethodTryProduct1 --> PrivilegedFuncUnit_precommit -MethodTryProduct_MethodTryProduct1 <--> InterruptController_mret +MethodTryProduct_MethodTryProduct2 --> PrivilegedFuncUnit_precommit +MethodTryProduct_MethodTryProduct2 <--> InterruptController_mret MethodTryProduct_MethodTryProduct --> LSUDummy_precommit -MethodTryProduct_MethodTryProduct2 --> CSRUnit_precommit +MethodTryProduct_MethodTryProduct1 --> CSRUnit_precommit ConnectTrans9_ConnectTrans --> Forwarder7_write ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo6_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans -ReorderBuffer_peek --> Retirement_Retirement -ReorderBuffer_peek --> Retirement_Retirement3 +ReorderBuffer_peek --> Retirement_Retirement1 ReorderBuffer_peek --> Retirement_Retirement2 -ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond1 -ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement -Retirement_Retirement --> MethodTryProduct_method -ExceptionCauseRegister_get --> Retirement_Retirement3 -ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond1 -ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement -Retirement_Retirement2 <--> ReorderBuffer_retire -TransactionManager_Retirement_Retirement_cond1 <--> ReorderBuffer_retire -TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire -Retirement_Retirement2 <--> LatencyMeasurer1__stop -TransactionManager_Retirement_Retirement_cond1 <--> LatencyMeasurer1__stop -TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop -FIFO2_read --> Retirement_Retirement2 -FIFO2_read --> TransactionManager_Retirement_Retirement_cond1 -FIFO2_read --> TransactionManager_Retirement_cond0_Retirement -Retirement_Retirement2 --> HwExpHistogram1__add -TransactionManager_Retirement_Retirement_cond1 --> HwExpHistogram1__add -TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add -CoreInstructionCounter_decrement --> Retirement_Retirement2 -CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond1 -CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement -RRAT_peek --> Retirement_Retirement2 -RRAT_peek --> TransactionManager_Retirement_Retirement_cond1 -Retirement_Retirement2 --> RegisterFile_free -TransactionManager_Retirement_Retirement_cond1 --> RegisterFile_free -TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free -CSRRegister1_read --> Retirement_Retirement1 -Retirement_Retirement1 <--> ExceptionCauseRegister_clear +ReorderBuffer_peek --> Retirement_Retirement4 +ReorderBuffer_peek --> TransactionManager_Retirement_cond1_Retirement +ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond0 +Retirement_Retirement1 --> MethodTryProduct_method +ExceptionCauseRegister_get --> Retirement_Retirement2 +ExceptionCauseRegister_get --> TransactionManager_Retirement_cond1_Retirement +ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond0 +Retirement_Retirement4 <--> ReorderBuffer_retire +TransactionManager_Retirement_cond1_Retirement <--> ReorderBuffer_retire +TransactionManager_Retirement_Retirement_cond0 <--> ReorderBuffer_retire +Retirement_Retirement4 <--> FIFOLatencyMeasurer1__stop +TransactionManager_Retirement_cond1_Retirement <--> FIFOLatencyMeasurer1__stop +TransactionManager_Retirement_Retirement_cond0 <--> FIFOLatencyMeasurer1__stop +FIFO2_read --> Retirement_Retirement4 +FIFO2_read --> TransactionManager_Retirement_cond1_Retirement +FIFO2_read --> TransactionManager_Retirement_Retirement_cond0 +Retirement_Retirement4 --> HwExpHistogram3__add +TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram3__add +TransactionManager_Retirement_Retirement_cond0 --> HwExpHistogram3__add +CoreInstructionCounter_decrement --> Retirement_Retirement4 +CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond1_Retirement +CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond0 +RRAT_peek --> Retirement_Retirement4 +RRAT_peek --> TransactionManager_Retirement_cond1_Retirement +Retirement_Retirement4 --> RegisterFile_free +TransactionManager_Retirement_cond1_Retirement --> RegisterFile_free +TransactionManager_Retirement_Retirement_cond0 --> RegisterFile_free +Retirement_Retirement4 --> TaggedLatencyMeasurer__stop +TransactionManager_Retirement_cond1_Retirement --> TaggedLatencyMeasurer__stop +TransactionManager_Retirement_Retirement_cond0 --> TaggedLatencyMeasurer__stop +AsyncMemoryBank_read --> Retirement_Retirement4 +AsyncMemoryBank_read --> TransactionManager_Retirement_cond1_Retirement +AsyncMemoryBank_read --> TransactionManager_Retirement_Retirement_cond0 +Retirement_Retirement4 --> HwExpHistogram1__add +TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram1__add +TransactionManager_Retirement_Retirement_cond0 --> HwExpHistogram1__add +CSRRegister1_read --> Retirement_Retirement +Retirement_Retirement <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -828,55 +893,55 @@ GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans1_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt TransactionManager_issue_cond2_LSUDummy <--> LSURequester_issue_cond2 -TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy1 -TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy1 -TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy1 +TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy2 +TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy2 +TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy2 TransactionManager_issue_cond2_LSUDummy --> LSURequester_issue -TransactionManager_issue_cond1_LSUDummy --> LSURequester_issue TransactionManager_issue_cond0_LSUDummy --> LSURequester_issue -TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy -TransactionManager_accept_cond1_LSUDummy <--> LSUDummy_LSUDummy -LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 -LSURequester_accept --> TransactionManager_accept_cond1_LSUDummy -TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 -WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 -Serializer1_Serializer1 --> TransactionManager_LSUDummy_accept_cond0 -BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 +TransactionManager_issue_cond1_LSUDummy --> LSURequester_issue +TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 +TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write +TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer +TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write +TransactionManager_issue_cond1_LSUDummy --> BasicFifo1_write +TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request +TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request +TransactionManager_accept_cond0_LSUDummy <--> LSURequester_accept_cond0 +WishboneMasterAdapter1_get_write_response --> TransactionManager_accept_cond0_LSUDummy +Serializer1_Serializer1 --> TransactionManager_accept_cond0_LSUDummy +BasicFifo1_read --> TransactionManager_accept_cond0_LSUDummy BasicFifo1_read --> TransactionManager_accept_cond1_LSUDummy -WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 +WishboneMaster1_result --> TransactionManager_accept_cond0_LSUDummy WishboneMaster1_result --> TransactionManager_accept_cond1_LSUDummy -Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 +Forwarder1_read --> TransactionManager_accept_cond0_LSUDummy Forwarder1_read --> TransactionManager_accept_cond1_LSUDummy -TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement4 -TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement4 -TransactionManager_Retirement_Retirement_cond1 --> CSRRegister_write -TransactionManager_Retirement_cond0_Retirement --> CSRRegister_write -TransactionManager_Retirement_Retirement_cond1 --> CSRRegister2_write -TransactionManager_Retirement_cond0_Retirement --> CSRRegister2_write -TransactionManager_Retirement_Retirement_cond1 <--> InterruptController_entry -TransactionManager_Retirement_cond0_Retirement <--> InterruptController_entry -TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement_cond1 -TransactionManager_accept_cond1_LSUDummy <--> LSURequester_accept_cond1 -WishboneMasterAdapter1_get_read_response --> TransactionManager_accept_cond1_LSUDummy -Serializer1_Serializer --> TransactionManager_accept_cond1_LSUDummy -TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement_cond0 -TransactionManager_Retirement_cond0_Retirement --> RRAT_commit -TransactionManager_Retirement_cond0_Retirement <--> DoubleCounterCSR2_increment -CSRRegister7_read --> TransactionManager_Retirement_cond0_Retirement -TransactionManager_Retirement_cond0_Retirement --> CSRRegister7_write -CSRRegister8_read --> TransactionManager_Retirement_cond0_Retirement -TransactionManager_Retirement_cond0_Retirement --> CSRRegister8_write -TransactionManager_Retirement_cond0_Retirement <--> HwCounter7__incr +TransactionManager_accept_cond0_LSUDummy <--> LSUDummy_LSUDummy1 +TransactionManager_accept_cond1_LSUDummy <--> LSUDummy_LSUDummy1 +LSURequester_accept --> TransactionManager_accept_cond0_LSUDummy +LSURequester_accept --> TransactionManager_accept_cond1_LSUDummy TransactionManager_issue_cond1_LSUDummy <--> LSURequester_issue_cond1 TransactionManager_issue_cond1_LSUDummy --> WishboneMasterAdapter1_request_read TransactionManager_issue_cond1_LSUDummy --> Serializer1_Serializer3 -TransactionManager_issue_cond1_LSUDummy --> BasicFifo1_write -TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write -TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request -TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request -TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 -TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write -TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer2 +TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 +TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement3 +TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement3 +TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write +TransactionManager_Retirement_Retirement_cond0 --> CSRRegister_write +TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write +TransactionManager_Retirement_Retirement_cond0 --> CSRRegister2_write +TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry +TransactionManager_Retirement_Retirement_cond0 <--> InterruptController_entry +TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement_cond0 +TransactionManager_Retirement_Retirement_cond0 --> RRAT_commit +TransactionManager_Retirement_Retirement_cond0 <--> DoubleCounterCSR2_increment +CSRRegister7_read --> TransactionManager_Retirement_Retirement_cond0 +TransactionManager_Retirement_Retirement_cond0 --> CSRRegister7_write +CSRRegister8_read --> TransactionManager_Retirement_Retirement_cond0 +TransactionManager_Retirement_Retirement_cond0 --> CSRRegister8_write +TransactionManager_Retirement_Retirement_cond0 <--> HwCounter7__incr +TransactionManager_accept_cond1_LSUDummy <--> LSURequester_accept_cond1 +WishboneMasterAdapter1_get_read_response --> TransactionManager_accept_cond1_LSUDummy +Serializer1_Serializer2 --> TransactionManager_accept_cond1_LSUDummy @@ -887,7 +952,7 @@

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/components/icache.html b/components/icache.html index e96773535..c6a54353a 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

    Address mapping example

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.backend.html b/coreblocks.backend.html index 6b16ac5e1..b687a5ff0 100644 --- a/coreblocks.backend.html +++ b/coreblocks.backend.html @@ -165,7 +165,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.cache.html b/coreblocks.cache.html index 8f4c36569..b6b2ebbf2 100644 --- a/coreblocks.cache.html +++ b/coreblocks.cache.html @@ -241,7 +241,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.core_structs.html b/coreblocks.core_structs.html index 0add71774..103adfc17 100644 --- a/coreblocks.core_structs.html +++ b/coreblocks.core_structs.html @@ -157,7 +157,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.frontend.decoder.html b/coreblocks.frontend.decoder.html index 9e1e61bc2..075541877 100644 --- a/coreblocks.frontend.decoder.html +++ b/coreblocks.frontend.decoder.html @@ -1726,7 +1726,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.frontend.fetch.html b/coreblocks.frontend.fetch.html index a39f1a4eb..41f0a6d81 100644 --- a/coreblocks.frontend.fetch.html +++ b/coreblocks.frontend.fetch.html @@ -161,7 +161,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index 58eb738bd..4dfaf214e 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -125,7 +125,7 @@

    Subpackages

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.func_blocks.fu.html b/coreblocks.func_blocks.fu.html index 37e6a4fc3..628d98a62 100644 --- a/coreblocks.func_blocks.fu.html +++ b/coreblocks.func_blocks.fu.html @@ -867,7 +867,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.func_blocks.fu.unsigned_multiplication.html b/coreblocks.func_blocks.fu.unsigned_multiplication.html index e31dfa4db..f8000c85e 100644 --- a/coreblocks.func_blocks.fu.unsigned_multiplication.html +++ b/coreblocks.func_blocks.fu.unsigned_multiplication.html @@ -238,7 +238,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.func_blocks.html b/coreblocks.func_blocks.html index 06e9fb6ee..5bd3fe0db 100644 --- a/coreblocks.func_blocks.html +++ b/coreblocks.func_blocks.html @@ -148,7 +148,7 @@

    Subpackages

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.func_blocks.interface.html b/coreblocks.func_blocks.interface.html index 6e0b86fdf..b756d465d 100644 --- a/coreblocks.func_blocks.interface.html +++ b/coreblocks.func_blocks.interface.html @@ -169,7 +169,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.func_blocks.lsu.html b/coreblocks.func_blocks.lsu.html index 170136aa4..cb7f92ee0 100644 --- a/coreblocks.func_blocks.lsu.html +++ b/coreblocks.func_blocks.lsu.html @@ -94,6 +94,11 @@

    Submodules class coreblocks.func_blocks.lsu.dummyLsu.LSUBlockComponent

    Bases: BlockComponentParams

    +
    +
    +__init__() None
    +
    +
    get_module(gen_params: GenParams) FuncBlock
    @@ -248,7 +253,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.html b/coreblocks.html index 22b554c91..da6fe331d 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -255,7 +255,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.params.html b/coreblocks.params.html index 57e94ff20..8b7279954 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -135,7 +135,7 @@

    Submodules
    -__init__(*, xlen: int = 32, func_units_config: ~collections.abc.Collection[~coreblocks.params.fu_params.BlockComponentParams] = (RSBlockComponent(func_units=[<coreblocks.func_blocks.fu.alu.ALUComponent object>, <coreblocks.func_blocks.fu.shift_unit.ShiftUnitComponent object>, <coreblocks.func_blocks.fu.jumpbranch.JumpComponent object>, <coreblocks.func_blocks.fu.exception.ExceptionUnitComponent object>, <coreblocks.func_blocks.fu.priv.PrivilegedUnitComponent object>], rs_entries=4), <coreblocks.func_blocks.lsu.dummyLsu.LSUBlockComponent object>, <coreblocks.func_blocks.csr.csr.CSRBlockComponent object>), compressed: bool = False, embedded: bool = False, debug_signals: bool = True, phys_regs_bits: int = 6, rob_entries_bits: int = 7, start_pc: int = 0, icache_enable: bool = True, icache_ways: int = 2, icache_sets_bits: int = 7, icache_line_bytes_log: int = 5, fetch_block_bytes_log: int = 2, allow_partial_extensions: bool = False, _implied_extensions: ~coreblocks.params.isa_params.Extension = Extension.None, pma: list[coreblocks.func_blocks.lsu.pma.PMARegion] = <factory>) None
    +__init__(*, xlen: int = 32, func_units_config: ~collections.abc.Collection[~coreblocks.params.fu_params.BlockComponentParams] = (RSBlockComponent(func_units=[<coreblocks.func_blocks.fu.alu.ALUComponent object>, <coreblocks.func_blocks.fu.shift_unit.ShiftUnitComponent object>, <coreblocks.func_blocks.fu.jumpbranch.JumpComponent object>, <coreblocks.func_blocks.fu.exception.ExceptionUnitComponent object>, <coreblocks.func_blocks.fu.priv.PrivilegedUnitComponent object>], rs_entries=4, rs_number=-1), LSUBlockComponent(), CSRBlockComponent()), compressed: bool = False, embedded: bool = False, debug_signals: bool = True, phys_regs_bits: int = 6, rob_entries_bits: int = 7, start_pc: int = 0, icache_enable: bool = True, icache_ways: int = 2, icache_sets_bits: int = 7, icache_line_bytes_log: int = 5, fetch_block_bytes_log: int = 2, allow_partial_extensions: bool = False, _implied_extensions: ~coreblocks.params.isa_params.Extension = Extension.None, pma: list[coreblocks.func_blocks.lsu.pma.PMARegion] = <factory>) None

    @@ -165,7 +165,7 @@

    Submodules
    -func_units_config: Collection[BlockComponentParams] = (RSBlockComponent(func_units=[<coreblocks.func_blocks.fu.alu.ALUComponent object>, <coreblocks.func_blocks.fu.shift_unit.ShiftUnitComponent object>, <coreblocks.func_blocks.fu.jumpbranch.JumpComponent object>, <coreblocks.func_blocks.fu.exception.ExceptionUnitComponent object>, <coreblocks.func_blocks.fu.priv.PrivilegedUnitComponent object>], rs_entries=4), <coreblocks.func_blocks.lsu.dummyLsu.LSUBlockComponent object>, <coreblocks.func_blocks.csr.csr.CSRBlockComponent object>)
    +func_units_config: Collection[BlockComponentParams] = (RSBlockComponent(func_units=[<coreblocks.func_blocks.fu.alu.ALUComponent object>, <coreblocks.func_blocks.fu.shift_unit.ShiftUnitComponent object>, <coreblocks.func_blocks.fu.jumpbranch.JumpComponent object>, <coreblocks.func_blocks.fu.exception.ExceptionUnitComponent object>, <coreblocks.func_blocks.fu.priv.PrivilegedUnitComponent object>], rs_entries=4, rs_number=-1), LSUBlockComponent(), CSRBlockComponent())

    @@ -227,6 +227,11 @@

    Submodules class coreblocks.params.fu_params.BlockComponentParams

    Bases: ABC

    +
    +
    +__init__() None
    +
    +
    abstract get_module(gen_params: GenParams) FuncBlock
    @@ -1166,7 +1171,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index 7788073ca..c57a350f2 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -746,7 +746,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.priv.csr.html b/coreblocks.priv.csr.html index 357d0ad47..76bb70ac1 100644 --- a/coreblocks.priv.csr.html +++ b/coreblocks.priv.csr.html @@ -327,7 +327,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.priv.html b/coreblocks.priv.html index 68487b7c8..f60d39fb4 100644 --- a/coreblocks.priv.html +++ b/coreblocks.priv.html @@ -123,7 +123,7 @@

    Subpackages

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.priv.traps.html b/coreblocks.priv.traps.html index d3cce6f96..e2915e761 100644 --- a/coreblocks.priv.traps.html +++ b/coreblocks.priv.traps.html @@ -171,7 +171,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/coreblocks.scheduler.html b/coreblocks.scheduler.html index d886f47c2..b12a31b2c 100644 --- a/coreblocks.scheduler.html +++ b/coreblocks.scheduler.html @@ -191,7 +191,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/current-graph.html b/current-graph.html index ebc7b7044..a6d72482c 100644 --- a/current-graph.html +++ b/current-graph.html @@ -89,12 +89,12 @@

    Full transaction-method graph

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/development-environment.html b/development-environment.html index c81561767..decc9a959 100644 --- a/development-environment.html +++ b/development-environment.html @@ -209,7 +209,7 @@

    tprof.py

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:39 2024-04-01. + Last updated on 14:50 2024-04-01.

    diff --git a/genindex.html b/genindex.html index c12ee6cb6..2e2647e54 100644 --- a/genindex.html +++ b/genindex.html @@ -193,6 +193,8 @@

    _

  1. (coreblocks.func_blocks.fu.zbs.ZbsUnit method)
  2. (coreblocks.func_blocks.interface.func_blocks_unifier.FuncBlocksUnifier method) +
  3. +
  4. (coreblocks.func_blocks.lsu.dummyLsu.LSUBlockComponent method)
  5. (coreblocks.func_blocks.lsu.dummyLsu.LSUDummy method)
  6. @@ -203,6 +205,8 @@

    _

  7. (coreblocks.func_blocks.lsu.pma.PMARegion method)
  8. (coreblocks.params.configurations.CoreConfiguration method) +
  9. +
  10. (coreblocks.params.fu_params.BlockComponentParams method)
  11. (coreblocks.params.genparams.GenParams method)
  12. @@ -327,6 +331,8 @@

    _

  13. (transactron.lib.logging.LogRecord method)
  14. (transactron.lib.logging.LogRecordInfo method) +
  15. +
  16. (transactron.lib.metrics.FIFOLatencyMeasurer method)
  17. (transactron.lib.metrics.HardwareMetricsManager method)
  18. @@ -337,18 +343,20 @@

    _

  19. (transactron.lib.metrics.HwMetric method)
  20. (transactron.lib.metrics.HwMetricsEnabledKey method) -
  21. -
  22. (transactron.lib.metrics.LatencyMeasurer method)
  23. (transactron.lib.metrics.MetricModel method)
  24. (transactron.lib.metrics.MetricRegisterModel method)
  25. (transactron.lib.metrics.TaggedCounter method) +
  26. +
  27. (transactron.lib.metrics.TaggedLatencyMeasurer method)
  28. (transactron.lib.reqres.ArgumentsToResultsZipper method)
  29. (transactron.lib.reqres.Serializer method) +
  30. +
  31. (transactron.lib.storage.AsyncMemoryBank method)
  32. (transactron.lib.storage.MemoryBank method)
  33. @@ -525,10 +533,10 @@

    A

  34. ADDRESS_GENERATION (coreblocks.frontend.decoder.optypes.OpType attribute)
  35. - - +