From 1e3c9215d08da4b5c020d472a6a751b23f513f43 Mon Sep 17 00:00:00 2001 From: tilk Date: Thu, 14 Mar 2024 09:21:06 +0000 Subject: [PATCH] Destroy all records (#612) --- .doctrees/api.doctree | Bin 21036 -> 21036 bytes .doctrees/auto_graph.doctree | Bin 44183 -> 44187 bytes .doctrees/coreblocks.cache.doctree | Bin 56728 -> 56716 bytes .doctrees/coreblocks.fu.doctree | Bin 280343 -> 280321 bytes .doctrees/coreblocks.lsu.doctree | Bin 47588 -> 50762 bytes .doctrees/coreblocks.params.doctree | Bin 789257 -> 785254 bytes .doctrees/current-graph.doctree | Bin 45404 -> 45408 bytes .doctrees/environment.pickle | Bin 455691 -> 455643 bytes .doctrees/transactron.lib.doctree | Bin 685671 -> 684906 bytes .doctrees/transactron.utils.doctree | Bin 415875 -> 415260 bytes _sources/auto_graph.rst.txt | 334 ++++++++++---------- api.html | 2 +- assumptions.html | 2 +- auto_graph.html | 336 ++++++++++----------- components/icache.html | 2 +- coreblocks.cache.html | 4 +- coreblocks.frontend.html | 2 +- coreblocks.fu.html | 6 +- coreblocks.fu.unsigned_multiplication.html | 2 +- coreblocks.html | 2 +- coreblocks.lsu.html | 15 +- coreblocks.params.html | 13 +- coreblocks.peripherals.html | 2 +- coreblocks.scheduler.html | 2 +- coreblocks.stages.html | 2 +- coreblocks.structs_common.html | 2 +- coreblocks.utils.html | 2 +- current-graph.html | 336 ++++++++++----------- development-environment.html | 2 +- genindex.html | 8 +- home.html | 2 +- index.html | 2 +- miscellany/exceptions-summary.html | 2 +- modules-coreblocks.html | 2 +- modules-transactron.html | 2 +- objects.inv | Bin 10785 -> 10787 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.html | 2 +- transactron.lib.html | 6 +- transactron.testing.html | 2 +- transactron.utils.amaranth_ext.html | 2 +- transactron.utils.html | 12 +- 50 files changed, 564 insertions(+), 564 deletions(-) diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index 99f236510f0b0dfb3aa44ce250540d1c4b401610..e5b34fc71fd7d89a2e479ab760d00f53830a35b9 100644 GIT binary patch delta 423 zcmYjNyG{Z@6m=76K;r|1U`0Zs1&c93mRM7m*qK;qa2Q5*!p_WQ?%hNyV_`Sl%qP%E z3<-bX2lx?IcD7DXVY~Y{_ndpqY#Pj_!TjUQ9z+fM9vxk8p(YXtMXn?`v-96-CBuXd zohj!h$N;$kRgy`BHvhek zZ*8MnvzNWPed|_j5LGVfIRZePQG|g%6iPZ%BpIr~Sd%pNbUEoTL!Nl05&_6Wy7Xo5 zqNY9V9onmIrC)|ei7^8X?N#L|Qmuvw6D{wBP7)62Oo7W0dvIo7s8N;-&W*6y`Ti8=Xbx{JZ)CU-_pQ delta 429 zcmYk2%}T>S6orXc!B(-gwjhY5Du`m*mHEMiPhxd489UKrCd{3PuH3kDc9TcwGK)f= zMOWfe2yPuMwX?fF-#zzms)ysg-lYTZe#P2e)IaxEgMafNKgIF znp&kiBl<2l)DM3DXcHGg5GLKRKshyWz!Q^{Kmx=6N`HB$dL`_fv@JWg=D#E?F4guT q!R1!J27CI`-|g9ffkb0s+}2Sc`Sstw*-KbCwb2=KZ)WEg-`yW)^{6cX diff --git a/.doctrees/auto_graph.doctree b/.doctrees/auto_graph.doctree index f1d8703e6525fcfabd87f6a0844ebd0840479e43..6b73d21c2fabeefbae1a054a1f7625297346769b 100644 GIT binary patch delta 2199 zcmZ`)TTok76rGz~(jwIknYs?C7XPKkRgTp|)1X8TG^G=(L`DNzppxGvqr!sX{FBy~%1hF5^Syj(2tdg0@zVu+?uA0vXDuftf( zJ!B-}c!U&R@vAXG=c7a<#psj}>*%Inlo(&83YkyoYkd4MBgKNqK=5{45c+~qBIdei zoWhyNwOr0nfe2o*UTm&qRFXwLmbx`)k`3d7==yLX{2==k)>r{lu^G4&Yrw_WHRO9c zmSPGKiq(>w!CVnT$I*P0Dl#BVj0Ua9BxcwXrFcwn37+`n-Fml2pgcYULrx2p3^YE8 zH*=UaiAIDn6*)!9+w6VHzX(f}5wtp)WBRVD2#=_exyr5TD*U9j;OBqK z5Q+2ZTs)~xX16{okH&0Cx_l8Mw^$GnqNNa2CDlodg4 zCa156{DgJ^?v!LCr4+L97o{SEQpz~itae|faI7)ETa3l@NM@%lL4b3a`AE>4(UVz* zYngh?J0r1G|0s539l|Yr3oh$(@OjozoH3X%WsqQdP64hN^0C>d4-=yiZ!{4(G`Lus z4!cEyw~c=iKLgI0ih@y5OwPJjMbH+QaCu`%m>1(H&rh`L#-FxsgsQJ_bp)zo&{4gN5rLTJYhDuI zpnVqy`Z^*}Y+r{ZyBD$}G(N0f?h0!ktuIDLgMnZ z>l8k2`8RM+<3nNa8#tRbK-W})qfMvK*<6DB<_&ncc@~dsOXQOEZWG}CZQOxk=C|o+ z+-zCCXY46mBx|;$`R!t+qV;PYb~u-JsVBWmcdliIoI^bP=n|vcl^t}Ivg!? zJ-c%p_dT$+a({RC;11m#X4tLqi0*tC=cXf3zqbG%`qjA7nF-l$n%Fb&{azhzb=FaN z_^3+(N0$zZfhg2bXD(4}~od&&IhBmjHn}@^mOKv%3#vATbDi>e5i*eo^4STPU zS>Ibi5umRxMPb$!n@lCzn*Iv+{vL0;$Klx1rE$d^ewb^qW z{hmGEcCoG9>w4J1{hATy$w#e6hc1sAFZQM5tS3?OUk_aM6x?Y@-sd2RML4pr9F$i9 z%RU1nWZvst%hY*iDJqZoasSg4p-l}c@zcN>9PKZ{t$rhJ_L~SP<3KiA1~M?vpM>8A z(s5}Z6O#i*s0WRdnW-84g-51Mk7e^nqV9uMidv7ezF`u$bWn@UJ_*w{G|t1EFBYXf zHKQ4}@iBe47|xIYZ6j&&JDPL5XPn0=;xRcA1NVrA>u~6BBlF70WCYnj?eL#-i z19H-H$yh1L6pPj|%L>{$7LN;KX#`CfFU7Snau+z?^W(b^7_UKcu#lH0Mz1#>8-h~! zg3Dwc3~mK^&LM+bkSE@-dsKtB(2M}8kT7B3nZ;PxMa~b?G7-ba*eL_X zr!&Dnp(Jw_mO?^oJ|X37&d?B2L#3ELZC*vX^D{dYcNJBPX|VzmCzY!NzIifpRip$% zQ|neieNz>@b!Q@8F9cSk(%ukkv;jZL;wH) delta 2074 zcmZuydrVVj6wmET?uC{XY*F2Y(1s z`f~^(P$qLTLq+eB{o&$FwrtCsfw@KFj1i}9Moo;%OlF+AueX(%Wq+LSp6{IVo%1`d zcIZ0q$aS8;BmAJdPw+jZI6E~+VS=|1n(Y$oD0X7AB` zBu;n=rbPny^JuukGca9K#>PiX^KnAD0GA`b2sy$-=~E0u<>NP5DrRIN*rJ@=_ezu& z!l-QG&zDWJf@lFB7DY1VE20smNF`!8)DrAdd<%C>Fp_Jn5KCgx;i)%cMlZnC7!wx8 zCUPjW2?7XXQ(!EJeVsu^>~jiXN+qY?5?_d`@$+#aUc+TyqAW$NN`pzI1X@)g-dCFO zM45#P%9KFp)AC3hRym63(vI#fk7JJqLRTowEni zpGl9vnRF8->%&o%u?MFzji|_6hpCMHxS83H3B4YEeFWl-2A^1ryZRigm`CuD9tEls zLwI9>3Kz>#;4nwv>v_*GazF&FF%4%7q_1MuIR6}twMIRra!W!`*}6Pc7@k@(&~B08 zy^{I3UjiYcZ_0 zGECe2I9_Uk*j|XAOU+nrH*r3_&N-MW6=JVF7p~H@Ku1wtz~GsEJ1Un2OHsA-J|`#j zVh5LfBEsj640xT9SnPNkGY&VtE7x=P?()U>$eBT8MkG}fW4dBHC$F!l9no+n{Yi29^7U9W8v6HKH z0$**gtASaaUKi@>T86dO{>sCe`rz0ERxznQjrG)fczCdzfwdtIOhcBhfx%}DHtcOM zvwt;2Qz&b!<>1ndSzHQN8{2VZT^c8=+>{kS8d#p^o0jw8?PQSKWQNC2!!;C6k>S{? zz#6L*Q(K~mG#WRXbhxx7hVXOoXsd--MGzY^TuoNIYFdsf+Z3qZrbBsOM2NSs_qQ$K zVP&%v=4LsS4M%e_Io;ej*qn?6S0sLDmJ788Ly;D@x2sSi6+`Nhuo{<>f_q0I`UwrT z#6_-eaWnQtcf;m7?!@gKD!e45Y{{WaC~wiJO^m(F?#QldX zgjoIS#e^FzdH)q@TI=v)2ZOHGCB*ZqRt0XgS|}5%bzh>O-zj5Xyt|u%r!4{fy9$WK zkGs~8r1WiBgkRg1N={E(EFQMa!&hzT=-o93f3#Il*{p5%pFHw0@5|y5o8Iu-H^b%Ck=Nu$PqwJ#qNzABvZE#)FoND?xYl@=!^dJ0h27Y+X57G(EEXAl- zh*u*9@@i#h!Xuy_qw#o1iVH(&pax>`V#pBEiE-8%jaA3yp?W-lE53TH8$S)k&g!Y7 zY5&8AW86O9q+cD{TlH81!C`$J pk!NHu#wc)d%s_&tlb{QTN)F5DBpHA=N-3;sXntoS`*3`6&ObI6Boee4=m?i;d o%X&vjN+jkc7A5ADWawq2VVqxj|n-e)EP00_@G%>V!Z diff --git a/.doctrees/coreblocks.fu.doctree b/.doctrees/coreblocks.fu.doctree index 653a075d139bf2f3971f7f0d00b62735b8deea98..ec87d5696bd33834253603742d247d95d749f4d9 100644 GIT binary patch delta 437 zcmbQ8U00nRx}JB^rrE=~fDLiMfeIiFqX%dO4X%dMSw| ziF#p~spXqb?fA)PC4*1NlnnORDOn2`85lGhr_@f-$YAZ^1gi(@XWXsN$jSm@PMiWS*85 zmjV#z>2XbeXvHWwU0^#i|MnGZj5`@c#k90iD^io=)AFnopi1@hraRU%i3tdzNlh;d zVG=dx5@TQhc_TxthZjZXl-4OQPoYU+#Px;>8U00nRx}JB^rrE=~fDLiMfeIiFqX%dKoD>dhtc6 z$$CMl$@xVonhLsh3X>1+wcX6Mb33EF9Ddc)4Go!vdAPxfAo`~}Y+@AI%)eWjk(~`H zve1ZG8pfIIzb8gg0+;2J4drDv-`k_)%sG{bfsp|OrZ6gP)n?>pW3-xX&Bmw+HFJ9g z8{=z6aS1K0)QZ&P__RDL1&C!@T3mX1(*<@hiwOy1NKRM$#w2RZCC0#z!5%v$L#&4% zP4|@6DUDNVr)XrbVoGI5XYouAxtQH2A2?>TwTF2kQ24eR*i#IX1(k)T8n9?jcHZE)bty}X8vun)i8=rP diff --git a/.doctrees/coreblocks.lsu.doctree b/.doctrees/coreblocks.lsu.doctree index 050b46dce956956ff6865ac88025f1fd451b6452..f0f5225e99f89c5c5164596d685e4d43f1ad4abd 100644 GIT binary patch delta 3288 zcma)8dr(tn7UzCElbf3aApuQ@AyhUAkBU;=iL3HxS1THsGCIiUVgihpEDwcbD=45l z?YgZ2gcDavRBW}{R&it)r0dWvwlnS2N2kv2f7LDSw$p#Q1rs%HI~K^GCuqsqN6(W#;lg z=QY&)sLghn)PEfNLtP=em>68x?P>P3d0PBp;g32fNoeLE!TVi*%?(-};}{T~;&))( z)1c7jdlu`itK;IttO`yv`A*;zRtnqM-_%gF%mNqAYe492R;>5+Hl@mWS(_XDVr#u4 z6kG&F^+v_u`p!%^b|&AD9#yWewzjdQ(O+9@cYtS?i#`UTdz>vo7;QhVja?Jbxcp=KAU$TtSzo&-%!)?sWE9BXHelCt__Y&b= z491P{FO9`~T%1qMaCnMlygY;3r>*c(jSW6J`?RqvYEm9GDd*87eZ0D3DaW?*(A!ze z>Ur2d&%tel+kaSy+NC5NMop`ESg_|k)`3j2E%24yY^%l?ku-PH6txd{#VgAF`)YV_ z?X|H38TcB|9T)w586(F7j}%px8J}nPqV}P)whNW}`g3(%s1&$AoOKb8&*!_hE!EVubne zwLMl&^$Bg6d>`|$Yu^cVm{xd)0WY*vE(5EW&;ChR=r1O#X6V%HyUCA_?SH_rI1Ln) zIoKnlx5CIhLKtWIO&P&}As^s0;PtIbfJ&PIN?tIqOmtZ0P|<-D22x9GaQ1}}Rh~v7 z;n2Y4l3Za?GJ8=iZ>5!Z}IT3rGSNbaJGstao7OUTQX>w9qxwS-cvLkIpc(FeLc(|P&sp{ zU=8=cQ2!y8FTi5=lguu_^s@!bCBU6$rImG^ldTo#pOj)3B*}NcM%xNjBVei)5JoC2 zRI9<1ogJ>aCQo~NDEcq>4moX(hV{4$*b@T$YS7KP<;_kRD=1^(im--dtj@Vu=YAg6 z8_}>4tmB~?_KCcCO~(4WjD;)0`bxrLxcbN8a`s;tW%T6wpUmj{Xg~^)sU>MB#PTC0 z%&vtCsp-&rBu$m8mF_8mv|KS899qfNXkqoxI@L2#iwNDzLj^)A<{jxqIRZQ!TEli| zC84+ZP0;m9@lR5#lT9xSr9hV<`3JGEfpb`XBgG6mTGep2kV8=NOQS_0uvG^m{^vF9 zB`sFXNkJP!2m7<(6tb54^XoK|`t$2BbJ~zVy$0@Pl)~<#wMwbQA6v!#f}!w{xuk`j zW0%+styEdpwbBiICh5Xm2hYh&C>cm&|B@*@uB_1A<6Z=Je~~C$A{pgp>YA21GB*MJ zZx!cJ-xR+H3iwz(*RZ3pwWYA3r9S#jT_Z0!`AOt3JRd5LX2MiBMVO3A?Kj6t@-z&ZohN^;zs`9i`4~#*K8S zU1y|?fj2Xt<77HlkDCkOaV3ZjO7=y_CX#)*4&0}n;eH>D+pUA?Qw7|iC^Bvk@^Qt& z+Kt}$*cpR~zxFh>H-ugcMZS9QH8c6peDw}HJ)NoabjCu__dvc5pT4D3Pu9~}LOD^9 zB`ws&NLm;}Qjzou?#h*Pm1dHpSAQU>>r9<2X$$*YmUBi26>m&&|Bfd0wUiV~)JuOv zTn)VGWNG@J)t%5<5prgh<9&>Q*?lTyR}iTq-E1AT`#o*`XeHezM>*|Vv1#9m38|!A zs#nr3qnVU;nVu?%GVQ6!7dBDl$`!qv2lBhSXn}EK)UPt?S1I{Hb%zGZ&rPd5cz_pG ztH-xLKS_tvt$J8BdVt~2hoc{{y|OC!9htM0Ol6EcG|j3=2zVPr3w`riw}tG!4*mFN z=dUvMj(+^y*v)vy5dsa7X_>g%H=T^DcWBr```p%Fn7#?>Mbrs=`BY0(s=iNYpld}^I8erz6%I=HcwB;I(n=5&Z#SVz<9~iT GkNY2s5CRVX delta 2391 zcmah~drXs86sH%VwEeyoEUhRM0fVDJ)doWbZUYIM_@E<1vTQy&RP^JMH=;u)lriUw z^?|3N_!ulGfz8KijhhVT1Ghw7!eevElFflivMn)lny4{z?%aFZj&6zmbH97(DtDL7QZ_Tj%_*6 zv^g4n-j)Y34gDeVDRofLo<^BD+qZ|pJB>+-Z{g!cgQs)*B!%ianx$y@J2k||$H3cb z^>EKwt?r<=3Msg51ymHIL!6XKepSQJ4zp^ET4Ll;H8>=LCu-*{1qsoBHOEX88gS1s z(ocM=SsbN)riBK~{X`8iScwVU(#@(T{sa-(3GifhyK0t(l`umC7qh324@}WO(^@mZ zcx!Gz#>Z;N*mH&yaNtE87(e5HqYyYx!+<3YoJV0;C>F~goWmA=MJMDLqwIJDnFI@EA&zeFBrAi}W^!h4i(A4=tTn2J{AkNtjZl&>5w4w#B*7w#o|KObJE-oC1nm|9%*Qj}YPX#!uBhh~(vQWU;?9dO)YD6T zKnCuaiea#JrjXmL9ihXR27iA>+ozLzl;E>w)3Io_Zl?4?1k=!MFz z*~G4f`Nv|!A!_FI`b4BR83r6tpzRJ5`vL;9r<&mDsaQjt)<-O!?ijInsOmO&c^zP! z{y09DWNI0wbS+ez=p*@BHZ$|JOvX#JR0^Tq2jJN@=6?ilKpwI&I4rvx!D6%~P1OGS`EXH^<=Y76q` z7M83jt*n?)US3-1qT{;@6_-a#;LS^e>SLK=T0l*{o(sbakJu6w? zqEF|N-+14~v~c)zANh+jc*Gf~b*yiXFpXCXQM%`f0b_kV8~eAuhnNwGjxeHB4U;~P z6&_MMCv=k$x)~7QC1iX}=OZ+a?iitYI{f!G$-P%dla7wsv|{SXHSC~U)4~aLD@vr;&8{RVZka1d zZqRwGUtS~RlFsw@xu1gVhbV3vbb*C~pB03Z(L+W-In diff --git a/.doctrees/coreblocks.params.doctree b/.doctrees/coreblocks.params.doctree index 498788efacf16c60447ee1178c911acdca523146..25d970cb028531c9d6dff4e4c961c782fe51cbd3 100644 GIT binary patch delta 19415 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 diff --git a/.doctrees/current-graph.doctree b/.doctrees/current-graph.doctree index 373b42245d86d3c1961f1392adf29440a807ba1e..8731629f6719020387117727b6f91731c378b6d9 100644 GIT binary patch delta 2194 zcmZ`)d2Ewq7|+*hz1D859o^M-S9kPSJ2zzAx|{9**u-!O+rE=kHix+N+hWB{l0BPjQiv3)A#xPp6C6&&-1+B zclA1F{yK-(#Xqs-EU%PHh0|r+Qxt}qWk}|)#rM2aIQe_Az>oC@@Gu)9!VEtKK?((V zqM#DWuv<_BML;^e5aOi~ej)1SZI4~uHMXDzR7jh(>1QgLOX&;4T zSpt((n<>I?fe9$DE};iyvs^g$M&grIhw#9v^5sl;DCBosR0uGr(4k1FN3Jq}tgGQv zSfN#FnWX4S6VZp2JT5M%ba+Z5$6-|>3(RO__*3;Rehp(cyt$K)x59M(+6*{NJZufO zFbGDqJRAv+#TlDwd0ToR{0`9>Wx(Mm4WqRrDigONHSFOpMy*4$Is<$C0$fvTFsQcS z{9_W>)T!W;H6zKSl0%`X#JDDoC{mz7qgzsR1y{83Ov+KMksQ60wntkjeB_K?E=fmB z{M|b9V$b46tOmoeRyI60SOjfc9xIzEpCfKjwz*!6@x{#hgiW1kz{B=R_E_8c}A=UKU1wVT}~RSg-~k7NjD*un~qr5x9k^#3#f< z1$DTSpG3%u6LO|7h{Egk^{BV%@RD7HZhIcY_6&4P3lLaTfJ^JFxVVlSt7sJF61IOA zi-ovZWWj^Q8Hg^n;bgG|w~Oz`d&Ti=^JZ;g94u*qw)6^f5P4}ZzAagVNP+0E_0J0M z_of;KTWFBr^-U%?H+$hb%EQJAwkM2RR*{8oEA#|1W1=Dl&dOcO5%U$z%;7DNlS zd_!Tg<8IVL@1B&1wNYsAflrHt&ex zp~J!6F=jf;9ZUV(C8pnYT<75P8g_@-8VROq63*3jap0~K<1JSTx?K6lsms6}S0R0% zE`-9|6G9|crlGgq!HVD7&;e+R-0s?1*Iuuqw%NVM z?ATDTrLd)`>EMo-d)%1GUyb8U4M>@kVD{m)*yxMEHg_U?bv)wNp|L3jo$gX94V#)n z@r64E<^Diia#zvy&G{TWzb_8Y?F+)(J|%0po<*DJQBoFUdt#|n?Dk~A=8k`{t-r5ES`)dKb>3H88gCD&SNbttP)Dk8AHv?5IYwvZ8v^Yp&5rnPz=xz0)44jQe9YH^R z#Lh)@Zx-gq1(@rNQ{K~@<({z&&4d6EM}u*rH~e49|$SBCn&yu02s?DR*#2 zD@o6f`Ey97Rk-HQxQkx%uSO2y2s%dW9*}#`$8c@^HIVlgW2E28NfYB{>uS8(FT+Cr zqL@$nw_y5&489XeL7I5;=DbQ+dcU>!~k=s6ZKEG{xX^woi2E`rAO z2%b#DpPkS)UZ z6Bc2m#TvF`FWk3fadC6bWy|I=*^F}OytOb!<=_lI2luN}FsBsa8s7*- zY%Cc%XjaJ3Bq%|JUw{XKTFeU+ctwzn0l5es(+Xy1)DK+Di~FJD%P=Pv;*@v`)`?xj zK*+R6MoA=D3Mz#>81jTzl%}C_M;S9Ao8!WyT#d~!7nfaOzw#k8s$A@iHK8$9fRAHq z*tJS!z=>FA*dqqAgv_%l9v7E2M!ca>;-tpJ9$ZV1;SbHHSky+ME$rgsBW)_(>_THE z54CX)yd9Uw0tp&;I1!hE*?i4%Z04`HM-)!#R;W$!k~#>!XD*7&idM2>LLM9%BT(y;X$DR5A0NQ7b^ZB^$q| zXTw<*VW80>fz9H8y;+PKmL6EGc6^nw3l$m1&|n=$My3UZObI5ORuV{xJ(=0~g6P7z z3RCnVk!SPcv3^quuH{KkWcv;J=L85k&9K?S36?Um_P2z%?X;jGcl|P2=5B8M3Un8x z;m^Woa0@e0P_zQ_qP>ri{aGl)jY21y3!fsFB6T!dq@eJDTLei-E0D7q_;evC4YyUlMk4{)&WhzM6&)?&ED zhJh9lvi26?QHzT?v{y;tv(^R{?NFUmB^^?t;Xo3eY+p%-V$t5Qf!Iihg$oNEh3G#}j;c;I?h%tY zNS5Rxrmb@$2VZt6aG^^@IdQGaNajU$)_RSY^2)KvtKu81)&c{Xo{q=O7%4`)GA7`y zp|JQ&BGkS_XuGxYCa+KAZt*p@dDt0EzIgPJG3m>u9GLSZ=^P?=nY+U2@wPPWVIBU< z+yRTv1ZTHSMy&qv;=s=Cwf|KGx;;4R6Cvv0M&h~upcD3+^k#F~yC# zBAXC5lun1Vm>h~`%)^s>=ti`7{gjG?SvX}SLxUqD4z!Nsz%VAoJXYb8kxk^ZakK); z(Je%yLLI#d_eLYh(?fs;T1EC{2=%FOoo>SdokVVvFGxUuTl7lg!H7mUNwTGALILX| z@APg+PnW`fIu{vZ+h83lVIvNXCG$m9RU2xMF_MS7P~!ObN+`x7(IRp&CdMt~&0Vyb zurxm&%|+u(BIW`rX8IhDv%H~JV|0f6iKf}3rCsApJaz_aurHX#7T=Db0&fP>S-gQ@ z2@=3Z|Fo6d+7hX43H+qSJEs&Vm@;E$tbMFdD# zPNQGuK``mU<%t2jH*+3cXH!Xv1-NrI9|1BNLRsMwpvebNd{zcSlo0liZmCuMAw2<6 t7=b3{*hNT`s*!fiN+PF{h^y(43YVv6N!tHKAm7v6d0-E-|K*3mzX1ss8)E*mHvWrN3FnFTN!FCooWg>V^{c$JVsT+X*Sws` z>nYeQH)_4gdrD#Pw8?peQ*ukXPRW{*J#GCeH#^exs{%;sp#(Ntnp|)R=0gNKMScx-_AWyQ{wPs-`sbp42pS{VLb2veLqg8O2#e z+3Q#N*tOBMtTZPN+}yHCO3Lz!xWHzYkk;U}sR^a7fvn9n^qEH6CA)2bdiCJLknk3E1s1z zZT9+A9#hJSi>DQohFFDjwbd~14rwC!Q1AewAIZ(-_Ahts>Sd@XHZ*9ElyH82-Gqt; zJxz0Mr7`zSb8Mw2UNz0sOO?jPrlopm*)PwT^7PU(4F;Q*>7|d2Pn+gzrHP(z{A9}3 zOHGSTnC4aJ#nyS9Ooe)B@w_RfQoZ!-<+G+Ty|m-N2GerAv@dXsX|`T^zk8)=mR|ZG z?V4$ct@KK^X@OokeYM6^WT>$Ae&U(#*G!9aCr6bgyZ#t@PVb(+a)xNrz0+LcR29psNX;pCpt&@oclfrW_r4?%_sLzE+wP@@)f? zNiUW5U1`eIOHVyBz*Mf6-aQp-D$q-3zE3tc3GX8no7e4$GM@;KHLneic47m!c6|qP zx0oRF_PS;+)qL=5kmfYHh2(3l%kVZ+v9CEk-N&4S^jHr+^U=*sD9u}PM;$iAtj@j1 zOx{LY7i|s*)mXiIWKKF9XLcUSy5bGVnK?4a zgI{P3Or*Jbva@3kmh^3Bww!5fKJ%`-*>hN%|8tN2I;#~_^H20@&qOElrG;VUn(R2y zyR)Nw%|So7o8LSTZ|+>~Zw?ykY+k;gag8eZn3pC6noFxAe2Dm7o- zo~_JS!2@4s{>QewUGCo*>ycQs+1kY9k6Rka<*_Z)J}iC^3y-!GZ{OL$e!Vt-^;7~H z^fi0$Y9SWU?K{PSS-nv#luT>TGhZQF_U>VhjdVA!?eFcd3bGZi@!FPVEKjx&W#rs_ibhn2)~hVYUsmGnCuLJo`ur?94V` zSa>PYTWZTgk?o6xD^e0#nVFwJq@+bxwg`!N=fKyS>RuVs*k&8{kc{l(ZPInh8|n} zSB({-%2{Q;=E{9dc`*4uYTQ^1UAfQ6TzApkAzH0JhUSR6ZszQYhUT!X-jvoE7Weu# zhcS(EV!NGxdJbZ2DIf?Q=hz`HbJ0&8=B>5=&PmziwO}d?mYjK5Xg@pu)~H7;LR|cQ zBlGkxBFt-lb}_T^u|o*#|IwM-=!;Oqv44B^HhHZh_hD=XzkM$JPiFCd$TCi(cQ?l` zHkvno;ld-q|HRo{&q~ZU>e|Bg!p=-!G^;#q=UiQjOG?+9rH{g!Rr5oXKS3A$d2M#e z@+Y;~vCH2>W9P}vVSxVU0+9c8e*f-e@z0#!|1I|H#E$F!*J%FN35qcJA6q$_uv6W? z=ZN40*)i{*pxL?apP<=6@SmXBvG|{$*-7!=L&Hb1qhp}|rjMlk&QeSBxG%ABDsJ&N zcWZy-M;Iujr{)5Dh7663Jx|4KhbjXb3R|JdI5-{H(Cv76Kto8U;74N3#40sCjZ zH#yj>ooBUA;5zizFRT9H!xDBj)tx3ZgX-T&WQUec=7%5nng1QuNoyKHMs_ClQ<&7z zJm&*(3&pPKTK{St;?=Ei^cOTs+&|f!l+lzxDb`$e6bBjFWn%rKGI&DWYSB$6^TCtu z!fp!MORnZ~Z}^#yTnV@N$=1Ji=ErWD5*vkxB=Yxk8-nial2egi+9%2rNb)r*VQZt+rJKk9`NBe0iJHJ+yoT)RW6_^)2 z6~)hQar&cK|KB*s{U2xeVdh(PzSOcK%;;Y*187o5T%&ux;6zV$l-wPTj{nEb2lh(g zzkNPPVdmh$ZE0vnsiAqnxfiNSf6|NN&;sijS0NKh{1dAW^57kWx< zXl$h9A>|1CqDZMJ+{vSlFjvDh`m4gj{O z0N9;VBsbc6Lh`4zN6`4LDUvHIy3pV_&{=weF7O!W@;{LRESKXXABlD)0O*$>ZKVAv z$U*Yu6qJZub0;~RcJ)OMeWFqH?kDAwACsfDpEQ~FF<9IFP>0H@J>OrNL+>&xB5Q~k3z9myqrXbS#k1U z6oZm6ETfr%)3W9E^l>r}O<6A@21+X^jA?XqwH!?HAZY^aW>O#7Dz~MhHL@qI8HA1= z8-#w}jR)f96Ebv`B6+hR@u1-;(iECB2#A&M%I#|gqf0Uy;kY+Jwq~R1WR4GUqfu97 ze|mMWw1_`5G^wr)8t^BEra+cs&kIdmSdKj{G)1u-d!1$)z;f(Kp=kumvA1TX$t=g- zZkdW$jy*s!Eo3?NQpU83<=6`j(?*tKuL(@gvmCpxHtl!CGe7=h(DWt)vI{iRM=Zx~ zM@&~(jvaZMZnGSFB53-Z<=8>C$=MD6u`_FvKg+S>X;UkfV<*w3P?lrIi>4TsV`oOD z6qaMhL#8n-$4-JKo2IcWJM}RYvm86%F;%b}JIgVxVmWqfV|s$+*k;@G9Luo{k!c^x zu?W)i2FtOv)AS*7Wvh&(g;Pq_FIeBfRBYKeL<*4T@;SWm%p52ASuUnY9eCN78V!{` zmx?X-hDuQ~qwuBZ5z=Wu+($}XWturwilCy=(s4=~2NN4PMtYmJx0C~FPRgCAZVP5Y z@6n9nMJb9++(PO$Mrvaz87DQDq?wkrdAtUc4EY(Zw}m@O@_W{>7bGbIWf4Ym&M z!JXd9m4?&9(Q+G0be_~+Vp$)mo-PGi%=ywBYuW24W_97OvO*8<$xfD-LM9}qta#mu zvD__^)(c?G+Zt?7u~a5tmY$`IThkLz0Q}H=I($Y`^`Tj;U6g%^_rPzCv{IBUb>))9 zii&$vYDk$2Bo|A~Jn0!Le((b6Lu)p)LONh2^*(APr85SD(b8;@lxroTN2IwD^?ngT z!28Xjpq&_sW=ol3k@cbU$?&9Q%b?i#mUhdf0$G5$I^L|3@~mXF?@0cZQ7fgj)-qSZ zBo~9brSWR1$_nHlr2RsvA%t?7VNcUs({WsuCf2&6~-QAEBk@_rAMu0 z*cXiIu;jG=fV9mDn|Bb4ocF6Rv~#aYj|rd!z@t|D=`&Dw^+8FcyW=ppAo8^=JIo|z zO;{lDc5C+CV|upob!nFs3PY~5vO=~wRT_;Lxwn~dfkAUhS&3y7GO3n>?=ZEU?I~Nm zhr=qHO)p1a(sq82bq-nUqe6WC~lU4Z#W*xdldOC9H72t31P+4Rx2}tl3Hrd9pS8 zqo+K@n$7W+bFA6xKJrv+cATGlTcS71&<_M!t?0Zz+B(AqgfEJTjpP7W>7x+0tg)Og z(UC2X3V~P<&1?$F+s|61qDxKXI%$z*O*6TPftu_GKLlyLC^dlbJE-w{HGuOw2!7uN z%4`O)Y)P;T|IV`=TgwNn*}t}t-?nByXeYmC&F<(R!y9qhqE7N7)~vCMJi(eR4q-ak z5(xG9Xr7EK&2ZQUG~>A`NAM=~{%G!8@hamYeZ%kR+|Jxc5a(0N1@O z`&kzDgYls7;iD+HB+5VP1)n5@r;O|sU<#AvTof!92Ff#8nwlcdV(FWMVU|ey4UxOZ zNQ=_tC9M3@P}z)>w?U~>b}Jk(0{N`?$?&g=Hcf}A3IWU`Fq zlS5Oc$}WNpfsMaq-gJ2ywi2r5CK0U{QjHV*$+c`YH<0zAx@g&G@iVbm!OE5?xpJX3 z`(>VdN6QwVdx9XLNS0-h9Z@Wgwn7h;$j&l(Wnz4>3rMDUv(V+Z$=V=)J&PGM%Dx1H z4zfhfk&}42q2;l1Ia#1A-_MojTeEZL%jMRrvQS=b%|2Oy@#btSaf@Wc0gR*N;v>vJ zcs75De2-@vT8fv+CM)#za(RR`JEBT&;@YD!0zzJG!YYin$X;J98)f?HWpo6am{Pj) zmez+m)p93^m3f?bTFSTl{+RrjEFe5UJG_B4$tWyQB*V3@eMf3;x%s$^^@G=gm-nZM zi;XUpx{dN8D`~&YGJ-~4>(Uk(amlFe7$xJhh0x1EwhEqk}gb6Fv? zT53iiAIk1D@kOJ%Wzy5~qnu_9zyo*4-c(VC)w9{Nay7t~7q`prGIZs2shMTX^KvaK zEZT@Y->Rcn1}E;QU)%dQYB${p!9ZB}I%*x-CGXH!5LkHAl?v6v^5h=5ih;N34R5JK zAUt-jyxx&I{W8RC^Rk==umzJ2L;A?KP_n}g(4Fe`%fl(?FPhHVTi6nTvacocfc%um zlIPC|LR!8izid|~lp9jr3f0Bpd`QNs&MO@}ET6OzA=|R%uF=!-#!<+|(e&^ojK`V7 zvNLV{5reY!xV+kmK?LH$6p3?wpe-qH$Xl%#ggJH?y7Ds?+BR>YUxFn@vk}FAZB#8s z-exW=Z7T*7yVJ26nhgN@sm56WnQw)5! zpCa+Ceu~)Vrx^JrKSkj?{1laM?^B%l-af^XZ|qZ?_^uu#Y)hZw&iC`6WSe;am$Sr) z@8W@DTX^tf`*$?NHt%3o#P-)IGT*lY$~NsOu6)Oi65FmLVS9BXY@-gQY?qGa*$y3) zyt*^ro2Pj5jX9XIU3rQJ-;#rb?Z;7KoADH-Y?UW=;u$5=rWBOrPo7p>LY;2PA&uFO zD<@)e9^;N3`!f7DjrX0xrb-dMyvGyQo4)jJ&>)LTN}n~C6MJwm0S^dda3(AYdAz_* z2pGQ~+k@X<*?+&_ziFm&3jJR0EDl-Nu>^jfhsJQeZekK}9@VCgJOqdxu~eHraVVX2 zD1GKo`rM&((V_H(eW}89#lC2|=1{usP-2~C^05=0YSX}$qQs6_s!b^lrBsJfnnP)* zL#bl8Lvf@-X|zLWtV3zMLusNzDZ``nU3Ld{jfE-j@M zJ(V6v4);`|k^I(E>BN8YYuXS>$MTe>G@qSxr$;ExQXY+sPaUfSv^i1<2I5GhG8lIz(wmm0v0DHUj^y)APzovK_cs ztdv)rRCoF#LUE$>D5b67@>(b*OjdDx|DEDSS0aJC8>KX-BTa(F#Hx3F4k_^sN@f(ivKln{{r95vit%z273aX2tW&c!G(XxBeh8H6M=RvE=B%J)L)!?8*LJ@`Xz z>Y^!a89fkm$#GUXdOA)SCK`BP?Y4Kk5(`#o@yZyL_ryTKeHDLtJzhxx+%rLgy9oH* zG7Qsc+0ex%|M3K697tRAReB>C-B;;{WK&-yO?2uGasb5jQ-&g0*N^kP)KBT@$=hoa zhJ`8^wnB?0D*oL6O{;+SBb$k89F?g47qDv4KAKKd(1ymJaroeej3)5)(lX*QGe?I zWss;pK=k{{FvZJ`EWpj+MwR*C8J~m>&8JmKN|LCMCMw)cQrZf@FiIUE+VF8~d?c;1 zBK&D}vf?br$B6oM$w~2P%VvVy1>sw@7sJP_p7nw+1Rr zfK>-6v7#z=68*JaUhy(`YGVhn2PyF&JvB&)5{yd1=vau_l)m#e1lq__Q!seYN{TWB z$?X(nl%TE%qp zBVdv}Tr=hO1a+JXJW1C8L;IQ$ij$~zN?>5KUbLsV!JT48D6XiRJObWfJ}n=i^c93> z1tE;nN_Z^L;O1d&bLNu z?&P;HI#~eA89hev5_*0RCOq`};}l=F0R=XppB|$mK)A2Q@FDIpmWw)ftdb7k$+6t$ z_>AMgjB(r_?HH$w0Pf*9ZLT!$R+EZJ$gV)_MtbddrLSl@xErlq3_D-d$>2vFI~ja! zh7~-4`lr=bra8~*YcEb z>_~3sDTz+}(*9gG;Y_3Z8v>{{5zdsU5F{(|m61rk$cI?-s80dbrg;ckA^ALdt3c_F zoI<5*L$RyT41m-AK+-fAePFV|t))PB&B(}s znPg-*(EUUU3gJq5onQ1i&1uVXs*`~JPVohZ5#y6E$Brc%RO(u!xC_)D)GZ6WznpAn zta(JvNTR*Pum{+zJH-t&;L@}RewU++0(GTGX)FLv^q>d=@D~kk)O#kT6VH2gXW?s0 zs=KYI*nD|XMXBOPAIwy|=}eTW;4tp`Ol3N@Xx=68`~^!DKO0r*V1t|H3JR%^5lkvo zdeCo7D(@bs-Hd{lDIIJzDpFxhR;SLJ$2YkcaaDiu36xs&y<=l0X_Z3#2Q{usm^Os6ZmZj1z$F0)WWegJOpnLN$NIse5+c z5U&PM^(cd#LLLq?_&5mOt6tCIXJZ=k`h5g*FAp%!Emhjn*4Y?Hj*6wdvy~{3PoTTA z5d?5}f4f1TV}6nL6=02&rwDTxI3`-*jpx?_CPtnS7@|vqm5cyFwb1vK;uQ(PJGgUu&dp4{hV4i~L zXD;GNj+;Oa<|@%5pFwf+6kK#LlbKAb=PA7fd>ZRzFuN5FB#-&9PF^#cn$1^+3+h}d znXhyg@B(^qzNVjh%@Km#Oh$B~0Y^ zQ|e-+kI27DYZfC`=dB+SbLq}9r5){@fupFdOB5G@I_ijOLe)z&5ngvhHKN;kt+xc~ zKx;&*TYtweRhO_Cv0U+>UQ3ncg7v$C2+nSR0Gt#6IG@1+@By3sV@3W$frNMQv*UJf znbH(?vwAr^5yVdvwC4nE+Hy@pp9=tY79n|trj(Hn|NqHyZT4Rhc!<)Dp_)?2a;=wF z1Pc3XcQ)~@Q|L}SZK{FW3Mw?X+r0aO zDy0wYuF|xB2iK}fgjYXpk>ebH;6T^@I*{If6txySs<=QEJ}Z?zUITO-Th@PP6|6q_ z4_=uDujIs681WznVj~5U(uIlT>NVH_<7C57^Hse5o>gc#6M3O`4;zJ7xh1HZsz&Duz9 z13;(Og6q7s8rQCjG}5F0z#(I7>@us-KUTY@TJaaH_Yf?xtqK)@NM4aPW1j_Cqt_|X zzRC7X*ucf;m0D5Pb=(1cxDKolZMLF0*g2tQz+(Vl7u5~co=7aE)$))btX zkP;%0$?LUMG>aBJu0cOoXmE2_9j1oUd3NX)|FYofs_%NZ#mop7$E93gO|m9X%Fzu< zj9>r6Q5k6tGUnIsq*lkxFEueWW0(VR(cdMe`x~?+phOU1n6T7UVD(C>!S0m{H>;l7 zTLj@brP|+61wq+T7a^Oa-jas{Ue=MsP&_2xs=t0kI)Ks@UoE8>h*!L_q z_&S)-3-s$ooI)1T;Z00$FQFmRCO(xOZc=(t-6pO7FNyZfZBp6`&F*8G?dBEUwQs+{ zwsEFYo0TY9uo>qoaJE~ND4)bJBOKIlL@;7a`Jr-Bq5~F3KHy48Td-p)q|0DHYquzF zqRDq`Rq5DDgX+)|9RIMIfGe*0aSWa{KB@I<+>^XtcNqX04fGkF=qTC8g8iL+N(&E2 zX2)c~R>q_T%4xS1M_b$)&kJhUO&0;Ur~_KN+9@QpRuka2t(uWv6SBtEYIF80Hs0N8 z))`b+J7*fS4bJp*t!CplIT3kp!>`rRF@~J5O+(((I5@h9A9bMusdk%U^cv`(?wYi=X+O-&eM>j-nh0d)KYCEO=<;1Gv)gKc%_yJxvmsNAlN zbjWtC>+Nl19#}kVvXjSiS`QCw*UTVV?}-_%lEXOGG|x~KHaLfATX}nq1oYR#ys3}IDCqoCMUh9 z^d{FAHQp121l)MiUer{ZX$P$V6nYBTsg2i#7q#)4F0?d!u%m0pvGvLqI7bV~6G%P| zVYRTbT{|@|UC7zdt(`dE!prtuXpq~m<3N_#aUU}z&E`Cq{ml^)jj0Eo$LfUB{au>m z3k4Hxi3=8M=As_D|>o_3)7h$m?=AT>JvhSGp{J2;J0R<(z|9SEHiGOW|^l20q=Ll z&U*2~M|Q|J_i0M`R6rqD2k@-jujw&;zt-~$tQXd4{e__B7V_DCuBSqaR;8syt8$%p z%Ws^+lxB+hTGZF<*_)oVC_cidzw5z{!&}m-mkjPc!)+TCR_#^~Eoye7fCIRBXIp;x zZVy^BPiae&01-U?(nD-8YY*@}SM00Us@*xDDf?H^I5uH;ettl4t+xxjUk`2XygXh* zC-sVS&V#I2PkV9J+7wQS#ait5X|7@5V1S=v~?(bzro2bVdTJcTadu| z>_+zvY8$d+ui<*XkTMQ3RllZm6!XJ}wH@v|D8VjNV>KIcxX0kM1iPsob_jJfy}RKT z73|Rg{u8X4vBs=p+)^}*%~E4xvQhRST$B`&bQm09CmibPuq3x;En0Wm?d;@6br8ta~+DvsWxI{xgR)+YYTSmiH0OhPyj9=|p3XXe&fd zfwFa+_o()W7DM;yDQqa{HG{k3uBne0A}TtjG;$5oCnp^_iV&^fsAd2O6ntEX@J{Hi zQ?McE&!KJ!;X0J6kD*@tF|FPpD@9KmMT_Gw*OSMzWjWo-+0nrdXHd3@xXq}y9M`DF z3hH5w6K4YLeN&0F7ytO{P;%v)*i09_uE{c4D5>a#66`*_n_XXrya8ecru(mJrjpHB zdO7wtSF~f--Jmzo-7{}!P0SPocD>!n2qwI#5zH2B9XmUh0a<4kzJ<<)yrp%vQV=_y zw=AZsZ#(ui{cR<>=54KoDuK5NP8WfvRXV|1PT=LZ!F!AWnFzbzfd~`d(L{J$5Ic&n ziF`hA6k*Z3&|v&&s5|UkO^|K6x?9_ijMoVq$Q;qBp0lH}lX(lH8hk?IwM(b6ZdmGc zKx;3XwwX=7Y=?=^t&U;#+c2)S0jN1C2ER4!c~5KZkR4@|&VyDnQr^qxlN#ykf;97_ zwv~EI2ekI;rq^ZdziWrFb(LXG+Aywm#&!37C}HdST2mj|QQ7)T3r~S6m_UDa~p;Z>hzavP%m3w8T}PD%*-aPd>~ZRiq?Ff8O9A!4YQ_|cerCezvbpZElz79 zea`{)#_0~tJk7bso`HGZ)`@=-#Ey~2F9PT&-|s>Mo71a1f;0A`XEZ;I1JN_M*yKB2 z{8rYd7na@oA1Q9l97e?$fv&PwPF1Dr7tx}x4E}WYV_YC-d~67CSj?Ov=<)kt;k5#% zl^O{i*nFtn3%HW>k&+-*8V}lb4VM+1?BXXlc0Tekj?wsf?v3AKJ)+^(erk8O%_a4V z5HIr5uA>64&uFO0$67OuDD-1ox^v>Dboon-)vmLK7Iw|Fh+q%TaI;#DwGDi%NArQ? z^NIDINp2M(o+hoGE1L2n`b1l7@C}Z$SeL7#u()e@Tn&9@Xlz@_p8Qn7+tyE&IMK1r z5j5m`O`3(DDuF`vT>*|mly~e?Y{&Q|MmPHHQ)Q^=K@ZkWw4jWP&`JC9h*M(D;lgGmpqvZ!`wYjVubfkQiY5opopX2s z#|L9z#D-nCt6Xr^5bT>Zb!xGLX$%%R2)L|trSqTh6Nc*Zme`;{2XHFC2-P??>#B(TfB|Ab5U~-C3fwHd}VObji%-cRO9^&`Wp7S z@scKSxvhp*@w6Ew8F{)aw3}7pJxu;Wqpz^h(^eh&h=8I)-Cb>7iS}Lw0|2czWGn3I z9{a{lI+}DvYw6d^T1#tmo}s=)86`HhOh@Y+k&b?Sz21)XmX~xus9*PtSy{F|GF}@6 zmTM>MCbV@t4bR&Z)$BW!;9`*#Z}y#uQhM+G;>OA$@`YU-+|M1 z=AZ_O`S=3ey`~HilVhi7;qrI5aU60RXV{frYW{SOK;d}Xk23EV8av+qzQkP7V8L)7 zb-Ru?V%$X?a1_~#PTj>1oR41DZq^Ul3lAJ#)O@A6$|F_>mGL#6Apz$}W4_X+&~d>R zS0Fuv7T$~yZ&%iS#h$kPfTt&)U(+s+--!^fAq&RC8DbVWGlC!og}f*DX{!k?Hg71+ zu=vG%jg#4nH>?-1wB~ERXr2Dr+E)tt1}|<3DeoKYuJa;E-{TG=@Mn0Y+uv9vAj7xX z73Q`24aMKYtAL7c@l2+W)_tq-y{1>VDJtM5$d5Ey7rOjQy#t5af{c4?t}t)*;`){E zG>?8y;4!k{Vq|_40Niw19plf;F?OMl-=MogzhN!4jl^#e`YQn^CWI>m{cgXhxqnkh z5zcn-_u8uw18uv5B?KeXobKMoQ?yIpYlE&v+Km-(_-(v4=oEVkPxlIG?Jd07E2K-e zlwpE#kK1?>%1z2&Fy<~X^A9Ypr*A7w1gZ%~!Lc^qP-|@12!D31xI80gs_shIG;3~8 z(^B_LwD}HRVBxmqjxvU~D7T3et54otrIE0)_L1z#Y!Lf-y{G<;s*sM|RfdW7L-aml ztnMkn0vaZu*b#E5H*LMg4;6Oa!@DkQIe$>n1!0sRv|YR%b2EC;njiR?-#)_5f)_eZtD06vfe3jQ(4V66n~`=Gvd|UYn2eL_vlvx*xG7Jsi#e zDCncbZ)N9gja9Ywp$8(11cD%0qRcVff?*CP5D3A93s6I=jqTzI@J2aV~Gxka^M6;y2;;4Z6i<!N}hixlab8)LrE7rUW%lL zpCH_f_fc^W^oP=3fcHfT$LrqI*or1TR2r(h#RH;Wc-P@UPj)xDQBV_OV>Y^$Go@b=$}q~`O1@n~V}s@ZTUJ&@GCXg^+7hYK-3rdn0) z$Uka9r)0IAV0$)FJQnkI#~T>-!3%uO(&%TWxIqSWI{550sJTd58r2LW3ykVC!4(%~ z%rD|GjK_va&=zMAq^KPQ`Ww3XGd9w9oi)^DMQub|6xKJ|uBe$pirbK49!{{gw8I~d zj8#=<0lpVWbu;jYX>BK?Kh0CsKvdeKatVG{)k2hVoz!unr3XR~1aZ9pZ|ba$MlutL zK&y1s6+hhJPko9M^tIL*KR;;bqIwIwi@+o9?JWTAw5SnYl0h%+-Lt0TYVHG1&Ro)~iARlBKU1vZ#teb^sAus($3L)wOe zsoGt21GCNUT8o{Sl*yhYrCE7;v{g#!9vVJO^a4Sb2c7Xy!%$iBREG*}M)VSU7ibeP zxtEHKU#Jo5;zNYMrL@CSV-hWx;5}qNz_Yy6$)bMWUUcso2I*FJn5dUGAHpWy>Ue=o z?nMC;VTGJ~D4PaH@v9^-c;8!1N7B+q9VsY>+EWJgG%9q!NA(r@7~$A~7R2$HJ&pQp zD%a0wL53jMgFGUP?Wo9?i&O5ajuVYc?1jBh$C{2tA3Elzx=>3$&8RYaZFs15&@ir4 z=%;!^zDhrJjHo)jmvwvXr}_cm-B9fj=A(dGk_^Y8#(rgN83FK@lZ;8R?p9FiKQktnj6p(BTrSwE-eKv&#K)d35VZA7h zJqTGa(AZL+ezWO90NR^PT>{mCg6={uy7DD7+sr9criXq zwEx#$ByCa~(!fjvWL4Uf&888g5D%M7CvUFxFxfd8E?YG1)&ls(BEMv@!CNfv~t(V%=SL`{@t*K~z% z;w&fI1o3t&oUA#+*;L(CO%f#8Q7p{vOh>w+hs{Dcw=SWaTTZCj2TY$0Rg;k13RREV?a{m~OnZ3W>_U(f6nrYuv)Q(}bxAQ@y*Rfmzh5yE+g_ zUUzk{AT$d?{K4j?fZyt_cENWSn}w_4NQQ)~aTK}$=WUOLV-?D$li_M2d6fX*-$RW7 zV0aHWk$if*hZ^g|KgV|{ifS`(W-~Dd4pZ%^dJ6E-C^|MC;0L)z{a1APl-83oS=|%9 zC!fyrR0pV>$w?tow+Jm2qq(9YBYuV3 zOLY=5ej7zuLjmS8zS;{0#TEDg>Y=(vlp2R5HHw#3MXCJ-`qL;iM%4d3iqcpw?#woN z)2Zzkxh)%1C!zGoy?O1YdaEg-+7G?eG_dR2M;*#3WY^wQFbTC=mLXz0-ADBkOg(y2 z(I^cZ5Uu(Pus6UPHE>}x*5-Vg7p)GliX1IOj!_43fZU?DE}H%u$9#G^hAZZBj5=I! zZQEN+>A|sTlz?=wLbk@L&CtYav1%leA7c6FhsCM=#jy7vDW3fnIS#=VAC*V}IItPR zeI-t9j!O6A)B&`0y`so5y=f>jsaua2U0wA(BsvhU8ST+{wU=NtKrk9Tmf1~$+EhRX z>g{3US82Cr%%=qjYO?5bT5tL=Tr|^=_AE3ix>L+2_rB^t!D=M=^i`wWr{(E!RX)}B z#S)cIxBFsh=2J{REO@+ES-oj3JJy8Y4e4kjZB1G`b} zK*VSHv}+(%YA)1veSkeEeHenKpq21Sv4d1+fq#J(4OY9-+(EE9K1hyYD?Wv5r!qyIfTk{`AmHFl9jxEf-8DuxJ5!lISTm^O)>#y?277=%2J_B( zr>cX%ZhWemCfL0v*fkxF%?0D+*R>!k-)0Q#Ea8+O@f?DMGoRvysL7)0#{z!49Jan^ zh}uSI>uhgYv=mANqzQSaaYeOE3mH{P3Jvdovzu% zP1}&W&=oV5M0Kd@CFrscFE4Q8c8r8*L{y`4lh`ksYUQPWPuGXo}eaE!1r` zI(sJ;WKGVq{op#E){j*C3ff?*8;y7DU-GUMw^C=?7cvW5@CVUpQ8c64DHzFUFzn#j$Ebpzn?4F+$sMYP3L)X6W{` zW*j%JP2;$CKR-_M!I=!*k>bazuBe?dUX2vhrc+KPxL$hNsQ=myOT>7s(L6dn73c>~ z8Sw+C392XRhE7nU#aI?iKxC9pJ0@U9lTTlXQs6{w0hlt8cVzQKYt$ky=|f( z3^he`t%hb!z#iskhT25%d!i53Ke$6R82J1R+uvI3XA5$|C;N{b%O!US?XEW7k z{#S%dFZ7|*L8x`5&S<2&yAT%)%7WW4(S$5SU-&{<7Ir8mx{XBTUqap|%x2DPxKq$K zq`8wh{i@0EjGW@2m^5p4;|n%HQxLmw=n+i0McCT#HZrEDjRf&=VKd%1w&WjQ)0JkT z-BYmmo9MeK2x>Wt_xi9PtQDj4(c&+TIA!ZZfVLEv=+IQ&*Po|ieKJwRG|W|ebYU98 zUK5>|hTz6TO{c4ILXK;6X9`$XPFI5f-!@(CFWUSDKiyddv4L=>rZcd-^A>MX;V4*6 zW*)@8I}PVG-usODrxZ-IWQIBhY%a|}cxR$!*_bva%F2c>%*=+L*_(~k+e8nu)lq`o z1EJKS9Lx$6)#YI2GE)lPO7ichJIx;b(BdR29g&{>O@i1g?5|NzEtani;{`C znzr5XHifNgm01w5=%BHoonCk3VmnbzcXQzoOcb4mJ+p~c=OKjPZ8nLfyHn6+hCjAz zr}NP5*7=C*O_ZOnju34I(B1-=DwYQinz$c}vd0ml?FaNG@+d%90uw6WO5Rz3kjzBa z3;1vZ7Gh=Q4TVLE33Kr%_EVb+v7h4L@MzjQ8trrN=Y`z3zAxk~+7$6IEG)t<&_r(+ zVVyKl>zO!2GSR}B*fyHz%1oHMiCPtNk@JcX_H(X7X=X7TW9Jgp_6&+6MnvPNAI;Ux zK~FoD;MmMW150>2>r2#lA=AWYyIB(dHfD)?DHklDl=n2hlq>N_DOag$8BPpLG^q@m zW8MaSx5V@nG7AzsEK~giv{;A6gSucAZ}ZhzTxTw`agqR&navGl&ul&k@6U!8Hc|W> z-pZ;uobuuv-gHPgr<_-ggDKu-jo^-@x*O^Q&E@EVxxDIYNCeeWbabxTt>$B+hkj1a zYd?$M538NX`z$8-hIu&m}10hbcJDSo~!t!o^WNb^d z^Wm>ev}-<>@sIhMi?GnH1u)u83po1u1zcbE7pOx)JY*sKu8CGG97&8!Q5x8SnTgZ@~=EyMc} zZW$Sm@KM_Hh&oyb_?Kwm+PT9;1wXF=IeDeF)f^Y|ixKN^L4VcR`q3AQRX4%mzSUyG z3fSBR2l7O_Hoq6Og!f^|5}ZPDHh3izIs*Nz-31@dD;&Lo^O6=zaSUjpwoBEKNaih7 zlLfhFjF=G`e-El#s=77mYCVOw9=&qTJ~84$Q6bCJo}zNY7<R>_EEQXHFg}-GQV-()?xl_V&wL8QrT@Gu=rQOS6zqxdOIUHmzMXyj3RsJ>p5Rz8l zd~MSTSa~j;S^>As;o&jV{3#6E+Mlts@3~?0q~t2K5lAwsu&m|MGgWH3pp1?Y%jSY_ zv8xSz6#LX%>hmb&Qm6V>VrB+@#Zn4yR3uy5cZ%@fL*GXPWJ$~v_P zkiV|O1meg=0y*I^wH4qMk7*iRF5q80rgi|_$&BSP7oWnx2Ao%`j$ym~K&t-P*hX7} zIl>%6yBDCJp1|qT_JX{B+zLGqkWE**RvD>R26qu*-OxDCA& zeTSM$1y88qLYTK<&NzRdi8tU;7M_+}w2>~S&!2$jDyJ43)l{mShQ+^NBTl5sY41ji z1phk{XNAU}8-!sxy;oIhHma^vD=Vr`PNBYc=9K5HW3~xrSLL*D6DC7B9od8hm7}j& zts`(VO8tPs9ZSIc;9kg4D&Hk5G-vA?m~8NQ5y^VkM;5Qx2P=z>SuwvvlXjr`je`^fMQ?9W^Bci*jkoT z-IMV0<#Zp3KpRNfs&=D=TQz!>0U8qQ(Svq*;(ds>6TTvFVyo&dD!7OWajuG|w#VXv zyF1o%ru16eP?XcuS{!3?3SU9-ey!RX@Vm7K<1RK%a`RZ>HPNUG1-Ro;{)ug> zyU=SutO#9z^CkDE;M~f||0y^(&bUo1JvsxO4)Dawtj;qKR~&r`4yByDpH@c+l8{*X z&<7zw&OBf*KLz5u`)yOcoQ^(?^^`M^3 zqb3OB`t%vtd^vS{7WaPTwC-7~LFIJiS*!${*$^u;>^!3cWJD|-e;ji!ZVP5Ztp`qY zGY(;G*qIM&zP23)Jmu8*IUEX?)0pSf!MqXtot)r3xGrjnh|_hC>Lau{#ReP;px{2; zs>3bKlqOX1JQhX>^}G=3dBim36!HSr$8uWm0x!My0=#oMdF`+^MVULWDsj;lT17v- zM{P_&L1=q-3s}S59SC_j!J=5Uqy*qMCAg~$YN_b+nq!x6@kGTlFJcy7lG@8ARO`62A~^ZyKzfUPH{W65vq=*g!34MUt=(q@vmY6@5WGlwiA&_ zIetXNdmFtA`zPMa6O^z^?L#Ma!DE%v*ifp=a#IHl&;?cWZk1a5vU; zc#%DvTkakN>zvzen^t-V{(C8F2e!iLt?(73_&WGfJg=+c%6+m9!7#7&ny`GtNUW8> zz1)vv?8Wwkd#F8oxy!n@msg8@3F`^3_P(h0(n~m0Y;M9i^cH}R1R&eQR-BGX z7uxbN76MNDsX!fh8N0D^dhjytnmPP}faCbqgXX=WdH`AV3eI2nAJ(}>ZU=CPmKKW6 z6z)^K^x&(2I`31b;_Ld=`w(Pv+M9xrVLu}O0!rNvuU|mV?N>9LIQmDMp{rEe1uv5- z!xR@ghLbF~?1r+rM&Q}+8!(nuVD+bl={4;wnQ?PC3!R(Neutw=Wcv7Hrt$SW^a-48CASW zHVquEf2{Lu2W+VwmOf;hmeC!NcpT)V&LSBok{L*1^bb4QTDfZD!#~*70iS)eVei{v z={VywpDv5!fk>Jk;=m}8j7Ac}`2=*c=M$5l_l0A_9k8qHu(VfjI?a-7x+M~~!@Sf{ zBuPjr_=l~|IPh`ltGB|x;`E6FwoN_kw+`5pdRV9K_VN$0Vfm9Ix9%18=neJI2@aJH z)Wc42z`jurJIw+6K|O4NhRx+R64FoaF_&w}hV~^ReWweNKDx<9;Ieb)o8P||A zj{!KF){118NKT66Tah>&N7J*}A@zhPd*;8U=uLC%GzYA4unkLDV1ZUDSTYMgG2+QV zmgLiUk^GD#hM&I9>TTaj+aWq1aW>n>9y{0$OG94=L-uC?c(Pg~FN)-ZNWMlA!#7e< z(e`|@()Ct2_6-MYsU4OQ-r(#rM6y66n^=-duZrXxk{BMuhR4{q@{^4Z$3{6|(}(IZ zhI{ne4t!jO>3lfWE7o2HZ#ygnzr`8GiDaTk=85D9 zkywz#aQAx6flmm0rPX0_>;ngEe><$j=WX>>Nh+q3@8GPbm~OsA}+>Ip<8GilTbEQB-Z@e|mPv+segYD{NN;Eu!TJuJgZXw-Y^Je7Su8}KdfAuPH5 z9uE2zP|uSHY8TL=lVGxdK0Jv9WdSvNAEC_x%6K1<-~y_9pOf5wUk#_M>uOsXaSHph zBFaC76T?Nc;}rIVGw{F&`;;oY$TIDQwxxs`b^D3()&CPdsfh@^Vq7bpzG(=DM*q(SJwy* zJ*f6`wI}&pP%8jmcR^i(Z+ieYv@V^oxO(bcLl|MshU;x{d0V;Y|EDz zSJ&(4TaFmLW!KdJb6|Rgv`br(9a6;Nz zA-AO=HxTCVGDd%q96%>;;4~tKg1?4RbMPT>glai->1)od%{Pc-a%k~4I338LTi-w} zITZ0NtTBg{eXG`pzfBN7qCtaY>rMTTh`&tGUjUMHK(YX&Fu+`N%rsa4(injMnaFej z7_I|G2*79^Fh&5z>wpO(8dR`$GZ=*bp~p-?GKB&7-+P=Y05fzzwgBYnfII;x)B!~T zP@)4$1z@%gm?Hr5kW`3f<_k!LPEsiViy46bxydC0uv`bM5P+2o!2b;8Dgju_0Bmxa zss+HT1J(-w>43*aAbx-XHtCSff@G@>s1<;xb-*(M@SF~KUI1Ry0Xqd?j}E94fR}Z^ zD*|9)`WJs2^MHUHWF-7gWF8WLqdMT20KB0C-V}g$bilg;a8d`nF94?*fH?`%83FiM z2YkXb4h5XkA)g7r1s!lv050o*D+2JP4!AA=U+aKx1mLC)_+9|+=zzNd@E4|kA=-}u z^0Q9zivawt1MUmJLmkjyB$wTQMDQ>QfD;4oKPl=g0B$!jvK!vw}`00>_0?=3o zG!cO2I-rFB1nPhw0cfoQ+6X{<9ne7lI_rQg0uWlkAnXq|n8E}kTnF?JfJhzCO91-l zfM@}T(*f}U&`$^S7l0%kkSqWx8lb{7SU}Pkgn2bnx&RE<0V4!pvp delta 41204 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 D`pYW; diff --git a/.doctrees/transactron.lib.doctree b/.doctrees/transactron.lib.doctree index 1b2644d9640cb473fa3a5a426f34e6e8b4493fff..cb3b92ad06a00e9100572379a461d51b4efd89ad 100644 GIT binary patch delta 29649 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 R{rEI<5_DU4$LVIQ_&>?z?AHJQ delta 29555 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

j9RG^U{8z<>cELif|EI7sQBeGl6`7G_5Xk) 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 delta 61052 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%0Dy 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 N*j9VtLF*Rde*rjQM9TmG diff --git a/_sources/auto_graph.rst.txt b/_sources/auto_graph.rst.txt index d75831106..d74f0281e 100644 --- a/_sources/auto_graph.rst.txt +++ b/_sources/auto_graph.rst.txt @@ -7,18 +7,18 @@ Core_InitFreeRFFifo["InitFreeRFFifo"] Core_DiscardBranchVerify["DiscardBranchVerify"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_result["result"] WishboneMaster_WishboneMaster["WishboneMaster"] + WishboneMaster_result["result"] WishboneMaster_request["request"] subgraph Forwarder["result Forwarder"] - Forwarder_read["read"] Forwarder_write["write"] + Forwarder_read["read"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] + WishboneMaster1_WishboneMaster["WishboneMaster"] WishboneMaster1_result["result"] WishboneMaster1_request["request"] - WishboneMaster1_WishboneMaster["WishboneMaster"] subgraph Forwarder1["result Forwarder"] Forwarder1_read["read"] Forwarder1_write["write"] @@ -37,18 +37,18 @@ end end subgraph WishboneMasterAdapter1["bus_master_data_adapter WishboneMasterAdapter"] + WishboneMasterAdapter1_get_write_response["get_write_response"] + WishboneMasterAdapter1_request_write["request_write"] WishboneMasterAdapter1_get_read_response["get_read_response"] WishboneMasterAdapter1_request_read["request_read"] - WishboneMasterAdapter1_request_write["request_write"] - WishboneMasterAdapter1_get_write_response["get_write_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 @@ -71,21 +71,21 @@ BasicFifo2_read["read"] end subgraph SimpleCommonBusCacheRefiller["icache_refiller SimpleCommonBusCacheRefiller"] - SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] SimpleCommonBusCacheRefiller_start_refill["start_refill"] + SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] subgraph Forwarder2["address_fwd Forwarder"] Forwarder2_write["write"] Forwarder2_read["read"] end end subgraph ICache["icache ICache"] - ICache_accept_res["accept_res"] ICache_ICache["ICache"] + ICache_issue_req["issue_req"] ICache_ICache1["ICache"] ICache_ICache2["ICache"] + ICache_accept_res["accept_res"] ICache_ICache3["ICache"] - ICache_issue_req["issue_req"] subgraph HwCounter["perf_loads HwCounter"] HwCounter__incr["_incr"] end @@ -102,19 +102,19 @@ HwCounter4__incr["_incr"] end subgraph LatencyMeasurer["req_latency LatencyMeasurer"] - LatencyMeasurer__stop["_stop"] LatencyMeasurer__start["_start"] + LatencyMeasurer__stop["_stop"] subgraph HwExpHistogram["histogram HwExpHistogram"] HwExpHistogram__add["_add"] end subgraph FIFO1["fifo FIFO"] - FIFO1_read["read"] FIFO1_write["write"] + FIFO1_read["read"] end end subgraph FIFO2["req_fifo FIFO"] - FIFO2_read["read"] FIFO2_write["write"] + FIFO2_read["read"] end subgraph Forwarder3["res_fwd Forwarder"] Forwarder3_read["read"] @@ -129,26 +129,26 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_read1["read1"] RegisterFile_read2["read2"] - RegisterFile_free["free"] RegisterFile_write["write"] + RegisterFile_free["free"] + RegisterFile_read1["read1"] end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_put["put"] - ReorderBuffer_get_indices["get_indices"] ReorderBuffer_mark_done["mark_done"] - ReorderBuffer_peek["peek"] ReorderBuffer_retire["retire"] + ReorderBuffer_peek["peek"] + ReorderBuffer_get_indices["get_indices"] + ReorderBuffer_put["put"] subgraph LatencyMeasurer1["perf_rob_wait_time LatencyMeasurer"] - LatencyMeasurer1__start["_start"] LatencyMeasurer1__stop["_stop"] + LatencyMeasurer1__start["_start"] subgraph HwExpHistogram1["histogram HwExpHistogram"] HwExpHistogram1__add["_add"] end subgraph FIFO3["fifo FIFO"] - FIFO3_write["write"] FIFO3_read["read"] + FIFO3_write["write"] end end end @@ -158,17 +158,17 @@ Fetch_Fetch1["Fetch"] Fetch_resume["resume"] subgraph BasicFifo3["fetch_target_queue BasicFifo"] - BasicFifo3_write["write"] BasicFifo3_read["read"] + BasicFifo3_write["write"] end end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] ExceptionCauseRegister_report["report"] - ExceptionCauseRegister_clear["clear"] ExceptionCauseRegister_get["get"] + ExceptionCauseRegister_clear["clear"] subgraph BasicFifo4["fu_report_fifo BasicFifo"] - BasicFifo4_read["read"] BasicFifo4_write["write"] + BasicFifo4_read["read"] end subgraph ConnectTrans["report_connector ConnectTrans"] ConnectTrans_ConnectTrans["ConnectTrans"] @@ -197,35 +197,35 @@ MethodProduct1_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_select["select"] RSFuncBlock_insert["insert"] - RSFuncBlock_update["update"] RSFuncBlock_get_result["get_result"] + RSFuncBlock_select["select"] + RSFuncBlock_update["update"] subgraph RS["rs RS"] RS_RS["RS"] RS_RS1["RS"] - RS_select["select"] - RS_insert["insert"] - RS_take["take"] RS_RS2["RS"] RS_RS3["RS"] RS_update["update"] + RS_insert["insert"] + RS_take["take"] + RS_select["select"] RS_RS4["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO4["fifo FIFO"] - FIFO4_write["write"] FIFO4_read["read"] + FIFO4_write["write"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_accept["accept"] ShiftFuncUnit_issue["issue"] + ShiftFuncUnit_accept["accept"] subgraph FIFO5["fifo FIFO"] FIFO5_write["write"] FIFO5_read["read"] @@ -271,8 +271,8 @@ end subgraph PrivilegedFuncUnit["func_unit_4 PrivilegedFuncUnit"] PrivilegedFuncUnit_precommit["precommit"] - PrivilegedFuncUnit_issue["issue"] PrivilegedFuncUnit_accept["accept"] + PrivilegedFuncUnit_issue["issue"] subgraph BasicFifo5["fetch_resume_fifo BasicFifo"] BasicFifo5_read["read"] BasicFifo5_write["write"] @@ -307,42 +307,42 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_insert["insert"] LSUDummy_LSUDummy["LSUDummy"] - LSUDummy_LSUDummy1["LSUDummy"] - LSUDummy_LSUDummy2["LSUDummy"] LSUDummy_update["update"] - LSUDummy_select["select"] LSUDummy_precommit["precommit"] LSUDummy_get_result["get_result"] + LSUDummy_select["select"] + LSUDummy_LSUDummy1["LSUDummy"] + LSUDummy_LSUDummy2["LSUDummy"] + LSUDummy_insert["insert"] subgraph Forwarder6["forwarder Forwarder"] Forwarder6_write["write"] Forwarder6_read["read"] end subgraph LSURequester["requester LSURequester"] - LSURequester_issue_cond2["issue_cond2"] - LSURequester_accept["accept"] + LSURequester_accept_cond0["accept_cond0"] LSURequester_issue["issue"] LSURequester_accept_cond1["accept_cond1"] - LSURequester_accept_cond0["accept_cond0"] + LSURequester_accept["accept"] LSURequester_issue_cond1["issue_cond1"] + LSURequester_issue_cond2["issue_cond2"] LSURequester_issue_cond0["issue_cond0"] end end subgraph CSRUnit["rs_block_2 CSRUnit"] + CSRUnit_CSRUnit["CSRUnit"] CSRUnit_insert["insert"] - CSRUnit_fetch_resume["fetch_resume"] CSRUnit_get_result["get_result"] + CSRUnit_fetch_resume["fetch_resume"] CSRUnit_select["select"] - CSRUnit_update["update"] CSRUnit_precommit["precommit"] - CSRUnit_CSRUnit["CSRUnit"] + CSRUnit_update["update"] end subgraph MethodTryProduct["InstructionPrecommitKey_unifier MethodTryProduct"] - MethodTryProduct_method["method"] MethodTryProduct_MethodTryProduct["MethodTryProduct"] MethodTryProduct_MethodTryProduct1["MethodTryProduct"] MethodTryProduct_MethodTryProduct2["MethodTryProduct"] + MethodTryProduct_method["method"] end subgraph Collector2["FetchResumeKey_unifier Collector"] Collector2_method["method"] @@ -372,20 +372,20 @@ GenericCSRRegisters_GenericCSRRegisters["GenericCSRRegisters"] subgraph MachineModeCSRRegisters["m_mode MachineModeCSRRegisters"] subgraph CSRRegister["mcause CSRRegister"] - CSRRegister__fu_read["_fu_read"] CSRRegister__fu_write["_fu_write"] CSRRegister_write["write"] + CSRRegister__fu_read["_fu_read"] end subgraph CSRRegister1["mtvec CSRRegister"] - CSRRegister1__fu_write["_fu_write"] - CSRRegister1_read["read"] CSRRegister1__fu_read["_fu_read"] + CSRRegister1_read["read"] + CSRRegister1__fu_write["_fu_write"] end subgraph CSRRegister2["mepc CSRRegister"] - CSRRegister2__fu_write["_fu_write"] - CSRRegister2__fu_read["_fu_read"] CSRRegister2_read["read"] CSRRegister2_write["write"] + CSRRegister2__fu_write["_fu_write"] + CSRRegister2__fu_read["_fu_read"] end end subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] @@ -396,28 +396,28 @@ CSRRegister3_read["read"] end subgraph CSRRegister4["register_high CSRRegister"] + CSRRegister4_read["read"] CSRRegister4__fu_read["_fu_read"] CSRRegister4_write["write"] - CSRRegister4_read["read"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5__fu_read["_fu_read"] CSRRegister5_read["read"] + CSRRegister5__fu_read["_fu_read"] CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] - CSRRegister6_read["read"] CSRRegister6__fu_read["_fu_read"] + CSRRegister6_read["read"] CSRRegister6_write["write"] end end end subgraph FIFO9["fifo_decode FIFO"] - FIFO9_write["write"] FIFO9_read["read"] + FIFO9_write["write"] end subgraph DecodeStage["decode DecodeStage"] DecodeStage_DecodeStage["DecodeStage"] @@ -441,8 +441,8 @@ Renaming_Renaming["Renaming"] end subgraph FIFO12["reg_alloc_out_buf FIFO"] - FIFO12_read["read"] FIFO12_write["write"] + FIFO12_read["read"] end subgraph ROBAllocation["rob_alloc ROBAllocation"] ROBAllocation_ROBAllocation["ROBAllocation"] @@ -457,8 +457,8 @@ RSSelection_RSSelection2["RSSelection"] RSSelection_RSSelection3["RSSelection"] subgraph Forwarder8["forwarder Forwarder"] - Forwarder8_write["write"] Forwarder8_read["read"] + Forwarder8_write["write"] end end subgraph RSInsertion["rs_insertion RSInsertion"] @@ -472,22 +472,22 @@ Retirement_Retirement["Retirement"] Retirement_Retirement1["Retirement"] Retirement_Retirement_cond1["Retirement_cond1"] - Retirement_core_state["core_state"] Retirement_Retirement2["Retirement"] - Retirement_Retirement_cond0["Retirement_cond0"] + Retirement_core_state["core_state"] Retirement_Retirement3["Retirement"] + Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement4["Retirement"] subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister7["register_low CSRRegister"] + CSRRegister7__fu_read["_fu_read"] CSRRegister7_write["write"] CSRRegister7_read["read"] - CSRRegister7__fu_read["_fu_read"] end subgraph CSRRegister8["register_high CSRRegister"] CSRRegister8_read["read"] - CSRRegister8_write["write"] CSRRegister8__fu_read["_fu_read"] + CSRRegister8_write["write"] end end subgraph HwCounter9["perf_instr_ret HwCounter"] @@ -508,18 +508,18 @@ end subgraph TransactionManager["transactionManager TransactionManager"] TransactionManager_Retirement_cond1_Retirement["Retirement_cond1_Retirement"] - TransactionManager_LSUDummy_issue_cond0["LSUDummy_issue_cond0"] - TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] - TransactionManager_LSUDummy_issue_cond2["LSUDummy_issue_cond2"] - TransactionManager_LSUDummy_issue_cond1["LSUDummy_issue_cond1"] TransactionManager_LSUDummy_accept_cond1["LSUDummy_accept_cond1"] + TransactionManager_accept_cond0_LSUDummy["accept_cond0_LSUDummy"] + TransactionManager_LSUDummy_issue_cond1["LSUDummy_issue_cond1"] + TransactionManager_LSUDummy_issue_cond0["LSUDummy_issue_cond0"] TransactionManager_Retirement_cond0_Retirement["Retirement_cond0_Retirement"] + TransactionManager_LSUDummy_issue_cond2["LSUDummy_issue_cond2"] end end Core_InitFreeRFFifo --> BasicFifo2_write - Retirement_Retirement --> BasicFifo2_write - TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write + Retirement_Retirement4 --> BasicFifo2_write TransactionManager_Retirement_cond1_Retirement --> BasicFifo2_write + TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write FIFO6_read --> Core_DiscardBranchVerify WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write @@ -528,13 +528,13 @@ SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer1 SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request - ICache_ICache1 <--> HwCounter4__incr - ICache_ICache2 <--> HwCounter3__incr - ICache_ICache2 <--> HwCounter2__incr - ICache_ICache2 <--> HwCounter1__incr - ICache_ICache2 --> Forwarder3_write - ICache_ICache --> SimpleCommonBusCacheRefiller_start_refill - ICache_ICache --> Forwarder2_write + ICache_ICache <--> HwCounter4__incr + ICache_ICache1 <--> HwCounter3__incr + ICache_ICache1 <--> HwCounter2__incr + ICache_ICache1 <--> HwCounter1__incr + ICache_ICache1 --> Forwarder3_write + ICache_ICache2 --> SimpleCommonBusCacheRefiller_start_refill + ICache_ICache2 --> Forwarder2_write ICache_ICache3 --> Forwarder2_write SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache3 WishboneMasterAdapter_get_read_response --> ICache_ICache3 @@ -542,26 +542,26 @@ BasicFifo_read --> ICache_ICache3 WishboneMaster_result --> ICache_ICache3 Forwarder_read --> ICache_ICache3 - Fetch_Fetch --> ICache_issue_req - Fetch_Fetch <--> HwCounter__incr - Fetch_Fetch <--> LatencyMeasurer__start - Fetch_Fetch --> FIFO1_write - Fetch_Fetch --> FIFO2_write - Fetch_Fetch --> BasicFifo3_write - BasicFifo3_read --> Fetch_Fetch1 - ICache_accept_res --> Fetch_Fetch1 - FIFO2_read --> Fetch_Fetch1 - Fetch_Fetch1 <--> LatencyMeasurer__stop - FIFO1_read --> Fetch_Fetch1 - Fetch_Fetch1 --> HwExpHistogram__add - Forwarder3_read --> Fetch_Fetch1 - Fetch_Fetch1 --> MethodProduct_method + Fetch_Fetch1 --> ICache_issue_req + Fetch_Fetch1 <--> HwCounter__incr + Fetch_Fetch1 <--> LatencyMeasurer__start + Fetch_Fetch1 --> FIFO1_write + Fetch_Fetch1 --> FIFO2_write + Fetch_Fetch1 --> BasicFifo3_write + BasicFifo3_read --> Fetch_Fetch + ICache_accept_res --> Fetch_Fetch + FIFO2_read --> Fetch_Fetch + Fetch_Fetch <--> LatencyMeasurer__stop + FIFO1_read --> Fetch_Fetch + Fetch_Fetch --> HwExpHistogram__add + 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 <--> HwCounter8__incr @@ -571,7 +571,7 @@ RegAllocation_RegAllocation --> FIFO10_write FIFO10_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename - Retirement_Retirement --> FRAT_rename + Retirement_Retirement4 --> FRAT_rename TransactionManager_Retirement_cond1_Retirement --> FRAT_rename Renaming_Renaming --> FIFO11_write FIFO11_read --> ROBAllocation_ROBAllocation @@ -579,18 +579,18 @@ ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO3_write ROBAllocation_ROBAllocation --> FIFO12_write - FIFO12_read --> RSSelection_RSSelection - RSSelection_RSSelection --> Forwarder8_write - Forwarder8_read --> RSSelection_RSSelection1 + FIFO12_read --> RSSelection_RSSelection2 + RSSelection_RSSelection2 --> Forwarder8_write + Forwarder8_read --> RSSelection_RSSelection Forwarder8_read --> RSSelection_RSSelection3 - Forwarder8_read --> RSSelection_RSSelection2 - RSFuncBlock_select --> RSSelection_RSSelection1 - RS_select --> RSSelection_RSSelection1 - RSSelection_RSSelection1 --> FIFO13_write + Forwarder8_read --> RSSelection_RSSelection1 + RSFuncBlock_select --> RSSelection_RSSelection + RS_select --> RSSelection_RSSelection + RSSelection_RSSelection --> FIFO13_write RSSelection_RSSelection3 --> FIFO13_write - RSSelection_RSSelection2 --> FIFO13_write + RSSelection_RSSelection1 --> FIFO13_write RSSelection_RSSelection3 <--> LSUDummy_select - RSSelection_RSSelection2 <--> CSRUnit_select + RSSelection_RSSelection1 <--> CSRUnit_select FIFO13_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -606,7 +606,7 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume - Retirement_Retirement2 --> Fetch_resume + Retirement_Retirement1 --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done @@ -616,7 +616,7 @@ ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update ResultAnnouncement_ResultAnnouncement --> CSRUnit_update - RS_RS1 --> WakeupSelect_WakeupSelect + RS_RS4 --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect @@ -624,10 +624,10 @@ RS_take --> WakeupSelect4_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO4_write - RS_RS2 --> WakeupSelect1_WakeupSelect + RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO5_write - RS_RS3 --> WakeupSelect2_WakeupSelect + RS_RS1 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect <--> HwCounter5__incr WakeupSelect2_WakeupSelect <--> HwCounter6__incr @@ -642,7 +642,7 @@ RS_RS --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO8_write - RS_RS4 --> WakeupSelect4_WakeupSelect + RS_RS2 --> WakeupSelect4_WakeupSelect WakeupSelect4_WakeupSelect --> PrivilegedFuncUnit_issue ConnectTrans4_ConnectTrans --> Forwarder5_write ConnectTrans5_ConnectTrans --> Forwarder5_write @@ -660,12 +660,12 @@ PrivilegedFuncUnit_accept --> ConnectTrans8_ConnectTrans CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo5_write - LSUDummy_LSUDummy2 --> Forwarder6_write - TransactionManager_LSUDummy_accept_cond1 --> Forwarder6_write - TransactionManager_LSUDummy_issue_cond0 --> Forwarder6_write - TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write + LSUDummy_LSUDummy --> Forwarder6_write TransactionManager_LSUDummy_issue_cond2 --> Forwarder6_write + TransactionManager_accept_cond0_LSUDummy --> Forwarder6_write TransactionManager_LSUDummy_issue_cond1 --> Forwarder6_write + TransactionManager_LSUDummy_accept_cond1 --> Forwarder6_write + TransactionManager_LSUDummy_issue_cond0 --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -695,37 +695,37 @@ ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo5_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans - ReorderBuffer_peek --> Retirement_Retirement4 - ReorderBuffer_peek --> Retirement_Retirement1 + ReorderBuffer_peek --> Retirement_Retirement3 ReorderBuffer_peek --> Retirement_Retirement - ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement + ReorderBuffer_peek --> Retirement_Retirement4 ReorderBuffer_peek --> TransactionManager_Retirement_cond1_Retirement - Retirement_Retirement4 --> MethodTryProduct_method - ExceptionCauseRegister_get --> Retirement_Retirement1 - ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement + ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement + Retirement_Retirement3 --> MethodTryProduct_method + ExceptionCauseRegister_get --> Retirement_Retirement ExceptionCauseRegister_get --> TransactionManager_Retirement_cond1_Retirement - Retirement_Retirement <--> ReorderBuffer_retire - TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire + ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement + Retirement_Retirement4 <--> ReorderBuffer_retire TransactionManager_Retirement_cond1_Retirement <--> ReorderBuffer_retire - Retirement_Retirement <--> LatencyMeasurer1__stop - TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop + TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire + Retirement_Retirement4 <--> LatencyMeasurer1__stop TransactionManager_Retirement_cond1_Retirement <--> LatencyMeasurer1__stop - FIFO3_read --> Retirement_Retirement - FIFO3_read --> TransactionManager_Retirement_cond0_Retirement + TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop + FIFO3_read --> Retirement_Retirement4 FIFO3_read --> TransactionManager_Retirement_cond1_Retirement - Retirement_Retirement --> HwExpHistogram1__add - TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add + FIFO3_read --> TransactionManager_Retirement_cond0_Retirement + Retirement_Retirement4 --> HwExpHistogram1__add TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram1__add - CoreInstructionCounter_decrement --> Retirement_Retirement - CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement + TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add + CoreInstructionCounter_decrement --> Retirement_Retirement4 CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond1_Retirement - RRAT_peek --> Retirement_Retirement + CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement + RRAT_peek --> Retirement_Retirement4 RRAT_peek --> TransactionManager_Retirement_cond1_Retirement - Retirement_Retirement --> RegisterFile_free - TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free + Retirement_Retirement4 --> RegisterFile_free TransactionManager_Retirement_cond1_Retirement --> RegisterFile_free - CSRRegister1_read --> Retirement_Retirement2 - Retirement_Retirement2 <--> ExceptionCauseRegister_clear + TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free + CSRRegister1_read --> Retirement_Retirement1 + Retirement_Retirement1 <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -737,6 +737,45 @@ CSRRegister6_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans1_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt + TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy2 + TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy2 + TransactionManager_LSUDummy_issue_cond0 <--> LSUDummy_LSUDummy2 + TransactionManager_LSUDummy_issue_cond2 --> LSURequester_issue + TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue + TransactionManager_LSUDummy_issue_cond0 --> LSURequester_issue + TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 + TransactionManager_accept_cond0_LSUDummy <--> LSURequester_accept_cond0 + WishboneMasterAdapter1_get_write_response --> TransactionManager_accept_cond0_LSUDummy + Serializer1_Serializer --> TransactionManager_accept_cond0_LSUDummy + BasicFifo1_read --> TransactionManager_accept_cond0_LSUDummy + BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond1 + WishboneMaster1_result --> TransactionManager_accept_cond0_LSUDummy + WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond1 + Forwarder1_read --> TransactionManager_accept_cond0_LSUDummy + Forwarder1_read --> TransactionManager_LSUDummy_accept_cond1 + TransactionManager_accept_cond0_LSUDummy <--> LSUDummy_LSUDummy1 + TransactionManager_LSUDummy_accept_cond1 <--> LSUDummy_LSUDummy1 + LSURequester_accept --> TransactionManager_accept_cond0_LSUDummy + LSURequester_accept --> TransactionManager_LSUDummy_accept_cond1 + TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 + TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement2 + TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement2 + TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write + TransactionManager_Retirement_cond0_Retirement --> CSRRegister_write + TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write + TransactionManager_Retirement_cond0_Retirement --> CSRRegister2_write + TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry + TransactionManager_Retirement_cond0_Retirement <--> InterruptController_entry + TransactionManager_LSUDummy_issue_cond1 <--> LSURequester_issue_cond1 + TransactionManager_LSUDummy_issue_cond1 --> WishboneMasterAdapter1_request_read + TransactionManager_LSUDummy_issue_cond1 --> Serializer1_Serializer2 + TransactionManager_LSUDummy_issue_cond1 --> BasicFifo1_write + TransactionManager_LSUDummy_issue_cond0 --> BasicFifo1_write + TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request + TransactionManager_LSUDummy_issue_cond0 --> WishboneMaster1_request + TransactionManager_LSUDummy_accept_cond1 <--> LSURequester_accept_cond1 + WishboneMasterAdapter1_get_read_response --> TransactionManager_LSUDummy_accept_cond1 + Serializer1_Serializer3 --> TransactionManager_LSUDummy_accept_cond1 TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement_cond0 TransactionManager_Retirement_cond0_Retirement --> RRAT_commit TransactionManager_Retirement_cond0_Retirement <--> DoubleCounterCSR2_increment @@ -745,45 +784,6 @@ CSRRegister8_read --> TransactionManager_Retirement_cond0_Retirement TransactionManager_Retirement_cond0_Retirement --> CSRRegister8_write TransactionManager_Retirement_cond0_Retirement <--> HwCounter9__incr - TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement3 - TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement3 - TransactionManager_Retirement_cond0_Retirement --> CSRRegister_write - TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write - TransactionManager_Retirement_cond0_Retirement --> CSRRegister2_write - TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write - TransactionManager_Retirement_cond0_Retirement <--> InterruptController_entry - TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry - TransactionManager_LSUDummy_accept_cond1 <--> LSUDummy_LSUDummy1 - TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy1 - LSURequester_accept --> TransactionManager_LSUDummy_accept_cond1 - LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 - TransactionManager_LSUDummy_accept_cond1 <--> LSURequester_accept_cond1 - WishboneMasterAdapter1_get_read_response --> TransactionManager_LSUDummy_accept_cond1 - Serializer1_Serializer --> TransactionManager_LSUDummy_accept_cond1 - BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond1 - BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 - WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond1 - WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 - Forwarder1_read --> TransactionManager_LSUDummy_accept_cond1 - Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 - TransactionManager_LSUDummy_issue_cond0 <--> LSUDummy_LSUDummy - TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy - TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy - TransactionManager_LSUDummy_issue_cond0 --> LSURequester_issue - TransactionManager_LSUDummy_issue_cond2 --> LSURequester_issue - TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue TransactionManager_LSUDummy_issue_cond0 <--> LSURequester_issue_cond0 TransactionManager_LSUDummy_issue_cond0 --> WishboneMasterAdapter1_request_write - TransactionManager_LSUDummy_issue_cond0 --> Serializer1_Serializer2 - TransactionManager_LSUDummy_issue_cond0 --> BasicFifo1_write - TransactionManager_LSUDummy_issue_cond1 --> BasicFifo1_write - TransactionManager_LSUDummy_issue_cond0 --> WishboneMaster1_request - TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request - TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 - WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 - Serializer1_Serializer3 --> TransactionManager_LSUDummy_accept_cond0 - TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 - TransactionManager_LSUDummy_issue_cond1 <--> LSURequester_issue_cond1 - TransactionManager_LSUDummy_issue_cond1 --> WishboneMasterAdapter1_request_read - TransactionManager_LSUDummy_issue_cond1 --> Serializer1_Serializer1 - TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 + TransactionManager_LSUDummy_issue_cond0 --> Serializer1_Serializer1 diff --git a/api.html b/api.html index b563ca069..e38b5192d 100644 --- a/api.html +++ b/api.html @@ -282,7 +282,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/assumptions.html b/assumptions.html index c488796fe..934d8f494 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 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/auto_graph.html b/auto_graph.html index aa0de148d..67ed89e33 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -86,18 +86,18 @@ Core_InitFreeRFFifo["InitFreeRFFifo"] Core_DiscardBranchVerify["DiscardBranchVerify"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_result["result"] WishboneMaster_WishboneMaster["WishboneMaster"] + WishboneMaster_result["result"] WishboneMaster_request["request"] subgraph Forwarder["result Forwarder"] - Forwarder_read["read"] Forwarder_write["write"] + Forwarder_read["read"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] + WishboneMaster1_WishboneMaster["WishboneMaster"] WishboneMaster1_result["result"] WishboneMaster1_request["request"] - WishboneMaster1_WishboneMaster["WishboneMaster"] subgraph Forwarder1["result Forwarder"] Forwarder1_read["read"] Forwarder1_write["write"] @@ -116,18 +116,18 @@ end end subgraph WishboneMasterAdapter1["bus_master_data_adapter WishboneMasterAdapter"] + WishboneMasterAdapter1_get_write_response["get_write_response"] + WishboneMasterAdapter1_request_write["request_write"] WishboneMasterAdapter1_get_read_response["get_read_response"] WishboneMasterAdapter1_request_read["request_read"] - WishboneMasterAdapter1_request_write["request_write"] - WishboneMasterAdapter1_get_write_response["get_write_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 @@ -150,21 +150,21 @@ BasicFifo2_read["read"] end subgraph SimpleCommonBusCacheRefiller["icache_refiller SimpleCommonBusCacheRefiller"] - SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] SimpleCommonBusCacheRefiller_start_refill["start_refill"] + SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] subgraph Forwarder2["address_fwd Forwarder"] Forwarder2_write["write"] Forwarder2_read["read"] end end subgraph ICache["icache ICache"] - ICache_accept_res["accept_res"] ICache_ICache["ICache"] + ICache_issue_req["issue_req"] ICache_ICache1["ICache"] ICache_ICache2["ICache"] + ICache_accept_res["accept_res"] ICache_ICache3["ICache"] - ICache_issue_req["issue_req"] subgraph HwCounter["perf_loads HwCounter"] HwCounter__incr["_incr"] end @@ -181,19 +181,19 @@ HwCounter4__incr["_incr"] end subgraph LatencyMeasurer["req_latency LatencyMeasurer"] - LatencyMeasurer__stop["_stop"] LatencyMeasurer__start["_start"] + LatencyMeasurer__stop["_stop"] subgraph HwExpHistogram["histogram HwExpHistogram"] HwExpHistogram__add["_add"] end subgraph FIFO1["fifo FIFO"] - FIFO1_read["read"] FIFO1_write["write"] + FIFO1_read["read"] end end subgraph FIFO2["req_fifo FIFO"] - FIFO2_read["read"] FIFO2_write["write"] + FIFO2_read["read"] end subgraph Forwarder3["res_fwd Forwarder"] Forwarder3_read["read"] @@ -208,26 +208,26 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_read1["read1"] RegisterFile_read2["read2"] - RegisterFile_free["free"] RegisterFile_write["write"] + RegisterFile_free["free"] + RegisterFile_read1["read1"] end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_put["put"] - ReorderBuffer_get_indices["get_indices"] ReorderBuffer_mark_done["mark_done"] - ReorderBuffer_peek["peek"] ReorderBuffer_retire["retire"] + ReorderBuffer_peek["peek"] + ReorderBuffer_get_indices["get_indices"] + ReorderBuffer_put["put"] subgraph LatencyMeasurer1["perf_rob_wait_time LatencyMeasurer"] - LatencyMeasurer1__start["_start"] LatencyMeasurer1__stop["_stop"] + LatencyMeasurer1__start["_start"] subgraph HwExpHistogram1["histogram HwExpHistogram"] HwExpHistogram1__add["_add"] end subgraph FIFO3["fifo FIFO"] - FIFO3_write["write"] FIFO3_read["read"] + FIFO3_write["write"] end end end @@ -237,17 +237,17 @@ Fetch_Fetch1["Fetch"] Fetch_resume["resume"] subgraph BasicFifo3["fetch_target_queue BasicFifo"] - BasicFifo3_write["write"] BasicFifo3_read["read"] + BasicFifo3_write["write"] end end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] ExceptionCauseRegister_report["report"] - ExceptionCauseRegister_clear["clear"] ExceptionCauseRegister_get["get"] + ExceptionCauseRegister_clear["clear"] subgraph BasicFifo4["fu_report_fifo BasicFifo"] - BasicFifo4_read["read"] BasicFifo4_write["write"] + BasicFifo4_read["read"] end subgraph ConnectTrans["report_connector ConnectTrans"] ConnectTrans_ConnectTrans["ConnectTrans"] @@ -276,35 +276,35 @@ MethodProduct1_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_select["select"] RSFuncBlock_insert["insert"] - RSFuncBlock_update["update"] RSFuncBlock_get_result["get_result"] + RSFuncBlock_select["select"] + RSFuncBlock_update["update"] subgraph RS["rs RS"] RS_RS["RS"] RS_RS1["RS"] - RS_select["select"] - RS_insert["insert"] - RS_take["take"] RS_RS2["RS"] RS_RS3["RS"] RS_update["update"] + RS_insert["insert"] + RS_take["take"] + RS_select["select"] RS_RS4["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO4["fifo FIFO"] - FIFO4_write["write"] FIFO4_read["read"] + FIFO4_write["write"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_accept["accept"] ShiftFuncUnit_issue["issue"] + ShiftFuncUnit_accept["accept"] subgraph FIFO5["fifo FIFO"] FIFO5_write["write"] FIFO5_read["read"] @@ -350,8 +350,8 @@ end subgraph PrivilegedFuncUnit["func_unit_4 PrivilegedFuncUnit"] PrivilegedFuncUnit_precommit["precommit"] - PrivilegedFuncUnit_issue["issue"] PrivilegedFuncUnit_accept["accept"] + PrivilegedFuncUnit_issue["issue"] subgraph BasicFifo5["fetch_resume_fifo BasicFifo"] BasicFifo5_read["read"] BasicFifo5_write["write"] @@ -386,42 +386,42 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_insert["insert"] LSUDummy_LSUDummy["LSUDummy"] - LSUDummy_LSUDummy1["LSUDummy"] - LSUDummy_LSUDummy2["LSUDummy"] LSUDummy_update["update"] - LSUDummy_select["select"] LSUDummy_precommit["precommit"] LSUDummy_get_result["get_result"] + LSUDummy_select["select"] + LSUDummy_LSUDummy1["LSUDummy"] + LSUDummy_LSUDummy2["LSUDummy"] + LSUDummy_insert["insert"] subgraph Forwarder6["forwarder Forwarder"] Forwarder6_write["write"] Forwarder6_read["read"] end subgraph LSURequester["requester LSURequester"] - LSURequester_issue_cond2["issue_cond2"] - LSURequester_accept["accept"] + LSURequester_accept_cond0["accept_cond0"] LSURequester_issue["issue"] LSURequester_accept_cond1["accept_cond1"] - LSURequester_accept_cond0["accept_cond0"] + LSURequester_accept["accept"] LSURequester_issue_cond1["issue_cond1"] + LSURequester_issue_cond2["issue_cond2"] LSURequester_issue_cond0["issue_cond0"] end end subgraph CSRUnit["rs_block_2 CSRUnit"] + CSRUnit_CSRUnit["CSRUnit"] CSRUnit_insert["insert"] - CSRUnit_fetch_resume["fetch_resume"] CSRUnit_get_result["get_result"] + CSRUnit_fetch_resume["fetch_resume"] CSRUnit_select["select"] - CSRUnit_update["update"] CSRUnit_precommit["precommit"] - CSRUnit_CSRUnit["CSRUnit"] + CSRUnit_update["update"] end subgraph MethodTryProduct["InstructionPrecommitKey_unifier MethodTryProduct"] - MethodTryProduct_method["method"] MethodTryProduct_MethodTryProduct["MethodTryProduct"] MethodTryProduct_MethodTryProduct1["MethodTryProduct"] MethodTryProduct_MethodTryProduct2["MethodTryProduct"] + MethodTryProduct_method["method"] end subgraph Collector2["FetchResumeKey_unifier Collector"] Collector2_method["method"] @@ -451,20 +451,20 @@ GenericCSRRegisters_GenericCSRRegisters["GenericCSRRegisters"] subgraph MachineModeCSRRegisters["m_mode MachineModeCSRRegisters"] subgraph CSRRegister["mcause CSRRegister"] - CSRRegister__fu_read["_fu_read"] CSRRegister__fu_write["_fu_write"] CSRRegister_write["write"] + CSRRegister__fu_read["_fu_read"] end subgraph CSRRegister1["mtvec CSRRegister"] - CSRRegister1__fu_write["_fu_write"] - CSRRegister1_read["read"] CSRRegister1__fu_read["_fu_read"] + CSRRegister1_read["read"] + CSRRegister1__fu_write["_fu_write"] end subgraph CSRRegister2["mepc CSRRegister"] - CSRRegister2__fu_write["_fu_write"] - CSRRegister2__fu_read["_fu_read"] CSRRegister2_read["read"] CSRRegister2_write["write"] + CSRRegister2__fu_write["_fu_write"] + CSRRegister2__fu_read["_fu_read"] end end subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] @@ -475,28 +475,28 @@ CSRRegister3_read["read"] end subgraph CSRRegister4["register_high CSRRegister"] + CSRRegister4_read["read"] CSRRegister4__fu_read["_fu_read"] CSRRegister4_write["write"] - CSRRegister4_read["read"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5__fu_read["_fu_read"] CSRRegister5_read["read"] + CSRRegister5__fu_read["_fu_read"] CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] - CSRRegister6_read["read"] CSRRegister6__fu_read["_fu_read"] + CSRRegister6_read["read"] CSRRegister6_write["write"] end end end subgraph FIFO9["fifo_decode FIFO"] - FIFO9_write["write"] FIFO9_read["read"] + FIFO9_write["write"] end subgraph DecodeStage["decode DecodeStage"] DecodeStage_DecodeStage["DecodeStage"] @@ -520,8 +520,8 @@ Renaming_Renaming["Renaming"] end subgraph FIFO12["reg_alloc_out_buf FIFO"] - FIFO12_read["read"] FIFO12_write["write"] + FIFO12_read["read"] end subgraph ROBAllocation["rob_alloc ROBAllocation"] ROBAllocation_ROBAllocation["ROBAllocation"] @@ -536,8 +536,8 @@ RSSelection_RSSelection2["RSSelection"] RSSelection_RSSelection3["RSSelection"] subgraph Forwarder8["forwarder Forwarder"] - Forwarder8_write["write"] Forwarder8_read["read"] + Forwarder8_write["write"] end end subgraph RSInsertion["rs_insertion RSInsertion"] @@ -551,22 +551,22 @@ Retirement_Retirement["Retirement"] Retirement_Retirement1["Retirement"] Retirement_Retirement_cond1["Retirement_cond1"] - Retirement_core_state["core_state"] Retirement_Retirement2["Retirement"] - Retirement_Retirement_cond0["Retirement_cond0"] + Retirement_core_state["core_state"] Retirement_Retirement3["Retirement"] + Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement4["Retirement"] subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister7["register_low CSRRegister"] + CSRRegister7__fu_read["_fu_read"] CSRRegister7_write["write"] CSRRegister7_read["read"] - CSRRegister7__fu_read["_fu_read"] end subgraph CSRRegister8["register_high CSRRegister"] CSRRegister8_read["read"] - CSRRegister8_write["write"] CSRRegister8__fu_read["_fu_read"] + CSRRegister8_write["write"] end end subgraph HwCounter9["perf_instr_ret HwCounter"] @@ -587,18 +587,18 @@ end subgraph TransactionManager["transactionManager TransactionManager"] TransactionManager_Retirement_cond1_Retirement["Retirement_cond1_Retirement"] - TransactionManager_LSUDummy_issue_cond0["LSUDummy_issue_cond0"] - TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] - TransactionManager_LSUDummy_issue_cond2["LSUDummy_issue_cond2"] - TransactionManager_LSUDummy_issue_cond1["LSUDummy_issue_cond1"] TransactionManager_LSUDummy_accept_cond1["LSUDummy_accept_cond1"] + TransactionManager_accept_cond0_LSUDummy["accept_cond0_LSUDummy"] + TransactionManager_LSUDummy_issue_cond1["LSUDummy_issue_cond1"] + TransactionManager_LSUDummy_issue_cond0["LSUDummy_issue_cond0"] TransactionManager_Retirement_cond0_Retirement["Retirement_cond0_Retirement"] + TransactionManager_LSUDummy_issue_cond2["LSUDummy_issue_cond2"] end end Core_InitFreeRFFifo --> BasicFifo2_write -Retirement_Retirement --> BasicFifo2_write -TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write +Retirement_Retirement4 --> BasicFifo2_write TransactionManager_Retirement_cond1_Retirement --> BasicFifo2_write +TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write FIFO6_read --> Core_DiscardBranchVerify WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write @@ -607,13 +607,13 @@ SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer1 SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request -ICache_ICache1 <--> HwCounter4__incr -ICache_ICache2 <--> HwCounter3__incr -ICache_ICache2 <--> HwCounter2__incr -ICache_ICache2 <--> HwCounter1__incr -ICache_ICache2 --> Forwarder3_write -ICache_ICache --> SimpleCommonBusCacheRefiller_start_refill -ICache_ICache --> Forwarder2_write +ICache_ICache <--> HwCounter4__incr +ICache_ICache1 <--> HwCounter3__incr +ICache_ICache1 <--> HwCounter2__incr +ICache_ICache1 <--> HwCounter1__incr +ICache_ICache1 --> Forwarder3_write +ICache_ICache2 --> SimpleCommonBusCacheRefiller_start_refill +ICache_ICache2 --> Forwarder2_write ICache_ICache3 --> Forwarder2_write SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache3 WishboneMasterAdapter_get_read_response --> ICache_ICache3 @@ -621,26 +621,26 @@ BasicFifo_read --> ICache_ICache3 WishboneMaster_result --> ICache_ICache3 Forwarder_read --> ICache_ICache3 -Fetch_Fetch --> ICache_issue_req -Fetch_Fetch <--> HwCounter__incr -Fetch_Fetch <--> LatencyMeasurer__start -Fetch_Fetch --> FIFO1_write -Fetch_Fetch --> FIFO2_write -Fetch_Fetch --> BasicFifo3_write -BasicFifo3_read --> Fetch_Fetch1 -ICache_accept_res --> Fetch_Fetch1 -FIFO2_read --> Fetch_Fetch1 -Fetch_Fetch1 <--> LatencyMeasurer__stop -FIFO1_read --> Fetch_Fetch1 -Fetch_Fetch1 --> HwExpHistogram__add -Forwarder3_read --> Fetch_Fetch1 -Fetch_Fetch1 --> MethodProduct_method +Fetch_Fetch1 --> ICache_issue_req +Fetch_Fetch1 <--> HwCounter__incr +Fetch_Fetch1 <--> LatencyMeasurer__start +Fetch_Fetch1 --> FIFO1_write +Fetch_Fetch1 --> FIFO2_write +Fetch_Fetch1 --> BasicFifo3_write +BasicFifo3_read --> Fetch_Fetch +ICache_accept_res --> Fetch_Fetch +FIFO2_read --> Fetch_Fetch +Fetch_Fetch <--> LatencyMeasurer__stop +FIFO1_read --> Fetch_Fetch +Fetch_Fetch --> HwExpHistogram__add +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 <--> HwCounter8__incr @@ -650,7 +650,7 @@ RegAllocation_RegAllocation --> FIFO10_write FIFO10_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename -Retirement_Retirement --> FRAT_rename +Retirement_Retirement4 --> FRAT_rename TransactionManager_Retirement_cond1_Retirement --> FRAT_rename Renaming_Renaming --> FIFO11_write FIFO11_read --> ROBAllocation_ROBAllocation @@ -658,18 +658,18 @@ ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO3_write ROBAllocation_ROBAllocation --> FIFO12_write -FIFO12_read --> RSSelection_RSSelection -RSSelection_RSSelection --> Forwarder8_write -Forwarder8_read --> RSSelection_RSSelection1 +FIFO12_read --> RSSelection_RSSelection2 +RSSelection_RSSelection2 --> Forwarder8_write +Forwarder8_read --> RSSelection_RSSelection Forwarder8_read --> RSSelection_RSSelection3 -Forwarder8_read --> RSSelection_RSSelection2 -RSFuncBlock_select --> RSSelection_RSSelection1 -RS_select --> RSSelection_RSSelection1 -RSSelection_RSSelection1 --> FIFO13_write +Forwarder8_read --> RSSelection_RSSelection1 +RSFuncBlock_select --> RSSelection_RSSelection +RS_select --> RSSelection_RSSelection +RSSelection_RSSelection --> FIFO13_write RSSelection_RSSelection3 --> FIFO13_write -RSSelection_RSSelection2 --> FIFO13_write +RSSelection_RSSelection1 --> FIFO13_write RSSelection_RSSelection3 <--> LSUDummy_select -RSSelection_RSSelection2 <--> CSRUnit_select +RSSelection_RSSelection1 <--> CSRUnit_select FIFO13_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -685,7 +685,7 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume -Retirement_Retirement2 --> Fetch_resume +Retirement_Retirement1 --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done @@ -695,7 +695,7 @@ ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update ResultAnnouncement_ResultAnnouncement --> CSRUnit_update -RS_RS1 --> WakeupSelect_WakeupSelect +RS_RS4 --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect @@ -703,10 +703,10 @@ RS_take --> WakeupSelect4_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO4_write -RS_RS2 --> WakeupSelect1_WakeupSelect +RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO5_write -RS_RS3 --> WakeupSelect2_WakeupSelect +RS_RS1 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect <--> HwCounter5__incr WakeupSelect2_WakeupSelect <--> HwCounter6__incr @@ -721,7 +721,7 @@ RS_RS --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO8_write -RS_RS4 --> WakeupSelect4_WakeupSelect +RS_RS2 --> WakeupSelect4_WakeupSelect WakeupSelect4_WakeupSelect --> PrivilegedFuncUnit_issue ConnectTrans4_ConnectTrans --> Forwarder5_write ConnectTrans5_ConnectTrans --> Forwarder5_write @@ -739,12 +739,12 @@ PrivilegedFuncUnit_accept --> ConnectTrans8_ConnectTrans CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo5_write -LSUDummy_LSUDummy2 --> Forwarder6_write -TransactionManager_LSUDummy_accept_cond1 --> Forwarder6_write -TransactionManager_LSUDummy_issue_cond0 --> Forwarder6_write -TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write +LSUDummy_LSUDummy --> Forwarder6_write TransactionManager_LSUDummy_issue_cond2 --> Forwarder6_write +TransactionManager_accept_cond0_LSUDummy --> Forwarder6_write TransactionManager_LSUDummy_issue_cond1 --> Forwarder6_write +TransactionManager_LSUDummy_accept_cond1 --> Forwarder6_write +TransactionManager_LSUDummy_issue_cond0 --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -774,37 +774,37 @@ ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo5_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans -ReorderBuffer_peek --> Retirement_Retirement4 -ReorderBuffer_peek --> Retirement_Retirement1 +ReorderBuffer_peek --> Retirement_Retirement3 ReorderBuffer_peek --> Retirement_Retirement -ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement +ReorderBuffer_peek --> Retirement_Retirement4 ReorderBuffer_peek --> TransactionManager_Retirement_cond1_Retirement -Retirement_Retirement4 --> MethodTryProduct_method -ExceptionCauseRegister_get --> Retirement_Retirement1 -ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement +ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement +Retirement_Retirement3 --> MethodTryProduct_method +ExceptionCauseRegister_get --> Retirement_Retirement ExceptionCauseRegister_get --> TransactionManager_Retirement_cond1_Retirement -Retirement_Retirement <--> ReorderBuffer_retire -TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire +ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement +Retirement_Retirement4 <--> ReorderBuffer_retire TransactionManager_Retirement_cond1_Retirement <--> ReorderBuffer_retire -Retirement_Retirement <--> LatencyMeasurer1__stop -TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop +TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire +Retirement_Retirement4 <--> LatencyMeasurer1__stop TransactionManager_Retirement_cond1_Retirement <--> LatencyMeasurer1__stop -FIFO3_read --> Retirement_Retirement -FIFO3_read --> TransactionManager_Retirement_cond0_Retirement +TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop +FIFO3_read --> Retirement_Retirement4 FIFO3_read --> TransactionManager_Retirement_cond1_Retirement -Retirement_Retirement --> HwExpHistogram1__add -TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add +FIFO3_read --> TransactionManager_Retirement_cond0_Retirement +Retirement_Retirement4 --> HwExpHistogram1__add TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram1__add -CoreInstructionCounter_decrement --> Retirement_Retirement -CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement +TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add +CoreInstructionCounter_decrement --> Retirement_Retirement4 CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond1_Retirement -RRAT_peek --> Retirement_Retirement +CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement +RRAT_peek --> Retirement_Retirement4 RRAT_peek --> TransactionManager_Retirement_cond1_Retirement -Retirement_Retirement --> RegisterFile_free -TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free +Retirement_Retirement4 --> RegisterFile_free TransactionManager_Retirement_cond1_Retirement --> RegisterFile_free -CSRRegister1_read --> Retirement_Retirement2 -Retirement_Retirement2 <--> ExceptionCauseRegister_clear +TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free +CSRRegister1_read --> Retirement_Retirement1 +Retirement_Retirement1 <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -816,6 +816,45 @@ CSRRegister6_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans1_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt +TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy2 +TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy2 +TransactionManager_LSUDummy_issue_cond0 <--> LSUDummy_LSUDummy2 +TransactionManager_LSUDummy_issue_cond2 --> LSURequester_issue +TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue +TransactionManager_LSUDummy_issue_cond0 --> LSURequester_issue +TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 +TransactionManager_accept_cond0_LSUDummy <--> LSURequester_accept_cond0 +WishboneMasterAdapter1_get_write_response --> TransactionManager_accept_cond0_LSUDummy +Serializer1_Serializer --> TransactionManager_accept_cond0_LSUDummy +BasicFifo1_read --> TransactionManager_accept_cond0_LSUDummy +BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond1 +WishboneMaster1_result --> TransactionManager_accept_cond0_LSUDummy +WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond1 +Forwarder1_read --> TransactionManager_accept_cond0_LSUDummy +Forwarder1_read --> TransactionManager_LSUDummy_accept_cond1 +TransactionManager_accept_cond0_LSUDummy <--> LSUDummy_LSUDummy1 +TransactionManager_LSUDummy_accept_cond1 <--> LSUDummy_LSUDummy1 +LSURequester_accept --> TransactionManager_accept_cond0_LSUDummy +LSURequester_accept --> TransactionManager_LSUDummy_accept_cond1 +TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 +TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement2 +TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement2 +TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write +TransactionManager_Retirement_cond0_Retirement --> CSRRegister_write +TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write +TransactionManager_Retirement_cond0_Retirement --> CSRRegister2_write +TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry +TransactionManager_Retirement_cond0_Retirement <--> InterruptController_entry +TransactionManager_LSUDummy_issue_cond1 <--> LSURequester_issue_cond1 +TransactionManager_LSUDummy_issue_cond1 --> WishboneMasterAdapter1_request_read +TransactionManager_LSUDummy_issue_cond1 --> Serializer1_Serializer2 +TransactionManager_LSUDummy_issue_cond1 --> BasicFifo1_write +TransactionManager_LSUDummy_issue_cond0 --> BasicFifo1_write +TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request +TransactionManager_LSUDummy_issue_cond0 --> WishboneMaster1_request +TransactionManager_LSUDummy_accept_cond1 <--> LSURequester_accept_cond1 +WishboneMasterAdapter1_get_read_response --> TransactionManager_LSUDummy_accept_cond1 +Serializer1_Serializer3 --> TransactionManager_LSUDummy_accept_cond1 TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement_cond0 TransactionManager_Retirement_cond0_Retirement --> RRAT_commit TransactionManager_Retirement_cond0_Retirement <--> DoubleCounterCSR2_increment @@ -824,48 +863,9 @@ CSRRegister8_read --> TransactionManager_Retirement_cond0_Retirement TransactionManager_Retirement_cond0_Retirement --> CSRRegister8_write TransactionManager_Retirement_cond0_Retirement <--> HwCounter9__incr -TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement3 -TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement3 -TransactionManager_Retirement_cond0_Retirement --> CSRRegister_write -TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write -TransactionManager_Retirement_cond0_Retirement --> CSRRegister2_write -TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write -TransactionManager_Retirement_cond0_Retirement <--> InterruptController_entry -TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry -TransactionManager_LSUDummy_accept_cond1 <--> LSUDummy_LSUDummy1 -TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy1 -LSURequester_accept --> TransactionManager_LSUDummy_accept_cond1 -LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 -TransactionManager_LSUDummy_accept_cond1 <--> LSURequester_accept_cond1 -WishboneMasterAdapter1_get_read_response --> TransactionManager_LSUDummy_accept_cond1 -Serializer1_Serializer --> TransactionManager_LSUDummy_accept_cond1 -BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond1 -BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 -WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond1 -WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 -Forwarder1_read --> TransactionManager_LSUDummy_accept_cond1 -Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 -TransactionManager_LSUDummy_issue_cond0 <--> LSUDummy_LSUDummy -TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy -TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy -TransactionManager_LSUDummy_issue_cond0 --> LSURequester_issue -TransactionManager_LSUDummy_issue_cond2 --> LSURequester_issue -TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue TransactionManager_LSUDummy_issue_cond0 <--> LSURequester_issue_cond0 TransactionManager_LSUDummy_issue_cond0 --> WishboneMasterAdapter1_request_write -TransactionManager_LSUDummy_issue_cond0 --> Serializer1_Serializer2 -TransactionManager_LSUDummy_issue_cond0 --> BasicFifo1_write -TransactionManager_LSUDummy_issue_cond1 --> BasicFifo1_write -TransactionManager_LSUDummy_issue_cond0 --> WishboneMaster1_request -TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request -TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 -WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 -Serializer1_Serializer3 --> TransactionManager_LSUDummy_accept_cond0 -TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 -TransactionManager_LSUDummy_issue_cond1 <--> LSURequester_issue_cond1 -TransactionManager_LSUDummy_issue_cond1 --> WishboneMasterAdapter1_request_read -TransactionManager_LSUDummy_issue_cond1 --> Serializer1_Serializer1 -TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 +TransactionManager_LSUDummy_issue_cond0 --> Serializer1_Serializer1 @@ -876,7 +876,7 @@

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

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

Address mapping example

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.cache.html b/coreblocks.cache.html index c1efeb535..b818efb48 100644 --- a/coreblocks.cache.html +++ b/coreblocks.cache.html @@ -129,7 +129,7 @@

Submodules
-serialize_addr(addr: Record) Value
+serialize_addr(addr: View) Value
@@ -241,7 +241,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index c965e7203..a93e1a3e1 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -368,7 +368,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.fu.html b/coreblocks.fu.html index 294d3b1e9..da98066af 100644 --- a/coreblocks.fu.html +++ b/coreblocks.fu.html @@ -236,7 +236,7 @@

Submodules
-coreblocks.fu.div_unit.get_input(arg: Record) tuple[amaranth.hdl._ast.Value, amaranth.hdl._ast.Value]
+coreblocks.fu.div_unit.get_input(arg: View) tuple[amaranth.hdl._ast.Value, amaranth.hdl._ast.Value]
@@ -286,7 +286,7 @@

SubmodulesAttributes
decode_fn: Signal
-
exec_fn: Record
+
exec_fn: View
@@ -965,7 +965,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.fu.unsigned_multiplication.html b/coreblocks.fu.unsigned_multiplication.html index 25447c615..c46c9b6e0 100644 --- a/coreblocks.fu.unsigned_multiplication.html +++ b/coreblocks.fu.unsigned_multiplication.html @@ -237,7 +237,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.html b/coreblocks.html index f59c8f5bc..1237650ed 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -234,7 +234,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.lsu.html b/coreblocks.lsu.html index c261c33c9..36d113c3c 100644 --- a/coreblocks.lsu.html +++ b/coreblocks.lsu.html @@ -166,7 +166,7 @@

Submodules
addrSignal

Memory address, for which PMAs are requested.

-
resultRecord

PMAs for given address.

+
resultView

PMAs for given address.

@@ -178,6 +178,17 @@

Submodules +
+class coreblocks.lsu.pma.PMALayout
+

Bases: StructLayout

+
+
+__init__()
+
+ +
+
class coreblocks.lsu.pma.PMARegion
@@ -236,7 +247,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.params.html b/coreblocks.params.html index c3ad994ad..a9ff75406 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -2314,17 +2314,6 @@

Submodules -
-class coreblocks.params.layouts.PMALayouts
-

Bases: object

-
-
-__init__(gen_params: GenParams)
-
- -

-
class coreblocks.params.layouts.RATLayouts
@@ -2701,7 +2690,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index d4e44e520..6acdc123f 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -744,7 +744,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

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

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.stages.html b/coreblocks.stages.html index 96d0ac310..4327f1258 100644 --- a/coreblocks.stages.html +++ b/coreblocks.stages.html @@ -263,7 +263,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.structs_common.html b/coreblocks.structs_common.html index e05bc67b4..318ceeb70 100644 --- a/coreblocks.structs_common.html +++ b/coreblocks.structs_common.html @@ -522,7 +522,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/coreblocks.utils.html b/coreblocks.utils.html index b64d42b2f..0059cb8e0 100644 --- a/coreblocks.utils.html +++ b/coreblocks.utils.html @@ -149,7 +149,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/current-graph.html b/current-graph.html index ae10765e5..32f5207c1 100644 --- a/current-graph.html +++ b/current-graph.html @@ -92,18 +92,18 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/development-environment.html b/development-environment.html index 730af3fa4..5a1c4b96e 100644 --- a/development-environment.html +++ b/development-environment.html @@ -209,7 +209,7 @@

tprof.py

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

diff --git a/genindex.html b/genindex.html index a9084ea4d..d1befd06c 100644 --- a/genindex.html +++ b/genindex.html @@ -185,6 +185,8 @@

_

  • (coreblocks.lsu.dummyLsu.LSUDummy method)
  • (coreblocks.lsu.pma.PMAChecker method) +
  • +
  • (coreblocks.lsu.pma.PMALayout method)
  • (coreblocks.lsu.pma.PMARegion method)
  • @@ -243,8 +245,6 @@

    _

  • (coreblocks.params.layouts.JumpBranchLayouts method)
  • (coreblocks.params.layouts.LSULayouts method) -
  • -
  • (coreblocks.params.layouts.PMALayouts method)
  • (coreblocks.params.layouts.RATLayouts method)
  • @@ -2731,7 +2731,7 @@

    P

  • PMAChecker (class in coreblocks.lsu.pma)
  • -
  • PMALayouts (class in coreblocks.params.layouts) +
  • PMALayout (class in coreblocks.lsu.pma)
  • PMARegion (class in coreblocks.lsu.pma)
  • @@ -3921,7 +3921,7 @@

    Z

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/home.html b/home.html index 799a2b754..471726678 100644 --- a/home.html +++ b/home.html @@ -129,7 +129,7 @@

    Documentation

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/index.html b/index.html index 9efbb6b44..16998b3e6 100644 --- a/index.html +++ b/index.html @@ -229,7 +229,7 @@

    Coreblocks

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/miscellany/exceptions-summary.html b/miscellany/exceptions-summary.html index 87e61df71..bc2c63032 100644 --- a/miscellany/exceptions-summary.html +++ b/miscellany/exceptions-summary.html @@ -271,7 +271,7 @@

    Summary

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/modules-coreblocks.html b/modules-coreblocks.html index c808e3308..8e160ae5f 100644 --- a/modules-coreblocks.html +++ b/modules-coreblocks.html @@ -203,7 +203,7 @@

    coreblocks

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/modules-transactron.html b/modules-transactron.html index 5d52139e9..2dc13be74 100644 --- a/modules-transactron.html +++ b/modules-transactron.html @@ -149,7 +149,7 @@

    transactron

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/objects.inv b/objects.inv index 22633320f3110452f912b02cdc6e35b21564b0b1..982e48bdcc403979f7bca31d4db3590d77aba58d 100644 GIT binary patch delta 10653 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 DGUdMW delta 10652 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 checklist

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/py-modindex.html b/py-modindex.html index 72ce95f58..78cb0576a 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -618,7 +618,7 @@

    Python Module Index

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/scheduler/overview.html b/scheduler/overview.html index 5c4f9a5c3..9d10d5b0a 100644 --- a/scheduler/overview.html +++ b/scheduler/overview.html @@ -146,7 +146,7 @@

    More detailed description of each block

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/search.html b/search.html index 3deb2e593..1fb50efa2 100644 --- a/search.html +++ b/search.html @@ -101,7 +101,7 @@

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/searchindex.js b/searchindex.js index 8f30d49aa..9067cef2e 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "assumptions", "auto_graph", "components/icache", "coreblocks", "coreblocks.cache", "coreblocks.frontend", "coreblocks.fu", "coreblocks.fu.unsigned_multiplication", "coreblocks.lsu", "coreblocks.params", "coreblocks.peripherals", "coreblocks.scheduler", "coreblocks.stages", "coreblocks.structs_common", "coreblocks.utils", "current-graph", "development-environment", "home", "index", "miscellany/exceptions-summary", "modules-coreblocks", "modules-transactron", "problem-checklist", "scheduler/overview", "shared-structs/implementation/rs-impl", "shared-structs/rs", "synthesis/synthesis", "transactions", "transactron", "transactron.lib", "transactron.testing", "transactron.utils", "transactron.utils.amaranth_ext"], "filenames": ["api.md", "assumptions.md", "auto_graph.rst", "components/icache.md", "coreblocks.rst", "coreblocks.cache.rst", "coreblocks.frontend.rst", "coreblocks.fu.rst", "coreblocks.fu.unsigned_multiplication.rst", "coreblocks.lsu.rst", "coreblocks.params.rst", "coreblocks.peripherals.rst", "coreblocks.scheduler.rst", "coreblocks.stages.rst", "coreblocks.structs_common.rst", "coreblocks.utils.rst", "current-graph.md", "development-environment.md", "home.md", "index.md", "miscellany/exceptions-summary.md", "modules-coreblocks.rst", "modules-transactron.rst", "problem-checklist.md", "scheduler/overview.md", "shared-structs/implementation/rs-impl.md", "shared-structs/rs.md", "synthesis/synthesis.md", "transactions.md", "transactron.rst", "transactron.lib.rst", "transactron.testing.rst", "transactron.utils.rst", "transactron.utils.amaranth_ext.rst"], "titles": ["API", "List of assumptions made during development", "<no title>", "Instruction Cache", "coreblocks package", "coreblocks.cache package", "coreblocks.frontend package", "coreblocks.fu package", "coreblocks.fu.unsigned_multiplication package", "coreblocks.lsu package", "coreblocks.params package", "coreblocks.peripherals package", "coreblocks.scheduler package", "coreblocks.stages package", "coreblocks.structs_common package", "coreblocks.utils package", "Full transaction-method graph", "Development environment", "Introduction", "Coreblocks", "Summary of papers about interrupts", "coreblocks", "transactron", "Problem checklist", "Scheduler overview", "Proposition of Reservation Station implementation", "Reservation Station", "Core verification", "Documentation for Coreblocks transaction framework", "transactron package", "transactron.lib package", "transactron.testing package", "transactron.utils package", "transactron.utils.amaranth_ext package"], "terms": {"packag": [0, 17, 19, 21, 22], "subpackag": [0, 21, 22], "cach": [0, 4, 6, 10, 19, 21, 32], "submodul": [0, 21, 22, 27], "icach": [0, 4, 6, 21, 30], "modul": [0, 17, 21, 22, 27, 28], "ifac": [0, 4, 21, 30], "refil": [0, 3, 4, 10, 21], "content": [0, 21, 22], "frontend": [0, 4, 21, 24, 30], "decode_stag": [0, 4, 21], "fetch": [0, 3, 4, 10, 13, 14, 20, 21], "instr_decod": [0, 4, 21], "instr_descript": [0, 4, 21], "rvc": [0, 4, 10, 21], "fu": [0, 1, 4, 10, 13, 14, 21, 25, 26], "alu": [0, 4, 10, 21], "div_unit": [0, 4, 21], "except": [0, 4, 10, 13, 19, 21, 23, 29, 32], "fu_decod": [0, 4, 21], "jumpbranch": [0, 4, 10, 21], "mul_unit": [0, 4, 21], "priv": [0, 4, 10, 21], "shift_unit": [0, 4, 10, 21], "zbc": [0, 4, 10, 21], "zb": [0, 4, 10, 21], "lsu": [0, 4, 10, 21], "dummylsu": [0, 4, 10, 21], "pma": [0, 4, 10, 21], "param": [0, 4, 5, 7, 9, 11, 12, 13, 14, 21], "configur": [0, 4, 11, 12, 21, 27, 30], "fu_param": [0, 4, 21], "genparam": [0, 4, 6, 7, 8, 9, 12, 13, 14, 21], "icache_param": [0, 4, 21], "instr": [0, 4, 6, 21], "isa": [0, 4, 6, 14, 21], "kei": [0, 4, 14, 21, 29, 30, 32], "layout": [0, 4, 5, 6, 11, 12, 13, 17, 21, 23, 28, 29, 30, 32], "optyp": [0, 4, 6, 7, 9, 12, 13, 14, 21], "peripher": [0, 4, 21], "axi_lit": [0, 4, 21], "bus_adapt": [0, 4, 21], "wishbon": [0, 4, 21], "schedul": [0, 4, 10, 19, 20, 21, 29, 30, 33], "wakeup_select": [0, 4, 21], "stage": [0, 1, 4, 9, 14, 21], "backend": [0, 4, 21], "func_blocks_unifi": [0, 4, 21], "retir": [0, 4, 9, 10, 14, 21], "rs_func_block": [0, 4, 21], "structs_common": [0, 4, 10, 21], "csr": [0, 4, 6, 10, 21], "csr_gener": [0, 4, 21], "instr_count": [0, 4, 21], "interrupt_control": [0, 4, 21], "rat": [0, 1, 4, 10, 12, 20, 21], "rf": [0, 1, 4, 13, 20, 21, 25, 26], "rob": [0, 1, 4, 10, 12, 13, 20, 21, 24, 25, 26], "r": [0, 1, 4, 9, 10, 12, 13, 17, 20, 21, 24, 25, 26, 27], "util": [0, 4, 12, 13, 21, 22, 23, 28, 29, 30], "protocol": [0, 4, 5, 11, 12, 13, 21, 29, 30], "core": [0, 6, 7, 8, 10, 11, 12, 13, 14, 17, 19, 20, 21, 22, 30, 32], "lib": [0, 22, 29, 31, 32, 33], "adapt": [0, 11, 22, 28, 29, 31], "button": [0, 22, 29], "connector": [0, 22, 29], "depend": [0, 10, 14, 19, 22, 28, 29, 33], "fifo": [0, 13, 20, 22, 28, 29], "metric": [0, 10, 22, 29, 32], "reqr": [0, 22, 29], "simultan": [0, 14, 22, 28, 29], "storag": [0, 22, 29], "transform": [0, 22, 29], "test": [0, 10, 17, 19, 22, 23, 29, 30, 32, 33], "assert": [0, 11, 22, 29, 33], "function": [0, 6, 7, 10, 12, 13, 20, 22, 23, 28, 29, 30, 32], "gtkw_extens": [0, 22, 29], "infrastructur": [0, 22, 29], "profil": [0, 17, 22], "sugar": [0, 22, 29], "testbenchio": [0, 22, 23, 29], "assign": [0, 10, 14, 22, 23, 28, 29], "data_repr": [0, 22, 29], "debug_sign": [0, 10, 13, 22, 29, 30, 31], "depcach": [0, 22, 29], "gen": [0, 6, 7, 8, 22, 29], "idgen": [0, 22, 29], "transactron_help": [0, 22, 29], "graph": [0, 17, 19, 22, 27], "trace": [0, 17, 22, 31], "ha": [1, 5, 6, 10, 12, 14, 17, 20, 23, 25, 28, 29, 30], "data": [1, 6, 9, 10, 11, 14, 19, 26, 27, 29, 30, 31, 32, 33], "forward": [1, 11, 28, 29, 30], "from": [1, 5, 6, 7, 9, 11, 12, 13, 14, 17, 18, 20, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33], "tomasulo": 1, "announc": [1, 9, 13, 14], "bu": [1, 9, 10, 11], "read": [1, 9, 11, 14, 17, 19, 23, 28, 30, 32], "x0": [1, 10], "rf0": 1, "return": [1, 3, 7, 9, 11, 14, 19, 20, 29, 30, 31, 32], "0": [1, 6, 7, 10, 11, 12, 14, 25, 26, 27, 29, 30, 31, 32], "write": [1, 5, 6, 11, 14, 20, 26, 28, 30], "i": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "noop": 1, "separ": [1, 24, 29, 30, 32], "each": [1, 6, 7, 10, 11, 14, 17, 19, 20, 25, 26, 28, 29, 30, 31, 32], "writeback": 1, "save": [1, 10, 13, 14, 17, 20, 25, 26, 29, 30, 32], "after": [1, 3, 5, 6, 10, 11, 14, 20, 24, 27, 28, 30], "get": [1, 6, 7, 8, 12, 13, 17, 19, 29, 30, 31, 32, 33], "output": [1, 5, 9, 11, 13, 14, 17, 20, 25, 26, 29, 30, 33], "commit": [1, 10, 14, 17, 20, 27], "updat": [1, 9, 13, 14, 15, 27, 33], "The": [3, 5, 7, 10, 11, 13, 17, 18, 19, 20, 24, 25, 26, 27, 29, 30, 32, 33], "should": [3, 5, 6, 11, 12, 13, 14, 17, 18, 20, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "expos": [3, 30, 32], "three": [3, 6, 20, 27, 29], "method": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 29, 30, 31, 32], "issue_req": [3, 5], "thi": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 23, 25, 26, 27, 28, 29, 30, 32, 33], "issu": [3, 5, 7, 8, 12, 15, 17, 28, 30], "an": [3, 5, 9, 10, 11, 12, 13, 17, 18, 20, 23, 25, 27, 28, 29, 30, 31, 32, 33], "lookup": [3, 5], "request": [3, 5, 7, 8, 9, 10, 11, 28, 29, 30, 33], "accept_resp": 3, "result": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 20, 27, 28, 30, 32], "flush": [3, 5, 10, 14, 20], "entir": [3, 27, 28], "oper": [3, 6, 7, 10, 20, 28, 29, 30, 33], "under": [3, 28, 29], "follow": [3, 7, 10, 12, 17, 25, 27, 28, 30, 32], "ar": [3, 6, 9, 10, 11, 13, 14, 17, 18, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "alwai": [3, 6, 14, 27, 28, 29, 30, 31], "multipl": [3, 7, 8, 10, 11, 12, 13, 28, 29, 30, 32], "4": [3, 7, 10, 30], "byte": [3, 10, 29, 30, 32], "risc": [3, 6, 10, 18, 27], "v": [3, 6, 10, 17, 18, 20, 25, 27], "specif": [3, 6, 10, 11, 17, 20, 27, 30], "requir": [3, 14, 17, 20, 27, 28, 29], "align": [3, 9, 32], "c": [3, 10, 20, 27], "extens": [3, 10, 27], "introduc": [3, 20, 28], "16": [3, 10, 20, 29], "bit": [3, 5, 6, 7, 8, 10, 11, 14, 20, 25, 26, 28, 30, 32, 33], "relax": [3, 28], "unit": [3, 6, 7, 8, 10, 11, 12, 13, 14, 17, 24, 27], "handl": [3, 7, 14, 19, 28, 29], "case": [3, 11, 12, 13, 20, 23, 28, 29, 30, 32, 33], "fulli": [3, 9, 30], "pipelin": [3, 9, 11, 12, 14, 20, 25, 30], "process": [3, 14, 17, 19, 27, 30, 31], "order": [3, 10, 12, 14, 17, 18, 19, 27, 29, 30], "As": [3, 20, 28, 30], "can": [3, 9, 11, 13, 14, 17, 18, 20, 24, 25, 27, 28, 29, 30, 31, 32, 33], "invok": [3, 6, 12, 13, 20, 25, 31], "independ": [3, 28, 30], "accept_r": [3, 5], "If": [3, 6, 10, 11, 14, 20, 23, 25, 28, 29, 30, 32], "space": [3, 20], "anoth": [3, 5, 17, 28, 29, 30], "simpli": 3, "block": [3, 7, 8, 10, 11, 12, 13, 19, 20, 28, 29, 30], "latenc": [3, 20, 27, 30], "least": 3, "one": [3, 5, 7, 10, 11, 13, 14, 17, 20, 24, 25, 26, 28, 29, 30, 31, 32, 33], "cycl": [3, 7, 8, 11, 14, 17, 20, 24, 27, 28, 29, 30, 31], "miss": [3, 20], "occur": [3, 5], "arbitrarili": 3, "long": [3, 26, 27, 30], "ensur": [3, 27], "ani": [3, 6, 11, 12, 20, 23, 30, 31, 32, 33], "refetch": 3, "howev": [3, 30], "guarante": [3, 20], "have": [3, 9, 11, 13, 14, 17, 20, 23, 27, 28, 29, 30, 31, 32, 33], "alreadi": [3, 13, 20, 30, 32], "been": 3, "still": [3, 20, 26, 29], "wait": [3, 11, 13, 14, 17, 20, 25, 26, 29, 31], "accept": [3, 5, 7, 8, 14, 15, 27, 29, 30, 32], "inform": [3, 9, 12, 17, 29, 30, 32], "regard": 3, "error": [3, 5, 10, 11, 29, 30, 32], "mean": [3, 12, 17, 26, 29, 30], "dure": [3, 9, 19, 24, 30, 31], "line": [3, 5, 10, 17, 19], "subsequ": 3, "access": [3, 10, 11, 14, 20, 28, 30, 31, 32], "trigger": [3, 14], "which": [3, 5, 6, 7, 9, 10, 11, 12, 13, 17, 18, 20, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "most": [3, 20, 28, 29, 30], "like": [3, 6, 20, 28, 29, 30], "For": [3, 10, 17, 25, 26, 28, 29, 30, 32, 33], "32": [3, 7, 8, 10, 11, 20, 28, 30], "128": [3, 10], "set": [3, 5, 6, 7, 9, 10, 12, 13, 14, 19, 25, 27, 29, 30, 32, 33], "size": [3, 10, 11, 20, 28, 30, 32], "equal": [3, 14], "31": [3, 10], "15": [3, 10], "14": [3, 10], "13": [3, 10], "12": [3, 10], "11": [3, 10, 17, 27], "10": [3, 10, 20], "09": 3, "08": 3, "07": 3, "06": [3, 31], "05": 3, "04": 3, "03": 3, "02": 3, "01": 3, "00": 3, "tag": [3, 11, 20, 25, 26], "index": [3, 10, 29, 33], "offset": 3, "unsigned_multipl": [4, 7], "common": [4, 7, 11, 30, 32], "fast_recurs": [4, 7], "sequenc": [4, 7, 12, 30], "shift": [4, 7, 10], "class": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 28, 29, 30, 31, 32, 33], "base": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 20, 29, 30, 31, 32, 33], "elaborat": [4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 28, 29, 30, 31, 32], "__init__": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 28, 29, 30, 31, 32, 33], "gen_param": [4, 6, 7, 8, 9, 10, 12, 13, 14], "wb_instr_bu": 4, "wishboneinterfac": [4, 11], "wb_data_bu": 4, "cacheinterfac": [5, 6], "A": [5, 10, 11, 27, 28, 29, 30, 32], "simpl": [5, 6, 9, 12, 13, 29, 30, 32, 33], "associ": [5, 10, 30], "instruct": [5, 6, 7, 9, 10, 12, 13, 14, 19, 20, 24, 25, 27], "replac": [5, 8, 10, 25], "polici": 5, "pseudo": 5, "random": [5, 31], "scheme": 5, "everi": [5, 7, 11, 17, 27, 29, 30], "time": [5, 11, 14, 20, 29, 30], "trash": 5, "we": [5, 9, 11, 13, 20, 24, 25, 26, 27, 28, 31], "select": [5, 6, 7, 9, 11, 12, 13, 14, 15, 17], "next": [5, 6, 9, 12, 13, 14, 20, 29, 33], "wai": [5, 7, 11, 17, 20, 27, 28, 29, 30, 32], "keep": [5, 29], "global": [5, 14, 20], "counter": [5, 10, 14, 17, 30], "abstract": [5, 8, 10, 27, 30, 32], "awai": 5, "need": [5, 11, 17, 20, 25, 28, 29], "two": [5, 10, 14, 20, 23, 27, 28, 29, 30, 31, 32], "refiller_start": 5, "call": [5, 7, 12, 14, 17, 23, 25, 28, 29, 30, 31, 32], "whenev": 5, "refiller_accept": 5, "readi": [5, 9, 10, 11, 12, 13, 14, 19, 25, 29, 30], "word": [5, 10], "written": [5, 14, 26, 27, 30], "last": [5, 10, 12, 14, 29, 30], "when": [5, 11, 14, 17, 20, 23, 25, 26, 28, 29, 30, 31, 32, 33], "either": [5, 11, 28, 29, 30, 32, 33], "transfer": [5, 11, 29, 30], "over": [5, 14, 29, 30], "shouldn": [5, 27], "t": [5, 6, 9, 10, 17, 20, 23, 25, 27, 28, 29, 30, 31, 32], "until": [5, 20, 30], "start": [5, 7, 9, 10, 11, 20, 29, 30], "icachelayout": [5, 10], "icacheparamet": [5, 10], "cacherefillerinterfac": 5, "none": [5, 6, 7, 9, 10, 13, 14, 29, 30, 31, 32, 33], "paramet": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 28, 29, 30, 31, 32, 33], "instanc": [5, 6, 7, 9, 12, 13, 27, 29, 30, 31, 32], "us": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 20, 23, 27, 28, 29, 30, 31, 32, 33], "creat": [5, 8, 11, 17, 27, 28, 29, 30, 31, 32, 33], "gener": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 23, 27, 29, 30, 31, 32], "input": [5, 6, 7, 11, 13, 14, 20, 25, 26, 28, 29, 30, 33], "start_refil": 5, "accept_refil": 5, "deserialize_addr": 5, "raw_addr": 5, "valu": [5, 6, 7, 9, 10, 11, 12, 13, 14, 19, 23, 25, 26, 29, 30, 31, 32, 33], "dict": [5, 11, 28, 29, 30, 31, 32, 33], "str": [5, 10, 11, 29, 30, 31, 32, 33], "amaranth": [5, 6, 7, 10, 11, 23, 27, 28, 29, 30, 31, 32, 33], "hdl": [5, 6, 7, 10, 29, 30, 31, 32, 33], "_ast": [5, 6, 7, 10, 29, 30, 31, 32, 33], "serialize_addr": 5, "addr": [5, 9, 10, 11, 30], "record": [5, 7, 9, 23, 28, 29, 30, 31, 32, 33], "icachebypass": 5, "bus_mast": 5, "busmasterinterfac": [5, 9, 10, 11], "haselabor": [5, 11, 15, 29, 30, 31, 33], "interfac": [5, 6, 8, 9, 11, 12, 13, 14, 19, 27, 28, 29, 30], "whole": [5, 18, 20, 30], "given": [5, 7, 9, 10, 17, 25, 28, 29, 30, 31, 32, 33], "simplecommonbuscacherefil": 5, "decodestag": 6, "decod": [6, 7, 10, 12, 29, 32], "transact": [6, 10, 11, 14, 17, 19, 25, 29, 30, 33], "instanti": [6, 29], "instrdecod": 6, "make": [6, 7, 17, 18, 20, 23, 27, 28, 29, 31], "actual": [6, 17, 19, 28], "combinatori": [6, 28], "manner": [6, 11], "get_raw": 6, "push_decod": 6, "raw": 6, "previou": [6, 11, 20, 30], "step": [6, 12, 17, 20, 27, 28], "e": [6, 10, 17, 20, 23, 28, 30, 32, 33], "g": [6, 10, 17, 20, 23, 28, 30, 32, 33], "fetchlayout": [6, 10], "send": [6, 10, 11, 12, 13], "It": [6, 7, 8, 9, 11, 12, 13, 17, 20, 24, 25, 27, 28, 29, 30, 31, 32, 33], "describ": [6, 10, 12, 13, 20, 27, 29, 30, 31], "decodelayout": [6, 10, 12], "pc": [6, 10, 14, 19], "insid": [6, 27, 28, 29, 30], "increment": [6, 14], "ilen_byt": 6, "cont": [6, 31], "unalignedfetch": 6, "work": [6, 12, 20, 23, 27, 28, 29], "unalign": 6, "perform": [6, 7, 8, 10, 12, 14, 17, 27, 28, 29, 30, 32, 33], "elementari": 6, "compon": [6, 10, 11, 18, 29, 30], "opcod": [6, 10, 25, 26], "funct3": [6, 7, 10], "etc": [6, 10, 28], "connect": [6, 11, 13, 14, 20, 28, 29, 30], "via": [6, 28, 29], "its": [6, 12, 13, 14, 20, 27, 28, 29, 30, 32, 33], "attribut": [6, 7, 8, 9, 10, 11, 13, 14, 29, 30, 32, 33], "signal": [6, 7, 9, 10, 11, 19, 23, 29, 30, 31, 32, 33], "ilen": [6, 10], "out": [6, 7, 8, 11, 13, 18, 19, 29, 30, 33], "identifi": [6, 10, 25, 30, 32], "funct3_v": 6, "1": [6, 7, 8, 10, 12, 14, 20, 25, 26, 27, 28, 29, 30, 31, 32, 33], "funct7": [6, 7, 10], "seven": 6, "funct7_v": 6, "funct12": [6, 10], "twelv": 6, "funct12_v": 6, "rd": [6, 10], "reg_cnt_log": 6, "address": [6, 9, 10, 11, 14, 19, 20], "regist": [6, 10, 12, 14, 20, 24, 30, 32], "rd_v": 6, "rs1": [6, 10], "hold": [6, 11, 14, 30], "first": [6, 7, 10, 12, 20, 25, 26, 27, 28, 30, 31, 32], "rs1_v": 6, "take": [6, 11, 13, 24, 25, 28, 29, 30, 31, 32], "form": [6, 10, 14, 20, 27, 30], "rs2": [6, 10], "second": [6, 7, 10, 12, 25, 26, 27, 30], "rs2_v": 6, "imm": [6, 10], "xlen": [6, 7, 10, 14, 32], "immedi": [6, 10, 11], "provid": [6, 7, 10, 12, 14, 27, 28, 30, 31, 32], "were": [6, 20, 28], "succ": 6, "fencetarget": [6, 10], "successor": 6, "fenc": [6, 10], "pred": 6, "predecessor": 6, "fm": 6, "fencefm": [6, 10], "mode": [6, 10, 17, 20], "csr_alen": [6, 10], "control": [6, 10, 11, 14, 27, 29, 30, 33], "sourc": [6, 10, 12, 17, 25, 29, 30, 32], "type": [6, 7, 10, 17, 29, 30, 31, 32], "defin": [6, 9, 14, 28, 29, 30, 32, 33], "kind": [6, 7, 12, 30, 32], "illeg": 6, "wa": [6, 10, 14, 17, 20, 28, 29, 30, 32], "success": [6, 11, 31], "do": [6, 10, 20, 23, 28, 29], "fit": 6, "support": [6, 9, 10, 12, 17, 19, 29, 30], "constructor": [6, 28, 29, 32], "encod": [6, 20, 29, 32, 33], "object": [6, 7, 9, 10, 11, 27, 28, 29, 30, 31, 32], "repres": [6, 14, 29, 30], "singl": [6, 7, 8, 10, 12, 13, 14, 28, 29, 30, 32], "option": [6, 7, 10, 14, 17, 28, 29, 30, 31, 32, 33], "exist": [6, 28, 32], "instr_type_overrid": 6, "instrtyp": [6, 10], "specifi": [6, 10, 11, 14, 26, 30, 31, 32], "determin": [6, 20, 27, 30, 32], "instrust": 6, "almost": 6, "correct": [6, 9, 20, 25, 26, 27], "rd_zero": 6, "bool": [6, 7, 9, 10, 14, 29, 30, 31, 32, 33], "field": [6, 9, 10, 14, 17, 25, 26, 28, 29, 30, 31, 32], "constant": 6, "zero": [6, 10, 14, 25, 30, 33], "other": [6, 14, 17, 19, 28, 29, 30, 33], "accordingli": 6, "default": [6, 11, 17, 28, 29, 30, 32, 33], "fals": [6, 7, 9, 10, 17, 28, 29, 30, 32, 33], "rs1_zero": 6, "instrdecompress": 6, "decompr_reg": 6, "rvc_reg": 6, "instr_mux": 6, "sel": [6, 11], "list": [6, 7, 10, 11, 14, 17, 19, 23, 27, 29, 30, 31, 32, 33], "int": [6, 7, 8, 9, 10, 11, 13, 14, 29, 30, 31, 32, 33], "enum": [6, 7, 10, 29, 30, 31, 32], "valuecast": [6, 10, 29, 30, 31, 32], "tupl": [6, 7, 10, 11, 12, 13, 14, 29, 30, 32], "is_instr_compress": 6, "alucompon": [7, 10], "functionalcomponentparam": [7, 10, 13], "zba_en": 7, "zbb_enabl": 7, "get_modul": [7, 9, 10, 13, 14], "funcunit": [7, 10, 13, 15], "get_optyp": [7, 9, 10, 13, 14], "alufuncunit": 7, "alu_fn": 7, "alufn": 7, "divcompon": 7, "ipc": [7, 27], "3": [7, 10, 14, 17, 29, 32], "div_fn": 7, "divfn": 7, "decodermanag": 7, "fn": 7, "intflag": [7, 10, 29], "div": [7, 10], "divu": [7, 10], "2": [7, 8, 10, 11, 14, 27, 29, 30, 32], "rem": [7, 10], "remu": [7, 10], "8": [7, 8, 10, 11, 29, 30], "__new__": [7, 10, 14, 29], "get_instruct": 7, "valid": [7, 10, 11, 12, 25, 30, 32, 33], "implement": [7, 9, 11, 18, 19, 20, 24, 30, 32, 33], "format": [7, 17, 27, 28, 29, 30, 32], "divunit": 7, "get_input": 7, "arg": [7, 11, 28, 29, 30, 31, 32, 33], "exceptionfuncunit": 7, "unit_fn": 7, "exceptionunitfn": 7, "exceptionunitcompon": [7, 10], "respons": [7, 11, 12, 17, 29, 30, 31], "decode_fn": 7, "exec_fn": [7, 10], "op": [7, 10], "check_optyp": 7, "manag": [7, 17, 19, 29, 30, 32], "enumer": 7, "get_decod": 7, "auto": 7, "pass": [7, 13, 14, 17, 19, 27, 29, 30, 31, 32], "contructor": 7, "get_funct": 7, "get_op_typ": 7, "jumpbranchfuncunit": 7, "jb_fn": 7, "jumpbranchfn": 7, "jumpcompon": [7, 10], "mulcompon": 7, "mul_unit_typ": 7, "multyp": 7, "dsp_width": [7, 8], "mul_fn": 7, "mulfn": 7, "hot": [7, 20, 33], "wire": [7, 32], "5": [7, 10, 24, 30, 31], "differ": [7, 11, 13, 17, 18, 20, 23, 27, 29, 30, 32], "mul": [7, 10], "mulh": [7, 10], "mulhsu": [7, 10], "mulhu": [7, 10], "intenum": [7, 10, 14], "recursive_mul": 7, "fastest": 7, "multipli": [7, 8], "onli": [7, 11, 14, 20, 27, 28, 29, 30, 31, 32], "costli": [7, 20], "term": 7, "resourc": [7, 14, 20, 27, 28], "sequence_mul": 7, "dsp": [7, 8], "balanc": 7, "between": [7, 17, 20, 28, 29, 30, 32, 33], "cost": [7, 19, 28], "shift_mul": 7, "cheapest": 7, "russian": [7, 8], "peasant": [7, 8], "algorithm": [7, 8], "mulunit": 7, "unsign": [7, 8], "integ": [7, 10, 32], "standard": [7, 14, 20, 27, 33], "funcunitlayout": [7, 10, 12, 13], "comput": [7, 8, 9, 14, 20, 30, 32], "mul_typ": 7, "privilegedfn": 7, "mret": [7, 10], "classmethod": [7, 29, 30, 32], "privilegedfuncunit": 7, "gp": [7, 10, 14], "privilegedunitcompon": [7, 10], "shiftfuncunit": 7, "shift_unit_fn": 7, "shiftunitfn": 7, "shiftunitcompon": [7, 10], "clmultipli": 7, "carri": [7, 10, 27], "less": [7, 10], "product": [7, 30], "i1": [7, 8], "n": [7, 8, 10], "factor": 7, "i2": [7, 8], "reset": [7, 14, 19, 29], "new": [7, 9, 11, 14, 19, 20, 29, 30, 32, 33], "busi": 7, "while": [7, 29, 31], "progress": 7, "bit_width": 7, "recursion_depth": 7, "width": [7, 8, 10, 11, 14, 30, 32, 33], "depth": [7, 11, 27, 30], "recurs": [7, 8, 27, 28, 29, 32], "parallel": 7, "assum": [7, 13, 20, 30, 32], "power": [7, 32], "iterative_modul": 7, "recursive_modul": 7, "zbccompon": 7, "zbc_fn": 7, "zbcfn": 7, "clmul": [7, 10], "clmulh": [7, 10], "clmulr": [7, 10], "zbcunit": 7, "execut": [7, 10, 11, 12, 13, 17, 19, 24, 26, 28, 29, 30, 31], "zbsfunction": 7, "in1": 7, "in2": 7, "zbscompon": 7, "bclr": [7, 10], "bext": [7, 10], "binv": [7, 10], "bset": [7, 10], "zbsunit": 7, "zbs_fn": 7, "dspmulunit": 8, "clock": [8, 24, 27, 28, 29, 30], "design": [8, 20, 28, 29], "synthesi": [8, 19], "tool": [8, 17, 27, 29], "o": [8, 20, 28, 29], "same": [8, 9, 17, 28, 29, 30, 32], "number": [8, 10, 11, 13, 17, 20, 27, 29, 30, 31, 32, 33], "mulbaseunsign": 8, "unsignedmulunitlayout": [8, 10], "recursiveunsignedmul": 8, "see": [8, 23, 27, 28, 30], "fast": 8, "within": [8, 17], "sequentialunsignedmul": 8, "sequenti": [8, 11], "classic": [8, 20], "shiftunsignedmul": 8, "cheap": 8, "multi": 8, "lsublockcompon": [9, 10], "blockcomponentparam": [9, 10, 13, 14], "funcblock": [9, 10, 12, 13, 14, 15], "get_rs_entry_count": [9, 10, 13, 14], "lsudummi": 9, "veri": [9, 20, 28], "serial": [9, 13, 30], "all": [9, 10, 11, 14, 17, 19, 20, 23, 28, 29, 30, 32, 33], "store": [9, 10, 13, 14, 20, 25, 26, 29, 30, 32], "load": [9, 10, 20, 30, 32], "isn": [9, 27, 29], "compliant": [9, 27], "riscv": [9, 27], "spec": 9, "doesn": [9, 20, 23, 28, 30], "check": [9, 17, 20, 23, 25, 26, 27, 29, 32], "rang": [9, 29, 30, 31, 32, 33], "reserv": [9, 10, 14, 19, 20], "place": [9, 11, 14, 20, 25, 27, 28, 29, 30], "intruct": 9, "insert": [9, 12, 13, 14, 15, 19, 20, 24, 25], "put": [9, 14, 25, 27, 30], "receiv": [9, 11, 14, 28, 29, 30], "calcul": [9, 30], "end": [9, 10, 13, 20, 30, 32], "further": [9, 17, 30], "get_result": [9, 13, 14, 15, 30], "To": [9, 17, 20, 27, 30, 32], "precommit": [9, 13, 17], "processor": [9, 18, 19, 24], "master": [9, 11, 27], "pmacheck": 9, "physic": [9, 10, 12, 20], "memori": [9, 10, 11, 20, 30], "checker": 9, "mai": [9, 17, 30, 31, 32], "part": [9, 14, 20, 24, 28, 29, 30], "combin": [9, 13, 19, 23, 29, 30, 32], "circuit": [9, 27, 28, 29, 30, 32], "pmaregion": [9, 10], "contigu": [9, 10], "region": [9, 20], "includ": [9, 27, 28, 29, 30, 32, 33], "both": [9, 25, 28, 29, 30, 32], "begin": [9, 20], "mmio": 9, "true": [9, 10, 11, 28, 29, 30, 31, 32, 33], "indic": [9, 20, 26, 29], "coreconfigur": 10, "func_units_config": 10, "collect": [10, 13, 14, 18, 27, 29, 30, 31, 32, 33], "station": [10, 19], "exampl": [10, 14, 17, 19, 25, 28, 29, 30, 33], "rsblockcompon": [10, 13], "rs_entri": [10, 13, 14], "compress": 10, "enabl": [10, 30, 31, 32], "embed": 10, "reduc": [10, 20, 29], "debug": [10, 17, 32], "hardwar": [10, 19, 24, 28, 30, 32], "disabl": [10, 29, 30, 31], "them": [10, 17, 20, 27, 28, 29, 30, 32], "synthes": [10, 27, 30], "phys_regs_bit": 10, "file": [10, 17, 20, 27, 32], "rob_entries_bit": 10, "reorder": [10, 20, 30], "buffer": [10, 11, 20, 25, 30], "start_pc": 10, "initi": [10, 11, 19, 30, 31], "program": [10, 20, 27, 28], "icache_en": 10, "bypass": 10, "directli": [10, 28, 29], "icache_wai": 10, "icache_sets_bit": 10, "log": [10, 20], "icache_block_size_bit": 10, "allow_partial_extens": 10, "allow": [10, 18, 20, 27, 28, 29, 30, 33], "partial": [10, 29, 30, 32], "_implied_extens": 10, "extenst": 10, "flag": 10, "intern": [10, 19, 28, 29, 30], "definit": [10, 19, 29], "per": [10, 27], "segment": 10, "abc": [10, 29, 30, 31, 32, 33], "func_unit": [10, 13], "csrblockcompon": [10, 14], "6": [10, 20], "7": 10, "factori": [10, 29, 30, 32], "kwarg": [10, 11, 29, 30, 31, 32, 33], "optypes_support": 10, "iter": [10, 13, 14, 29, 30, 31, 32, 33], "dependentcach": [10, 32], "cfg": 10, "addr_width": [10, 11], "length": [10, 20, 29, 32], "word_width": 10, "machin": [10, 14], "num_of_wai": 10, "num_of_sets_bit": 10, "block_size_bit": 10, "btypeinstr": 10, "riscvinstr": 10, "pack": 10, "ebreakinstr": 10, "itypeinstr": 10, "illegalinstr": 10, "jtypeinstr": 10, "rtypeinstr": 10, "stypeinstr": 10, "utypeinstr": 10, "exceptioncaus": 10, "breakpoint": 10, "environment_call_from_m": 10, "environment_call_from_": 10, "9": 10, "environment_call_from_u": 10, "illegal_instruct": 10, "instruction_access_fault": 10, "instruction_address_misalign": 10, "instruction_page_fault": 10, "load_access_fault": 10, "load_address_misalign": 10, "load_page_fault": 10, "store_access_fault": 10, "store_address_misalign": 10, "store_page_fault": 10, "avail": [10, 11, 12, 14, 17, 18, 27, 30], "atom": [10, 25, 28], "b": 10, "512": 10, "manipul": 10, "256": 10, "d": [10, 28, 29, 32], "doubl": [10, 14, 20], "precis": [10, 20, 27], "float": [10, 29, 30, 31, 32], "point": [10, 20, 23, 27], "64": [10, 11], "f": [10, 12, 17, 27, 31], "98366": 10, "contain": [10, 17, 27, 28, 29, 30, 32], "basic": [10, 19, 27, 30], "full": [10, 17, 19, 20, 27, 30], "j": 10, "1024": 10, "dynam": [10, 20, 33], "languag": [10, 28], "l": [10, 17], "decim": 10, "m": [10, 11, 14, 17, 20, 27, 28, 29, 30, 32, 33], "divis": 10, "16384": 10, "user": [10, 14, 20, 27, 30], "level": [10, 11, 18, 20, 27, 28], "interrupt": [10, 19], "p": [10, 17], "4096": 10, "simd": 10, "q": 10, "quad": 10, "2048": 10, "8192": 10, "vector": [10, 12, 19, 20], "xintmachinemod": 10, "8589934592": 10, "categor": 10, "privilieg": 10, "xintsupervisor": 10, "17179869184": 10, "supervisor": [10, 14], "zam": 10, "2097152": 10, "misalign": 10, "zba": 10, "268435456": 10, "extend": [10, 23, 29], "zbb": 10, "536870912": 10, "1073741824": 10, "2147483648": 10, "zdinx": 10, "33554432": 10, "zfh": 10, "4194304": 10, "half": 10, "zfhmin": 10, "8388608": 10, "minim": 10, "zfinx": 10, "16777216": 10, "zhinx": 10, "67108864": 10, "zicntr": 10, "524288": 10, "timer": [10, 14], "zicsr": 10, "32768": 10, "statu": [10, 14, 31], "zifencei": 10, "65536": 10, "zihintntl": 10, "262144": 10, "non": [10, 25, 29, 30], "tempor": 10, "local": [10, 14, 17], "hint": [10, 29], "zihintpaus": 10, "131072": 10, "paus": 10, "energi": 10, "zihpm": 10, "1048576": 10, "zmmul": 10, "134217728": 10, "ztso": 10, "4294967296": 10, "total": 10, "tso": 10, "dev_i": 10, "dev_o": 10, "mem_r": 10, "mem_w": 10, "clz": 10, "1536": 10, "cpop": 10, "1538": 10, "ctz": 10, "1537": 10, "ebreak": 10, "ecal": 10, "770": 10, "orcb": 10, "647": 10, "rev8_32": 10, "1688": 10, "rev8_64": 10, "1720": 10, "sextb": 10, "1540": 10, "sexth": 10, "1541": 10, "sret": 10, "258": 10, "wfi": 10, "261": 10, "zexth": 10, "add": [10, 28, 29, 30, 32], "AND": 10, "andn": 10, "beq": 10, "bge": 10, "bgeu": 10, "blt": 10, "bltu": 10, "bne": 10, "csrrc": 10, "csrrci": 10, "csrr": 10, "csrrsi": 10, "csrrw": 10, "csrrwi": 10, "divuw": 10, "divw": 10, "fencei": 10, "h": [10, 20], "hu": 10, "jalr": 10, "max": [10, 27], "maxu": 10, "min": [10, 30], "minu": 10, "mulw": 10, "OR": 10, "orn": 10, "remuw": 10, "remw": 10, "rev8": 10, "rol": 10, "ror": 10, "sh1add": 10, "sh2add": 10, "sh3add": 10, "sll": 10, "slt": 10, "sltu": 10, "sr": 10, "sub": 10, "w": [10, 20], "xnor": 10, "xor": 10, "36": 10, "52": 10, "20": 10, "48": 10, "muldiv": 10, "sa": 10, "sfencevma": 10, "sl": 10, "gather": 10, "numer": 10, "val": [10, 32], "correspond": [10, 25, 29, 33], "val_log": 10, "relev": [10, 29], "nativ": 10, "reg_cnt": 10, "maximum": [10, 27, 30], "bitwis": 10, "isa_str": 10, "string": 10, "pleas": [10, 17, 23, 28], "refer": [10, 29, 32], "gcc": 10, "": [10, 11, 20, 28, 29, 30, 32, 33], "arch": [10, 17, 27], "detail": [10, 14, 19], "u": [10, 20, 27, 30, 32], "auipc": 10, "branch": [10, 20, 27, 30], "24": 10, "jal": 10, "27": 10, "25": 10, "load_fp": 10, "lui": 10, "misc_mem": 10, "op32": 10, "op_imm": 10, "op_imm_32": 10, "store_fp": 10, "system": [10, 27, 28, 32], "28": [10, 20], "a0": 10, "a1": 10, "a2": 10, "a3": 10, "a4": 10, "a5": 10, "a6": 10, "a7": 10, "17": 10, "fp": [10, 29], "ra": 10, "s0": 10, "s1": 10, "s10": 10, "26": 10, "s11": 10, "s2": 10, "18": 10, "s3": 10, "19": 10, "s4": 10, "s5": 10, "21": 10, "s6": 10, "22": 10, "s7": 10, "23": 10, "s8": 10, "s9": 10, "sp": 10, "t0": 10, "t1": [10, 28], "t2": [10, 28], "t3": 10, "t4": 10, "29": 10, "t5": 10, "30": [10, 20], "t6": 10, "tp": [10, 32], "x1": 10, "x10": 10, "x11": 10, "x12": 10, "x13": 10, "x14": 10, "x15": 10, "x16": 10, "x17": 10, "x18": 10, "x19": 10, "x2": 10, "x20": 10, "x21": 10, "x22": 10, "x23": 10, "x24": 10, "x25": 10, "x26": 10, "x27": 10, "x28": 10, "x29": 10, "x3": 10, "x30": 10, "x31": 10, "x4": 10, "x5": 10, "x6": 10, "x7": 10, "x8": 10, "x9": 10, "asyncinterruptinsertsignalkei": 10, "simplekei": [10, 29, 30, 32], "branchverifykei": 10, "commonbusdatakei": 10, "exceptionreportkei": 10, "fetchresumekei": 10, "unifierkei": [10, 13, 30], "unifi": [10, 30], "alia": 10, "collector": [10, 30], "genericcsrregisterskei": 10, "genericcsrregist": [10, 14], "instructionprecommitkei": 10, "methodtryproduct": [10, 30], "mretkei": 10, "csrlayout": 10, "commonlayoutfield": 10, "commonli": 10, "layoutlistfield": 10, "caus": [10, 20, 30, 32], "piec": 10, "rais": [10, 20, 29, 30, 31, 32], "exec_fn_layout": 10, "op_typ": 10, "reg_id": 10, "id": [10, 12, 25, 26, 29], "reg_val": 10, "some": [10, 14, 20, 23, 28, 29, 30, 32], "regs_l": 10, "logic": [10, 20, 26, 27, 28], "manual": [10, 19, 28], "thei": [10, 11, 14, 17, 20, 24, 27, 28, 29, 30], "regs_p": 10, "rl_dst": 10, "destin": 10, "operand": [10, 20, 25, 26], "rl_s1": 10, "rl_s2": 10, "rob_id": 10, "entri": [10, 12, 13, 20, 24, 25, 26, 30, 32], "rp_dst": 10, "rp_s1": 10, "rp_s2": 10, "s1_val": 10, "s2_val": 10, "side_fx": 10, "side": [10, 14, 20, 25, 26], "effect": [10, 14, 20, 25, 26, 29, 30], "fetcher": 10, "access_fault": 10, "fail": [10, 20, 32], "produc": [10, 17], "jumpbranchlayout": 10, "verify_branch": 10, "predictor": 10, "about": [10, 17, 19, 29, 30, 32], "lsulayout": 10, "pmalayout": 10, "ratlayout": [10, 12], "tabl": [10, 19], "old_rp_dst": 10, "previous": [10, 11], "rrat": [10, 14], "rflayout": [10, 12], "roblayout": [10, 12], "done": [10, 20, 27, 28, 29, 30, 31], "yet": [10, 29], "latest": [10, 27, 30], "rob_data": 10, "earliest": [10, 14], "rsinterfacelayout": 10, "rs_entries_bit": 10, "data_layout": [10, 12, 30, 32], "shapelik": [10, 29, 30, 32], "layoutlist": [10, 29, 30, 32], "rslayout": [10, 12], "ready_list": 10, "bitmask": 10, "run": [10, 17, 27, 28, 29, 30, 31, 33], "retirementlayout": 10, "current": [10, 12, 14, 20, 29], "schedulerlayout": 10, "regs_l_rob_in": 10, "befor": [10, 11, 14, 17, 23, 24, 28, 30], "alloc": [10, 12, 24, 25, 26], "regs_p_alloc_out": 10, "rs_entry_id": 10, "rs_select": 10, "confus": 10, "address_gener": 10, "arithmet": 10, "bit_manipul": 10, "bit_rot": 10, "compar": [10, 19], "csr_imm": [10, 14], "csr_reg": [10, 14], "div_rem": 10, "34": 10, "33": 10, "single_bit_manipul": 10, "unary_bit_manipulation_1": 10, "unary_bit_manipulation_2": 10, "unary_bit_manipulation_3": 10, "unary_bit_manipulation_4": 10, "unary_bit_manipulation_5": 10, "unknown": [10, 17, 29, 30, 32], "optypes_required_by_extens": 10, "resolve_impl": 10, "ignore_unsupport": 10, "axiliteinterfac": 11, "abstractinterfac": 11, "abstractsignatur": 11, "read_address": 11, "axilitereadaddressinterfac": 11, "read_data": 11, "axilitereaddatainterfac": 11, "write_address": 11, "axilitewriteaddressinterfac": 11, "write_data": 11, "axilitewritedatainterfac": 11, "write_respons": 11, "axilitewriteresponseinterfac": 11, "axilitemast": 11, "axi": 11, "lite": 11, "axil_param": 11, "axiliteparamet": 11, "ra_request": 11, "channel": 11, "being": [11, 17, 30, 32, 33], "ra_request_layout": 11, "argument": [11, 12, 17, 19, 26, 27, 29, 30, 31, 32, 33], "rd_respons": 11, "availab": 11, "state": [11, 19, 20, 28, 29, 30, 31], "rd_response_layout": 11, "wa_request": 11, "wa_request_layout": 11, "wd_request": 11, "wd_request_layout": 11, "wr_respons": 11, "wr_response_layout": 11, "axil_mast": 11, "result_handl": 11, "tmodul": [11, 14, 28, 29, 30], "start_request_transact": 11, "is_address_channel": 11, "state_machine_request": 11, "request_sign": 11, "data_width": 11, "must": [11, 29, 30, 32], "axilitesignatur": 11, "signatur": 11, "patamet": 11, "axilitemasteradapt": 11, "where": [11, 12, 17, 20, 25, 26, 28, 29, 30, 31, 32], "expect": 11, "busparametersinterfac": 11, "method_layout": 11, "commonbusmastermethodlayout": 11, "request_read": 11, "underli": 11, "request_read_layout": 11, "request_writ": 11, "request_write_layout": 11, "get_read_respons": 11, "action": [11, 14, 29, 30, 32], "read_response_layout": 11, "get_write_respons": 11, "write_response_layout": 11, "prefer": [11, 28], "gain": 11, "simplifi": 11, "interchang": 11, "buse": 11, "sent": [11, 13, 31], "wishbonemasteradapt": 11, "wishbonemast": 11, "pipelinedwishbonemast": 11, "wb_param": 11, "wishboneparamet": 11, "max_req": 11, "limit": [11, 28, 30], "pend": 11, "wb": 11, "request_layout": 11, "complet": [11, 13, 20], "result_layout": 11, "requests_finish": 11, "generate_method_layout": 11, "wishbonearbit": 11, "arbit": 11, "slave": 11, "cyc": 11, "grant": [11, 28, 29, 30, 33], "round": [11, 29, 32, 33], "robin": [11, 29, 33], "num_slav": 11, "devic": 11, "slave_wb": 11, "intefac": 11, "num_mast": 11, "ack": 11, "adr": 11, "dat_r": 11, "dat_w": 11, "err": 11, "lock": [11, 17, 20, 28, 29, 30], "rst": 11, "rty": 11, "stall": [11, 14, 20], "stb": 11, "wb_master": 11, "becom": 11, "wishbonemastermethodlayout": 11, "wishbonememoryslav": 11, "underneath": 11, "keyword": [11, 28, 29, 30, 31, 32], "re": [11, 20, 23, 28, 29], "infer": [11, 29], "wishbonemux": 11, "muxer": 11, "multiplex": [11, 28], "ssel_tga": 11, "corespond": 11, "tga": 11, "so": [11, 13, 20, 27, 28, 29, 30], "note": [11, 14, 30], "stare": 11, "finish": [11, 13, 14, 30], "clear": [11, 25, 26, 30], "delai": [11, 28], "deassert": [11, 33], "master_wb": 11, "singal": 11, "granular": [11, 30], "smallest": 11, "port": [11, 30, 32, 33], "capabl": 11, "wishbonesignatur": 11, "path": [11, 29, 30, 32], "src_loc_at": [11, 32], "prepar": [12, 17, 20, 29], "In": [12, 17, 18, 19, 26, 27, 28, 29, 32], "renam": [12, 24], "without": [12, 13, 20, 30, 32], "stuck": 12, "get_instr": 12, "get_free_reg": 12, "rat_renam": 12, "rob_put": 12, "rf_read1": 12, "rf_read2": 12, "reservation_st": 12, "decoded_instr": 12, "free": [12, 19, 20, 26], "rat_rename_in": 12, "rat_rename_out": 12, "rf_read_out": 12, "rf_read_in": 12, "wakeupselect": 12, "wakeup": [12, 26], "firstli": 12, "get_readi": 12, "binari": [12, 27, 33], "th": [12, 30, 33], "posit": [12, 25, 26, 32], "row": [12, 17, 19], "taken": [12, 27, 29, 30], "take_row": 12, "get_ready_list_out": 12, "take_out": 12, "push": 12, "down": [12, 32], "resultannounc": 13, "mark": [13, 19, 20, 29], "also": [13, 17, 27, 28, 30, 31, 32], "more": [13, 17, 19, 20, 30, 32], "than": [13, 20, 30, 32], "manytooneconnecttran": [13, 30], "rob_mark_don": 13, "rs_updat": 13, "rf_write": 13, "funcblocksunifi": 13, "extra_methods_requir": 13, "get_extra_method": 13, "item": [13, 32, 33], "rob_peek": 13, "rob_retir": 13, "r_rat_commit": 13, "r_rat_peek": 13, "free_rf_put": 13, "rf_free": 13, "exception_cause_get": 13, "exception_cause_clear": 13, "frat_renam": 13, "fetch_continu": [13, 14], "instr_decr": 13, "trap_entri": 13, "rsfuncblock": 13, "With": 13, "csrlistkei": 14, "listkei": [14, 30, 32], "csrregist": 14, "dependencymanag": [14, 29, 30, 31, 32], "behaviour": [14, 27], "automat": [14, 17, 27, 32], "csrunit": 14, "bodi": [14, 28, 29, 30], "csr_val": 14, "els": [14, 20, 28, 29], "_fu_read": 14, "_fu_writ": 14, "ignor": 14, "prioriti": [14, 28, 29, 30], "csr_number": 14, "ro_bit": 14, "mask": [14, 30], "those": [14, 20, 29], "upper": 14, "0b11": 14, "discard": 14, "regitst": 14, "unitl": 14, "resum": 14, "privilegelevel": 14, "csr_access_privileg": 14, "csr_addr": 14, "csraddress": 14, "3072": 14, "cycleh": 14, "3200": 14, "instret": 14, "3074": 14, "instreth": 14, "3202": 14, "mcaus": 14, "834": 14, "mepc": 14, "833": 14, "mtvec": 14, "773": 14, "3073": 14, "timeh": 14, "3201": 14, "doublecountercsr": 14, "group": 14, "At": 14, "overflow": [14, 30], "low_addr": 14, "high_addr": 14, "lower": [14, 32], "higher": 14, "synthetis": 14, "machinemodecsrregist": 14, "exceptioncauseregist": 14, "reorderbuff": 14, "report": 14, "rob_get_indic": 14, "fetch_stall_except": 14, "should_update_priorii": 14, "current_caus": 14, "new_caus": 14, "coreinstructioncount": 14, "count": [14, 17, 30, 33], "leav": [14, 17], "decrement": 14, "interruptcontrol": 14, "frat": 14, "registerfil": 14, "ready_for": 14, "below": [17, 32], "instal": [17, 27], "python": [17, 28, 29, 32], "interpret": [17, 30, 32], "pip": [17, 27], "virtual": 17, "python3": [17, 27], "venv": [17, 27], "project": [17, 18, 20], "directori": [17, 18, 27], "activ": [17, 27, 30, 31, 33], "bin": [17, 27], "librari": [17, 19, 30], "pip3": [17, 27], "dev": [17, 27], "txt": [17, 27], "riscv64": 17, "elf": 17, "binutil": 17, "your": [17, 23], "favourit": 17, "On": [17, 30], "debian": 17, "distro": 17, "hook": [17, 29], "pre": [17, 27], "linter": 17, "ci": [17, 27], "intend": [17, 29], "By": [17, 29, 30], "test_transact": 17, "One": [17, 20, 28, 30, 33], "even": [17, 20, 28, 29, 30], "testschedul": 17, "Or": [17, 28], "test_singl": 17, "search": 17, "name": [17, 28, 29, 30, 31, 32, 33], "match": [17, 25, 26, 33], "queri": 17, "thank": 17, "uniqu": [17, 29, 30], "just": [17, 28, 30], "help": [17, 20, 32], "find": [17, 20, 32], "parameter": 17, "waveform": 17, "vcd": 17, "gtkw": [17, 32], "gtkwave": [17, 32], "__traces__": 17, "driven": 17, "transactron": [17, 19, 28], "__profile__": 17, "analyz": 17, "verbos": [17, 27], "runner": 17, "print": 17, "code": [17, 18, 20, 23, 27, 28, 29, 30, 32, 33], "subcommand": 17, "filenam": 17, "main": [17, 20, 24, 27], "reformat": 17, "black": 17, "check_format": 17, "verifi": [17, 27], "flake8": 17, "check_typ": 17, "pyright": 17, "confront": 17, "would": [17, 20, 28, 30, 32], "messag": 17, "you": [17, 23, 25, 27], "diff": 17, "displai": 17, "chang": [17, 25, 28, 30, 31, 32, 33], "appli": [17, 20, 23, 29, 31], "chose": 17, "locat": [17, 18, 24, 29, 30, 32], "visual": 17, "architectur": [17, 20, 27], "appropri": [17, 25, 30, 31], "prune": [17, 29], "remov": [17, 20], "disconnect": 17, "node": 17, "elk": [17, 29], "eclips": 17, "kernel": [17, 20], "dot": [17, 29, 30], "graphviz": 17, "mermaid": [17, 29], "document": [17, 19], "sphinx": 17, "html": [17, 18], "build": [17, 27, 30], "present": [17, 20, 28, 30, 32], "readabl": [17, 30], "profile_fil": 17, "json": [17, 27, 32], "column": 17, "question": [17, 28], "togeth": [17, 28, 29, 32], "differenti": 17, "ident": [17, 30], "declar": [17, 28, 30, 31], "disambigu": 17, "show": 17, "caller": [17, 28, 29, 30], "condit": [17, 28, 29, 30], "could": [17, 28, 30], "forc": 17, "conflict": [17, 19, 29], "tree": [17, 29, 30], "root": [17, 29], "invert": 17, "children": 17, "how": [17, 20, 25, 27, 29, 30, 32], "mani": [17, 20, 27, 28, 29, 30, 32], "sort": 17, "filter": [17, 30], "regular": 17, "express": [17, 28, 32], "loc": 17, "coreblock": [18, 23, 27], "go": [18, 20, 23, 29], "microarchitectur": 18, "focu": 18, "flexibl": [18, 24], "easili": [18, 30], "experi": 18, "doc": 18, "descript": [18, 19, 27, 30, 32], "overview": [18, 19, 20], "high": [18, 33], "found": [18, 27], "version": [18, 27], "page": [18, 20, 27], "api": [18, 19], "kuznia": [18, 27], "rdzeni": [18, 27], "github": [18, 27], "io": [18, 27], "introduct": 19, "assumpt": [19, 20], "made": [19, 20, 28], "develop": 19, "environ": 19, "up": [19, 26, 27, 32], "script": [19, 27], "run_test": [19, 27], "py": [19, 27], "lint": 19, "sh": 19, "core_graph": 19, "build_doc": 19, "tprof": 19, "framework": [19, 25], "usag": 19, "convent": 19, "advanc": 19, "concept": 19, "special": 19, "domain": [19, 23, 29], "nest": [19, 30], "schema": [19, 29, 30, 32], "structur": [19, 20, 25, 28, 29, 30, 32], "proposit": [19, 20], "slot": [19, 30], "substitut": 19, "clean": 19, "extern": [19, 27, 28, 29], "problem": [19, 20], "checklist": 19, "verif": 19, "reproduct": 19, "benchmark": 19, "regress": 19, "map": [19, 20, 29, 30, 31, 32, 33], "summari": 19, "paper": 19, "old": 19, "softwar": 19, "tlb": 19, "analysi": [19, 29], "strategi": 19, "igpu": 19, "specul": 19, "gpu": 19, "effici": 19, "journal": 20, "articl": 20, "look": [20, 32], "choic": 20, "primari": 20, "relat": [20, 29, 30, 32], "procedur": 20, "chosen": 20, "basi": 20, "improv": [20, 28], "pretti": 20, "1993": 20, "2001": 20, "much": 20, "research": 20, "cpu": 20, "consid": [20, 28, 30], "solv": 20, "instead": [20, 23, 28, 29, 30, 31, 33], "try": [20, 23, 28], "due": [20, 29], "characterist": 20, "easi": [20, 23, 28, 30], "our": [20, 24, 27], "decid": [20, 24, 28], "what": 20, "peopl": 20, "probabl": [20, 31], "lot": 20, "worth": 20, "walker": 20, "cragon": 20, "concurr": [20, 29], "ieee": 20, "vol": 20, "june": 20, "1995": 20, "moudgil": 20, "vassiliadi": 20, "micro": 20, "pp": 20, "58": 20, "67": 20, "februari": 20, "1996": 20, "These": [20, 27, 28], "survei": 20, "topic": 20, "cdc": 20, "6600": 20, "jump": 20, "handler": [20, 31], "ibm360": 20, "stop": [20, 30], "crai": 20, "similar": [20, 27, 28, 30, 33], "here": [20, 25], "bigger": [20, 30], "torng": 20, "martin": 20, "dai": 20, "probe": 20, "idea": [20, 28], "author": 20, "window": 20, "iw": 20, "dispatch": [20, 24, 25, 26], "didn": 20, "context": [20, 29, 30, 32], "copi": [20, 29], "restor": [20, 29], "restart": [20, 33], "few": 20, "big": 20, "overhead": 20, "origin": [20, 29, 30], "unfeas": 20, "becaus": [20, 28, 29, 30], "job": 20, "addition": [20, 30], "But": 20, "mayb": [20, 28], "possibl": [20, 27, 28, 30, 32], "cooper": 20, "smaller": 20, "interest": 20, "propos": 20, "nrp": 20, "No": [20, 30], "itself": [20, 32], "don": [20, 23, 25, 28, 29], "wast": 20, "rememb": [20, 28, 29], "element": [20, 30], "left": [20, 28, 29], "middl": [20, 24], "aamer": 20, "jaleel": 20, "bruce": 20, "jacob": 20, "cours": 20, "switch": [20, 25, 28, 29, 30, 33], "penalti": 20, "alpha": 20, "mip": 20, "concentr": 20, "properti": [20, 27, 29], "short": 20, "inlin": 20, "observ": [20, 30], "import": [20, 28], "enough": 20, "live": 20, "known": 20, "fly": 20, "swap": 20, "nop": 20, "reexecut": 20, "privileg": 20, "contrast": 20, "tendenc": 20, "longer": 20, "hard": [20, 32], "risk": [20, 28, 30], "linux": [20, 27], "purpos": [20, 29, 30], "addit": [20, 27, 28, 32], "hw": 20, "bore": 20, "treat": [20, 24], "mansur": 20, "samadzadeh": 20, "loai": 20, "garalnabi": 20, "checkpoint": 20, "repair": 20, "histori": 20, "futur": [20, 24, 25], "jaikrishnan": 20, "menon": 20, "marc": 20, "de": 20, "kruijf": 20, "karthikeyan": 20, "sankaralingam": 20, "2012": 20, "low": 20, "boundari": 20, "safe": [20, 28, 32], "rewritten": 20, "recompil": 20, "runtim": [20, 29], "subregion": 20, "small": 20, "overrid": 20, "barrier": 20, "warp": 20, "wrong": 20, "split": [20, 24, 30, 31], "prevent": 20, "ivan": 20, "tanas": 20, "isaac": 20, "gelado": 20, "jorda": 20, "eduard": 20, "ayguad": 20, "nacho": 20, "navarro": 20, "2017": 20, "analys": 20, "problemat": 20, "successfulli": 20, "kill": 20, "modif": 20, "usual": [20, 28, 30], "repli": 20, "modifi": [20, 30], "claim": 20, "replai": 20, "queue": [20, 28, 30], "marker": 20, "jerom": 20, "hampton": 20, "2008": 20, "mention": 20, "alli": 20, "bailei": 20, "ab04": 20, "ag": 20, "younger": 20, "repeat": 20, "commun": [20, 25, 28], "canon": 20, "eventu": 20, "aren": [20, 28, 30], "someth": [23, 28, 33], "puzzl": 23, "why": 23, "through": [23, 30], "sure": [23, 31], "yield": [23, 31], "notabl": 23, "settl": 23, "unexpect": 23, "ad": [23, 28, 29, 30, 31, 32, 33], "right": [23, 28, 29], "eq": [23, 28, 29], "statement": [23, 28, 29, 31, 32], "loop": [23, 28], "especi": 23, "simul": [23, 27, 29, 30, 31, 32], "hang": 23, "spot": 23, "yourself": [23, 28], "fix": 23, "mistak": 23, "Its": [24, 28], "task": [24, 29], "rss": 24, "phase": 24, "choos": [24, 27], "potenti": 24, "merg": 24, "optim": 24, "todo": 24, "want": [25, 27, 29, 31, 33], "feel": 25, "anyth": 25, "id_out": [25, 26], "id_rob": [25, 26], "id_rs1": [25, 26], "val_rs1": [25, 26], "id_rs2": [25, 26], "val_rs2": [25, 26], "fill": 25, "id_rsx": 25, "val_rsx": 25, "releas": 25, "comparison": 25, "null": [25, 26], "woken": 26, "invalid": 26, "src1": [26, 30], "src2": [26, 30], "inst_readi": 26, "sever": 27, "besid": 27, "synthesis": 27, "ecp5": 27, "fpga": [27, 30], "target": [27, 30], "realiti": 27, "cocotb": 27, "assembl": 27, "deliv": 27, "histor": 27, "dedic": [27, 30], "subpag": 27, "built": 27, "docker": 27, "publicli": 27, "subsect": 27, "recreat": 27, "command": [27, 31], "platform": [27, 28, 29], "amd64": 27, "synth": 27, "amaranthsynthecp5": 27, "dockerfil": 27, "complex": [27, 30], "although": 27, "educ": 27, "practic": 27, "frequenc": 27, "too": [27, 29], "met": [27, 29], "whether": [27, 29, 33], "cell": 27, "ram": 27, "dff": 27, "repo": 27, "sudo": 27, "pull": 27, "ghcr": 27, "rm": 27, "git": 27, "clone": 27, "http": 27, "com": 27, "cd": 27, "apt": 27, "upgrad": 27, "pythonhashse": 27, "config": 27, "parse_benchmark_info": 27, "cat": 27, "abov": [27, 28], "verilog": [27, 32], "yosi": 27, "nextpnr": 27, "bitstream": 27, "strength": 27, "modular": [27, 28], "littl": 27, "effort": 27, "gate": 27, "rout": 27, "prjtrelli": 27, "measur": [27, 30], "theori": 27, "increas": [27, 28, 30], "fmax": 27, "avoid": [27, 28], "pitfal": 27, "affect": 27, "throughput": [27, 30], "monitor": 27, "accuraci": 27, "embench": 27, "compil": [27, 28, 31], "gnu": 27, "toolchain": 27, "glibc": 27, "subset": 27, "exact": [27, 29], "onc": [27, 28, 29, 30, 33], "veril": 27, "featur": [27, 28], "stub": 27, "compat": [27, 30], "host": 27, "init": [27, 30], "mount": 27, "subdirectori": 27, "share": 27, "surviv": 27, "close": 27, "exit": 27, "gen_verilog": 27, "run_benchmark": 27, "inspir": 28, "bluespec": 28, "wiki": 28, "entrieti": 28, "doe": [28, 31, 33], "link": 28, "indirectli": [28, 29], "coordin": 28, "direct": [28, 29, 30], "back": 28, "simplest": 28, "myth": 28, "def": [28, 29], "elabor": 28, "self": [28, 31], "comb": [28, 29], "sig1": 28, "expr1": 28, "sync": [28, 29], "sig2": 28, "expr2": 28, "arg_expr": 28, "analog": 28, "typic": [28, 29, 30], "myotherth": 28, "my_method": 28, "input_layout": 28, "output_layout": 28, "def_method": [28, 29], "_": [28, 29], "other_method": 28, "ret_expr": 28, "techniqu": 28, "conveni": [28, 29], "syntax": [28, 29], "particular": 28, "unnam": 28, "around": 28, "sometim": 28, "might": [28, 29, 32], "altern": [28, 29, 30], "best": 28, "ask": 28, "thing": [28, 30, 32], "doubt": 28, "noth": 28, "Such": [28, 31], "adaptertran": [28, 30], "though": 28, "cleaner": 28, "suppos": 28, "foo": [28, 30], "bar": [28, 30], "cleanest": 28, "recommend": 28, "foo_expr": 28, "bar_expr": 28, "final": 28, "rec": 28, "layout2": 28, "foobar": 28, "baz": 28, "42": 28, "method2": [28, 30], "baz_expr": 28, "method3": 28, "expr": 28, "mechan": [28, 30], "certain": 28, "occas": 28, "facilit": 28, "ones": 28, "connecttran": [28, 30], "plain": [28, 29, 30], "testbench": [28, 30], "own": [28, 29], "variant": 28, "role": 28, "omit": [28, 29, 30], "unneed": 28, "av_comb": [28, 29], "top_comb": [28, 29], "avoidedif": [28, 29], "guard": [28, 29, 30], "therefor": 28, "induc": 28, "often": 28, "belong": 28, "move": [28, 30], "top": [28, 32], "caveat": 28, "normal": 28, "cannot": [28, 29, 30], "schedule_befor": 28, "first_t_or_m": 28, "other_t_or_m": 28, "lift": 28, "first_m": 28, "other_t": 28, "situat": [28, 29], "mutual": [28, 30], "exclus": [28, 29, 30], "similarli": 28, "add_conflict": [28, 29], "undefin": [28, 29], "other_m": 28, "come": 28, "consider": 28, "parent": 28, "convers": 28, "impli": 28, "amaranth_ext": [29, 32], "transactionbas": 29, "serv": [29, 30], "simultena": 29, "transactionmanag": [29, 31], "rest": 29, "behavior": [29, 30, 32], "combination": 29, "view": [29, 30, 31, 32, 33], "structlayout": [29, 30, 32], "data_out": [29, 30], "data_in": [29, 30], "methodstruct": [29, 30], "shape": [29, 32], "shapecast": [29, 32], "forwardref": [29, 31, 32], "nonexclus": 29, "single_cal": [29, 30], "src_loc": [29, 30, 32], "variabl": [29, 33], "happen": 29, "thrown": 29, "srcloc": [29, 30, 32], "stack": [29, 30, 32], "frame": [29, 30, 32], "deep": [29, 30], "const": [29, 30], "d1": [29, 30], "d0": 29, "validate_argu": 29, "callabl": [29, 30, 31, 32], "combinationi": 29, "valuelik": [29, 30], "my_sum_method": 29, "arg1": 29, "arg2": 29, "sum": [29, 30], "_rec": [29, 30, 31, 32, 33], "signalbundl": [29, 30, 31, 32, 33], "layout_in": 29, "layout_out": 29, "static": [29, 32], "construct": [29, 30], "blueprint": 29, "freshli": 29, "proxi": 29, "priorit": 29, "modulelik": [29, 30, 32, 33], "amount": [29, 31], "useless": 29, "multplex": 29, "unguard": 29, "synchron": [29, 30], "cond": [29, 30], "pattern": 29, "elif": 29, "fsm": 29, "ctrl_path": 29, "noreturn": 29, "regularli": 29, "explicit": 29, "implicit": 29, "aris": 29, "pair": [29, 30], "runnabl": 29, "transactioncontext": 29, "care": [29, 30], "never": 29, "cc_schedul": 29, "methodmap": [29, 30], "_dsl": 29, "eager_deterministic_cc_schedul": 29, "add_transact": 29, "print_info": 29, "cgr": 29, "porder": 29, "cc": 29, "method_map": 29, "visual_graph": 29, "fragment": 29, "transactionmanagerkei": 29, "transactionmodul": 29, "wrapper": 29, "dependency_manag": [29, 31], "transaction_manag": [29, 31], "wrap": [29, 31], "dependencycontext": [29, 32], "decor": [29, 31], "eleg": 29, "dictionari": 29, "whose": 29, "gr": 29, "eager": 29, "subsystem": [29, 33], "fair": 29, "lowest": 29, "highest": [29, 33], "arbitr": [29, 33], "agent": [29, 33], "transactiongraph": 29, "vertic": 29, "edg": [29, 30], "priorityord": 29, "linear": 29, "consist": [29, 32], "constraint": 29, "trivial_roundrobin_cc_schedul": 29, "mainli": 29, "extract": 29, "IN": 29, "inout": 29, "owner": 29, "ownershipgraph": 29, "dump": 29, "liter": [29, 33], "dump_dot": 29, "indent": [29, 30, 32], "dump_elk": 29, "dump_mermaid": 29, "get_hier_nam": 29, "obj": 29, "hierarch": 29, "keyerror": [29, 30, 32], "get_nam": 29, "insert_edg": 29, "fr": 29, "insert_nod": 29, "mermaid_direct": 29, "empti": [29, 30], "subgraph": 29, "remember_field": 29, "owner_id": 29, "methodsampl": 29, "transactions_and_method": 29, "profileinfo": 29, "cycleprofil": 29, "analyze_method": 29, "runstatnod": 29, "analyze_transact": 29, "file_nam": [29, 32], "from_dict": [29, 30, 32], "kv": [29, 30, 32], "union": [29, 30, 31, 32], "infer_miss": [29, 30, 32], "from_json": [29, 30, 32], "bytearrai": [29, 30, 32], "parse_float": [29, 30, 32], "parse_int": [29, 30, 32], "parse_const": [29, 30, 32], "kw": [29, 30, 32], "exclud": [29, 30, 32], "load_onli": [29, 30, 32], "dump_onli": [29, 30, 32], "schemaf": [29, 30, 32], "to_dict": [29, 30, 32], "encode_json": [29, 30, 32], "to_json": [29, 30, 32], "skipkei": [29, 30, 32], "ensure_ascii": [29, 30, 32], "check_circular": [29, 30, 32], "allow_nan": [29, 30, 32], "sort_kei": [29, 30, 32], "profiledata": [29, 32], "individu": 29, "method_par": 29, "transactions_by_method": 29, "transaction_conflict": 29, "is_transact": 29, "profilesampl": 29, "transactionsampl": 29, "runstat": 29, "statist": 29, "did": 29, "info": 29, "summar": 29, "stat": 29, "tracingenabl": 29, "tracingfrag": 29, "lose": 29, "difficult": 29, "copyright": 29, "subfrag": 29, "_ir": [29, 32], "tracingfragmenttransform": 29, "fragmenttransform": 29, "on_frag": 29, "tracinginst": 29, "adapterbas": [30, 31], "mock": [30, 31], "en": [30, 31], "clickin": 30, "click": 30, "interact": 30, "rise": 30, "btn": 30, "dat": 30, "retriev": 30, "clickout": 30, "led": [30, 32], "flow": 30, "revers": 30, "possibli": 30, "rev_layout": 30, "vice": 30, "versa": 30, "method1": 30, "respect": 30, "fulfil": 30, "fifo_typ": 30, "syncfifo": 30, "fifotyp": 30, "conform": 30, "equival": 30, "put_result": 30, "dependencykei": [30, 32], "concret": [30, 32], "frozen": [30, 32], "lock_on_get": [30, 32], "get_depend": [30, 32], "empty_valid": [30, 32], "add_depend": [30, 32], "give": [30, 32], "track": [30, 32], "across": [30, 32], "multpl": [30, 32], "dependeci": [30, 32], "default_valu": [30, 32], "wish": 30, "custom": 30, "basicfifo": 30, "reiniti": 30, "semaphor": 30, "max_count": 30, "hardwaremetricsmanag": 30, "compos": 30, "get_metr": 30, "hwmetric": 30, "get_register_valu": 30, "metric_nam": 30, "reg_nam": 30, "qualifi": 30, "histogram": 30, "bucket": 30, "hwcounter": 30, "fully_qualified_nam": 30, "width_bit": 30, "human": 30, "incr": 30, "hwexphistogram": 30, "exponenti": 30, "distribut": 30, "sampl": 30, "durat": 30, "inf": 30, "minimum": 30, "bucket_count": 30, "sample_width": 30, "registers_width": 30, "max_valu": 30, "abl": 30, "metricmodel": 30, "add_regist": 30, "reg": [30, 32], "hwmetricregist": 30, "inherit": 30, "metrics_en": 30, "hwmetricsenabledkei": 30, "theirs": 30, "latencymeasur": 30, "event": 30, "slots_numb": 30, "max_lat": 30, "turn": [30, 32], "oldest": 30, "compris": 30, "join": 30, "metricregistermodel": 30, "fundament": 30, "singular": 30, "among": [30, 32], "reman": 30, "brief": 30, "argumentstoresultszipp": 30, "zip": 30, "cut": 30, "critic": 30, "calle": 30, "asymmetri": 30, "correctli": 30, "rate": 30, "reach": [30, 33], "capac": 30, "topologi": 30, "write_arg": 30, "args_layout": 30, "write_result": 30, "results_layout": 30, "client": 30, "somethig": 30, "server": 30, "deseri": 30, "proper": 30, "serialize_in": 30, "serialized_req_method": 30, "serialize_out": 30, "serialized_resp_method": 30, "port_count": 30, "len": 30, "resist": 30, "nonblock": 30, "overlap": 30, "boolean": 30, "catch": 30, "reason": 30, "influenc": 30, "cond1": 30, "cond2": 30, "memorybank": 30, "read_req": 30, "read_resp": 30, "elem_count": 30, "safe_writ": 30, "optimis": 30, "eg": 30, "x": [30, 32], "later": 30, "cattran": 30, "concaten": 30, "third": 30, "dst": 30, "method_list": 30, "connectandmaptran": 30, "behav": 30, "i_fun": 30, "recorddict": 30, "o_fun": 30, "methodfilt": 30, "desir": 30, "use_condit": 30, "drawback": 30, "simultaneu": 30, "bidirect": 30, "i_transform": 30, "o_transform": 30, "unmodifi": 30, "methodproduct": 30, "arbitrari": 30, "tri": 30, "succeed": 30, "make_assert_handl": 31, "my_assert": 31, "get_output": 31, "coreblockscommand": 31, "recordintdict": 31, "set_input": 31, "recordvaluedict": 31, "write_vcd_ext": 31, "engin": 31, "vcd_file": 31, "gtkw_file": 31, "now": 31, "pysimsimul": 31, "max_cycl": 31, "100000": 31, "add_transaction_modul": 31, "traces_fil": 31, "clk_period": 31, "1e": 31, "add_sync_process": 31, "add_process": 31, "passiv": 31, "add_clock": 31, "simpletestcircuit": 31, "_t_haselabor": 31, "dut": 31, "syncprocesswrapp": 31, "testcasewithsimul": 31, "testcas": 31, "valueerror": [31, 32], "add_all_mock": 31, "sim": 31, "frame_loc": 31, "add_class_mock": 31, "add_local_mock": 31, "random_wait": 31, "max_cycle_cnt": 31, "min_cycle_cnt": 31, "random_wait_geom": 31, "prob": 31, "till": 31, "run_simul": 31, "tick": 31, "cycle_cnt": 31, "guard_nested_collect": 31, "_t_nested_collect": 31, "profiler_process": 31, "def_method_mock": 31, "tb_getter": 31, "sched_prio": 31, "method_handle_loop": 31, "invoc": 31, "defer": 31, "sinc": 31, "evalu": 31, "eagerli": 31, "kwdata": 31, "call_do": 31, "call_init": 31, "call_result": 31, "call_tri": 31, "method_argu": 31, "method_handl": 31, "extra_settle_count": 31, "method_return": 31, "set_en": 31, "wait_until_don": 31, "assertkei": 32, "assert_bit": 32, "bug": 32, "otherwis": [32, 33], "detect": 32, "termin": 32, "warn": 32, "board": 32, "assigntyp": 32, "rh": 32, "lh": 32, "assignarg": 32, "assignfield": 32, "lhs_strict": 32, "rhs_strict": 32, "mismatch": 32, "accord": 32, "explicitli": 32, "castabl": 32, "subfield": 32, "align_down_to_power_of_two": 32, "num": 32, "align_to_power_of_two": 32, "average_dict_of_list": 32, "bits_from_int": 32, "int_to_sign": 32, "convert": 32, "u2": 32, "represent": [32, 33], "sign": 32, "layout_subset": 32, "make_hash": 32, "neg": 32, "negat": 32, "signed_to_int": 32, "auto_debug_sign": 32, "arrai": 32, "cl": 32, "assertloc": 32, "denot": 32, "lead": 32, "generationinfo": 32, "variou": 32, "metrics_loc": 32, "metricinfo": 32, "metadata": 32, "metricloc": 32, "transaction_signals_loc": 32, "transactionsignalsloc": 32, "method_signals_loc": 32, "methodsignalsloc": 32, "profile_data": 32, "consit": 32, "generate_verilog": 32, "top_modul": 32, "top_nam": 32, "idgener": 32, "def_help": 32, "func": 32, "from_method_layout": 32, "get_caller_class_nam": 32, "get_src_loc": 32, "method_def_help": 32, "mock_def_help": 32, "tb": 32, "silence_mustus": 32, "moduleconnector": 33, "anonym": 33, "onehotswitch": 33, "style": 33, "benefit": 33, "sig": 33, "onehotcas": 33, "0b01": 33, "0b10": 33, "onehotswitchdynam": 33, "signifi": 33, "roundrobin": 33, "greater": 33, "enableinsert": 33, "count_leading_zero": 33, "count_trailing_zero": 33, "flatten_sign": 33, "flatten": 33, "mod_incr": 33, "mod": 33, "popcount": 33}, "objects": {"": [[4, 0, 0, "-", "coreblocks"], [29, 0, 0, "-", "transactron"]], "coreblocks": [[5, 0, 0, "-", "cache"], [4, 0, 0, "-", "core"], [6, 0, 0, "-", "frontend"], [7, 0, 0, "-", "fu"], [9, 0, 0, "-", "lsu"], [10, 0, 0, "-", "params"], [11, 0, 0, "-", "peripherals"], [12, 0, 0, "-", "scheduler"], [13, 0, 0, "-", "stages"], [14, 0, 0, "-", "structs_common"], [15, 0, 0, "-", "utils"]], "coreblocks.cache": [[5, 0, 0, "-", "icache"], [5, 0, 0, "-", "iface"], [5, 0, 0, "-", "refiller"]], "coreblocks.cache.icache": [[5, 1, 1, "", "ICache"], [5, 1, 1, "", "ICacheBypass"]], "coreblocks.cache.icache.ICache": [[5, 2, 1, "", "__init__"], [5, 2, 1, "", "deserialize_addr"], [5, 2, 1, "", "serialize_addr"]], "coreblocks.cache.icache.ICacheBypass": [[5, 2, 1, "", "__init__"]], "coreblocks.cache.iface": [[5, 1, 1, "", "CacheInterface"], [5, 1, 1, "", "CacheRefillerInterface"]], "coreblocks.cache.iface.CacheInterface": [[5, 3, 1, "", "accept_res"], [5, 3, 1, "", "flush"], [5, 3, 1, "", "issue_req"]], "coreblocks.cache.iface.CacheRefillerInterface": [[5, 3, 1, "", "accept_refill"], [5, 3, 1, "", "start_refill"]], "coreblocks.cache.refiller": [[5, 1, 1, "", "SimpleCommonBusCacheRefiller"]], "coreblocks.cache.refiller.SimpleCommonBusCacheRefiller": [[5, 2, 1, "", "__init__"]], "coreblocks.core": [[4, 1, 1, "", "Core"]], "coreblocks.core.Core": [[4, 2, 1, "", "__init__"]], "coreblocks.frontend": [[6, 0, 0, "-", "decode_stage"], [6, 0, 0, "-", "fetch"], [6, 0, 0, "-", "instr_decoder"], [6, 0, 0, "-", "instr_description"], [6, 0, 0, "-", "rvc"]], "coreblocks.frontend.decode_stage": [[6, 1, 1, "", "DecodeStage"]], "coreblocks.frontend.decode_stage.DecodeStage": [[6, 2, 1, "", "__init__"]], "coreblocks.frontend.fetch": [[6, 1, 1, "", "Fetch"], [6, 1, 1, "", "UnalignedFetch"]], "coreblocks.frontend.fetch.Fetch": [[6, 2, 1, "", "__init__"]], "coreblocks.frontend.fetch.UnalignedFetch": [[6, 2, 1, "", "__init__"]], "coreblocks.frontend.instr_decoder": [[6, 1, 1, "", "InstrDecoder"]], "coreblocks.frontend.instr_decoder.InstrDecoder": [[6, 2, 1, "", "__init__"]], "coreblocks.frontend.instr_description": [[6, 1, 1, "", "Encoding"]], "coreblocks.frontend.instr_description.Encoding": [[6, 2, 1, "", "__init__"], [6, 3, 1, "", "funct12"], [6, 3, 1, "", "funct3"], [6, 3, 1, "", "funct7"], [6, 3, 1, "", "instr_type_override"], [6, 3, 1, "", "opcode"], [6, 3, 1, "", "rd_zero"], [6, 3, 1, "", "rs1_zero"]], "coreblocks.frontend.rvc": [[6, 1, 1, "", "InstrDecompress"], [6, 4, 1, "", "is_instr_compressed"]], "coreblocks.frontend.rvc.InstrDecompress": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "decompr_reg"], [6, 2, 1, "", "instr_mux"]], "coreblocks.fu": [[7, 0, 0, "-", "alu"], [7, 0, 0, "-", "div_unit"], [7, 0, 0, "-", "exception"], [7, 0, 0, "-", "fu_decoder"], [7, 0, 0, "-", "jumpbranch"], [7, 0, 0, "-", "mul_unit"], [7, 0, 0, "-", "priv"], [7, 0, 0, "-", "shift_unit"], [8, 0, 0, "-", "unsigned_multiplication"], [7, 0, 0, "-", "zbc"], [7, 0, 0, "-", "zbs"]], "coreblocks.fu.alu": [[7, 1, 1, "", "ALUComponent"], [7, 1, 1, "", "AluFuncUnit"]], "coreblocks.fu.alu.ALUComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.alu.AluFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.div_unit": [[7, 1, 1, "", "DivComponent"], [7, 1, 1, "", "DivFn"], [7, 1, 1, "", "DivUnit"], [7, 4, 1, "", "get_input"]], "coreblocks.fu.div_unit.DivComponent": [[7, 2, 1, "", "__init__"], [7, 3, 1, "", "div_fn"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"], [7, 3, 1, "", "ipc"]], "coreblocks.fu.div_unit.DivFn": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.div_unit.DivFn.Fn": [[7, 3, 1, "", "DIV"], [7, 3, 1, "", "DIVU"], [7, 3, 1, "", "REM"], [7, 3, 1, "", "REMU"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.div_unit.DivUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.exception": [[7, 1, 1, "", "ExceptionFuncUnit"], [7, 1, 1, "", "ExceptionUnitComponent"]], "coreblocks.fu.exception.ExceptionFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.exception.ExceptionUnitComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.fu_decoder": [[7, 1, 1, "", "Decoder"], [7, 1, 1, "", "DecoderManager"]], "coreblocks.fu.fu_decoder.Decoder": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.fu_decoder.DecoderManager": [[7, 3, 1, "", "Fn"], [7, 2, 1, "", "get_decoder"], [7, 2, 1, "", "get_function"], [7, 2, 1, "", "get_instructions"], [7, 2, 1, "", "get_op_types"]], "coreblocks.fu.jumpbranch": [[7, 1, 1, "", "JumpBranchFuncUnit"], [7, 1, 1, "", "JumpComponent"]], "coreblocks.fu.jumpbranch.JumpBranchFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.jumpbranch.JumpComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.mul_unit": [[7, 1, 1, "", "MulComponent"], [7, 1, 1, "", "MulFn"], [7, 1, 1, "", "MulType"], [7, 1, 1, "", "MulUnit"]], "coreblocks.fu.mul_unit.MulComponent": [[7, 2, 1, "", "__init__"], [7, 3, 1, "", "dsp_width"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"], [7, 3, 1, "", "mul_fn"], [7, 3, 1, "", "mul_unit_type"]], "coreblocks.fu.mul_unit.MulFn": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.mul_unit.MulFn.Fn": [[7, 3, 1, "", "MUL"], [7, 3, 1, "", "MULH"], [7, 3, 1, "", "MULHSU"], [7, 3, 1, "", "MULHU"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.mul_unit.MulType": [[7, 3, 1, "", "RECURSIVE_MUL"], [7, 3, 1, "", "SEQUENCE_MUL"], [7, 3, 1, "", "SHIFT_MUL"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.mul_unit.MulUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.priv": [[7, 1, 1, "", "PrivilegedFn"], [7, 1, 1, "", "PrivilegedFuncUnit"], [7, 1, 1, "", "PrivilegedUnitComponent"]], "coreblocks.fu.priv.PrivilegedFn": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.priv.PrivilegedFn.Fn": [[7, 3, 1, "", "MRET"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.priv.PrivilegedFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.priv.PrivilegedUnitComponent": [[7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.shift_unit": [[7, 1, 1, "", "ShiftFuncUnit"], [7, 1, 1, "", "ShiftUnitComponent"]], "coreblocks.fu.shift_unit.ShiftFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.shift_unit.ShiftUnitComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.unsigned_multiplication": [[8, 0, 0, "-", "common"], [8, 0, 0, "-", "fast_recursive"], [8, 0, 0, "-", "sequence"], [8, 0, 0, "-", "shift"]], "coreblocks.fu.unsigned_multiplication.common": [[8, 1, 1, "", "DSPMulUnit"], [8, 1, 1, "", "MulBaseUnsigned"]], "coreblocks.fu.unsigned_multiplication.common.DSPMulUnit": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.common.MulBaseUnsigned": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.fast_recursive": [[8, 1, 1, "", "RecursiveUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.fast_recursive.RecursiveUnsignedMul": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.sequence": [[8, 1, 1, "", "SequentialUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.sequence.SequentialUnsignedMul": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.shift": [[8, 1, 1, "", "ShiftUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.shift.ShiftUnsignedMul": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.zbc": [[7, 1, 1, "", "ClMultiplier"], [7, 1, 1, "", "ZbcComponent"], [7, 1, 1, "", "ZbcFn"], [7, 1, 1, "", "ZbcUnit"]], "coreblocks.fu.zbc.ClMultiplier": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "iterative_module"], [7, 2, 1, "", "recursive_module"]], "coreblocks.fu.zbc.ZbcComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"], [7, 3, 1, "", "recursion_depth"], [7, 3, 1, "", "zbc_fn"]], "coreblocks.fu.zbc.ZbcFn": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.zbc.ZbcFn.Fn": [[7, 3, 1, "", "CLMUL"], [7, 3, 1, "", "CLMULH"], [7, 3, 1, "", "CLMULR"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.zbc.ZbcUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.zbs": [[7, 1, 1, "", "Zbs"], [7, 1, 1, "", "ZbsComponent"], [7, 1, 1, "", "ZbsFunction"], [7, 1, 1, "", "ZbsUnit"]], "coreblocks.fu.zbs.Zbs": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.zbs.ZbsComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.zbs.ZbsFunction": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.zbs.ZbsFunction.Fn": [[7, 3, 1, "", "BCLR"], [7, 3, 1, "", "BEXT"], [7, 3, 1, "", "BINV"], [7, 3, 1, "", "BSET"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.zbs.ZbsUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.lsu": [[9, 0, 0, "-", "dummyLsu"], [9, 0, 0, "-", "pma"]], "coreblocks.lsu.dummyLsu": [[9, 1, 1, "", "LSUBlockComponent"], [9, 1, 1, "", "LSUDummy"]], "coreblocks.lsu.dummyLsu.LSUBlockComponent": [[9, 2, 1, "", "get_module"], [9, 2, 1, "", "get_optypes"], [9, 2, 1, "", "get_rs_entry_count"]], "coreblocks.lsu.dummyLsu.LSUDummy": [[9, 2, 1, "", "__init__"]], "coreblocks.lsu.pma": [[9, 1, 1, "", "PMAChecker"], [9, 1, 1, "", "PMARegion"]], "coreblocks.lsu.pma.PMAChecker": [[9, 2, 1, "", "__init__"]], "coreblocks.lsu.pma.PMARegion": [[9, 2, 1, "", "__init__"], [9, 3, 1, "", "end"], [9, 3, 1, "", "mmio"], [9, 3, 1, "", "start"]], "coreblocks.params": [[10, 0, 0, "-", "configurations"], [10, 0, 0, "-", "fu_params"], [10, 0, 0, "-", "genparams"], [10, 0, 0, "-", "icache_params"], [10, 0, 0, "-", "instr"], [10, 0, 0, "-", "isa"], [10, 0, 0, "-", "keys"], [10, 0, 0, "-", "layouts"], [10, 0, 0, "-", "optypes"]], "coreblocks.params.configurations": [[10, 1, 1, "", "CoreConfiguration"]], "coreblocks.params.configurations.CoreConfiguration": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "allow_partial_extensions"], [10, 3, 1, "", "compressed"], [10, 3, 1, "", "debug_signals"], [10, 3, 1, "", "embedded"], [10, 3, 1, "", "func_units_config"], [10, 3, 1, "", "icache_block_size_bits"], [10, 3, 1, "", "icache_enable"], [10, 3, 1, "", "icache_sets_bits"], [10, 3, 1, "", "icache_ways"], [10, 3, 1, "", "phys_regs_bits"], [10, 3, 1, "", "pma"], [10, 2, 1, "", "replace"], [10, 3, 1, "", "rob_entries_bits"], [10, 3, 1, "", "start_pc"], [10, 3, 1, "", "xlen"]], "coreblocks.params.fu_params": [[10, 1, 1, "", "BlockComponentParams"], [10, 1, 1, "", "FunctionalComponentParams"], [10, 4, 1, "", "optypes_supported"]], "coreblocks.params.fu_params.BlockComponentParams": [[10, 2, 1, "", "get_module"], [10, 2, 1, "", "get_optypes"], [10, 2, 1, "", "get_rs_entry_count"]], "coreblocks.params.fu_params.FunctionalComponentParams": [[10, 2, 1, "", "get_module"], [10, 2, 1, "", "get_optypes"]], "coreblocks.params.genparams": [[10, 1, 1, "", "GenParams"]], "coreblocks.params.genparams.GenParams": [[10, 2, 1, "", "__init__"]], "coreblocks.params.icache_params": [[10, 1, 1, "", "ICacheParameters"]], "coreblocks.params.icache_params.ICacheParameters": [[10, 2, 1, "", "__init__"]], "coreblocks.params.instr": [[10, 1, 1, "", "BTypeInstr"], [10, 1, 1, "", "EBreakInstr"], [10, 1, 1, "", "ITypeInstr"], [10, 1, 1, "", "IllegalInstr"], [10, 1, 1, "", "JTypeInstr"], [10, 1, 1, "", "RTypeInstr"], [10, 1, 1, "", "STypeInstr"], [10, 1, 1, "", "UTypeInstr"]], "coreblocks.params.instr.BTypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.EBreakInstr": [[10, 2, 1, "", "__init__"]], "coreblocks.params.instr.ITypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.IllegalInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.JTypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.RTypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.STypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.UTypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.isa": [[10, 1, 1, "", "ExceptionCause"], [10, 1, 1, "", "Extension"], [10, 1, 1, "", "FenceFm"], [10, 1, 1, "", "FenceTarget"], [10, 1, 1, "", "Funct12"], [10, 1, 1, "", "Funct3"], [10, 1, 1, "", "Funct7"], [10, 1, 1, "", "ISA"], [10, 1, 1, "", "InstrType"], [10, 1, 1, "", "Opcode"], [10, 1, 1, "", "Registers"]], "coreblocks.params.isa.ExceptionCause": [[10, 3, 1, "", "BREAKPOINT"], [10, 3, 1, "", "ENVIRONMENT_CALL_FROM_M"], [10, 3, 1, "", "ENVIRONMENT_CALL_FROM_S"], [10, 3, 1, "", "ENVIRONMENT_CALL_FROM_U"], [10, 3, 1, "", "ILLEGAL_INSTRUCTION"], [10, 3, 1, "", "INSTRUCTION_ACCESS_FAULT"], [10, 3, 1, "", "INSTRUCTION_ADDRESS_MISALIGNED"], [10, 3, 1, "", "INSTRUCTION_PAGE_FAULT"], [10, 3, 1, "", "LOAD_ACCESS_FAULT"], [10, 3, 1, "", "LOAD_ADDRESS_MISALIGNED"], [10, 3, 1, "", "LOAD_PAGE_FAULT"], [10, 3, 1, "", "STORE_ACCESS_FAULT"], [10, 3, 1, "", "STORE_ADDRESS_MISALIGNED"], [10, 3, 1, "", "STORE_PAGE_FAULT"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Extension": [[10, 3, 1, "", "A"], [10, 3, 1, "", "B"], [10, 3, 1, "", "C"], [10, 3, 1, "", "D"], [10, 3, 1, "", "E"], [10, 3, 1, "", "F"], [10, 3, 1, "", "G"], [10, 3, 1, "", "I"], [10, 3, 1, "", "J"], [10, 3, 1, "", "L"], [10, 3, 1, "", "M"], [10, 3, 1, "", "N"], [10, 3, 1, "", "P"], [10, 3, 1, "", "Q"], [10, 3, 1, "", "T"], [10, 3, 1, "", "V"], [10, 3, 1, "", "XINTMACHINEMODE"], [10, 3, 1, "", "XINTSUPERVISOR"], [10, 3, 1, "", "ZAM"], [10, 3, 1, "", "ZBA"], [10, 3, 1, "", "ZBB"], [10, 3, 1, "", "ZBC"], [10, 3, 1, "", "ZBS"], [10, 3, 1, "", "ZDINX"], [10, 3, 1, "", "ZFH"], [10, 3, 1, "", "ZFHMIN"], [10, 3, 1, "", "ZFINX"], [10, 3, 1, "", "ZHINX"], [10, 3, 1, "", "ZICNTR"], [10, 3, 1, "", "ZICSR"], [10, 3, 1, "", "ZIFENCEI"], [10, 3, 1, "", "ZIHINTNTL"], [10, 3, 1, "", "ZIHINTPAUSE"], [10, 3, 1, "", "ZIHPM"], [10, 3, 1, "", "ZMMUL"], [10, 3, 1, "", "ZTSO"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.FenceFm": [[10, 3, 1, "", "NONE"], [10, 3, 1, "", "TSO"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.FenceTarget": [[10, 3, 1, "", "DEV_I"], [10, 3, 1, "", "DEV_O"], [10, 3, 1, "", "MEM_R"], [10, 3, 1, "", "MEM_W"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct12": [[10, 3, 1, "", "CLZ"], [10, 3, 1, "", "CPOP"], [10, 3, 1, "", "CTZ"], [10, 3, 1, "", "EBREAK"], [10, 3, 1, "", "ECALL"], [10, 3, 1, "", "MRET"], [10, 3, 1, "", "ORCB"], [10, 3, 1, "", "REV8_32"], [10, 3, 1, "", "REV8_64"], [10, 3, 1, "", "SEXTB"], [10, 3, 1, "", "SEXTH"], [10, 3, 1, "", "SRET"], [10, 3, 1, "", "WFI"], [10, 3, 1, "", "ZEXTH"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct3": [[10, 3, 1, "", "ADD"], [10, 3, 1, "", "AND"], [10, 3, 1, "", "ANDN"], [10, 3, 1, "", "B"], [10, 3, 1, "", "BCLR"], [10, 3, 1, "", "BEQ"], [10, 3, 1, "", "BEXT"], [10, 3, 1, "", "BGE"], [10, 3, 1, "", "BGEU"], [10, 3, 1, "", "BINV"], [10, 3, 1, "", "BLT"], [10, 3, 1, "", "BLTU"], [10, 3, 1, "", "BNE"], [10, 3, 1, "", "BSET"], [10, 3, 1, "", "BU"], [10, 3, 1, "", "CLMUL"], [10, 3, 1, "", "CLMULH"], [10, 3, 1, "", "CLMULR"], [10, 3, 1, "", "CLZ"], [10, 3, 1, "", "CPOP"], [10, 3, 1, "", "CSRRC"], [10, 3, 1, "", "CSRRCI"], [10, 3, 1, "", "CSRRS"], [10, 3, 1, "", "CSRRSI"], [10, 3, 1, "", "CSRRW"], [10, 3, 1, "", "CSRRWI"], [10, 3, 1, "", "CTZ"], [10, 3, 1, "", "D"], [10, 3, 1, "", "DIV"], [10, 3, 1, "", "DIVU"], [10, 3, 1, "", "DIVUW"], [10, 3, 1, "", "DIVW"], [10, 3, 1, "", "FENCE"], [10, 3, 1, "", "FENCEI"], [10, 3, 1, "", "H"], [10, 3, 1, "", "HU"], [10, 3, 1, "", "JALR"], [10, 3, 1, "", "MAX"], [10, 3, 1, "", "MAXU"], [10, 3, 1, "", "MIN"], [10, 3, 1, "", "MINU"], [10, 3, 1, "", "MUL"], [10, 3, 1, "", "MULH"], [10, 3, 1, "", "MULHSU"], [10, 3, 1, "", "MULHU"], [10, 3, 1, "", "MULW"], [10, 3, 1, "", "OR"], [10, 3, 1, "", "ORCB"], [10, 3, 1, "", "ORN"], [10, 3, 1, "", "PRIV"], [10, 3, 1, "", "REM"], [10, 3, 1, "", "REMU"], [10, 3, 1, "", "REMUW"], [10, 3, 1, "", "REMW"], [10, 3, 1, "", "REV8"], [10, 3, 1, "", "ROL"], [10, 3, 1, "", "ROR"], [10, 3, 1, "", "SEXTB"], [10, 3, 1, "", "SEXTH"], [10, 3, 1, "", "SH1ADD"], [10, 3, 1, "", "SH2ADD"], [10, 3, 1, "", "SH3ADD"], [10, 3, 1, "", "SLL"], [10, 3, 1, "", "SLT"], [10, 3, 1, "", "SLTU"], [10, 3, 1, "", "SR"], [10, 3, 1, "", "SUB"], [10, 3, 1, "", "W"], [10, 3, 1, "", "XNOR"], [10, 3, 1, "", "XOR"], [10, 3, 1, "", "ZEXTH"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct7": [[10, 3, 1, "", "ADD"], [10, 3, 1, "", "AND"], [10, 3, 1, "", "ANDN"], [10, 3, 1, "", "BCLR"], [10, 3, 1, "", "BEXT"], [10, 3, 1, "", "BINV"], [10, 3, 1, "", "BSET"], [10, 3, 1, "", "CLMUL"], [10, 3, 1, "", "CLZ"], [10, 3, 1, "", "CPOP"], [10, 3, 1, "", "CTZ"], [10, 3, 1, "", "MAX"], [10, 3, 1, "", "MIN"], [10, 3, 1, "", "MULDIV"], [10, 3, 1, "", "OR"], [10, 3, 1, "", "ORCB"], [10, 3, 1, "", "ORN"], [10, 3, 1, "", "REV8"], [10, 3, 1, "", "ROL"], [10, 3, 1, "", "ROR"], [10, 3, 1, "", "SA"], [10, 3, 1, "", "SEXTB"], [10, 3, 1, "", "SEXTH"], [10, 3, 1, "", "SFENCEVMA"], [10, 3, 1, "", "SH1ADD"], [10, 3, 1, "", "SH2ADD"], [10, 3, 1, "", "SH3ADD"], [10, 3, 1, "", "SL"], [10, 3, 1, "", "SLT"], [10, 3, 1, "", "SUB"], [10, 3, 1, "", "XNOR"], [10, 3, 1, "", "XOR"], [10, 3, 1, "", "ZEXTH"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.ISA": [[10, 2, 1, "", "__init__"]], "coreblocks.params.isa.InstrType": [[10, 3, 1, "", "B"], [10, 3, 1, "", "I"], [10, 3, 1, "", "J"], [10, 3, 1, "", "R"], [10, 3, 1, "", "S"], [10, 3, 1, "", "U"]], "coreblocks.params.isa.Opcode": [[10, 3, 1, "", "AUIPC"], [10, 3, 1, "", "BRANCH"], [10, 3, 1, "", "JAL"], [10, 3, 1, "", "JALR"], [10, 3, 1, "", "LOAD"], [10, 3, 1, "", "LOAD_FP"], [10, 3, 1, "", "LUI"], [10, 3, 1, "", "MISC_MEM"], [10, 3, 1, "", "OP"], [10, 3, 1, "", "OP32"], [10, 3, 1, "", "OP_IMM"], [10, 3, 1, "", "OP_IMM_32"], [10, 3, 1, "", "STORE"], [10, 3, 1, "", "STORE_FP"], [10, 3, 1, "", "SYSTEM"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Registers": [[10, 3, 1, "", "A0"], [10, 3, 1, "", "A1"], [10, 3, 1, "", "A2"], [10, 3, 1, "", "A3"], [10, 3, 1, "", "A4"], [10, 3, 1, "", "A5"], [10, 3, 1, "", "A6"], [10, 3, 1, "", "A7"], [10, 3, 1, "", "FP"], [10, 3, 1, "", "GP"], [10, 3, 1, "", "RA"], [10, 3, 1, "", "S0"], [10, 3, 1, "", "S1"], [10, 3, 1, "", "S10"], [10, 3, 1, "", "S11"], [10, 3, 1, "", "S2"], [10, 3, 1, "", "S3"], [10, 3, 1, "", "S4"], [10, 3, 1, "", "S5"], [10, 3, 1, "", "S6"], [10, 3, 1, "", "S7"], [10, 3, 1, "", "S8"], [10, 3, 1, "", "S9"], [10, 3, 1, "", "SP"], [10, 3, 1, "", "T0"], [10, 3, 1, "", "T1"], [10, 3, 1, "", "T2"], [10, 3, 1, "", "T3"], [10, 3, 1, "", "T4"], [10, 3, 1, "", "T5"], [10, 3, 1, "", "T6"], [10, 3, 1, "", "TP"], [10, 3, 1, "", "X0"], [10, 3, 1, "", "X1"], [10, 3, 1, "", "X10"], [10, 3, 1, "", "X11"], [10, 3, 1, "", "X12"], [10, 3, 1, "", "X13"], [10, 3, 1, "", "X14"], [10, 3, 1, "", "X15"], [10, 3, 1, "", "X16"], [10, 3, 1, "", "X17"], [10, 3, 1, "", "X18"], [10, 3, 1, "", "X19"], [10, 3, 1, "", "X2"], [10, 3, 1, "", "X20"], [10, 3, 1, "", "X21"], [10, 3, 1, "", "X22"], [10, 3, 1, "", "X23"], [10, 3, 1, "", "X24"], [10, 3, 1, "", "X25"], [10, 3, 1, "", "X26"], [10, 3, 1, "", "X27"], [10, 3, 1, "", "X28"], [10, 3, 1, "", "X29"], [10, 3, 1, "", "X3"], [10, 3, 1, "", "X30"], [10, 3, 1, "", "X31"], [10, 3, 1, "", "X4"], [10, 3, 1, "", "X5"], [10, 3, 1, "", "X6"], [10, 3, 1, "", "X7"], [10, 3, 1, "", "X8"], [10, 3, 1, "", "X9"], [10, 3, 1, "", "ZERO"], [10, 2, 1, "", "__new__"]], "coreblocks.params.keys": [[10, 1, 1, "", "AsyncInterruptInsertSignalKey"], [10, 1, 1, "", "BranchVerifyKey"], [10, 1, 1, "", "CommonBusDataKey"], [10, 1, 1, "", "ExceptionReportKey"], [10, 1, 1, "", "FetchResumeKey"], [10, 1, 1, "", "GenericCSRRegistersKey"], [10, 1, 1, "", "InstructionPrecommitKey"], [10, 1, 1, "", "MretKey"]], "coreblocks.params.keys.AsyncInterruptInsertSignalKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.BranchVerifyKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.CommonBusDataKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.ExceptionReportKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.FetchResumeKey": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "unifier"]], "coreblocks.params.keys.GenericCSRRegistersKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.InstructionPrecommitKey": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "unifier"]], "coreblocks.params.keys.MretKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts": [[10, 1, 1, "", "CSRLayouts"], [10, 1, 1, "", "CommonLayoutFields"], [10, 1, 1, "", "DecodeLayouts"], [10, 1, 1, "", "FetchLayouts"], [10, 1, 1, "", "FuncUnitLayouts"], [10, 1, 1, "", "ICacheLayouts"], [10, 1, 1, "", "JumpBranchLayouts"], [10, 1, 1, "", "LSULayouts"], [10, 1, 1, "", "PMALayouts"], [10, 1, 1, "", "RATLayouts"], [10, 1, 1, "", "RFLayouts"], [10, 1, 1, "", "ROBLayouts"], [10, 1, 1, "", "RSInterfaceLayouts"], [10, 1, 1, "", "RSLayouts"], [10, 1, 1, "", "RetirementLayouts"], [10, 1, 1, "", "SchedulerLayouts"], [10, 1, 1, "", "UnsignedMulUnitLayouts"]], "coreblocks.params.layouts.CSRLayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.CommonLayoutFields": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "addr"], [10, 3, 1, "", "cause"], [10, 3, 1, "", "csr"], [10, 3, 1, "", "data"], [10, 3, 1, "", "error"], [10, 3, 1, "", "exception"], [10, 3, 1, "", "exec_fn"], [10, 3, 1, "", "exec_fn_layout"], [10, 3, 1, "", "funct3"], [10, 3, 1, "", "funct7"], [10, 3, 1, "", "imm"], [10, 3, 1, "", "instr"], [10, 3, 1, "", "op_type"], [10, 3, 1, "", "pc"], [10, 3, 1, "", "reg_id"], [10, 3, 1, "", "reg_val"], [10, 3, 1, "", "regs_l"], [10, 3, 1, "", "regs_p"], [10, 3, 1, "", "rl_dst"], [10, 3, 1, "", "rl_s1"], [10, 3, 1, "", "rl_s2"], [10, 3, 1, "", "rob_id"], [10, 3, 1, "", "rp_dst"], [10, 3, 1, "", "rp_s1"], [10, 3, 1, "", "rp_s2"], [10, 3, 1, "", "s1_val"], [10, 3, 1, "", "s2_val"], [10, 3, 1, "", "side_fx"]], "coreblocks.params.layouts.DecodeLayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.FetchLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "access_fault"], [10, 3, 1, "", "rvc"]], "coreblocks.params.layouts.FuncUnitLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "result"]], "coreblocks.params.layouts.ICacheLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "error"]], "coreblocks.params.layouts.JumpBranchLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "verify_branch"]], "coreblocks.params.layouts.LSULayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.PMALayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RATLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "old_rp_dst"]], "coreblocks.params.layouts.RFLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "valid"]], "coreblocks.params.layouts.ROBLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "done"], [10, 3, 1, "", "end"], [10, 3, 1, "", "rob_data"], [10, 3, 1, "", "start"]], "coreblocks.params.layouts.RSInterfaceLayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RSLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "ready_list"]], "coreblocks.params.layouts.RetirementLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "flushing"]], "coreblocks.params.layouts.SchedulerLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "regs_l_rob_in"], [10, 3, 1, "", "regs_p_alloc_out"], [10, 3, 1, "", "rs_entry_id"], [10, 3, 1, "", "rs_selected"]], "coreblocks.params.layouts.UnsignedMulUnitLayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.optypes": [[10, 1, 1, "", "OpType"], [10, 4, 1, "", "optypes_required_by_extensions"]], "coreblocks.params.optypes.OpType": [[10, 3, 1, "", "ADDRESS_GENERATION"], [10, 3, 1, "", "ARITHMETIC"], [10, 3, 1, "", "AUIPC"], [10, 3, 1, "", "BIT_MANIPULATION"], [10, 3, 1, "", "BIT_ROTATION"], [10, 3, 1, "", "BRANCH"], [10, 3, 1, "", "CLMUL"], [10, 3, 1, "", "COMPARE"], [10, 3, 1, "", "CSR_IMM"], [10, 3, 1, "", "CSR_REG"], [10, 3, 1, "", "DIV_REM"], [10, 3, 1, "", "EBREAK"], [10, 3, 1, "", "ECALL"], [10, 3, 1, "", "EXCEPTION"], [10, 3, 1, "", "FENCE"], [10, 3, 1, "", "FENCEI"], [10, 3, 1, "", "JAL"], [10, 3, 1, "", "JALR"], [10, 3, 1, "", "LOAD"], [10, 3, 1, "", "LOGIC"], [10, 3, 1, "", "MRET"], [10, 3, 1, "", "MUL"], [10, 3, 1, "", "SFENCEVMA"], [10, 3, 1, "", "SHIFT"], [10, 3, 1, "", "SINGLE_BIT_MANIPULATION"], [10, 3, 1, "", "SRET"], [10, 3, 1, "", "STORE"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_1"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_2"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_3"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_4"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_5"], [10, 3, 1, "", "UNKNOWN"], [10, 3, 1, "", "WFI"], [10, 2, 1, "", "__new__"]], "coreblocks.peripherals": [[11, 0, 0, "-", "axi_lite"], [11, 0, 0, "-", "bus_adapter"], [11, 0, 0, "-", "wishbone"]], "coreblocks.peripherals.axi_lite": [[11, 1, 1, "", "AXILiteInterface"], [11, 1, 1, "", "AXILiteMaster"], [11, 1, 1, "", "AXILiteParameters"], [11, 1, 1, "", "AXILiteSignature"]], "coreblocks.peripherals.axi_lite.AXILiteInterface": [[11, 3, 1, "", "read_address"], [11, 3, 1, "", "read_data"], [11, 3, 1, "", "write_address"], [11, 3, 1, "", "write_data"], [11, 3, 1, "", "write_response"]], "coreblocks.peripherals.axi_lite.AXILiteMaster": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "axil_master"], [11, 2, 1, "", "result_handler"], [11, 2, 1, "", "start_request_transaction"], [11, 2, 1, "", "state_machine_request"]], "coreblocks.peripherals.axi_lite.AXILiteParameters": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.axi_lite.AXILiteSignature": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.bus_adapter": [[11, 1, 1, "", "AXILiteMasterAdapter"], [11, 1, 1, "", "BusMasterInterface"], [11, 1, 1, "", "WishboneMasterAdapter"]], "coreblocks.peripherals.bus_adapter.AXILiteMasterAdapter": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.bus_adapter.BusMasterInterface": [[11, 3, 1, "", "get_read_response"], [11, 3, 1, "", "get_write_response"], [11, 3, 1, "", "params"], [11, 3, 1, "", "request_read"], [11, 3, 1, "", "request_write"]], "coreblocks.peripherals.bus_adapter.WishboneMasterAdapter": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone": [[11, 1, 1, "", "PipelinedWishboneMaster"], [11, 1, 1, "", "WishboneArbiter"], [11, 1, 1, "", "WishboneInterface"], [11, 1, 1, "", "WishboneMaster"], [11, 1, 1, "", "WishboneMasterMethodLayout"], [11, 1, 1, "", "WishboneMemorySlave"], [11, 1, 1, "", "WishboneMuxer"], [11, 1, 1, "", "WishboneParameters"], [11, 1, 1, "", "WishboneSignature"]], "coreblocks.peripherals.wishbone.PipelinedWishboneMaster": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "generate_method_layouts"], [11, 3, 1, "", "wb"]], "coreblocks.peripherals.wishbone.WishboneArbiter": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "masters"], [11, 3, 1, "", "slave_wb"]], "coreblocks.peripherals.wishbone.WishboneInterface": [[11, 3, 1, "", "ack"], [11, 3, 1, "", "adr"], [11, 3, 1, "", "cyc"], [11, 3, 1, "", "dat_r"], [11, 3, 1, "", "dat_w"], [11, 3, 1, "", "err"], [11, 3, 1, "", "lock"], [11, 3, 1, "", "rst"], [11, 3, 1, "", "rty"], [11, 3, 1, "", "sel"], [11, 3, 1, "", "stall"], [11, 3, 1, "", "stb"], [11, 3, 1, "", "we"]], "coreblocks.peripherals.wishbone.WishboneMaster": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "wb_master"]], "coreblocks.peripherals.wishbone.WishboneMasterMethodLayout": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMemorySlave": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "bus"]], "coreblocks.peripherals.wishbone.WishboneMuxer": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "master_wb"], [11, 3, 1, "", "slaves"]], "coreblocks.peripherals.wishbone.WishboneParameters": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneSignature": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "create"]], "coreblocks.scheduler": [[12, 0, 0, "-", "scheduler"], [12, 0, 0, "-", "wakeup_select"]], "coreblocks.scheduler.scheduler": [[12, 1, 1, "", "Scheduler"]], "coreblocks.scheduler.scheduler.Scheduler": [[12, 2, 1, "", "__init__"]], "coreblocks.scheduler.wakeup_select": [[12, 1, 1, "", "WakeupSelect"]], "coreblocks.scheduler.wakeup_select.WakeupSelect": [[12, 2, 1, "", "__init__"]], "coreblocks.stages": [[13, 0, 0, "-", "backend"], [13, 0, 0, "-", "func_blocks_unifier"], [13, 0, 0, "-", "retirement"], [13, 0, 0, "-", "rs_func_block"]], "coreblocks.stages.backend": [[13, 1, 1, "", "ResultAnnouncement"]], "coreblocks.stages.backend.ResultAnnouncement": [[13, 2, 1, "", "__init__"], [13, 2, 1, "", "debug_signals"]], "coreblocks.stages.func_blocks_unifier": [[13, 1, 1, "", "FuncBlocksUnifier"]], "coreblocks.stages.func_blocks_unifier.FuncBlocksUnifier": [[13, 2, 1, "", "__init__"], [13, 2, 1, "", "get_extra_method"]], "coreblocks.stages.retirement": [[13, 1, 1, "", "Retirement"]], "coreblocks.stages.retirement.Retirement": [[13, 2, 1, "", "__init__"]], "coreblocks.stages.rs_func_block": [[13, 1, 1, "", "RSBlockComponent"], [13, 1, 1, "", "RSFuncBlock"]], "coreblocks.stages.rs_func_block.RSBlockComponent": [[13, 2, 1, "", "__init__"], [13, 3, 1, "", "func_units"], [13, 2, 1, "", "get_module"], [13, 2, 1, "", "get_optypes"], [13, 2, 1, "", "get_rs_entry_count"], [13, 3, 1, "", "rs_entries"]], "coreblocks.stages.rs_func_block.RSFuncBlock": [[13, 2, 1, "", "__init__"]], "coreblocks.structs_common": [[14, 0, 0, "-", "csr"], [14, 0, 0, "-", "csr_generic"], [14, 0, 0, "-", "exception"], [14, 0, 0, "-", "instr_counter"], [14, 0, 0, "-", "interrupt_controller"], [14, 0, 0, "-", "rat"], [14, 0, 0, "-", "rf"], [14, 0, 0, "-", "rob"], [14, 0, 0, "-", "rs"]], "coreblocks.structs_common.csr": [[14, 1, 1, "", "CSRBlockComponent"], [14, 1, 1, "", "CSRListKey"], [14, 1, 1, "", "CSRRegister"], [14, 1, 1, "", "CSRUnit"], [14, 1, 1, "", "PrivilegeLevel"], [14, 4, 1, "", "csr_access_privilege"]], "coreblocks.structs_common.csr.CSRBlockComponent": [[14, 2, 1, "", "get_module"], [14, 2, 1, "", "get_optypes"], [14, 2, 1, "", "get_rs_entry_count"]], "coreblocks.structs_common.csr.CSRListKey": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.CSRRegister": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.CSRUnit": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.PrivilegeLevel": [[14, 3, 1, "", "MACHINE"], [14, 3, 1, "", "SUPERVISOR"], [14, 3, 1, "", "USER"], [14, 2, 1, "", "__new__"]], "coreblocks.structs_common.csr_generic": [[14, 1, 1, "", "CSRAddress"], [14, 1, 1, "", "DoubleCounterCSR"], [14, 1, 1, "", "GenericCSRRegisters"], [14, 1, 1, "", "MachineModeCSRRegisters"]], "coreblocks.structs_common.csr_generic.CSRAddress": [[14, 3, 1, "", "CYCLE"], [14, 3, 1, "", "CYCLEH"], [14, 3, 1, "", "INSTRET"], [14, 3, 1, "", "INSTRETH"], [14, 3, 1, "", "MCAUSE"], [14, 3, 1, "", "MEPC"], [14, 3, 1, "", "MTVEC"], [14, 3, 1, "", "TIME"], [14, 3, 1, "", "TIMEH"], [14, 2, 1, "", "__new__"]], "coreblocks.structs_common.csr_generic.DoubleCounterCSR": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr_generic.GenericCSRRegisters": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr_generic.MachineModeCSRRegisters": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.exception": [[14, 1, 1, "", "ExceptionCauseRegister"], [14, 4, 1, "", "should_update_prioriy"]], "coreblocks.structs_common.exception.ExceptionCauseRegister": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.instr_counter": [[14, 1, 1, "", "CoreInstructionCounter"]], "coreblocks.structs_common.instr_counter.CoreInstructionCounter": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.interrupt_controller": [[14, 1, 1, "", "InterruptController"]], "coreblocks.structs_common.interrupt_controller.InterruptController": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rat": [[14, 1, 1, "", "FRAT"], [14, 1, 1, "", "RRAT"]], "coreblocks.structs_common.rat.FRAT": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rat.RRAT": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rf": [[14, 1, 1, "", "RegisterFile"]], "coreblocks.structs_common.rf.RegisterFile": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rob": [[14, 1, 1, "", "ReorderBuffer"]], "coreblocks.structs_common.rob.ReorderBuffer": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rs": [[14, 1, 1, "", "RS"]], "coreblocks.structs_common.rs.RS": [[14, 2, 1, "", "__init__"]], "coreblocks.utils": [[15, 0, 0, "-", "protocols"]], "coreblocks.utils.protocols": [[15, 1, 1, "", "FuncBlock"], [15, 1, 1, "", "FuncUnit"]], "coreblocks.utils.protocols.FuncBlock": [[15, 3, 1, "", "get_result"], [15, 3, 1, "", "insert"], [15, 3, 1, "", "select"], [15, 3, 1, "", "update"]], "coreblocks.utils.protocols.FuncUnit": [[15, 3, 1, "", "accept"], [15, 3, 1, "", "issue"]], "transactron": [[29, 1, 1, "", "Method"], [29, 1, 1, "", "TModule"], [29, 1, 1, "", "Transaction"], [29, 1, 1, "", "TransactionManager"], [29, 1, 1, "", "TransactionModule"], [29, 0, 0, "-", "core"], [29, 4, 1, "", "def_method"], [29, 0, 0, "-", "graph"], [30, 0, 0, "-", "lib"], [29, 0, 0, "-", "profiler"], [31, 0, 0, "-", "testing"], [29, 0, 0, "-", "tracing"], [32, 0, 0, "-", "utils"]], "transactron.Method": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "body"], [29, 2, 1, "", "debug_signals"], [29, 5, 1, "", "layout_in"], [29, 5, 1, "", "layout_out"], [29, 2, 1, "", "like"], [29, 2, 1, "", "proxy"]], "transactron.TModule": [[29, 2, 1, "", "AvoidedIf"], [29, 2, 1, "", "Case"], [29, 2, 1, "", "Default"], [29, 2, 1, "", "Elif"], [29, 2, 1, "", "Else"], [29, 2, 1, "", "FSM"], [29, 2, 1, "", "If"], [29, 2, 1, "", "State"], [29, 2, 1, "", "Switch"], [29, 2, 1, "", "__init__"], [29, 5, 1, "", "ctrl_path"], [29, 5, 1, "", "next"]], "transactron.Transaction": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "body"], [29, 2, 1, "", "debug_signals"]], "transactron.TransactionManager": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "add_transaction"], [29, 2, 1, "", "debug_signals"], [29, 2, 1, "", "print_info"], [29, 2, 1, "", "visual_graph"]], "transactron.TransactionModule": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "context"]], "transactron.core": [[29, 1, 1, "", "Method"], [29, 1, 1, "", "Priority"], [29, 1, 1, "", "TModule"], [29, 1, 1, "", "Transaction"], [29, 1, 1, "", "TransactionManager"], [29, 1, 1, "", "TransactionManagerKey"], [29, 1, 1, "", "TransactionModule"], [29, 4, 1, "", "def_method"], [29, 4, 1, "", "eager_deterministic_cc_scheduler"], [29, 4, 1, "", "trivial_roundrobin_cc_scheduler"]], "transactron.core.Method": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "body"], [29, 2, 1, "", "debug_signals"], [29, 5, 1, "", "layout_in"], [29, 5, 1, "", "layout_out"], [29, 2, 1, "", "like"], [29, 2, 1, "", "proxy"]], "transactron.core.Priority": [[29, 3, 1, "", "LEFT"], [29, 3, 1, "", "RIGHT"], [29, 3, 1, "", "UNDEFINED"]], "transactron.core.TModule": [[29, 2, 1, "", "AvoidedIf"], [29, 2, 1, "", "Case"], [29, 2, 1, "", "Default"], [29, 2, 1, "", "Elif"], [29, 2, 1, "", "Else"], [29, 2, 1, "", "FSM"], [29, 2, 1, "", "If"], [29, 2, 1, "", "State"], [29, 2, 1, "", "Switch"], [29, 2, 1, "", "__init__"], [29, 5, 1, "", "ctrl_path"], [29, 5, 1, "", "next"]], "transactron.core.Transaction": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "body"], [29, 2, 1, "", "debug_signals"]], "transactron.core.TransactionManager": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "add_transaction"], [29, 2, 1, "", "debug_signals"], [29, 2, 1, "", "print_info"], [29, 2, 1, "", "visual_graph"]], "transactron.core.TransactionManagerKey": [[29, 2, 1, "", "__init__"]], "transactron.core.TransactionModule": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "context"]], "transactron.graph": [[29, 1, 1, "", "Direction"], [29, 1, 1, "", "Owned"], [29, 1, 1, "", "OwnershipGraph"]], "transactron.graph.Direction": [[29, 3, 1, "", "IN"], [29, 3, 1, "", "INOUT"], [29, 3, 1, "", "NONE"], [29, 3, 1, "", "OUT"], [29, 2, 1, "", "__new__"]], "transactron.graph.Owned": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "name"], [29, 3, 1, "", "owner"]], "transactron.graph.OwnershipGraph": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "dump"], [29, 2, 1, "", "dump_dot"], [29, 2, 1, "", "dump_elk"], [29, 2, 1, "", "dump_mermaid"], [29, 2, 1, "", "get_hier_name"], [29, 2, 1, "", "get_name"], [29, 2, 1, "", "insert_edge"], [29, 2, 1, "", "insert_node"], [29, 3, 1, "", "mermaid_direction"], [29, 2, 1, "", "prune"], [29, 2, 1, "", "remember"], [29, 2, 1, "", "remember_field"]], "transactron.lib": [[30, 0, 0, "-", "adapters"], [30, 0, 0, "-", "buttons"], [30, 0, 0, "-", "connectors"], [30, 0, 0, "-", "dependencies"], [30, 0, 0, "-", "fifo"], [30, 0, 0, "-", "metrics"], [30, 0, 0, "-", "reqres"], [30, 0, 0, "-", "simultaneous"], [30, 0, 0, "-", "storage"], [30, 0, 0, "-", "transformers"]], "transactron.lib.adapters": [[30, 1, 1, "", "Adapter"], [30, 1, 1, "", "AdapterBase"], [30, 1, 1, "", "AdapterTrans"]], "transactron.lib.adapters.Adapter": [[30, 2, 1, "", "__init__"]], "transactron.lib.adapters.AdapterBase": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "data_in"], [30, 3, 1, "", "data_out"], [30, 2, 1, "", "debug_signals"]], "transactron.lib.adapters.AdapterTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.buttons": [[30, 1, 1, "", "ClickIn"], [30, 1, 1, "", "ClickOut"]], "transactron.lib.buttons.ClickIn": [[30, 2, 1, "", "__init__"]], "transactron.lib.buttons.ClickOut": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors": [[30, 1, 1, "", "Connect"], [30, 1, 1, "", "ConnectTrans"], [30, 1, 1, "", "FIFO"], [30, 1, 1, "", "Forwarder"], [30, 1, 1, "", "ManyToOneConnectTrans"]], "transactron.lib.connectors.Connect": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors.ConnectTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors.FIFO": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors.Forwarder": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors.ManyToOneConnectTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.dependencies": [[30, 1, 1, "", "DependencyKey"], [30, 1, 1, "", "DependencyManager"], [30, 1, 1, "", "ListKey"], [30, 1, 1, "", "SimpleKey"], [30, 1, 1, "", "UnifierKey"]], "transactron.lib.dependencies.DependencyKey": [[30, 2, 1, "", "combine"], [30, 3, 1, "", "empty_valid"], [30, 3, 1, "", "lock_on_get"]], "transactron.lib.dependencies.DependencyManager": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "add_dependency"], [30, 2, 1, "", "get_dependency"]], "transactron.lib.dependencies.ListKey": [[30, 2, 1, "", "combine"], [30, 3, 1, "", "empty_valid"]], "transactron.lib.dependencies.SimpleKey": [[30, 2, 1, "", "combine"], [30, 3, 1, "", "default_value"]], "transactron.lib.dependencies.UnifierKey": [[30, 2, 1, "", "combine"], [30, 3, 1, "", "unifier"]], "transactron.lib.fifo": [[30, 1, 1, "", "BasicFifo"], [30, 1, 1, "", "Semaphore"]], "transactron.lib.fifo.BasicFifo": [[30, 2, 1, "", "__init__"]], "transactron.lib.fifo.Semaphore": [[30, 2, 1, "", "__init__"]], "transactron.lib.metrics": [[30, 1, 1, "", "HardwareMetricsManager"], [30, 1, 1, "", "HwCounter"], [30, 1, 1, "", "HwExpHistogram"], [30, 1, 1, "", "HwMetric"], [30, 1, 1, "", "HwMetricsEnabledKey"], [30, 1, 1, "", "LatencyMeasurer"], [30, 1, 1, "", "MetricModel"], [30, 1, 1, "", "MetricRegisterModel"]], "transactron.lib.metrics.HardwareMetricsManager": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "debug_signals"], [30, 2, 1, "", "get_metrics"], [30, 2, 1, "", "get_register_value"]], "transactron.lib.metrics.HwCounter": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "incr"]], "transactron.lib.metrics.HwExpHistogram": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "add"]], "transactron.lib.metrics.HwMetric": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "add_registers"], [30, 2, 1, "", "metrics_enabled"]], "transactron.lib.metrics.HwMetricsEnabledKey": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "default_value"], [30, 3, 1, "", "empty_valid"], [30, 3, 1, "", "lock_on_get"]], "transactron.lib.metrics.LatencyMeasurer": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "metrics_enabled"], [30, 2, 1, "", "start"], [30, 2, 1, "", "stop"]], "transactron.lib.metrics.MetricModel": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "description"], [30, 2, 1, "", "from_dict"], [30, 2, 1, "", "from_json"], [30, 3, 1, "", "fully_qualified_name"], [30, 3, 1, "", "regs"], [30, 2, 1, "", "schema"], [30, 2, 1, "", "to_dict"], [30, 2, 1, "", "to_json"]], "transactron.lib.metrics.MetricRegisterModel": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "description"], [30, 2, 1, "", "from_dict"], [30, 2, 1, "", "from_json"], [30, 3, 1, "", "name"], [30, 2, 1, "", "schema"], [30, 2, 1, "", "to_dict"], [30, 2, 1, "", "to_json"], [30, 3, 1, "", "width"]], "transactron.lib.reqres": [[30, 1, 1, "", "ArgumentsToResultsZipper"], [30, 1, 1, "", "Serializer"]], "transactron.lib.reqres.ArgumentsToResultsZipper": [[30, 2, 1, "", "__init__"]], "transactron.lib.reqres.Serializer": [[30, 2, 1, "", "__init__"]], "transactron.lib.simultaneous": [[30, 4, 1, "", "condition"]], "transactron.lib.storage": [[30, 1, 1, "", "MemoryBank"]], "transactron.lib.storage.MemoryBank": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers": [[30, 1, 1, "", "CatTrans"], [30, 1, 1, "", "Collector"], [30, 1, 1, "", "ConnectAndMapTrans"], [30, 1, 1, "", "MethodFilter"], [30, 1, 1, "", "MethodMap"], [30, 1, 1, "", "MethodProduct"], [30, 1, 1, "", "MethodTryProduct"], [30, 1, 1, "", "Transformer"], [30, 1, 1, "", "Unifier"]], "transactron.lib.transformers.CatTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.Collector": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.ConnectAndMapTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodFilter": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodMap": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodProduct": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodTryProduct": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.Transformer": [[30, 3, 1, "", "method"], [30, 2, 1, "", "use"]], "transactron.lib.transformers.Unifier": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "method"]], "transactron.profiler": [[29, 1, 1, "", "MethodSamples"], [29, 1, 1, "", "Profile"], [29, 1, 1, "", "ProfileData"], [29, 1, 1, "", "ProfileInfo"], [29, 1, 1, "", "ProfileSamples"], [29, 1, 1, "", "RunStat"], [29, 1, 1, "", "RunStatNode"], [29, 1, 1, "", "TransactionSamples"]], "transactron.profiler.MethodSamples": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "run"]], "transactron.profiler.Profile": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "analyze_methods"], [29, 2, 1, "", "analyze_transactions"], [29, 3, 1, "", "cycles"], [29, 2, 1, "", "decode"], [29, 2, 1, "", "encode"], [29, 2, 1, "", "from_dict"], [29, 2, 1, "", "from_json"], [29, 2, 1, "", "schema"], [29, 2, 1, "", "to_dict"], [29, 2, 1, "", "to_json"], [29, 3, 1, "", "transactions_and_methods"]], "transactron.profiler.ProfileData": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "make"], [29, 3, 1, "", "method_parents"], [29, 3, 1, "", "transaction_conflicts"], [29, 3, 1, "", "transactions_and_methods"], [29, 3, 1, "", "transactions_by_method"]], "transactron.profiler.ProfileInfo": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "from_dict"], [29, 2, 1, "", "from_json"], [29, 3, 1, "", "is_transaction"], [29, 3, 1, "", "name"], [29, 2, 1, "", "schema"], [29, 3, 1, "", "src_loc"], [29, 2, 1, "", "to_dict"], [29, 2, 1, "", "to_json"]], "transactron.profiler.ProfileSamples": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "methods"], [29, 3, 1, "", "transactions"]], "transactron.profiler.RunStat": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "locked"], [29, 2, 1, "", "make"], [29, 3, 1, "", "name"], [29, 3, 1, "", "run"], [29, 3, 1, "", "src_loc"]], "transactron.profiler.RunStatNode": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "callers"], [29, 2, 1, "", "make"], [29, 3, 1, "", "stat"]], "transactron.profiler.TransactionSamples": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "grant"], [29, 3, 1, "", "request"], [29, 3, 1, "", "runnable"]], "transactron.testing": [[31, 0, 0, "-", "assertion"], [31, 0, 0, "-", "functions"], [31, 0, 0, "-", "gtkw_extension"], [31, 0, 0, "-", "infrastructure"], [31, 0, 0, "-", "profiler"], [31, 0, 0, "-", "sugar"], [31, 0, 0, "-", "testbenchio"]], "transactron.testing.assertion": [[31, 4, 1, "", "make_assert_handler"]], "transactron.testing.functions": [[31, 4, 1, "", "get_outputs"], [31, 4, 1, "", "set_inputs"]], "transactron.testing.gtkw_extension": [[31, 4, 1, "", "write_vcd_ext"]], "transactron.testing.infrastructure": [[31, 1, 1, "", "CoreblocksCommand"], [31, 1, 1, "", "Now"], [31, 1, 1, "", "PysimSimulator"], [31, 1, 1, "", "SimpleTestCircuit"], [31, 1, 1, "", "SyncProcessWrapper"], [31, 1, 1, "", "TestCaseWithSimulator"], [31, 4, 1, "", "guard_nested_collection"]], "transactron.testing.infrastructure.PysimSimulator": [[31, 2, 1, "", "__init__"], [31, 2, 1, "", "add_sync_process"], [31, 2, 1, "", "run"]], "transactron.testing.infrastructure.SimpleTestCircuit": [[31, 2, 1, "", "__init__"], [31, 2, 1, "", "debug_signals"]], "transactron.testing.infrastructure.SyncProcessWrapper": [[31, 2, 1, "", "__init__"]], "transactron.testing.infrastructure.TestCaseWithSimulator": [[31, 2, 1, "", "__init__"], [31, 2, 1, "", "add_all_mocks"], [31, 2, 1, "", "add_class_mocks"], [31, 2, 1, "", "add_local_mocks"], [31, 3, 1, "", "dependency_manager"], [31, 2, 1, "", "random_wait"], [31, 2, 1, "", "random_wait_geom"], [31, 2, 1, "", "run_simulation"], [31, 2, 1, "", "tick"]], "transactron.testing.profiler": [[31, 4, 1, "", "profiler_process"]], "transactron.testing.sugar": [[31, 4, 1, "", "def_method_mock"]], "transactron.testing.testbenchio": [[31, 1, 1, "", "TestbenchIO"]], "transactron.testing.testbenchio.TestbenchIO": [[31, 2, 1, "", "__init__"], [31, 2, 1, "", "call"], [31, 2, 1, "", "call_do"], [31, 2, 1, "", "call_init"], [31, 2, 1, "", "call_result"], [31, 2, 1, "", "call_try"], [31, 2, 1, "", "debug_signals"], [31, 2, 1, "", "disable"], [31, 2, 1, "", "done"], [31, 2, 1, "", "enable"], [31, 2, 1, "", "get_outputs"], [31, 2, 1, "", "method_argument"], [31, 2, 1, "", "method_handle"], [31, 2, 1, "", "method_handle_loop"], [31, 2, 1, "", "method_return"], [31, 2, 1, "", "set_enable"], [31, 2, 1, "", "set_inputs"], [31, 2, 1, "", "wait_until_done"]], "transactron.tracing": [[29, 1, 1, "", "TracingEnabler"], [29, 1, 1, "", "TracingFragment"], [29, 1, 1, "", "TracingFragmentTransformer"], [29, 1, 1, "", "TracingInstance"]], "transactron.tracing.TracingFragment": [[29, 2, 1, "", "get"], [29, 2, 1, "", "prepare"], [29, 3, 1, "", "subfragments"]], "transactron.tracing.TracingFragmentTransformer": [[29, 2, 1, "", "on_fragment"]], "transactron.tracing.TracingInstance": [[29, 2, 1, "", "get"]], "transactron.utils": [[33, 0, 0, "-", "amaranth_ext"], [32, 0, 0, "-", "assertion"], [32, 0, 0, "-", "assign"], [32, 0, 0, "-", "data_repr"], [32, 0, 0, "-", "debug_signals"], [32, 0, 0, "-", "depcache"], [32, 0, 0, "-", "dependencies"], [32, 0, 0, "-", "gen"], [32, 0, 0, "-", "idgen"], [32, 0, 0, "-", "transactron_helpers"]], "transactron.utils.amaranth_ext": [[33, 0, 0, "-", "elaboratables"], [33, 0, 0, "-", "functions"]], "transactron.utils.amaranth_ext.elaboratables": [[33, 1, 1, "", "ModuleConnector"], [33, 4, 1, "", "OneHotSwitch"], [33, 4, 1, "", "OneHotSwitchDynamic"], [33, 1, 1, "", "RoundRobin"], [33, 1, 1, "", "Scheduler"]], "transactron.utils.amaranth_ext.elaboratables.ModuleConnector": [[33, 2, 1, "", "__init__"]], "transactron.utils.amaranth_ext.elaboratables.RoundRobin": [[33, 2, 1, "", "__init__"]], "transactron.utils.amaranth_ext.elaboratables.Scheduler": [[33, 2, 1, "", "__init__"]], "transactron.utils.amaranth_ext.functions": [[33, 4, 1, "", "count_leading_zeros"], [33, 4, 1, "", "count_trailing_zeros"], [33, 4, 1, "", "flatten_signals"], [33, 4, 1, "", "mod_incr"], [33, 4, 1, "", "popcount"]], "transactron.utils.assertion": [[32, 1, 1, "", "AssertKey"], [32, 4, 1, "", "assert_bit"], [32, 4, 1, "", "assert_bits"], [32, 4, 1, "", "assertion"]], "transactron.utils.assertion.AssertKey": [[32, 2, 1, "", "__init__"]], "transactron.utils.assign": [[32, 1, 1, "", "AssignType"], [32, 4, 1, "", "assign"]], "transactron.utils.assign.AssignType": [[32, 3, 1, "", "ALL"], [32, 3, 1, "", "COMMON"], [32, 3, 1, "", "RHS"]], "transactron.utils.data_repr": [[32, 4, 1, "", "align_down_to_power_of_two"], [32, 4, 1, "", "align_to_power_of_two"], [32, 4, 1, "", "average_dict_of_lists"], [32, 4, 1, "", "bits_from_int"], [32, 4, 1, "", "data_layout"], [32, 4, 1, "", "int_to_signed"], [32, 4, 1, "", "layout_subset"], [32, 4, 1, "", "make_hashable"], [32, 4, 1, "", "neg"], [32, 4, 1, "", "signed_to_int"]], "transactron.utils.debug_signals": [[32, 4, 1, "", "auto_debug_signals"]], "transactron.utils.depcache": [[32, 1, 1, "", "DependentCache"]], "transactron.utils.depcache.DependentCache": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "get"]], "transactron.utils.dependencies": [[32, 1, 1, "", "DependencyContext"], [32, 1, 1, "", "DependencyKey"], [32, 1, 1, "", "DependencyManager"], [32, 1, 1, "", "ListKey"], [32, 1, 1, "", "SimpleKey"]], "transactron.utils.dependencies.DependencyContext": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "get"], [32, 3, 1, "", "stack"]], "transactron.utils.dependencies.DependencyKey": [[32, 2, 1, "", "combine"], [32, 3, 1, "", "empty_valid"], [32, 3, 1, "", "lock_on_get"]], "transactron.utils.dependencies.DependencyManager": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "add_dependency"], [32, 2, 1, "", "get_dependency"]], "transactron.utils.dependencies.ListKey": [[32, 2, 1, "", "combine"], [32, 3, 1, "", "empty_valid"]], "transactron.utils.dependencies.SimpleKey": [[32, 2, 1, "", "combine"], [32, 3, 1, "", "default_value"]], "transactron.utils.gen": [[32, 1, 1, "", "AssertLocation"], [32, 1, 1, "", "GenerationInfo"], [32, 1, 1, "", "MetricLocation"], [32, 4, 1, "", "generate_verilog"]], "transactron.utils.gen.AssertLocation": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "from_dict"], [32, 2, 1, "", "from_json"], [32, 3, 1, "", "location"], [32, 2, 1, "", "schema"], [32, 3, 1, "", "src_loc"], [32, 2, 1, "", "to_dict"], [32, 2, 1, "", "to_json"]], "transactron.utils.gen.GenerationInfo": [[32, 2, 1, "", "__init__"], [32, 3, 1, "", "asserts"], [32, 2, 1, "", "decode"], [32, 2, 1, "", "encode"], [32, 2, 1, "", "from_dict"], [32, 2, 1, "", "from_json"], [32, 3, 1, "", "method_signals_location"], [32, 3, 1, "", "metrics_location"], [32, 3, 1, "", "profile_data"], [32, 2, 1, "", "schema"], [32, 2, 1, "", "to_dict"], [32, 2, 1, "", "to_json"], [32, 3, 1, "", "transaction_signals_location"]], "transactron.utils.gen.MetricLocation": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "from_dict"], [32, 2, 1, "", "from_json"], [32, 3, 1, "", "regs"], [32, 2, 1, "", "schema"], [32, 2, 1, "", "to_dict"], [32, 2, 1, "", "to_json"]], "transactron.utils.idgen": [[32, 1, 1, "", "IdGenerator"]], "transactron.utils.idgen.IdGenerator": [[32, 2, 1, "", "__init__"]], "transactron.utils.transactron_helpers": [[32, 4, 1, "", "def_helper"], [32, 4, 1, "", "from_method_layout"], [32, 4, 1, "", "get_caller_class_name"], [32, 4, 1, "", "get_src_loc"], [32, 4, 1, "", "method_def_helper"], [32, 4, 1, "", "mock_def_helper"], [32, 4, 1, "", "silence_mustuse"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "titleterms": {"api": 0, "coreblock": [0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 21, 28], "transactron": [0, 22, 29, 30, 31, 32, 33], "list": 1, "assumpt": [1, 3], "made": 1, "dure": 1, "develop": [1, 17], "instruct": [3, 26], "cach": [3, 5], "interfac": [3, 25, 26], "address": 3, "map": 3, "exampl": 3, "packag": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 29, 30, 31, 32, 33], "subpackag": [4, 7, 29, 32], "submodul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 29, 30, 31, 32, 33], "core": [4, 27, 29], "modul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 29, 30, 31, 32, 33], "content": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 29, 30, 31, 32, 33], "icach": 5, "ifac": 5, "refil": 5, "frontend": 6, "decode_stag": 6, "fetch": 6, "instr_decod": 6, "instr_descript": 6, "rvc": 6, "fu": [7, 8], "alu": 7, "div_unit": 7, "except": [7, 14, 20], "fu_decod": 7, "jumpbranch": 7, "mul_unit": 7, "priv": 7, "shift_unit": 7, "zbc": 7, "zb": 7, "unsigned_multipl": 8, "common": 8, "fast_recurs": 8, "sequenc": 8, "shift": 8, "lsu": 9, "dummylsu": 9, "pma": 9, "param": 10, "configur": 10, "fu_param": 10, "genparam": 10, "icache_param": 10, "instr": 10, "isa": 10, "kei": 10, "layout": 10, "optyp": 10, "peripher": 11, "axi_lit": 11, "bus_adapt": 11, "wishbon": 11, "schedul": [12, 24, 28], "wakeup_select": 12, "stage": 13, "backend": 13, "func_blocks_unifi": 13, "retir": 13, "rs_func_block": 13, "structs_common": 14, "csr": 14, "csr_gener": 14, "instr_count": 14, "interrupt_control": 14, "rat": 14, "rf": 14, "rob": 14, "r": 14, "util": [15, 32, 33], "protocol": 15, "full": 16, "transact": [16, 28], "method": [16, 25, 26, 28], "graph": [16, 29], "environ": 17, "set": 17, "up": 17, "us": [17, 25, 26], "script": 17, "run_test": 17, "py": 17, "lint": 17, "sh": 17, "core_graph": 17, "build_doc": 17, "tprof": 17, "introduct": [18, 20, 28], "document": [18, 28], "summari": 20, "paper": 20, "about": 20, "interrupt": 20, "handl": 20, "old": 20, "pc": 20, "out": 20, "order": [20, 28], "execut": [20, 27], "processor": 20, "In": 20, "line": 20, "softwar": 20, "manag": 20, "tlb": 20, "hardwar": 20, "cost": 20, "analysi": 20, "process": 20, "strategi": 20, "igpu": 20, "support": 20, "specul": 20, "gpu": 20, "effici": 20, "other": 20, "problem": 23, "checklist": 23, "overview": [24, 26], "descript": 24, "schema": 24, "structur": 24, "more": 24, "detail": 24, "each": 24, "block": 24, "proposit": 25, "reserv": [25, 26], "station": [25, 26], "implement": [25, 28], "intern": 25, "data": 25, "actual": 25, "slot": [25, 26], "tabl": 25, "compar": [25, 26], "substitut": [25, 26], "read": [25, 26], "row": [25, 26], "clean": [25, 26], "get": [25, 26], "free": 25, "mark": [25, 26], "extern": [25, 26], "all": [25, 26], "reset": 26, "initi": 26, "state": 26, "insert": 26, "new": 26, "readi": [26, 28], "vector": 26, "signal": [26, 28], "verif": 27, "synthesi": 27, "manual": 27, "reproduct": 27, "depend": [27, 30, 32], "benchmark": 27, "regress": 27, "test": [27, 31], "framework": 28, "basic": 28, "usag": 28, "argument": 28, "pass": 28, "convent": 28, "definit": 28, "return": 28, "valu": 28, "The": 28, "librari": 28, "advanc": 28, "concept": 28, "special": 28, "combin": 28, "domain": 28, "conflict": 28, "nest": 28, "profil": [29, 31], "trace": 29, "lib": 30, "adapt": 30, "button": 30, "connector": 30, "fifo": 30, "metric": 30, "reqr": 30, "simultan": 30, "storag": 30, "transform": 30, "assert": [31, 32], "function": [31, 33], "gtkw_extens": 31, "infrastructur": 31, "sugar": 31, "testbenchio": 31, "assign": 32, "data_repr": 32, "debug_sign": 32, "depcach": 32, "gen": 32, "idgen": 32, "transactron_help": 32, "amaranth_ext": 33, "elaborat": 33}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["api", "assumptions", "auto_graph", "components/icache", "coreblocks", "coreblocks.cache", "coreblocks.frontend", "coreblocks.fu", "coreblocks.fu.unsigned_multiplication", "coreblocks.lsu", "coreblocks.params", "coreblocks.peripherals", "coreblocks.scheduler", "coreblocks.stages", "coreblocks.structs_common", "coreblocks.utils", "current-graph", "development-environment", "home", "index", "miscellany/exceptions-summary", "modules-coreblocks", "modules-transactron", "problem-checklist", "scheduler/overview", "shared-structs/implementation/rs-impl", "shared-structs/rs", "synthesis/synthesis", "transactions", "transactron", "transactron.lib", "transactron.testing", "transactron.utils", "transactron.utils.amaranth_ext"], "filenames": ["api.md", "assumptions.md", "auto_graph.rst", "components/icache.md", "coreblocks.rst", "coreblocks.cache.rst", "coreblocks.frontend.rst", "coreblocks.fu.rst", "coreblocks.fu.unsigned_multiplication.rst", "coreblocks.lsu.rst", "coreblocks.params.rst", "coreblocks.peripherals.rst", "coreblocks.scheduler.rst", "coreblocks.stages.rst", "coreblocks.structs_common.rst", "coreblocks.utils.rst", "current-graph.md", "development-environment.md", "home.md", "index.md", "miscellany/exceptions-summary.md", "modules-coreblocks.rst", "modules-transactron.rst", "problem-checklist.md", "scheduler/overview.md", "shared-structs/implementation/rs-impl.md", "shared-structs/rs.md", "synthesis/synthesis.md", "transactions.md", "transactron.rst", "transactron.lib.rst", "transactron.testing.rst", "transactron.utils.rst", "transactron.utils.amaranth_ext.rst"], "titles": ["API", "List of assumptions made during development", "<no title>", "Instruction Cache", "coreblocks package", "coreblocks.cache package", "coreblocks.frontend package", "coreblocks.fu package", "coreblocks.fu.unsigned_multiplication package", "coreblocks.lsu package", "coreblocks.params package", "coreblocks.peripherals package", "coreblocks.scheduler package", "coreblocks.stages package", "coreblocks.structs_common package", "coreblocks.utils package", "Full transaction-method graph", "Development environment", "Introduction", "Coreblocks", "Summary of papers about interrupts", "coreblocks", "transactron", "Problem checklist", "Scheduler overview", "Proposition of Reservation Station implementation", "Reservation Station", "Core verification", "Documentation for Coreblocks transaction framework", "transactron package", "transactron.lib package", "transactron.testing package", "transactron.utils package", "transactron.utils.amaranth_ext package"], "terms": {"packag": [0, 17, 19, 21, 22], "subpackag": [0, 21, 22], "cach": [0, 4, 6, 10, 19, 21, 32], "submodul": [0, 21, 22, 27], "icach": [0, 4, 6, 21, 30], "modul": [0, 17, 21, 22, 27, 28], "ifac": [0, 4, 21, 30], "refil": [0, 3, 4, 10, 21], "content": [0, 21, 22], "frontend": [0, 4, 21, 24, 30], "decode_stag": [0, 4, 21], "fetch": [0, 3, 4, 10, 13, 14, 20, 21], "instr_decod": [0, 4, 21], "instr_descript": [0, 4, 21], "rvc": [0, 4, 10, 21], "fu": [0, 1, 4, 10, 13, 14, 21, 25, 26], "alu": [0, 4, 10, 21], "div_unit": [0, 4, 21], "except": [0, 4, 10, 13, 19, 21, 23, 29, 32], "fu_decod": [0, 4, 21], "jumpbranch": [0, 4, 10, 21], "mul_unit": [0, 4, 21], "priv": [0, 4, 10, 21], "shift_unit": [0, 4, 10, 21], "zbc": [0, 4, 10, 21], "zb": [0, 4, 10, 21], "lsu": [0, 4, 10, 21], "dummylsu": [0, 4, 10, 21], "pma": [0, 4, 10, 21], "param": [0, 4, 5, 7, 9, 11, 12, 13, 14, 21], "configur": [0, 4, 11, 12, 21, 27, 30], "fu_param": [0, 4, 21], "genparam": [0, 4, 6, 7, 8, 9, 12, 13, 14, 21], "icache_param": [0, 4, 21], "instr": [0, 4, 6, 21], "isa": [0, 4, 6, 14, 21], "kei": [0, 4, 14, 21, 29, 30, 32], "layout": [0, 4, 5, 6, 11, 12, 13, 17, 21, 23, 28, 29, 30, 32], "optyp": [0, 4, 6, 7, 9, 12, 13, 14, 21], "peripher": [0, 4, 21], "axi_lit": [0, 4, 21], "bus_adapt": [0, 4, 21], "wishbon": [0, 4, 21], "schedul": [0, 4, 10, 19, 20, 21, 29, 30, 33], "wakeup_select": [0, 4, 21], "stage": [0, 1, 4, 9, 14, 21], "backend": [0, 4, 21], "func_blocks_unifi": [0, 4, 21], "retir": [0, 4, 9, 10, 14, 21], "rs_func_block": [0, 4, 21], "structs_common": [0, 4, 10, 21], "csr": [0, 4, 6, 10, 21], "csr_gener": [0, 4, 21], "instr_count": [0, 4, 21], "interrupt_control": [0, 4, 21], "rat": [0, 1, 4, 10, 12, 20, 21], "rf": [0, 1, 4, 13, 20, 21, 25, 26], "rob": [0, 1, 4, 10, 12, 13, 20, 21, 24, 25, 26], "r": [0, 1, 4, 9, 10, 12, 13, 17, 20, 21, 24, 25, 26, 27], "util": [0, 4, 12, 13, 21, 22, 23, 28, 29, 30], "protocol": [0, 4, 5, 11, 12, 13, 21, 29, 30], "core": [0, 6, 7, 8, 10, 11, 12, 13, 14, 17, 19, 20, 21, 22, 30, 32], "lib": [0, 22, 29, 31, 32, 33], "adapt": [0, 11, 22, 28, 29, 31], "button": [0, 22, 29], "connector": [0, 22, 29], "depend": [0, 10, 14, 19, 22, 28, 29, 33], "fifo": [0, 13, 20, 22, 28, 29], "metric": [0, 10, 22, 29, 32], "reqr": [0, 22, 29], "simultan": [0, 14, 22, 28, 29], "storag": [0, 22, 29], "transform": [0, 22, 29], "test": [0, 10, 17, 19, 22, 23, 29, 30, 32, 33], "assert": [0, 11, 22, 29, 33], "function": [0, 6, 7, 10, 12, 13, 20, 22, 23, 28, 29, 30, 32], "gtkw_extens": [0, 22, 29], "infrastructur": [0, 22, 29], "profil": [0, 17, 22], "sugar": [0, 22, 29], "testbenchio": [0, 22, 23, 29], "assign": [0, 10, 14, 22, 23, 28, 29], "data_repr": [0, 22, 29], "debug_sign": [0, 10, 13, 22, 29, 30, 31], "depcach": [0, 22, 29], "gen": [0, 6, 7, 8, 22, 29], "idgen": [0, 22, 29], "transactron_help": [0, 22, 29], "graph": [0, 17, 19, 22, 27], "trace": [0, 17, 22, 31], "ha": [1, 5, 6, 10, 12, 14, 17, 20, 23, 25, 28, 29, 30], "data": [1, 6, 9, 10, 11, 14, 19, 26, 27, 29, 30, 31, 32, 33], "forward": [1, 11, 28, 29, 30], "from": [1, 5, 6, 7, 9, 11, 12, 13, 14, 17, 18, 20, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33], "tomasulo": 1, "announc": [1, 9, 13, 14], "bu": [1, 9, 10, 11], "read": [1, 9, 11, 14, 17, 19, 23, 28, 30, 32], "x0": [1, 10], "rf0": 1, "return": [1, 3, 7, 9, 11, 14, 19, 20, 29, 30, 31, 32], "0": [1, 6, 7, 10, 11, 12, 14, 25, 26, 27, 29, 30, 31, 32], "write": [1, 5, 6, 11, 14, 20, 26, 28, 30], "i": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "noop": 1, "separ": [1, 24, 29, 30, 32], "each": [1, 6, 7, 10, 11, 14, 17, 19, 20, 25, 26, 28, 29, 30, 31, 32], "writeback": 1, "save": [1, 10, 13, 14, 17, 20, 25, 26, 29, 30, 32], "after": [1, 3, 5, 6, 10, 11, 14, 20, 24, 27, 28, 30], "get": [1, 6, 7, 8, 12, 13, 17, 19, 29, 30, 31, 32, 33], "output": [1, 5, 9, 11, 13, 14, 17, 20, 25, 26, 29, 30, 33], "commit": [1, 10, 14, 17, 20, 27], "updat": [1, 9, 13, 14, 15, 27, 33], "The": [3, 5, 7, 10, 11, 13, 17, 18, 19, 20, 24, 25, 26, 27, 29, 30, 32, 33], "should": [3, 5, 6, 11, 12, 13, 14, 17, 18, 20, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "expos": [3, 30, 32], "three": [3, 6, 20, 27, 29], "method": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 29, 30, 31, 32], "issue_req": [3, 5], "thi": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 23, 25, 26, 27, 28, 29, 30, 32, 33], "issu": [3, 5, 7, 8, 12, 15, 17, 28, 30], "an": [3, 5, 9, 10, 11, 12, 13, 17, 18, 20, 23, 25, 27, 28, 29, 30, 31, 32, 33], "lookup": [3, 5], "request": [3, 5, 7, 8, 9, 10, 11, 28, 29, 30, 33], "accept_resp": 3, "result": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 20, 27, 28, 30, 32], "flush": [3, 5, 10, 14, 20], "entir": [3, 27, 28], "oper": [3, 6, 7, 10, 20, 28, 29, 30, 33], "under": [3, 28, 29], "follow": [3, 7, 10, 12, 17, 25, 27, 28, 30, 32], "ar": [3, 6, 9, 10, 11, 13, 14, 17, 18, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "alwai": [3, 6, 14, 27, 28, 29, 30, 31], "multipl": [3, 7, 8, 10, 11, 12, 13, 28, 29, 30, 32], "4": [3, 7, 10, 30], "byte": [3, 10, 29, 30, 32], "risc": [3, 6, 10, 18, 27], "v": [3, 6, 10, 17, 18, 20, 25, 27], "specif": [3, 6, 10, 11, 17, 20, 27, 30], "requir": [3, 14, 17, 20, 27, 28, 29], "align": [3, 9, 32], "c": [3, 10, 20, 27], "extens": [3, 10, 27], "introduc": [3, 20, 28], "16": [3, 10, 20, 29], "bit": [3, 5, 6, 7, 8, 10, 11, 14, 20, 25, 26, 28, 30, 32, 33], "relax": [3, 28], "unit": [3, 6, 7, 8, 10, 11, 12, 13, 14, 17, 24, 27], "handl": [3, 7, 14, 19, 28, 29], "case": [3, 11, 12, 13, 20, 23, 28, 29, 30, 32, 33], "fulli": [3, 9, 30], "pipelin": [3, 9, 11, 12, 14, 20, 25, 30], "process": [3, 14, 17, 19, 27, 30, 31], "order": [3, 10, 12, 14, 17, 18, 19, 27, 29, 30], "As": [3, 20, 28, 30], "can": [3, 9, 11, 13, 14, 17, 18, 20, 24, 25, 27, 28, 29, 30, 31, 32, 33], "invok": [3, 6, 12, 13, 20, 25, 31], "independ": [3, 28, 30], "accept_r": [3, 5], "If": [3, 6, 10, 11, 14, 20, 23, 25, 28, 29, 30, 32], "space": [3, 20], "anoth": [3, 5, 17, 28, 29, 30], "simpli": 3, "block": [3, 7, 8, 10, 11, 12, 13, 19, 20, 28, 29, 30], "latenc": [3, 20, 27, 30], "least": 3, "one": [3, 5, 7, 10, 11, 13, 14, 17, 20, 24, 25, 26, 28, 29, 30, 31, 32, 33], "cycl": [3, 7, 8, 11, 14, 17, 20, 24, 27, 28, 29, 30, 31], "miss": [3, 20], "occur": [3, 5], "arbitrarili": 3, "long": [3, 26, 27, 30], "ensur": [3, 27], "ani": [3, 6, 11, 12, 20, 23, 30, 31, 32, 33], "refetch": 3, "howev": [3, 30], "guarante": [3, 20], "have": [3, 9, 11, 13, 14, 17, 20, 23, 27, 28, 29, 30, 31, 32, 33], "alreadi": [3, 13, 20, 30, 32], "been": 3, "still": [3, 20, 26, 29], "wait": [3, 11, 13, 14, 17, 20, 25, 26, 29, 31], "accept": [3, 5, 7, 8, 14, 15, 27, 29, 30, 32], "inform": [3, 9, 12, 17, 29, 30, 32], "regard": 3, "error": [3, 5, 10, 11, 29, 30, 32], "mean": [3, 12, 17, 26, 29, 30], "dure": [3, 9, 19, 24, 30, 31], "line": [3, 5, 10, 17, 19], "subsequ": 3, "access": [3, 10, 11, 14, 20, 28, 30, 31, 32], "trigger": [3, 14], "which": [3, 5, 6, 7, 9, 10, 11, 12, 13, 17, 18, 20, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "most": [3, 20, 28, 29, 30], "like": [3, 6, 20, 28, 29, 30], "For": [3, 10, 17, 25, 26, 28, 29, 30, 32, 33], "32": [3, 7, 8, 10, 11, 20, 28, 30], "128": [3, 10], "set": [3, 5, 6, 7, 9, 10, 12, 13, 14, 19, 25, 27, 29, 30, 32, 33], "size": [3, 10, 11, 20, 28, 30, 32], "equal": [3, 14], "31": [3, 10], "15": [3, 10], "14": [3, 10], "13": [3, 10], "12": [3, 10], "11": [3, 10, 17, 27], "10": [3, 10, 20], "09": 3, "08": 3, "07": 3, "06": [3, 31], "05": 3, "04": 3, "03": 3, "02": 3, "01": 3, "00": 3, "tag": [3, 11, 20, 25, 26], "index": [3, 10, 29, 33], "offset": 3, "unsigned_multipl": [4, 7], "common": [4, 7, 11, 30, 32], "fast_recurs": [4, 7], "sequenc": [4, 7, 12, 30], "shift": [4, 7, 10], "class": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 28, 29, 30, 31, 32, 33], "base": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 20, 29, 30, 31, 32, 33], "elaborat": [4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 28, 29, 30, 31, 32], "__init__": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 28, 29, 30, 31, 32, 33], "gen_param": [4, 6, 7, 8, 9, 10, 12, 13, 14], "wb_instr_bu": 4, "wishboneinterfac": [4, 11], "wb_data_bu": 4, "cacheinterfac": [5, 6], "A": [5, 10, 11, 27, 28, 29, 30, 32], "simpl": [5, 6, 9, 12, 13, 29, 30, 32, 33], "associ": [5, 10, 30], "instruct": [5, 6, 7, 9, 10, 12, 13, 14, 19, 20, 24, 25, 27], "replac": [5, 8, 10, 25], "polici": 5, "pseudo": 5, "random": [5, 31], "scheme": 5, "everi": [5, 7, 11, 17, 27, 29, 30], "time": [5, 11, 14, 20, 29, 30], "trash": 5, "we": [5, 9, 11, 13, 20, 24, 25, 26, 27, 28, 31], "select": [5, 6, 7, 9, 11, 12, 13, 14, 15, 17], "next": [5, 6, 9, 12, 13, 14, 20, 29, 33], "wai": [5, 7, 11, 17, 20, 27, 28, 29, 30, 32], "keep": [5, 29], "global": [5, 14, 20], "counter": [5, 10, 14, 17, 30], "abstract": [5, 8, 10, 27, 30, 32], "awai": 5, "need": [5, 11, 17, 20, 25, 28, 29], "two": [5, 10, 14, 20, 23, 27, 28, 29, 30, 31, 32], "refiller_start": 5, "call": [5, 7, 12, 14, 17, 23, 25, 28, 29, 30, 31, 32], "whenev": 5, "refiller_accept": 5, "readi": [5, 9, 10, 11, 12, 13, 14, 19, 25, 29, 30], "word": [5, 10], "written": [5, 14, 26, 27, 30], "last": [5, 10, 12, 14, 29, 30], "when": [5, 11, 14, 17, 20, 23, 25, 26, 28, 29, 30, 31, 32, 33], "either": [5, 11, 28, 29, 30, 32, 33], "transfer": [5, 11, 29, 30], "over": [5, 14, 29, 30], "shouldn": [5, 27], "t": [5, 6, 9, 10, 17, 20, 23, 25, 27, 28, 29, 30, 31, 32], "until": [5, 20, 30], "start": [5, 7, 9, 10, 11, 20, 29, 30], "icachelayout": [5, 10], "icacheparamet": [5, 10], "cacherefillerinterfac": 5, "none": [5, 6, 7, 9, 10, 13, 14, 29, 30, 31, 32, 33], "paramet": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 28, 29, 30, 31, 32, 33], "instanc": [5, 6, 7, 9, 12, 13, 27, 29, 30, 31, 32], "us": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 20, 23, 27, 28, 29, 30, 31, 32, 33], "creat": [5, 8, 11, 17, 27, 28, 29, 30, 31, 32, 33], "gener": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 23, 27, 29, 30, 31, 32], "input": [5, 6, 7, 11, 13, 14, 20, 25, 26, 28, 29, 30, 33], "start_refil": 5, "accept_refil": 5, "deserialize_addr": 5, "raw_addr": 5, "valu": [5, 6, 7, 9, 10, 11, 12, 13, 14, 19, 23, 25, 26, 29, 30, 31, 32, 33], "dict": [5, 11, 28, 29, 30, 31, 32, 33], "str": [5, 10, 11, 29, 30, 31, 32, 33], "amaranth": [5, 6, 7, 10, 11, 23, 27, 28, 29, 30, 31, 32, 33], "hdl": [5, 6, 7, 10, 29, 30, 31, 32, 33], "_ast": [5, 6, 7, 10, 29, 30, 31, 32, 33], "serialize_addr": 5, "addr": [5, 9, 10, 11, 30], "view": [5, 7, 9, 29, 30, 31, 32, 33], "icachebypass": 5, "bus_mast": 5, "busmasterinterfac": [5, 9, 10, 11], "haselabor": [5, 11, 15, 29, 30, 31, 33], "interfac": [5, 6, 8, 9, 11, 12, 13, 14, 19, 27, 28, 29, 30], "whole": [5, 18, 20, 30], "given": [5, 7, 9, 10, 17, 25, 28, 29, 30, 31, 32, 33], "simplecommonbuscacherefil": 5, "decodestag": 6, "decod": [6, 7, 10, 12, 29, 32], "transact": [6, 10, 11, 14, 17, 19, 25, 29, 30, 33], "instanti": [6, 29], "instrdecod": 6, "make": [6, 7, 17, 18, 20, 23, 27, 28, 29, 31], "actual": [6, 17, 19, 28], "combinatori": [6, 28], "manner": [6, 11], "get_raw": 6, "push_decod": 6, "raw": 6, "previou": [6, 11, 20, 30], "step": [6, 12, 17, 20, 27, 28], "e": [6, 10, 17, 20, 23, 28, 30, 32, 33], "g": [6, 10, 17, 20, 23, 28, 30, 32, 33], "fetchlayout": [6, 10], "send": [6, 10, 11, 12, 13], "It": [6, 7, 8, 9, 11, 12, 13, 17, 20, 24, 25, 27, 28, 29, 30, 31, 32, 33], "describ": [6, 10, 12, 13, 20, 27, 29, 30, 31], "decodelayout": [6, 10, 12], "pc": [6, 10, 14, 19], "insid": [6, 27, 28, 29, 30], "increment": [6, 14], "ilen_byt": 6, "cont": [6, 31], "unalignedfetch": 6, "work": [6, 12, 20, 23, 27, 28, 29], "unalign": 6, "perform": [6, 7, 8, 10, 12, 14, 17, 27, 28, 29, 30, 32, 33], "elementari": 6, "compon": [6, 10, 11, 18, 29, 30], "opcod": [6, 10, 25, 26], "funct3": [6, 7, 10], "etc": [6, 10, 28], "connect": [6, 11, 13, 14, 20, 28, 29, 30], "via": [6, 28, 29], "its": [6, 12, 13, 14, 20, 27, 28, 29, 30, 32, 33], "attribut": [6, 7, 8, 9, 10, 11, 13, 14, 29, 30, 32, 33], "signal": [6, 7, 9, 10, 11, 19, 23, 29, 30, 31, 32, 33], "ilen": [6, 10], "out": [6, 7, 8, 11, 13, 18, 19, 29, 30, 33], "identifi": [6, 10, 25, 30, 32], "funct3_v": 6, "1": [6, 7, 8, 10, 12, 14, 20, 25, 26, 27, 28, 29, 30, 31, 32, 33], "funct7": [6, 7, 10], "seven": 6, "funct7_v": 6, "funct12": [6, 10], "twelv": 6, "funct12_v": 6, "rd": [6, 10], "reg_cnt_log": 6, "address": [6, 9, 10, 11, 14, 19, 20], "regist": [6, 10, 12, 14, 20, 24, 30, 32], "rd_v": 6, "rs1": [6, 10], "hold": [6, 11, 14, 30], "first": [6, 7, 10, 12, 20, 25, 26, 27, 28, 30, 31, 32], "rs1_v": 6, "take": [6, 11, 13, 24, 25, 28, 29, 30, 31, 32], "form": [6, 10, 14, 20, 27, 30], "rs2": [6, 10], "second": [6, 7, 10, 12, 25, 26, 27, 30], "rs2_v": 6, "imm": [6, 10], "xlen": [6, 7, 10, 14, 32], "immedi": [6, 10, 11], "provid": [6, 7, 10, 12, 14, 27, 28, 30, 31, 32], "were": [6, 20, 28], "succ": 6, "fencetarget": [6, 10], "successor": 6, "fenc": [6, 10], "pred": 6, "predecessor": 6, "fm": 6, "fencefm": [6, 10], "mode": [6, 10, 17, 20], "csr_alen": [6, 10], "control": [6, 10, 11, 14, 27, 29, 30, 33], "sourc": [6, 10, 12, 17, 25, 29, 30, 32], "type": [6, 7, 10, 17, 29, 30, 31, 32], "defin": [6, 9, 14, 28, 29, 30, 32, 33], "kind": [6, 7, 12, 30, 32], "illeg": 6, "wa": [6, 10, 14, 17, 20, 28, 29, 30, 32], "success": [6, 11, 31], "do": [6, 10, 20, 23, 28, 29], "fit": 6, "support": [6, 9, 10, 12, 17, 19, 29, 30], "constructor": [6, 28, 29, 32], "encod": [6, 20, 29, 32, 33], "object": [6, 7, 9, 10, 11, 27, 28, 29, 30, 31, 32], "repres": [6, 14, 29, 30], "singl": [6, 7, 8, 10, 12, 13, 14, 28, 29, 30, 32], "option": [6, 7, 10, 14, 17, 28, 29, 30, 31, 32, 33], "exist": [6, 28, 32], "instr_type_overrid": 6, "instrtyp": [6, 10], "specifi": [6, 10, 11, 14, 26, 30, 31, 32], "determin": [6, 20, 27, 30, 32], "instrust": 6, "almost": 6, "correct": [6, 9, 20, 25, 26, 27], "rd_zero": 6, "bool": [6, 7, 9, 10, 14, 29, 30, 31, 32, 33], "field": [6, 9, 10, 14, 17, 25, 26, 28, 29, 30, 31, 32], "constant": 6, "zero": [6, 10, 14, 25, 30, 33], "other": [6, 14, 17, 19, 28, 29, 30, 33], "accordingli": 6, "default": [6, 11, 17, 28, 29, 30, 32, 33], "fals": [6, 7, 9, 10, 17, 28, 29, 30, 32, 33], "rs1_zero": 6, "instrdecompress": 6, "decompr_reg": 6, "rvc_reg": 6, "instr_mux": 6, "sel": [6, 11], "list": [6, 7, 10, 11, 14, 17, 19, 23, 27, 29, 30, 31, 32, 33], "int": [6, 7, 8, 9, 10, 11, 13, 14, 29, 30, 31, 32, 33], "enum": [6, 7, 10, 29, 30, 31, 32], "valuecast": [6, 10, 29, 30, 31, 32], "tupl": [6, 7, 10, 11, 12, 13, 14, 29, 30, 32], "is_instr_compress": 6, "alucompon": [7, 10], "functionalcomponentparam": [7, 10, 13], "zba_en": 7, "zbb_enabl": 7, "get_modul": [7, 9, 10, 13, 14], "funcunit": [7, 10, 13, 15], "get_optyp": [7, 9, 10, 13, 14], "alufuncunit": 7, "alu_fn": 7, "alufn": 7, "divcompon": 7, "ipc": [7, 27], "3": [7, 10, 14, 17, 29, 32], "div_fn": 7, "divfn": 7, "decodermanag": 7, "fn": 7, "intflag": [7, 10, 29], "div": [7, 10], "divu": [7, 10], "2": [7, 8, 10, 11, 14, 27, 29, 30, 32], "rem": [7, 10], "remu": [7, 10], "8": [7, 8, 10, 11, 29, 30], "__new__": [7, 10, 14, 29], "get_instruct": 7, "valid": [7, 10, 11, 12, 25, 30, 32, 33], "implement": [7, 9, 11, 18, 19, 20, 24, 30, 32, 33], "format": [7, 17, 27, 28, 29, 30, 32], "divunit": 7, "get_input": 7, "arg": [7, 11, 28, 29, 30, 31, 32, 33], "exceptionfuncunit": 7, "unit_fn": 7, "exceptionunitfn": 7, "exceptionunitcompon": [7, 10], "respons": [7, 11, 12, 17, 29, 30, 31], "decode_fn": 7, "exec_fn": [7, 10], "op": [7, 10], "check_optyp": 7, "manag": [7, 17, 19, 29, 30, 32], "enumer": 7, "get_decod": 7, "auto": 7, "pass": [7, 13, 14, 17, 19, 27, 29, 30, 31, 32], "contructor": 7, "get_funct": 7, "get_op_typ": 7, "jumpbranchfuncunit": 7, "jb_fn": 7, "jumpbranchfn": 7, "jumpcompon": [7, 10], "mulcompon": 7, "mul_unit_typ": 7, "multyp": 7, "dsp_width": [7, 8], "mul_fn": 7, "mulfn": 7, "hot": [7, 20, 33], "wire": [7, 32], "5": [7, 10, 24, 30, 31], "differ": [7, 11, 13, 17, 18, 20, 23, 27, 29, 30, 32], "mul": [7, 10], "mulh": [7, 10], "mulhsu": [7, 10], "mulhu": [7, 10], "intenum": [7, 10, 14], "recursive_mul": 7, "fastest": 7, "multipli": [7, 8], "onli": [7, 11, 14, 20, 27, 28, 29, 30, 31, 32], "costli": [7, 20], "term": 7, "resourc": [7, 14, 20, 27, 28], "sequence_mul": 7, "dsp": [7, 8], "balanc": 7, "between": [7, 17, 20, 28, 29, 30, 32, 33], "cost": [7, 19, 28], "shift_mul": 7, "cheapest": 7, "russian": [7, 8], "peasant": [7, 8], "algorithm": [7, 8], "mulunit": 7, "unsign": [7, 8], "integ": [7, 10, 32], "standard": [7, 14, 20, 27, 33], "funcunitlayout": [7, 10, 12, 13], "comput": [7, 8, 9, 14, 20, 30, 32], "mul_typ": 7, "privilegedfn": 7, "mret": [7, 10], "classmethod": [7, 29, 30, 32], "privilegedfuncunit": 7, "gp": [7, 10, 14], "privilegedunitcompon": [7, 10], "shiftfuncunit": 7, "shift_unit_fn": 7, "shiftunitfn": 7, "shiftunitcompon": [7, 10], "clmultipli": 7, "carri": [7, 10, 27], "less": [7, 10], "product": [7, 30], "i1": [7, 8], "n": [7, 8, 10], "factor": 7, "i2": [7, 8], "reset": [7, 14, 19, 29], "new": [7, 9, 11, 14, 19, 20, 29, 30, 32, 33], "busi": 7, "while": [7, 29, 31], "progress": 7, "bit_width": 7, "recursion_depth": 7, "width": [7, 8, 10, 11, 14, 30, 32, 33], "depth": [7, 11, 27, 30], "recurs": [7, 8, 27, 28, 29, 32], "parallel": 7, "assum": [7, 13, 20, 30, 32], "power": [7, 32], "iterative_modul": 7, "recursive_modul": 7, "zbccompon": 7, "zbc_fn": 7, "zbcfn": 7, "clmul": [7, 10], "clmulh": [7, 10], "clmulr": [7, 10], "zbcunit": 7, "execut": [7, 10, 11, 12, 13, 17, 19, 24, 26, 28, 29, 30, 31], "zbsfunction": 7, "in1": 7, "in2": 7, "zbscompon": 7, "bclr": [7, 10], "bext": [7, 10], "binv": [7, 10], "bset": [7, 10], "zbsunit": 7, "zbs_fn": 7, "dspmulunit": 8, "clock": [8, 24, 27, 28, 29, 30], "design": [8, 20, 28, 29], "synthesi": [8, 19], "tool": [8, 17, 27, 29], "o": [8, 20, 28, 29], "same": [8, 9, 17, 28, 29, 30, 32], "number": [8, 10, 11, 13, 17, 20, 27, 29, 30, 31, 32, 33], "mulbaseunsign": 8, "unsignedmulunitlayout": [8, 10], "recursiveunsignedmul": 8, "see": [8, 23, 27, 28, 30], "fast": 8, "within": [8, 17], "sequentialunsignedmul": 8, "sequenti": [8, 11], "classic": [8, 20], "shiftunsignedmul": 8, "cheap": 8, "multi": 8, "lsublockcompon": [9, 10], "blockcomponentparam": [9, 10, 13, 14], "funcblock": [9, 10, 12, 13, 14, 15], "get_rs_entry_count": [9, 10, 13, 14], "lsudummi": 9, "veri": [9, 20, 28], "serial": [9, 13, 30], "all": [9, 10, 11, 14, 17, 19, 20, 23, 28, 29, 30, 32, 33], "store": [9, 10, 13, 14, 20, 25, 26, 29, 30, 32], "load": [9, 10, 20, 30, 32], "isn": [9, 27, 29], "compliant": [9, 27], "riscv": [9, 27], "spec": 9, "doesn": [9, 20, 23, 28, 30], "check": [9, 17, 20, 23, 25, 26, 27, 29, 32], "rang": [9, 29, 30, 31, 32, 33], "reserv": [9, 10, 14, 19, 20], "place": [9, 11, 14, 20, 25, 27, 28, 29, 30], "intruct": 9, "insert": [9, 12, 13, 14, 15, 19, 20, 24, 25], "put": [9, 14, 25, 27, 30], "receiv": [9, 11, 14, 28, 29, 30], "calcul": [9, 30], "end": [9, 10, 13, 20, 30, 32], "further": [9, 17, 30], "get_result": [9, 13, 14, 15, 30], "To": [9, 17, 20, 27, 30, 32], "precommit": [9, 13, 17], "processor": [9, 18, 19, 24], "master": [9, 11, 27], "pmacheck": 9, "physic": [9, 10, 12, 20], "memori": [9, 10, 11, 20, 30], "checker": 9, "mai": [9, 17, 30, 31, 32], "part": [9, 14, 20, 24, 28, 29, 30], "combin": [9, 13, 19, 23, 29, 30, 32], "circuit": [9, 27, 28, 29, 30, 32], "pmalayout": 9, "structlayout": [9, 29, 30, 32], "pmaregion": [9, 10], "contigu": [9, 10], "region": [9, 20], "includ": [9, 27, 28, 29, 30, 32, 33], "both": [9, 25, 28, 29, 30, 32], "begin": [9, 20], "mmio": 9, "true": [9, 10, 11, 28, 29, 30, 31, 32, 33], "indic": [9, 20, 26, 29], "coreconfigur": 10, "func_units_config": 10, "collect": [10, 13, 14, 18, 27, 29, 30, 31, 32, 33], "station": [10, 19], "exampl": [10, 14, 17, 19, 25, 28, 29, 30, 33], "rsblockcompon": [10, 13], "rs_entri": [10, 13, 14], "compress": 10, "enabl": [10, 30, 31, 32], "embed": 10, "reduc": [10, 20, 29], "debug": [10, 17, 32], "hardwar": [10, 19, 24, 28, 30, 32], "disabl": [10, 29, 30, 31], "them": [10, 17, 20, 27, 28, 29, 30, 32], "synthes": [10, 27, 30], "phys_regs_bit": 10, "file": [10, 17, 20, 27, 32], "rob_entries_bit": 10, "reorder": [10, 20, 30], "buffer": [10, 11, 20, 25, 30], "start_pc": 10, "initi": [10, 11, 19, 30, 31], "program": [10, 20, 27, 28], "icache_en": 10, "bypass": 10, "directli": [10, 28, 29], "icache_wai": 10, "icache_sets_bit": 10, "log": [10, 20], "icache_block_size_bit": 10, "allow_partial_extens": 10, "allow": [10, 18, 20, 27, 28, 29, 30, 33], "partial": [10, 29, 30, 32], "_implied_extens": 10, "extenst": 10, "flag": 10, "intern": [10, 19, 28, 29, 30], "definit": [10, 19, 29], "per": [10, 27], "segment": 10, "abc": [10, 29, 30, 31, 32, 33], "func_unit": [10, 13], "csrblockcompon": [10, 14], "6": [10, 20], "7": 10, "factori": [10, 29, 30, 32], "kwarg": [10, 11, 29, 30, 31, 32, 33], "optypes_support": 10, "iter": [10, 13, 14, 29, 30, 31, 32, 33], "dependentcach": [10, 32], "cfg": 10, "addr_width": [10, 11], "length": [10, 20, 29, 32], "word_width": 10, "machin": [10, 14], "num_of_wai": 10, "num_of_sets_bit": 10, "block_size_bit": 10, "btypeinstr": 10, "riscvinstr": 10, "pack": 10, "ebreakinstr": 10, "itypeinstr": 10, "illegalinstr": 10, "jtypeinstr": 10, "rtypeinstr": 10, "stypeinstr": 10, "utypeinstr": 10, "exceptioncaus": 10, "breakpoint": 10, "environment_call_from_m": 10, "environment_call_from_": 10, "9": 10, "environment_call_from_u": 10, "illegal_instruct": 10, "instruction_access_fault": 10, "instruction_address_misalign": 10, "instruction_page_fault": 10, "load_access_fault": 10, "load_address_misalign": 10, "load_page_fault": 10, "store_access_fault": 10, "store_address_misalign": 10, "store_page_fault": 10, "avail": [10, 11, 12, 14, 17, 18, 27, 30], "atom": [10, 25, 28], "b": 10, "512": 10, "manipul": 10, "256": 10, "d": [10, 28, 29, 32], "doubl": [10, 14, 20], "precis": [10, 20, 27], "float": [10, 29, 30, 31, 32], "point": [10, 20, 23, 27], "64": [10, 11], "f": [10, 12, 17, 27, 31], "98366": 10, "contain": [10, 17, 27, 28, 29, 30, 32], "basic": [10, 19, 27, 30], "full": [10, 17, 19, 20, 27, 30], "j": 10, "1024": 10, "dynam": [10, 20, 33], "languag": [10, 28], "l": [10, 17], "decim": 10, "m": [10, 11, 14, 17, 20, 27, 28, 29, 30, 32, 33], "divis": 10, "16384": 10, "user": [10, 14, 20, 27, 30], "level": [10, 11, 18, 20, 27, 28], "interrupt": [10, 19], "p": [10, 17], "4096": 10, "simd": 10, "q": 10, "quad": 10, "2048": 10, "8192": 10, "vector": [10, 12, 19, 20], "xintmachinemod": 10, "8589934592": 10, "categor": 10, "privilieg": 10, "xintsupervisor": 10, "17179869184": 10, "supervisor": [10, 14], "zam": 10, "2097152": 10, "misalign": 10, "zba": 10, "268435456": 10, "extend": [10, 23, 29], "zbb": 10, "536870912": 10, "1073741824": 10, "2147483648": 10, "zdinx": 10, "33554432": 10, "zfh": 10, "4194304": 10, "half": 10, "zfhmin": 10, "8388608": 10, "minim": 10, "zfinx": 10, "16777216": 10, "zhinx": 10, "67108864": 10, "zicntr": 10, "524288": 10, "timer": [10, 14], "zicsr": 10, "32768": 10, "statu": [10, 14, 31], "zifencei": 10, "65536": 10, "zihintntl": 10, "262144": 10, "non": [10, 25, 29, 30], "tempor": 10, "local": [10, 14, 17], "hint": [10, 29], "zihintpaus": 10, "131072": 10, "paus": 10, "energi": 10, "zihpm": 10, "1048576": 10, "zmmul": 10, "134217728": 10, "ztso": 10, "4294967296": 10, "total": 10, "tso": 10, "dev_i": 10, "dev_o": 10, "mem_r": 10, "mem_w": 10, "clz": 10, "1536": 10, "cpop": 10, "1538": 10, "ctz": 10, "1537": 10, "ebreak": 10, "ecal": 10, "770": 10, "orcb": 10, "647": 10, "rev8_32": 10, "1688": 10, "rev8_64": 10, "1720": 10, "sextb": 10, "1540": 10, "sexth": 10, "1541": 10, "sret": 10, "258": 10, "wfi": 10, "261": 10, "zexth": 10, "add": [10, 28, 29, 30, 32], "AND": 10, "andn": 10, "beq": 10, "bge": 10, "bgeu": 10, "blt": 10, "bltu": 10, "bne": 10, "csrrc": 10, "csrrci": 10, "csrr": 10, "csrrsi": 10, "csrrw": 10, "csrrwi": 10, "divuw": 10, "divw": 10, "fencei": 10, "h": [10, 20], "hu": 10, "jalr": 10, "max": [10, 27], "maxu": 10, "min": [10, 30], "minu": 10, "mulw": 10, "OR": 10, "orn": 10, "remuw": 10, "remw": 10, "rev8": 10, "rol": 10, "ror": 10, "sh1add": 10, "sh2add": 10, "sh3add": 10, "sll": 10, "slt": 10, "sltu": 10, "sr": 10, "sub": 10, "w": [10, 20], "xnor": 10, "xor": 10, "36": 10, "52": 10, "20": 10, "48": 10, "muldiv": 10, "sa": 10, "sfencevma": 10, "sl": 10, "gather": 10, "numer": 10, "val": [10, 32], "correspond": [10, 25, 29, 33], "val_log": 10, "relev": [10, 29], "nativ": 10, "reg_cnt": 10, "maximum": [10, 27, 30], "bitwis": 10, "isa_str": 10, "string": 10, "pleas": [10, 17, 23, 28], "refer": [10, 29, 32], "gcc": 10, "": [10, 11, 20, 28, 29, 30, 32, 33], "arch": [10, 17, 27], "detail": [10, 14, 19], "u": [10, 20, 27, 30, 32], "auipc": 10, "branch": [10, 20, 27, 30], "24": 10, "jal": 10, "27": 10, "25": 10, "load_fp": 10, "lui": 10, "misc_mem": 10, "op32": 10, "op_imm": 10, "op_imm_32": 10, "store_fp": 10, "system": [10, 27, 28, 32], "28": [10, 20], "a0": 10, "a1": 10, "a2": 10, "a3": 10, "a4": 10, "a5": 10, "a6": 10, "a7": 10, "17": 10, "fp": [10, 29], "ra": 10, "s0": 10, "s1": 10, "s10": 10, "26": 10, "s11": 10, "s2": 10, "18": 10, "s3": 10, "19": 10, "s4": 10, "s5": 10, "21": 10, "s6": 10, "22": 10, "s7": 10, "23": 10, "s8": 10, "s9": 10, "sp": 10, "t0": 10, "t1": [10, 28], "t2": [10, 28], "t3": 10, "t4": 10, "29": 10, "t5": 10, "30": [10, 20], "t6": 10, "tp": [10, 32], "x1": 10, "x10": 10, "x11": 10, "x12": 10, "x13": 10, "x14": 10, "x15": 10, "x16": 10, "x17": 10, "x18": 10, "x19": 10, "x2": 10, "x20": 10, "x21": 10, "x22": 10, "x23": 10, "x24": 10, "x25": 10, "x26": 10, "x27": 10, "x28": 10, "x29": 10, "x3": 10, "x30": 10, "x31": 10, "x4": 10, "x5": 10, "x6": 10, "x7": 10, "x8": 10, "x9": 10, "asyncinterruptinsertsignalkei": 10, "simplekei": [10, 29, 30, 32], "branchverifykei": 10, "commonbusdatakei": 10, "exceptionreportkei": 10, "fetchresumekei": 10, "unifierkei": [10, 13, 30], "unifi": [10, 30], "alia": 10, "collector": [10, 30], "genericcsrregisterskei": 10, "genericcsrregist": [10, 14], "instructionprecommitkei": 10, "methodtryproduct": [10, 30], "mretkei": 10, "csrlayout": 10, "commonlayoutfield": 10, "commonli": 10, "layoutlistfield": 10, "caus": [10, 20, 30, 32], "piec": 10, "rais": [10, 20, 29, 30, 31, 32], "exec_fn_layout": 10, "op_typ": 10, "reg_id": 10, "id": [10, 12, 25, 26, 29], "reg_val": 10, "some": [10, 14, 20, 23, 28, 29, 30, 32], "regs_l": 10, "logic": [10, 20, 26, 27, 28], "manual": [10, 19, 28], "thei": [10, 11, 14, 17, 20, 24, 27, 28, 29, 30], "regs_p": 10, "rl_dst": 10, "destin": 10, "operand": [10, 20, 25, 26], "rl_s1": 10, "rl_s2": 10, "rob_id": 10, "entri": [10, 12, 13, 20, 24, 25, 26, 30, 32], "rp_dst": 10, "rp_s1": 10, "rp_s2": 10, "s1_val": 10, "s2_val": 10, "side_fx": 10, "side": [10, 14, 20, 25, 26], "effect": [10, 14, 20, 25, 26, 29, 30], "fetcher": 10, "access_fault": 10, "fail": [10, 20, 32], "produc": [10, 17], "jumpbranchlayout": 10, "verify_branch": 10, "predictor": 10, "about": [10, 17, 19, 29, 30, 32], "lsulayout": 10, "ratlayout": [10, 12], "tabl": [10, 19], "old_rp_dst": 10, "previous": [10, 11], "rrat": [10, 14], "rflayout": [10, 12], "roblayout": [10, 12], "done": [10, 20, 27, 28, 29, 30, 31], "yet": [10, 29], "latest": [10, 27, 30], "rob_data": 10, "earliest": [10, 14], "rsinterfacelayout": 10, "rs_entries_bit": 10, "data_layout": [10, 12, 30, 32], "shapelik": [10, 29, 30, 32], "layoutlist": [10, 29, 30, 32], "rslayout": [10, 12], "ready_list": 10, "bitmask": 10, "run": [10, 17, 27, 28, 29, 30, 31, 33], "retirementlayout": 10, "current": [10, 12, 14, 20, 29], "schedulerlayout": 10, "regs_l_rob_in": 10, "befor": [10, 11, 14, 17, 23, 24, 28, 30], "alloc": [10, 12, 24, 25, 26], "regs_p_alloc_out": 10, "rs_entry_id": 10, "rs_select": 10, "confus": 10, "address_gener": 10, "arithmet": 10, "bit_manipul": 10, "bit_rot": 10, "compar": [10, 19], "csr_imm": [10, 14], "csr_reg": [10, 14], "div_rem": 10, "34": 10, "33": 10, "single_bit_manipul": 10, "unary_bit_manipulation_1": 10, "unary_bit_manipulation_2": 10, "unary_bit_manipulation_3": 10, "unary_bit_manipulation_4": 10, "unary_bit_manipulation_5": 10, "unknown": [10, 17, 29, 30, 32], "optypes_required_by_extens": 10, "resolve_impl": 10, "ignore_unsupport": 10, "axiliteinterfac": 11, "abstractinterfac": 11, "abstractsignatur": 11, "read_address": 11, "axilitereadaddressinterfac": 11, "read_data": 11, "axilitereaddatainterfac": 11, "write_address": 11, "axilitewriteaddressinterfac": 11, "write_data": 11, "axilitewritedatainterfac": 11, "write_respons": 11, "axilitewriteresponseinterfac": 11, "axilitemast": 11, "axi": 11, "lite": 11, "axil_param": 11, "axiliteparamet": 11, "ra_request": 11, "channel": 11, "being": [11, 17, 30, 32, 33], "ra_request_layout": 11, "argument": [11, 12, 17, 19, 26, 27, 29, 30, 31, 32, 33], "rd_respons": 11, "availab": 11, "state": [11, 19, 20, 28, 29, 30, 31], "rd_response_layout": 11, "wa_request": 11, "wa_request_layout": 11, "wd_request": 11, "wd_request_layout": 11, "wr_respons": 11, "wr_response_layout": 11, "axil_mast": 11, "result_handl": 11, "tmodul": [11, 14, 28, 29, 30], "start_request_transact": 11, "is_address_channel": 11, "state_machine_request": 11, "request_sign": 11, "data_width": 11, "must": [11, 29, 30, 32], "axilitesignatur": 11, "signatur": 11, "patamet": 11, "axilitemasteradapt": 11, "where": [11, 12, 17, 20, 25, 26, 28, 29, 30, 31, 32], "expect": 11, "busparametersinterfac": 11, "method_layout": 11, "commonbusmastermethodlayout": 11, "request_read": 11, "underli": 11, "request_read_layout": 11, "request_writ": 11, "request_write_layout": 11, "get_read_respons": 11, "action": [11, 14, 29, 30, 32], "read_response_layout": 11, "get_write_respons": 11, "write_response_layout": 11, "prefer": [11, 28], "gain": 11, "simplifi": 11, "interchang": 11, "buse": 11, "sent": [11, 13, 31], "wishbonemasteradapt": 11, "wishbonemast": 11, "pipelinedwishbonemast": 11, "wb_param": 11, "wishboneparamet": 11, "max_req": 11, "limit": [11, 28, 30], "pend": 11, "wb": 11, "request_layout": 11, "complet": [11, 13, 20], "result_layout": 11, "requests_finish": 11, "generate_method_layout": 11, "wishbonearbit": 11, "arbit": 11, "slave": 11, "cyc": 11, "grant": [11, 28, 29, 30, 33], "round": [11, 29, 32, 33], "robin": [11, 29, 33], "num_slav": 11, "devic": 11, "slave_wb": 11, "intefac": 11, "num_mast": 11, "ack": 11, "adr": 11, "dat_r": 11, "dat_w": 11, "err": 11, "lock": [11, 17, 20, 28, 29, 30], "rst": 11, "rty": 11, "stall": [11, 14, 20], "stb": 11, "wb_master": 11, "becom": 11, "wishbonemastermethodlayout": 11, "wishbonememoryslav": 11, "underneath": 11, "keyword": [11, 28, 29, 30, 31, 32], "re": [11, 20, 23, 28, 29], "infer": [11, 29], "wishbonemux": 11, "muxer": 11, "multiplex": [11, 28], "ssel_tga": 11, "corespond": 11, "tga": 11, "so": [11, 13, 20, 27, 28, 29, 30], "note": [11, 14, 30], "stare": 11, "finish": [11, 13, 14, 30], "clear": [11, 25, 26, 30], "delai": [11, 28], "deassert": [11, 33], "master_wb": 11, "singal": 11, "granular": [11, 30], "smallest": 11, "port": [11, 30, 32, 33], "capabl": 11, "wishbonesignatur": 11, "path": [11, 29, 30, 32], "src_loc_at": [11, 32], "prepar": [12, 17, 20, 29], "In": [12, 17, 18, 19, 26, 27, 28, 29, 32], "renam": [12, 24], "without": [12, 13, 20, 30, 32], "stuck": 12, "get_instr": 12, "get_free_reg": 12, "rat_renam": 12, "rob_put": 12, "rf_read1": 12, "rf_read2": 12, "reservation_st": 12, "decoded_instr": 12, "free": [12, 19, 20, 26], "rat_rename_in": 12, "rat_rename_out": 12, "rf_read_out": 12, "rf_read_in": 12, "wakeupselect": 12, "wakeup": [12, 26], "firstli": 12, "get_readi": 12, "binari": [12, 27, 33], "th": [12, 30, 33], "posit": [12, 25, 26, 32], "row": [12, 17, 19], "taken": [12, 27, 29, 30], "take_row": 12, "get_ready_list_out": 12, "take_out": 12, "push": 12, "down": [12, 32], "resultannounc": 13, "mark": [13, 19, 20, 29], "also": [13, 17, 27, 28, 30, 31, 32], "more": [13, 17, 19, 20, 30, 32], "than": [13, 20, 30, 32], "manytooneconnecttran": [13, 30], "rob_mark_don": 13, "rs_updat": 13, "rf_write": 13, "funcblocksunifi": 13, "extra_methods_requir": 13, "get_extra_method": 13, "item": [13, 32, 33], "rob_peek": 13, "rob_retir": 13, "r_rat_commit": 13, "r_rat_peek": 13, "free_rf_put": 13, "rf_free": 13, "exception_cause_get": 13, "exception_cause_clear": 13, "frat_renam": 13, "fetch_continu": [13, 14], "instr_decr": 13, "trap_entri": 13, "rsfuncblock": 13, "With": 13, "csrlistkei": 14, "listkei": [14, 30, 32], "csrregist": 14, "dependencymanag": [14, 29, 30, 31, 32], "behaviour": [14, 27], "automat": [14, 17, 27, 32], "csrunit": 14, "bodi": [14, 28, 29, 30], "csr_val": 14, "els": [14, 20, 28, 29], "_fu_read": 14, "_fu_writ": 14, "ignor": 14, "prioriti": [14, 28, 29, 30], "csr_number": 14, "ro_bit": 14, "mask": [14, 30], "those": [14, 20, 29], "upper": 14, "0b11": 14, "discard": 14, "regitst": 14, "unitl": 14, "resum": 14, "privilegelevel": 14, "csr_access_privileg": 14, "csr_addr": 14, "csraddress": 14, "3072": 14, "cycleh": 14, "3200": 14, "instret": 14, "3074": 14, "instreth": 14, "3202": 14, "mcaus": 14, "834": 14, "mepc": 14, "833": 14, "mtvec": 14, "773": 14, "3073": 14, "timeh": 14, "3201": 14, "doublecountercsr": 14, "group": 14, "At": 14, "overflow": [14, 30], "low_addr": 14, "high_addr": 14, "lower": [14, 32], "higher": 14, "synthetis": 14, "machinemodecsrregist": 14, "exceptioncauseregist": 14, "reorderbuff": 14, "report": 14, "rob_get_indic": 14, "fetch_stall_except": 14, "should_update_priorii": 14, "current_caus": 14, "new_caus": 14, "coreinstructioncount": 14, "count": [14, 17, 30, 33], "leav": [14, 17], "decrement": 14, "interruptcontrol": 14, "frat": 14, "registerfil": 14, "ready_for": 14, "below": [17, 32], "instal": [17, 27], "python": [17, 28, 29, 32], "interpret": [17, 30, 32], "pip": [17, 27], "virtual": 17, "python3": [17, 27], "venv": [17, 27], "project": [17, 18, 20], "directori": [17, 18, 27], "activ": [17, 27, 30, 31, 33], "bin": [17, 27], "librari": [17, 19, 30], "pip3": [17, 27], "dev": [17, 27], "txt": [17, 27], "riscv64": 17, "elf": 17, "binutil": 17, "your": [17, 23], "favourit": 17, "On": [17, 30], "debian": 17, "distro": 17, "hook": [17, 29], "pre": [17, 27], "linter": 17, "ci": [17, 27], "intend": [17, 29], "By": [17, 29, 30], "test_transact": 17, "One": [17, 20, 28, 30, 33], "even": [17, 20, 28, 29, 30], "testschedul": 17, "Or": [17, 28], "test_singl": 17, "search": 17, "name": [17, 28, 29, 30, 31, 32, 33], "match": [17, 25, 26, 33], "queri": 17, "thank": 17, "uniqu": [17, 29, 30], "just": [17, 28, 30], "help": [17, 20, 32], "find": [17, 20, 32], "parameter": 17, "waveform": 17, "vcd": 17, "gtkw": [17, 32], "gtkwave": [17, 32], "__traces__": 17, "driven": 17, "transactron": [17, 19, 28], "__profile__": 17, "analyz": 17, "verbos": [17, 27], "runner": 17, "print": 17, "code": [17, 18, 20, 23, 27, 28, 29, 30, 32, 33], "subcommand": 17, "filenam": 17, "main": [17, 20, 24, 27], "reformat": 17, "black": 17, "check_format": 17, "verifi": [17, 27], "flake8": 17, "check_typ": 17, "pyright": 17, "confront": 17, "would": [17, 20, 28, 30, 32], "messag": 17, "you": [17, 23, 25, 27], "diff": 17, "displai": 17, "chang": [17, 25, 28, 30, 31, 32, 33], "appli": [17, 20, 23, 29, 31], "chose": 17, "locat": [17, 18, 24, 29, 30, 32], "visual": 17, "architectur": [17, 20, 27], "appropri": [17, 25, 30, 31], "prune": [17, 29], "remov": [17, 20], "disconnect": 17, "node": 17, "elk": [17, 29], "eclips": 17, "kernel": [17, 20], "dot": [17, 29, 30], "graphviz": 17, "mermaid": [17, 29], "document": [17, 19], "sphinx": 17, "html": [17, 18], "build": [17, 27, 30], "present": [17, 20, 28, 30, 32], "readabl": [17, 30], "profile_fil": 17, "json": [17, 27, 32], "column": 17, "question": [17, 28], "togeth": [17, 28, 29, 32], "differenti": 17, "ident": [17, 30], "declar": [17, 28, 30, 31], "disambigu": 17, "show": 17, "caller": [17, 28, 29, 30], "condit": [17, 28, 29, 30], "could": [17, 28, 30], "forc": 17, "conflict": [17, 19, 29], "tree": [17, 29, 30], "root": [17, 29], "invert": 17, "children": 17, "how": [17, 20, 25, 27, 29, 30, 32], "mani": [17, 20, 27, 28, 29, 30, 32], "sort": 17, "filter": [17, 30], "regular": 17, "express": [17, 28, 32], "loc": 17, "coreblock": [18, 23, 27], "go": [18, 20, 23, 29], "microarchitectur": 18, "focu": 18, "flexibl": [18, 24], "easili": [18, 30], "experi": 18, "doc": 18, "descript": [18, 19, 27, 30, 32], "overview": [18, 19, 20], "high": [18, 33], "found": [18, 27], "version": [18, 27], "page": [18, 20, 27], "api": [18, 19], "kuznia": [18, 27], "rdzeni": [18, 27], "github": [18, 27], "io": [18, 27], "introduct": 19, "assumpt": [19, 20], "made": [19, 20, 28], "develop": 19, "environ": 19, "up": [19, 26, 27, 32], "script": [19, 27], "run_test": [19, 27], "py": [19, 27], "lint": 19, "sh": 19, "core_graph": 19, "build_doc": 19, "tprof": 19, "framework": [19, 25], "usag": 19, "convent": 19, "advanc": 19, "concept": 19, "special": 19, "domain": [19, 23, 29], "nest": [19, 30], "schema": [19, 29, 30, 32], "structur": [19, 20, 25, 28, 29, 30, 32], "proposit": [19, 20], "slot": [19, 30], "substitut": 19, "clean": 19, "extern": [19, 27, 28, 29], "problem": [19, 20], "checklist": 19, "verif": 19, "reproduct": 19, "benchmark": 19, "regress": 19, "map": [19, 20, 29, 30, 31, 32, 33], "summari": 19, "paper": 19, "old": 19, "softwar": 19, "tlb": 19, "analysi": [19, 29], "strategi": 19, "igpu": 19, "specul": 19, "gpu": 19, "effici": 19, "journal": 20, "articl": 20, "look": [20, 32], "choic": 20, "primari": 20, "relat": [20, 29, 30, 32], "procedur": 20, "chosen": 20, "basi": 20, "improv": [20, 28], "pretti": 20, "1993": 20, "2001": 20, "much": 20, "research": 20, "cpu": 20, "consid": [20, 28, 30], "solv": 20, "instead": [20, 23, 28, 29, 30, 31, 33], "try": [20, 23, 28], "due": [20, 29], "characterist": 20, "easi": [20, 23, 28, 30], "our": [20, 24, 27], "decid": [20, 24, 28], "what": 20, "peopl": 20, "probabl": [20, 31], "lot": 20, "worth": 20, "walker": 20, "cragon": 20, "concurr": [20, 29], "ieee": 20, "vol": 20, "june": 20, "1995": 20, "moudgil": 20, "vassiliadi": 20, "micro": 20, "pp": 20, "58": 20, "67": 20, "februari": 20, "1996": 20, "These": [20, 27, 28], "survei": 20, "topic": 20, "cdc": 20, "6600": 20, "jump": 20, "handler": [20, 31], "ibm360": 20, "stop": [20, 30], "crai": 20, "similar": [20, 27, 28, 30, 33], "here": [20, 25], "bigger": [20, 30], "torng": 20, "martin": 20, "dai": 20, "probe": 20, "idea": [20, 28], "author": 20, "window": 20, "iw": 20, "dispatch": [20, 24, 25, 26], "didn": 20, "context": [20, 29, 30, 32], "copi": [20, 29], "restor": [20, 29], "restart": [20, 33], "few": 20, "big": 20, "overhead": 20, "origin": [20, 29, 30], "unfeas": 20, "becaus": [20, 28, 29, 30], "job": 20, "addition": [20, 30], "But": 20, "mayb": [20, 28], "possibl": [20, 27, 28, 30, 32], "cooper": 20, "smaller": 20, "interest": 20, "propos": 20, "nrp": 20, "No": [20, 30], "itself": [20, 32], "don": [20, 23, 25, 28, 29], "wast": 20, "rememb": [20, 28, 29], "element": [20, 30], "left": [20, 28, 29], "middl": [20, 24], "aamer": 20, "jaleel": 20, "bruce": 20, "jacob": 20, "cours": 20, "switch": [20, 25, 28, 29, 30, 33], "penalti": 20, "alpha": 20, "mip": 20, "concentr": 20, "properti": [20, 27, 29], "short": 20, "inlin": 20, "observ": [20, 30], "import": [20, 28], "enough": 20, "live": 20, "known": 20, "fly": 20, "swap": 20, "nop": 20, "reexecut": 20, "privileg": 20, "contrast": 20, "tendenc": 20, "longer": 20, "hard": [20, 32], "risk": [20, 28, 30], "linux": [20, 27], "purpos": [20, 29, 30], "addit": [20, 27, 28, 32], "hw": 20, "bore": 20, "treat": [20, 24], "mansur": 20, "samadzadeh": 20, "loai": 20, "garalnabi": 20, "checkpoint": 20, "repair": 20, "histori": 20, "futur": [20, 24, 25], "jaikrishnan": 20, "menon": 20, "marc": 20, "de": 20, "kruijf": 20, "karthikeyan": 20, "sankaralingam": 20, "2012": 20, "low": 20, "boundari": 20, "safe": [20, 28, 32], "rewritten": 20, "recompil": 20, "runtim": [20, 29], "subregion": 20, "small": 20, "overrid": 20, "barrier": 20, "warp": 20, "wrong": 20, "split": [20, 24, 30, 31], "prevent": 20, "ivan": 20, "tanas": 20, "isaac": 20, "gelado": 20, "jorda": 20, "eduard": 20, "ayguad": 20, "nacho": 20, "navarro": 20, "2017": 20, "analys": 20, "problemat": 20, "successfulli": 20, "kill": 20, "modif": 20, "usual": [20, 28, 30], "repli": 20, "modifi": [20, 30], "claim": 20, "replai": 20, "queue": [20, 28, 30], "marker": 20, "jerom": 20, "hampton": 20, "2008": 20, "mention": 20, "alli": 20, "bailei": 20, "ab04": 20, "ag": 20, "younger": 20, "repeat": 20, "commun": [20, 25, 28], "canon": 20, "eventu": 20, "aren": [20, 28, 30], "someth": [23, 28, 33], "puzzl": 23, "why": 23, "through": [23, 30], "sure": [23, 31], "yield": [23, 31], "notabl": 23, "settl": 23, "unexpect": 23, "ad": [23, 28, 29, 30, 31, 32, 33], "right": [23, 28, 29], "eq": [23, 28, 29], "record": [23, 28, 29, 30, 31, 32, 33], "statement": [23, 28, 29, 31, 32], "loop": [23, 28], "especi": 23, "simul": [23, 27, 29, 30, 31, 32], "hang": 23, "spot": 23, "yourself": [23, 28], "fix": 23, "mistak": 23, "Its": [24, 28], "task": [24, 29], "rss": 24, "phase": 24, "choos": [24, 27], "potenti": 24, "merg": 24, "optim": 24, "todo": 24, "want": [25, 27, 29, 31, 33], "feel": 25, "anyth": 25, "id_out": [25, 26], "id_rob": [25, 26], "id_rs1": [25, 26], "val_rs1": [25, 26], "id_rs2": [25, 26], "val_rs2": [25, 26], "fill": 25, "id_rsx": 25, "val_rsx": 25, "releas": 25, "comparison": 25, "null": [25, 26], "woken": 26, "invalid": 26, "src1": [26, 30], "src2": [26, 30], "inst_readi": 26, "sever": 27, "besid": 27, "synthesis": 27, "ecp5": 27, "fpga": [27, 30], "target": [27, 30], "realiti": 27, "cocotb": 27, "assembl": 27, "deliv": 27, "histor": 27, "dedic": [27, 30], "subpag": 27, "built": 27, "docker": 27, "publicli": 27, "subsect": 27, "recreat": 27, "command": [27, 31], "platform": [27, 28, 29], "amd64": 27, "synth": 27, "amaranthsynthecp5": 27, "dockerfil": 27, "complex": [27, 30], "although": 27, "educ": 27, "practic": 27, "frequenc": 27, "too": [27, 29], "met": [27, 29], "whether": [27, 29, 33], "cell": 27, "ram": 27, "dff": 27, "repo": 27, "sudo": 27, "pull": 27, "ghcr": 27, "rm": 27, "git": 27, "clone": 27, "http": 27, "com": 27, "cd": 27, "apt": 27, "upgrad": 27, "pythonhashse": 27, "config": 27, "parse_benchmark_info": 27, "cat": 27, "abov": [27, 28], "verilog": [27, 32], "yosi": 27, "nextpnr": 27, "bitstream": 27, "strength": 27, "modular": [27, 28], "littl": 27, "effort": 27, "gate": 27, "rout": 27, "prjtrelli": 27, "measur": [27, 30], "theori": 27, "increas": [27, 28, 30], "fmax": 27, "avoid": [27, 28], "pitfal": 27, "affect": 27, "throughput": [27, 30], "monitor": 27, "accuraci": 27, "embench": 27, "compil": [27, 28, 31], "gnu": 27, "toolchain": 27, "glibc": 27, "subset": 27, "exact": [27, 29], "onc": [27, 28, 29, 30, 33], "veril": 27, "featur": [27, 28], "stub": 27, "compat": [27, 30], "host": 27, "init": [27, 30], "mount": 27, "subdirectori": 27, "share": 27, "surviv": 27, "close": 27, "exit": 27, "gen_verilog": 27, "run_benchmark": 27, "inspir": 28, "bluespec": 28, "wiki": 28, "entrieti": 28, "doe": [28, 31, 33], "link": 28, "indirectli": [28, 29], "coordin": 28, "direct": [28, 29, 30], "back": 28, "simplest": 28, "myth": 28, "def": [28, 29], "elabor": 28, "self": [28, 31], "comb": [28, 29], "sig1": 28, "expr1": 28, "sync": [28, 29], "sig2": 28, "expr2": 28, "arg_expr": 28, "analog": 28, "typic": [28, 29, 30], "myotherth": 28, "my_method": 28, "input_layout": 28, "output_layout": 28, "def_method": [28, 29], "_": [28, 29], "other_method": 28, "ret_expr": 28, "techniqu": 28, "conveni": [28, 29], "syntax": [28, 29], "particular": 28, "unnam": 28, "around": 28, "sometim": 28, "might": [28, 29, 32], "altern": [28, 29, 30], "best": 28, "ask": 28, "thing": [28, 30, 32], "doubt": 28, "noth": 28, "Such": [28, 31], "adaptertran": [28, 30], "though": 28, "cleaner": 28, "suppos": 28, "foo": [28, 30], "bar": [28, 30], "cleanest": 28, "recommend": 28, "foo_expr": 28, "bar_expr": 28, "final": 28, "rec": 28, "layout2": 28, "foobar": 28, "baz": 28, "42": 28, "method2": [28, 30], "baz_expr": 28, "method3": 28, "expr": 28, "mechan": [28, 30], "certain": 28, "occas": 28, "facilit": 28, "ones": 28, "connecttran": [28, 30], "plain": [28, 29, 30], "testbench": [28, 30], "own": [28, 29], "variant": 28, "role": 28, "omit": [28, 29, 30], "unneed": 28, "av_comb": [28, 29], "top_comb": [28, 29], "avoidedif": [28, 29], "guard": [28, 29, 30], "therefor": 28, "induc": 28, "often": 28, "belong": 28, "move": [28, 30], "top": [28, 32], "caveat": 28, "normal": 28, "cannot": [28, 29, 30], "schedule_befor": 28, "first_t_or_m": 28, "other_t_or_m": 28, "lift": 28, "first_m": 28, "other_t": 28, "situat": [28, 29], "mutual": [28, 30], "exclus": [28, 29, 30], "similarli": 28, "add_conflict": [28, 29], "undefin": [28, 29], "other_m": 28, "come": 28, "consider": 28, "parent": 28, "convers": 28, "impli": 28, "amaranth_ext": [29, 32], "transactionbas": 29, "serv": [29, 30], "simultena": 29, "transactionmanag": [29, 31], "rest": 29, "behavior": [29, 30, 32], "combination": 29, "data_out": [29, 30], "data_in": [29, 30], "methodstruct": [29, 30], "shape": [29, 32], "shapecast": [29, 32], "forwardref": [29, 31, 32], "nonexclus": 29, "single_cal": [29, 30], "src_loc": [29, 30, 32], "variabl": [29, 33], "happen": 29, "thrown": 29, "srcloc": [29, 30, 32], "stack": [29, 30, 32], "frame": [29, 30, 32], "deep": [29, 30], "const": [29, 30], "d1": [29, 30], "d0": 29, "validate_argu": 29, "callabl": [29, 30, 31, 32], "combinationi": 29, "valuelik": [29, 30], "my_sum_method": 29, "arg1": 29, "arg2": 29, "sum": [29, 30], "_rec": [29, 30, 31, 32, 33], "signalbundl": [29, 30, 31, 32, 33], "layout_in": 29, "layout_out": 29, "static": [29, 32], "construct": [29, 30], "blueprint": 29, "freshli": 29, "proxi": 29, "priorit": 29, "modulelik": [29, 30, 32, 33], "amount": [29, 31], "useless": 29, "multplex": 29, "unguard": 29, "synchron": [29, 30], "cond": [29, 30], "pattern": 29, "elif": 29, "fsm": 29, "ctrl_path": 29, "noreturn": 29, "regularli": 29, "explicit": 29, "implicit": 29, "aris": 29, "pair": [29, 30], "runnabl": 29, "transactioncontext": 29, "care": [29, 30], "never": 29, "cc_schedul": 29, "methodmap": [29, 30], "_dsl": 29, "eager_deterministic_cc_schedul": 29, "add_transact": 29, "print_info": 29, "cgr": 29, "porder": 29, "cc": 29, "method_map": 29, "visual_graph": 29, "fragment": 29, "transactionmanagerkei": 29, "transactionmodul": 29, "wrapper": 29, "dependency_manag": [29, 31], "transaction_manag": [29, 31], "wrap": [29, 31], "dependencycontext": [29, 32], "decor": [29, 31], "eleg": 29, "dictionari": 29, "whose": 29, "gr": 29, "eager": 29, "subsystem": [29, 33], "fair": 29, "lowest": 29, "highest": [29, 33], "arbitr": [29, 33], "agent": [29, 33], "transactiongraph": 29, "vertic": 29, "edg": [29, 30], "priorityord": 29, "linear": 29, "consist": [29, 32], "constraint": 29, "trivial_roundrobin_cc_schedul": 29, "mainli": 29, "extract": 29, "IN": 29, "inout": 29, "owner": 29, "ownershipgraph": 29, "dump": 29, "liter": [29, 33], "dump_dot": 29, "indent": [29, 30, 32], "dump_elk": 29, "dump_mermaid": 29, "get_hier_nam": 29, "obj": 29, "hierarch": 29, "keyerror": [29, 30, 32], "get_nam": 29, "insert_edg": 29, "fr": 29, "insert_nod": 29, "mermaid_direct": 29, "empti": [29, 30], "subgraph": 29, "remember_field": 29, "owner_id": 29, "methodsampl": 29, "transactions_and_method": 29, "profileinfo": 29, "cycleprofil": 29, "analyze_method": 29, "runstatnod": 29, "analyze_transact": 29, "file_nam": [29, 32], "from_dict": [29, 30, 32], "kv": [29, 30, 32], "union": [29, 30, 31, 32], "infer_miss": [29, 30, 32], "from_json": [29, 30, 32], "bytearrai": [29, 30, 32], "parse_float": [29, 30, 32], "parse_int": [29, 30, 32], "parse_const": [29, 30, 32], "kw": [29, 30, 32], "exclud": [29, 30, 32], "load_onli": [29, 30, 32], "dump_onli": [29, 30, 32], "schemaf": [29, 30, 32], "to_dict": [29, 30, 32], "encode_json": [29, 30, 32], "to_json": [29, 30, 32], "skipkei": [29, 30, 32], "ensure_ascii": [29, 30, 32], "check_circular": [29, 30, 32], "allow_nan": [29, 30, 32], "sort_kei": [29, 30, 32], "profiledata": [29, 32], "individu": 29, "method_par": 29, "transactions_by_method": 29, "transaction_conflict": 29, "is_transact": 29, "profilesampl": 29, "transactionsampl": 29, "runstat": 29, "statist": 29, "did": 29, "info": 29, "summar": 29, "stat": 29, "tracingenabl": 29, "tracingfrag": 29, "lose": 29, "difficult": 29, "copyright": 29, "subfrag": 29, "_ir": [29, 32], "tracingfragmenttransform": 29, "fragmenttransform": 29, "on_frag": 29, "tracinginst": 29, "adapterbas": [30, 31], "mock": [30, 31], "en": [30, 31], "clickin": 30, "click": 30, "interact": 30, "rise": 30, "btn": 30, "dat": 30, "retriev": 30, "clickout": 30, "led": [30, 32], "flow": 30, "revers": 30, "possibli": 30, "rev_layout": 30, "vice": 30, "versa": 30, "method1": 30, "respect": 30, "fulfil": 30, "fifo_typ": 30, "syncfifo": 30, "fifotyp": 30, "conform": 30, "equival": 30, "put_result": 30, "dependencykei": [30, 32], "concret": [30, 32], "frozen": [30, 32], "lock_on_get": [30, 32], "get_depend": [30, 32], "empty_valid": [30, 32], "add_depend": [30, 32], "give": [30, 32], "track": [30, 32], "across": [30, 32], "multpl": [30, 32], "dependeci": [30, 32], "default_valu": [30, 32], "wish": 30, "custom": 30, "basicfifo": 30, "reiniti": 30, "semaphor": 30, "max_count": 30, "hardwaremetricsmanag": 30, "compos": 30, "get_metr": 30, "hwmetric": 30, "get_register_valu": 30, "metric_nam": 30, "reg_nam": 30, "qualifi": 30, "histogram": 30, "bucket": 30, "hwcounter": 30, "fully_qualified_nam": 30, "width_bit": 30, "human": 30, "incr": 30, "hwexphistogram": 30, "exponenti": 30, "distribut": 30, "sampl": 30, "durat": 30, "inf": 30, "minimum": 30, "bucket_count": 30, "sample_width": 30, "registers_width": 30, "max_valu": 30, "abl": 30, "metricmodel": 30, "add_regist": 30, "reg": [30, 32], "hwmetricregist": 30, "inherit": 30, "metrics_en": 30, "hwmetricsenabledkei": 30, "theirs": 30, "latencymeasur": 30, "event": 30, "slots_numb": 30, "max_lat": 30, "turn": [30, 32], "oldest": 30, "compris": 30, "join": 30, "metricregistermodel": 30, "fundament": 30, "singular": 30, "among": [30, 32], "reman": 30, "brief": 30, "argumentstoresultszipp": 30, "zip": 30, "cut": 30, "critic": 30, "calle": 30, "asymmetri": 30, "correctli": 30, "rate": 30, "reach": [30, 33], "capac": 30, "topologi": 30, "write_arg": 30, "args_layout": 30, "write_result": 30, "results_layout": 30, "client": 30, "somethig": 30, "server": 30, "deseri": 30, "proper": 30, "serialize_in": 30, "serialized_req_method": 30, "serialize_out": 30, "serialized_resp_method": 30, "port_count": 30, "len": 30, "resist": 30, "nonblock": 30, "overlap": 30, "boolean": 30, "catch": 30, "reason": 30, "influenc": 30, "cond1": 30, "cond2": 30, "memorybank": 30, "read_req": 30, "read_resp": 30, "elem_count": 30, "safe_writ": 30, "optimis": 30, "eg": 30, "x": [30, 32], "later": 30, "cattran": 30, "concaten": 30, "third": 30, "dst": 30, "method_list": 30, "connectandmaptran": 30, "behav": 30, "i_fun": 30, "recorddict": 30, "o_fun": 30, "methodfilt": 30, "desir": 30, "use_condit": 30, "drawback": 30, "simultaneu": 30, "bidirect": 30, "i_transform": 30, "o_transform": 30, "unmodifi": 30, "methodproduct": 30, "arbitrari": 30, "tri": 30, "succeed": 30, "make_assert_handl": 31, "my_assert": 31, "get_output": 31, "coreblockscommand": 31, "recordintdict": 31, "set_input": 31, "recordvaluedict": 31, "write_vcd_ext": 31, "engin": 31, "vcd_file": 31, "gtkw_file": 31, "now": 31, "pysimsimul": 31, "max_cycl": 31, "100000": 31, "add_transaction_modul": 31, "traces_fil": 31, "clk_period": 31, "1e": 31, "add_sync_process": 31, "add_process": 31, "passiv": 31, "add_clock": 31, "simpletestcircuit": 31, "_t_haselabor": 31, "dut": 31, "syncprocesswrapp": 31, "testcasewithsimul": 31, "testcas": 31, "valueerror": [31, 32], "add_all_mock": 31, "sim": 31, "frame_loc": 31, "add_class_mock": 31, "add_local_mock": 31, "random_wait": 31, "max_cycle_cnt": 31, "min_cycle_cnt": 31, "random_wait_geom": 31, "prob": 31, "till": 31, "run_simul": 31, "tick": 31, "cycle_cnt": 31, "guard_nested_collect": 31, "_t_nested_collect": 31, "profiler_process": 31, "def_method_mock": 31, "tb_getter": 31, "sched_prio": 31, "method_handle_loop": 31, "invoc": 31, "defer": 31, "sinc": 31, "evalu": 31, "eagerli": 31, "kwdata": 31, "call_do": 31, "call_init": 31, "call_result": 31, "call_tri": 31, "method_argu": 31, "method_handl": 31, "extra_settle_count": 31, "method_return": 31, "set_en": 31, "wait_until_don": 31, "assertkei": 32, "assert_bit": 32, "bug": 32, "otherwis": [32, 33], "detect": 32, "termin": 32, "warn": 32, "board": 32, "assigntyp": 32, "rh": 32, "lh": 32, "assignarg": 32, "assignfield": 32, "lhs_strict": 32, "rhs_strict": 32, "mismatch": 32, "accord": 32, "explicitli": 32, "castabl": 32, "subfield": 32, "align_down_to_power_of_two": 32, "num": 32, "align_to_power_of_two": 32, "average_dict_of_list": 32, "bits_from_int": 32, "int_to_sign": 32, "convert": 32, "u2": 32, "represent": [32, 33], "sign": 32, "layout_subset": 32, "make_hash": 32, "neg": 32, "negat": 32, "signed_to_int": 32, "auto_debug_sign": 32, "arrai": 32, "cl": 32, "assertloc": 32, "denot": 32, "lead": 32, "generationinfo": 32, "variou": 32, "metrics_loc": 32, "metricinfo": 32, "metadata": 32, "metricloc": 32, "transaction_signals_loc": 32, "transactionsignalsloc": 32, "method_signals_loc": 32, "methodsignalsloc": 32, "profile_data": 32, "consit": 32, "generate_verilog": 32, "top_modul": 32, "top_nam": 32, "idgener": 32, "def_help": 32, "func": 32, "from_method_layout": 32, "get_caller_class_nam": 32, "get_src_loc": 32, "method_def_help": 32, "mock_def_help": 32, "tb": 32, "silence_mustus": 32, "moduleconnector": 33, "anonym": 33, "onehotswitch": 33, "style": 33, "benefit": 33, "sig": 33, "onehotcas": 33, "0b01": 33, "0b10": 33, "onehotswitchdynam": 33, "signifi": 33, "roundrobin": 33, "greater": 33, "enableinsert": 33, "count_leading_zero": 33, "count_trailing_zero": 33, "flatten_sign": 33, "flatten": 33, "mod_incr": 33, "mod": 33, "popcount": 33}, "objects": {"": [[4, 0, 0, "-", "coreblocks"], [29, 0, 0, "-", "transactron"]], "coreblocks": [[5, 0, 0, "-", "cache"], [4, 0, 0, "-", "core"], [6, 0, 0, "-", "frontend"], [7, 0, 0, "-", "fu"], [9, 0, 0, "-", "lsu"], [10, 0, 0, "-", "params"], [11, 0, 0, "-", "peripherals"], [12, 0, 0, "-", "scheduler"], [13, 0, 0, "-", "stages"], [14, 0, 0, "-", "structs_common"], [15, 0, 0, "-", "utils"]], "coreblocks.cache": [[5, 0, 0, "-", "icache"], [5, 0, 0, "-", "iface"], [5, 0, 0, "-", "refiller"]], "coreblocks.cache.icache": [[5, 1, 1, "", "ICache"], [5, 1, 1, "", "ICacheBypass"]], "coreblocks.cache.icache.ICache": [[5, 2, 1, "", "__init__"], [5, 2, 1, "", "deserialize_addr"], [5, 2, 1, "", "serialize_addr"]], "coreblocks.cache.icache.ICacheBypass": [[5, 2, 1, "", "__init__"]], "coreblocks.cache.iface": [[5, 1, 1, "", "CacheInterface"], [5, 1, 1, "", "CacheRefillerInterface"]], "coreblocks.cache.iface.CacheInterface": [[5, 3, 1, "", "accept_res"], [5, 3, 1, "", "flush"], [5, 3, 1, "", "issue_req"]], "coreblocks.cache.iface.CacheRefillerInterface": [[5, 3, 1, "", "accept_refill"], [5, 3, 1, "", "start_refill"]], "coreblocks.cache.refiller": [[5, 1, 1, "", "SimpleCommonBusCacheRefiller"]], "coreblocks.cache.refiller.SimpleCommonBusCacheRefiller": [[5, 2, 1, "", "__init__"]], "coreblocks.core": [[4, 1, 1, "", "Core"]], "coreblocks.core.Core": [[4, 2, 1, "", "__init__"]], "coreblocks.frontend": [[6, 0, 0, "-", "decode_stage"], [6, 0, 0, "-", "fetch"], [6, 0, 0, "-", "instr_decoder"], [6, 0, 0, "-", "instr_description"], [6, 0, 0, "-", "rvc"]], "coreblocks.frontend.decode_stage": [[6, 1, 1, "", "DecodeStage"]], "coreblocks.frontend.decode_stage.DecodeStage": [[6, 2, 1, "", "__init__"]], "coreblocks.frontend.fetch": [[6, 1, 1, "", "Fetch"], [6, 1, 1, "", "UnalignedFetch"]], "coreblocks.frontend.fetch.Fetch": [[6, 2, 1, "", "__init__"]], "coreblocks.frontend.fetch.UnalignedFetch": [[6, 2, 1, "", "__init__"]], "coreblocks.frontend.instr_decoder": [[6, 1, 1, "", "InstrDecoder"]], "coreblocks.frontend.instr_decoder.InstrDecoder": [[6, 2, 1, "", "__init__"]], "coreblocks.frontend.instr_description": [[6, 1, 1, "", "Encoding"]], "coreblocks.frontend.instr_description.Encoding": [[6, 2, 1, "", "__init__"], [6, 3, 1, "", "funct12"], [6, 3, 1, "", "funct3"], [6, 3, 1, "", "funct7"], [6, 3, 1, "", "instr_type_override"], [6, 3, 1, "", "opcode"], [6, 3, 1, "", "rd_zero"], [6, 3, 1, "", "rs1_zero"]], "coreblocks.frontend.rvc": [[6, 1, 1, "", "InstrDecompress"], [6, 4, 1, "", "is_instr_compressed"]], "coreblocks.frontend.rvc.InstrDecompress": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "decompr_reg"], [6, 2, 1, "", "instr_mux"]], "coreblocks.fu": [[7, 0, 0, "-", "alu"], [7, 0, 0, "-", "div_unit"], [7, 0, 0, "-", "exception"], [7, 0, 0, "-", "fu_decoder"], [7, 0, 0, "-", "jumpbranch"], [7, 0, 0, "-", "mul_unit"], [7, 0, 0, "-", "priv"], [7, 0, 0, "-", "shift_unit"], [8, 0, 0, "-", "unsigned_multiplication"], [7, 0, 0, "-", "zbc"], [7, 0, 0, "-", "zbs"]], "coreblocks.fu.alu": [[7, 1, 1, "", "ALUComponent"], [7, 1, 1, "", "AluFuncUnit"]], "coreblocks.fu.alu.ALUComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.alu.AluFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.div_unit": [[7, 1, 1, "", "DivComponent"], [7, 1, 1, "", "DivFn"], [7, 1, 1, "", "DivUnit"], [7, 4, 1, "", "get_input"]], "coreblocks.fu.div_unit.DivComponent": [[7, 2, 1, "", "__init__"], [7, 3, 1, "", "div_fn"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"], [7, 3, 1, "", "ipc"]], "coreblocks.fu.div_unit.DivFn": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.div_unit.DivFn.Fn": [[7, 3, 1, "", "DIV"], [7, 3, 1, "", "DIVU"], [7, 3, 1, "", "REM"], [7, 3, 1, "", "REMU"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.div_unit.DivUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.exception": [[7, 1, 1, "", "ExceptionFuncUnit"], [7, 1, 1, "", "ExceptionUnitComponent"]], "coreblocks.fu.exception.ExceptionFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.exception.ExceptionUnitComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.fu_decoder": [[7, 1, 1, "", "Decoder"], [7, 1, 1, "", "DecoderManager"]], "coreblocks.fu.fu_decoder.Decoder": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.fu_decoder.DecoderManager": [[7, 3, 1, "", "Fn"], [7, 2, 1, "", "get_decoder"], [7, 2, 1, "", "get_function"], [7, 2, 1, "", "get_instructions"], [7, 2, 1, "", "get_op_types"]], "coreblocks.fu.jumpbranch": [[7, 1, 1, "", "JumpBranchFuncUnit"], [7, 1, 1, "", "JumpComponent"]], "coreblocks.fu.jumpbranch.JumpBranchFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.jumpbranch.JumpComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.mul_unit": [[7, 1, 1, "", "MulComponent"], [7, 1, 1, "", "MulFn"], [7, 1, 1, "", "MulType"], [7, 1, 1, "", "MulUnit"]], "coreblocks.fu.mul_unit.MulComponent": [[7, 2, 1, "", "__init__"], [7, 3, 1, "", "dsp_width"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"], [7, 3, 1, "", "mul_fn"], [7, 3, 1, "", "mul_unit_type"]], "coreblocks.fu.mul_unit.MulFn": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.mul_unit.MulFn.Fn": [[7, 3, 1, "", "MUL"], [7, 3, 1, "", "MULH"], [7, 3, 1, "", "MULHSU"], [7, 3, 1, "", "MULHU"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.mul_unit.MulType": [[7, 3, 1, "", "RECURSIVE_MUL"], [7, 3, 1, "", "SEQUENCE_MUL"], [7, 3, 1, "", "SHIFT_MUL"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.mul_unit.MulUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.priv": [[7, 1, 1, "", "PrivilegedFn"], [7, 1, 1, "", "PrivilegedFuncUnit"], [7, 1, 1, "", "PrivilegedUnitComponent"]], "coreblocks.fu.priv.PrivilegedFn": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.priv.PrivilegedFn.Fn": [[7, 3, 1, "", "MRET"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.priv.PrivilegedFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.priv.PrivilegedUnitComponent": [[7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.shift_unit": [[7, 1, 1, "", "ShiftFuncUnit"], [7, 1, 1, "", "ShiftUnitComponent"]], "coreblocks.fu.shift_unit.ShiftFuncUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.shift_unit.ShiftUnitComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.unsigned_multiplication": [[8, 0, 0, "-", "common"], [8, 0, 0, "-", "fast_recursive"], [8, 0, 0, "-", "sequence"], [8, 0, 0, "-", "shift"]], "coreblocks.fu.unsigned_multiplication.common": [[8, 1, 1, "", "DSPMulUnit"], [8, 1, 1, "", "MulBaseUnsigned"]], "coreblocks.fu.unsigned_multiplication.common.DSPMulUnit": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.common.MulBaseUnsigned": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.fast_recursive": [[8, 1, 1, "", "RecursiveUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.fast_recursive.RecursiveUnsignedMul": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.sequence": [[8, 1, 1, "", "SequentialUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.sequence.SequentialUnsignedMul": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.shift": [[8, 1, 1, "", "ShiftUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.shift.ShiftUnsignedMul": [[8, 2, 1, "", "__init__"]], "coreblocks.fu.zbc": [[7, 1, 1, "", "ClMultiplier"], [7, 1, 1, "", "ZbcComponent"], [7, 1, 1, "", "ZbcFn"], [7, 1, 1, "", "ZbcUnit"]], "coreblocks.fu.zbc.ClMultiplier": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "iterative_module"], [7, 2, 1, "", "recursive_module"]], "coreblocks.fu.zbc.ZbcComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"], [7, 3, 1, "", "recursion_depth"], [7, 3, 1, "", "zbc_fn"]], "coreblocks.fu.zbc.ZbcFn": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.zbc.ZbcFn.Fn": [[7, 3, 1, "", "CLMUL"], [7, 3, 1, "", "CLMULH"], [7, 3, 1, "", "CLMULR"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.zbc.ZbcUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.zbs": [[7, 1, 1, "", "Zbs"], [7, 1, 1, "", "ZbsComponent"], [7, 1, 1, "", "ZbsFunction"], [7, 1, 1, "", "ZbsUnit"]], "coreblocks.fu.zbs.Zbs": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.zbs.ZbsComponent": [[7, 2, 1, "", "__init__"], [7, 2, 1, "", "get_module"], [7, 2, 1, "", "get_optypes"]], "coreblocks.fu.zbs.ZbsFunction": [[7, 1, 1, "", "Fn"], [7, 2, 1, "", "get_instructions"]], "coreblocks.fu.zbs.ZbsFunction.Fn": [[7, 3, 1, "", "BCLR"], [7, 3, 1, "", "BEXT"], [7, 3, 1, "", "BINV"], [7, 3, 1, "", "BSET"], [7, 2, 1, "", "__new__"]], "coreblocks.fu.zbs.ZbsUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.lsu": [[9, 0, 0, "-", "dummyLsu"], [9, 0, 0, "-", "pma"]], "coreblocks.lsu.dummyLsu": [[9, 1, 1, "", "LSUBlockComponent"], [9, 1, 1, "", "LSUDummy"]], "coreblocks.lsu.dummyLsu.LSUBlockComponent": [[9, 2, 1, "", "get_module"], [9, 2, 1, "", "get_optypes"], [9, 2, 1, "", "get_rs_entry_count"]], "coreblocks.lsu.dummyLsu.LSUDummy": [[9, 2, 1, "", "__init__"]], "coreblocks.lsu.pma": [[9, 1, 1, "", "PMAChecker"], [9, 1, 1, "", "PMALayout"], [9, 1, 1, "", "PMARegion"]], "coreblocks.lsu.pma.PMAChecker": [[9, 2, 1, "", "__init__"]], "coreblocks.lsu.pma.PMALayout": [[9, 2, 1, "", "__init__"]], "coreblocks.lsu.pma.PMARegion": [[9, 2, 1, "", "__init__"], [9, 3, 1, "", "end"], [9, 3, 1, "", "mmio"], [9, 3, 1, "", "start"]], "coreblocks.params": [[10, 0, 0, "-", "configurations"], [10, 0, 0, "-", "fu_params"], [10, 0, 0, "-", "genparams"], [10, 0, 0, "-", "icache_params"], [10, 0, 0, "-", "instr"], [10, 0, 0, "-", "isa"], [10, 0, 0, "-", "keys"], [10, 0, 0, "-", "layouts"], [10, 0, 0, "-", "optypes"]], "coreblocks.params.configurations": [[10, 1, 1, "", "CoreConfiguration"]], "coreblocks.params.configurations.CoreConfiguration": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "allow_partial_extensions"], [10, 3, 1, "", "compressed"], [10, 3, 1, "", "debug_signals"], [10, 3, 1, "", "embedded"], [10, 3, 1, "", "func_units_config"], [10, 3, 1, "", "icache_block_size_bits"], [10, 3, 1, "", "icache_enable"], [10, 3, 1, "", "icache_sets_bits"], [10, 3, 1, "", "icache_ways"], [10, 3, 1, "", "phys_regs_bits"], [10, 3, 1, "", "pma"], [10, 2, 1, "", "replace"], [10, 3, 1, "", "rob_entries_bits"], [10, 3, 1, "", "start_pc"], [10, 3, 1, "", "xlen"]], "coreblocks.params.fu_params": [[10, 1, 1, "", "BlockComponentParams"], [10, 1, 1, "", "FunctionalComponentParams"], [10, 4, 1, "", "optypes_supported"]], "coreblocks.params.fu_params.BlockComponentParams": [[10, 2, 1, "", "get_module"], [10, 2, 1, "", "get_optypes"], [10, 2, 1, "", "get_rs_entry_count"]], "coreblocks.params.fu_params.FunctionalComponentParams": [[10, 2, 1, "", "get_module"], [10, 2, 1, "", "get_optypes"]], "coreblocks.params.genparams": [[10, 1, 1, "", "GenParams"]], "coreblocks.params.genparams.GenParams": [[10, 2, 1, "", "__init__"]], "coreblocks.params.icache_params": [[10, 1, 1, "", "ICacheParameters"]], "coreblocks.params.icache_params.ICacheParameters": [[10, 2, 1, "", "__init__"]], "coreblocks.params.instr": [[10, 1, 1, "", "BTypeInstr"], [10, 1, 1, "", "EBreakInstr"], [10, 1, 1, "", "ITypeInstr"], [10, 1, 1, "", "IllegalInstr"], [10, 1, 1, "", "JTypeInstr"], [10, 1, 1, "", "RTypeInstr"], [10, 1, 1, "", "STypeInstr"], [10, 1, 1, "", "UTypeInstr"]], "coreblocks.params.instr.BTypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.EBreakInstr": [[10, 2, 1, "", "__init__"]], "coreblocks.params.instr.ITypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.IllegalInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.JTypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.RTypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.STypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.instr.UTypeInstr": [[10, 2, 1, "", "__init__"], [10, 2, 1, "", "pack"]], "coreblocks.params.isa": [[10, 1, 1, "", "ExceptionCause"], [10, 1, 1, "", "Extension"], [10, 1, 1, "", "FenceFm"], [10, 1, 1, "", "FenceTarget"], [10, 1, 1, "", "Funct12"], [10, 1, 1, "", "Funct3"], [10, 1, 1, "", "Funct7"], [10, 1, 1, "", "ISA"], [10, 1, 1, "", "InstrType"], [10, 1, 1, "", "Opcode"], [10, 1, 1, "", "Registers"]], "coreblocks.params.isa.ExceptionCause": [[10, 3, 1, "", "BREAKPOINT"], [10, 3, 1, "", "ENVIRONMENT_CALL_FROM_M"], [10, 3, 1, "", "ENVIRONMENT_CALL_FROM_S"], [10, 3, 1, "", "ENVIRONMENT_CALL_FROM_U"], [10, 3, 1, "", "ILLEGAL_INSTRUCTION"], [10, 3, 1, "", "INSTRUCTION_ACCESS_FAULT"], [10, 3, 1, "", "INSTRUCTION_ADDRESS_MISALIGNED"], [10, 3, 1, "", "INSTRUCTION_PAGE_FAULT"], [10, 3, 1, "", "LOAD_ACCESS_FAULT"], [10, 3, 1, "", "LOAD_ADDRESS_MISALIGNED"], [10, 3, 1, "", "LOAD_PAGE_FAULT"], [10, 3, 1, "", "STORE_ACCESS_FAULT"], [10, 3, 1, "", "STORE_ADDRESS_MISALIGNED"], [10, 3, 1, "", "STORE_PAGE_FAULT"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Extension": [[10, 3, 1, "", "A"], [10, 3, 1, "", "B"], [10, 3, 1, "", "C"], [10, 3, 1, "", "D"], [10, 3, 1, "", "E"], [10, 3, 1, "", "F"], [10, 3, 1, "", "G"], [10, 3, 1, "", "I"], [10, 3, 1, "", "J"], [10, 3, 1, "", "L"], [10, 3, 1, "", "M"], [10, 3, 1, "", "N"], [10, 3, 1, "", "P"], [10, 3, 1, "", "Q"], [10, 3, 1, "", "T"], [10, 3, 1, "", "V"], [10, 3, 1, "", "XINTMACHINEMODE"], [10, 3, 1, "", "XINTSUPERVISOR"], [10, 3, 1, "", "ZAM"], [10, 3, 1, "", "ZBA"], [10, 3, 1, "", "ZBB"], [10, 3, 1, "", "ZBC"], [10, 3, 1, "", "ZBS"], [10, 3, 1, "", "ZDINX"], [10, 3, 1, "", "ZFH"], [10, 3, 1, "", "ZFHMIN"], [10, 3, 1, "", "ZFINX"], [10, 3, 1, "", "ZHINX"], [10, 3, 1, "", "ZICNTR"], [10, 3, 1, "", "ZICSR"], [10, 3, 1, "", "ZIFENCEI"], [10, 3, 1, "", "ZIHINTNTL"], [10, 3, 1, "", "ZIHINTPAUSE"], [10, 3, 1, "", "ZIHPM"], [10, 3, 1, "", "ZMMUL"], [10, 3, 1, "", "ZTSO"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.FenceFm": [[10, 3, 1, "", "NONE"], [10, 3, 1, "", "TSO"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.FenceTarget": [[10, 3, 1, "", "DEV_I"], [10, 3, 1, "", "DEV_O"], [10, 3, 1, "", "MEM_R"], [10, 3, 1, "", "MEM_W"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct12": [[10, 3, 1, "", "CLZ"], [10, 3, 1, "", "CPOP"], [10, 3, 1, "", "CTZ"], [10, 3, 1, "", "EBREAK"], [10, 3, 1, "", "ECALL"], [10, 3, 1, "", "MRET"], [10, 3, 1, "", "ORCB"], [10, 3, 1, "", "REV8_32"], [10, 3, 1, "", "REV8_64"], [10, 3, 1, "", "SEXTB"], [10, 3, 1, "", "SEXTH"], [10, 3, 1, "", "SRET"], [10, 3, 1, "", "WFI"], [10, 3, 1, "", "ZEXTH"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct3": [[10, 3, 1, "", "ADD"], [10, 3, 1, "", "AND"], [10, 3, 1, "", "ANDN"], [10, 3, 1, "", "B"], [10, 3, 1, "", "BCLR"], [10, 3, 1, "", "BEQ"], [10, 3, 1, "", "BEXT"], [10, 3, 1, "", "BGE"], [10, 3, 1, "", "BGEU"], [10, 3, 1, "", "BINV"], [10, 3, 1, "", "BLT"], [10, 3, 1, "", "BLTU"], [10, 3, 1, "", "BNE"], [10, 3, 1, "", "BSET"], [10, 3, 1, "", "BU"], [10, 3, 1, "", "CLMUL"], [10, 3, 1, "", "CLMULH"], [10, 3, 1, "", "CLMULR"], [10, 3, 1, "", "CLZ"], [10, 3, 1, "", "CPOP"], [10, 3, 1, "", "CSRRC"], [10, 3, 1, "", "CSRRCI"], [10, 3, 1, "", "CSRRS"], [10, 3, 1, "", "CSRRSI"], [10, 3, 1, "", "CSRRW"], [10, 3, 1, "", "CSRRWI"], [10, 3, 1, "", "CTZ"], [10, 3, 1, "", "D"], [10, 3, 1, "", "DIV"], [10, 3, 1, "", "DIVU"], [10, 3, 1, "", "DIVUW"], [10, 3, 1, "", "DIVW"], [10, 3, 1, "", "FENCE"], [10, 3, 1, "", "FENCEI"], [10, 3, 1, "", "H"], [10, 3, 1, "", "HU"], [10, 3, 1, "", "JALR"], [10, 3, 1, "", "MAX"], [10, 3, 1, "", "MAXU"], [10, 3, 1, "", "MIN"], [10, 3, 1, "", "MINU"], [10, 3, 1, "", "MUL"], [10, 3, 1, "", "MULH"], [10, 3, 1, "", "MULHSU"], [10, 3, 1, "", "MULHU"], [10, 3, 1, "", "MULW"], [10, 3, 1, "", "OR"], [10, 3, 1, "", "ORCB"], [10, 3, 1, "", "ORN"], [10, 3, 1, "", "PRIV"], [10, 3, 1, "", "REM"], [10, 3, 1, "", "REMU"], [10, 3, 1, "", "REMUW"], [10, 3, 1, "", "REMW"], [10, 3, 1, "", "REV8"], [10, 3, 1, "", "ROL"], [10, 3, 1, "", "ROR"], [10, 3, 1, "", "SEXTB"], [10, 3, 1, "", "SEXTH"], [10, 3, 1, "", "SH1ADD"], [10, 3, 1, "", "SH2ADD"], [10, 3, 1, "", "SH3ADD"], [10, 3, 1, "", "SLL"], [10, 3, 1, "", "SLT"], [10, 3, 1, "", "SLTU"], [10, 3, 1, "", "SR"], [10, 3, 1, "", "SUB"], [10, 3, 1, "", "W"], [10, 3, 1, "", "XNOR"], [10, 3, 1, "", "XOR"], [10, 3, 1, "", "ZEXTH"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct7": [[10, 3, 1, "", "ADD"], [10, 3, 1, "", "AND"], [10, 3, 1, "", "ANDN"], [10, 3, 1, "", "BCLR"], [10, 3, 1, "", "BEXT"], [10, 3, 1, "", "BINV"], [10, 3, 1, "", "BSET"], [10, 3, 1, "", "CLMUL"], [10, 3, 1, "", "CLZ"], [10, 3, 1, "", "CPOP"], [10, 3, 1, "", "CTZ"], [10, 3, 1, "", "MAX"], [10, 3, 1, "", "MIN"], [10, 3, 1, "", "MULDIV"], [10, 3, 1, "", "OR"], [10, 3, 1, "", "ORCB"], [10, 3, 1, "", "ORN"], [10, 3, 1, "", "REV8"], [10, 3, 1, "", "ROL"], [10, 3, 1, "", "ROR"], [10, 3, 1, "", "SA"], [10, 3, 1, "", "SEXTB"], [10, 3, 1, "", "SEXTH"], [10, 3, 1, "", "SFENCEVMA"], [10, 3, 1, "", "SH1ADD"], [10, 3, 1, "", "SH2ADD"], [10, 3, 1, "", "SH3ADD"], [10, 3, 1, "", "SL"], [10, 3, 1, "", "SLT"], [10, 3, 1, "", "SUB"], [10, 3, 1, "", "XNOR"], [10, 3, 1, "", "XOR"], [10, 3, 1, "", "ZEXTH"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.ISA": [[10, 2, 1, "", "__init__"]], "coreblocks.params.isa.InstrType": [[10, 3, 1, "", "B"], [10, 3, 1, "", "I"], [10, 3, 1, "", "J"], [10, 3, 1, "", "R"], [10, 3, 1, "", "S"], [10, 3, 1, "", "U"]], "coreblocks.params.isa.Opcode": [[10, 3, 1, "", "AUIPC"], [10, 3, 1, "", "BRANCH"], [10, 3, 1, "", "JAL"], [10, 3, 1, "", "JALR"], [10, 3, 1, "", "LOAD"], [10, 3, 1, "", "LOAD_FP"], [10, 3, 1, "", "LUI"], [10, 3, 1, "", "MISC_MEM"], [10, 3, 1, "", "OP"], [10, 3, 1, "", "OP32"], [10, 3, 1, "", "OP_IMM"], [10, 3, 1, "", "OP_IMM_32"], [10, 3, 1, "", "STORE"], [10, 3, 1, "", "STORE_FP"], [10, 3, 1, "", "SYSTEM"], [10, 2, 1, "", "__new__"]], "coreblocks.params.isa.Registers": [[10, 3, 1, "", "A0"], [10, 3, 1, "", "A1"], [10, 3, 1, "", "A2"], [10, 3, 1, "", "A3"], [10, 3, 1, "", "A4"], [10, 3, 1, "", "A5"], [10, 3, 1, "", "A6"], [10, 3, 1, "", "A7"], [10, 3, 1, "", "FP"], [10, 3, 1, "", "GP"], [10, 3, 1, "", "RA"], [10, 3, 1, "", "S0"], [10, 3, 1, "", "S1"], [10, 3, 1, "", "S10"], [10, 3, 1, "", "S11"], [10, 3, 1, "", "S2"], [10, 3, 1, "", "S3"], [10, 3, 1, "", "S4"], [10, 3, 1, "", "S5"], [10, 3, 1, "", "S6"], [10, 3, 1, "", "S7"], [10, 3, 1, "", "S8"], [10, 3, 1, "", "S9"], [10, 3, 1, "", "SP"], [10, 3, 1, "", "T0"], [10, 3, 1, "", "T1"], [10, 3, 1, "", "T2"], [10, 3, 1, "", "T3"], [10, 3, 1, "", "T4"], [10, 3, 1, "", "T5"], [10, 3, 1, "", "T6"], [10, 3, 1, "", "TP"], [10, 3, 1, "", "X0"], [10, 3, 1, "", "X1"], [10, 3, 1, "", "X10"], [10, 3, 1, "", "X11"], [10, 3, 1, "", "X12"], [10, 3, 1, "", "X13"], [10, 3, 1, "", "X14"], [10, 3, 1, "", "X15"], [10, 3, 1, "", "X16"], [10, 3, 1, "", "X17"], [10, 3, 1, "", "X18"], [10, 3, 1, "", "X19"], [10, 3, 1, "", "X2"], [10, 3, 1, "", "X20"], [10, 3, 1, "", "X21"], [10, 3, 1, "", "X22"], [10, 3, 1, "", "X23"], [10, 3, 1, "", "X24"], [10, 3, 1, "", "X25"], [10, 3, 1, "", "X26"], [10, 3, 1, "", "X27"], [10, 3, 1, "", "X28"], [10, 3, 1, "", "X29"], [10, 3, 1, "", "X3"], [10, 3, 1, "", "X30"], [10, 3, 1, "", "X31"], [10, 3, 1, "", "X4"], [10, 3, 1, "", "X5"], [10, 3, 1, "", "X6"], [10, 3, 1, "", "X7"], [10, 3, 1, "", "X8"], [10, 3, 1, "", "X9"], [10, 3, 1, "", "ZERO"], [10, 2, 1, "", "__new__"]], "coreblocks.params.keys": [[10, 1, 1, "", "AsyncInterruptInsertSignalKey"], [10, 1, 1, "", "BranchVerifyKey"], [10, 1, 1, "", "CommonBusDataKey"], [10, 1, 1, "", "ExceptionReportKey"], [10, 1, 1, "", "FetchResumeKey"], [10, 1, 1, "", "GenericCSRRegistersKey"], [10, 1, 1, "", "InstructionPrecommitKey"], [10, 1, 1, "", "MretKey"]], "coreblocks.params.keys.AsyncInterruptInsertSignalKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.BranchVerifyKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.CommonBusDataKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.ExceptionReportKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.FetchResumeKey": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "unifier"]], "coreblocks.params.keys.GenericCSRRegistersKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.keys.InstructionPrecommitKey": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "unifier"]], "coreblocks.params.keys.MretKey": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts": [[10, 1, 1, "", "CSRLayouts"], [10, 1, 1, "", "CommonLayoutFields"], [10, 1, 1, "", "DecodeLayouts"], [10, 1, 1, "", "FetchLayouts"], [10, 1, 1, "", "FuncUnitLayouts"], [10, 1, 1, "", "ICacheLayouts"], [10, 1, 1, "", "JumpBranchLayouts"], [10, 1, 1, "", "LSULayouts"], [10, 1, 1, "", "RATLayouts"], [10, 1, 1, "", "RFLayouts"], [10, 1, 1, "", "ROBLayouts"], [10, 1, 1, "", "RSInterfaceLayouts"], [10, 1, 1, "", "RSLayouts"], [10, 1, 1, "", "RetirementLayouts"], [10, 1, 1, "", "SchedulerLayouts"], [10, 1, 1, "", "UnsignedMulUnitLayouts"]], "coreblocks.params.layouts.CSRLayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.CommonLayoutFields": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "addr"], [10, 3, 1, "", "cause"], [10, 3, 1, "", "csr"], [10, 3, 1, "", "data"], [10, 3, 1, "", "error"], [10, 3, 1, "", "exception"], [10, 3, 1, "", "exec_fn"], [10, 3, 1, "", "exec_fn_layout"], [10, 3, 1, "", "funct3"], [10, 3, 1, "", "funct7"], [10, 3, 1, "", "imm"], [10, 3, 1, "", "instr"], [10, 3, 1, "", "op_type"], [10, 3, 1, "", "pc"], [10, 3, 1, "", "reg_id"], [10, 3, 1, "", "reg_val"], [10, 3, 1, "", "regs_l"], [10, 3, 1, "", "regs_p"], [10, 3, 1, "", "rl_dst"], [10, 3, 1, "", "rl_s1"], [10, 3, 1, "", "rl_s2"], [10, 3, 1, "", "rob_id"], [10, 3, 1, "", "rp_dst"], [10, 3, 1, "", "rp_s1"], [10, 3, 1, "", "rp_s2"], [10, 3, 1, "", "s1_val"], [10, 3, 1, "", "s2_val"], [10, 3, 1, "", "side_fx"]], "coreblocks.params.layouts.DecodeLayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.FetchLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "access_fault"], [10, 3, 1, "", "rvc"]], "coreblocks.params.layouts.FuncUnitLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "result"]], "coreblocks.params.layouts.ICacheLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "error"]], "coreblocks.params.layouts.JumpBranchLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "verify_branch"]], "coreblocks.params.layouts.LSULayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RATLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "old_rp_dst"]], "coreblocks.params.layouts.RFLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "valid"]], "coreblocks.params.layouts.ROBLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "done"], [10, 3, 1, "", "end"], [10, 3, 1, "", "rob_data"], [10, 3, 1, "", "start"]], "coreblocks.params.layouts.RSInterfaceLayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RSLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "ready_list"]], "coreblocks.params.layouts.RetirementLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "flushing"]], "coreblocks.params.layouts.SchedulerLayouts": [[10, 2, 1, "", "__init__"], [10, 3, 1, "", "regs_l_rob_in"], [10, 3, 1, "", "regs_p_alloc_out"], [10, 3, 1, "", "rs_entry_id"], [10, 3, 1, "", "rs_selected"]], "coreblocks.params.layouts.UnsignedMulUnitLayouts": [[10, 2, 1, "", "__init__"]], "coreblocks.params.optypes": [[10, 1, 1, "", "OpType"], [10, 4, 1, "", "optypes_required_by_extensions"]], "coreblocks.params.optypes.OpType": [[10, 3, 1, "", "ADDRESS_GENERATION"], [10, 3, 1, "", "ARITHMETIC"], [10, 3, 1, "", "AUIPC"], [10, 3, 1, "", "BIT_MANIPULATION"], [10, 3, 1, "", "BIT_ROTATION"], [10, 3, 1, "", "BRANCH"], [10, 3, 1, "", "CLMUL"], [10, 3, 1, "", "COMPARE"], [10, 3, 1, "", "CSR_IMM"], [10, 3, 1, "", "CSR_REG"], [10, 3, 1, "", "DIV_REM"], [10, 3, 1, "", "EBREAK"], [10, 3, 1, "", "ECALL"], [10, 3, 1, "", "EXCEPTION"], [10, 3, 1, "", "FENCE"], [10, 3, 1, "", "FENCEI"], [10, 3, 1, "", "JAL"], [10, 3, 1, "", "JALR"], [10, 3, 1, "", "LOAD"], [10, 3, 1, "", "LOGIC"], [10, 3, 1, "", "MRET"], [10, 3, 1, "", "MUL"], [10, 3, 1, "", "SFENCEVMA"], [10, 3, 1, "", "SHIFT"], [10, 3, 1, "", "SINGLE_BIT_MANIPULATION"], [10, 3, 1, "", "SRET"], [10, 3, 1, "", "STORE"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_1"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_2"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_3"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_4"], [10, 3, 1, "", "UNARY_BIT_MANIPULATION_5"], [10, 3, 1, "", "UNKNOWN"], [10, 3, 1, "", "WFI"], [10, 2, 1, "", "__new__"]], "coreblocks.peripherals": [[11, 0, 0, "-", "axi_lite"], [11, 0, 0, "-", "bus_adapter"], [11, 0, 0, "-", "wishbone"]], "coreblocks.peripherals.axi_lite": [[11, 1, 1, "", "AXILiteInterface"], [11, 1, 1, "", "AXILiteMaster"], [11, 1, 1, "", "AXILiteParameters"], [11, 1, 1, "", "AXILiteSignature"]], "coreblocks.peripherals.axi_lite.AXILiteInterface": [[11, 3, 1, "", "read_address"], [11, 3, 1, "", "read_data"], [11, 3, 1, "", "write_address"], [11, 3, 1, "", "write_data"], [11, 3, 1, "", "write_response"]], "coreblocks.peripherals.axi_lite.AXILiteMaster": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "axil_master"], [11, 2, 1, "", "result_handler"], [11, 2, 1, "", "start_request_transaction"], [11, 2, 1, "", "state_machine_request"]], "coreblocks.peripherals.axi_lite.AXILiteParameters": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.axi_lite.AXILiteSignature": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.bus_adapter": [[11, 1, 1, "", "AXILiteMasterAdapter"], [11, 1, 1, "", "BusMasterInterface"], [11, 1, 1, "", "WishboneMasterAdapter"]], "coreblocks.peripherals.bus_adapter.AXILiteMasterAdapter": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.bus_adapter.BusMasterInterface": [[11, 3, 1, "", "get_read_response"], [11, 3, 1, "", "get_write_response"], [11, 3, 1, "", "params"], [11, 3, 1, "", "request_read"], [11, 3, 1, "", "request_write"]], "coreblocks.peripherals.bus_adapter.WishboneMasterAdapter": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone": [[11, 1, 1, "", "PipelinedWishboneMaster"], [11, 1, 1, "", "WishboneArbiter"], [11, 1, 1, "", "WishboneInterface"], [11, 1, 1, "", "WishboneMaster"], [11, 1, 1, "", "WishboneMasterMethodLayout"], [11, 1, 1, "", "WishboneMemorySlave"], [11, 1, 1, "", "WishboneMuxer"], [11, 1, 1, "", "WishboneParameters"], [11, 1, 1, "", "WishboneSignature"]], "coreblocks.peripherals.wishbone.PipelinedWishboneMaster": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "generate_method_layouts"], [11, 3, 1, "", "wb"]], "coreblocks.peripherals.wishbone.WishboneArbiter": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "masters"], [11, 3, 1, "", "slave_wb"]], "coreblocks.peripherals.wishbone.WishboneInterface": [[11, 3, 1, "", "ack"], [11, 3, 1, "", "adr"], [11, 3, 1, "", "cyc"], [11, 3, 1, "", "dat_r"], [11, 3, 1, "", "dat_w"], [11, 3, 1, "", "err"], [11, 3, 1, "", "lock"], [11, 3, 1, "", "rst"], [11, 3, 1, "", "rty"], [11, 3, 1, "", "sel"], [11, 3, 1, "", "stall"], [11, 3, 1, "", "stb"], [11, 3, 1, "", "we"]], "coreblocks.peripherals.wishbone.WishboneMaster": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "wb_master"]], "coreblocks.peripherals.wishbone.WishboneMasterMethodLayout": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMemorySlave": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "bus"]], "coreblocks.peripherals.wishbone.WishboneMuxer": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "master_wb"], [11, 3, 1, "", "slaves"]], "coreblocks.peripherals.wishbone.WishboneParameters": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneSignature": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "create"]], "coreblocks.scheduler": [[12, 0, 0, "-", "scheduler"], [12, 0, 0, "-", "wakeup_select"]], "coreblocks.scheduler.scheduler": [[12, 1, 1, "", "Scheduler"]], "coreblocks.scheduler.scheduler.Scheduler": [[12, 2, 1, "", "__init__"]], "coreblocks.scheduler.wakeup_select": [[12, 1, 1, "", "WakeupSelect"]], "coreblocks.scheduler.wakeup_select.WakeupSelect": [[12, 2, 1, "", "__init__"]], "coreblocks.stages": [[13, 0, 0, "-", "backend"], [13, 0, 0, "-", "func_blocks_unifier"], [13, 0, 0, "-", "retirement"], [13, 0, 0, "-", "rs_func_block"]], "coreblocks.stages.backend": [[13, 1, 1, "", "ResultAnnouncement"]], "coreblocks.stages.backend.ResultAnnouncement": [[13, 2, 1, "", "__init__"], [13, 2, 1, "", "debug_signals"]], "coreblocks.stages.func_blocks_unifier": [[13, 1, 1, "", "FuncBlocksUnifier"]], "coreblocks.stages.func_blocks_unifier.FuncBlocksUnifier": [[13, 2, 1, "", "__init__"], [13, 2, 1, "", "get_extra_method"]], "coreblocks.stages.retirement": [[13, 1, 1, "", "Retirement"]], "coreblocks.stages.retirement.Retirement": [[13, 2, 1, "", "__init__"]], "coreblocks.stages.rs_func_block": [[13, 1, 1, "", "RSBlockComponent"], [13, 1, 1, "", "RSFuncBlock"]], "coreblocks.stages.rs_func_block.RSBlockComponent": [[13, 2, 1, "", "__init__"], [13, 3, 1, "", "func_units"], [13, 2, 1, "", "get_module"], [13, 2, 1, "", "get_optypes"], [13, 2, 1, "", "get_rs_entry_count"], [13, 3, 1, "", "rs_entries"]], "coreblocks.stages.rs_func_block.RSFuncBlock": [[13, 2, 1, "", "__init__"]], "coreblocks.structs_common": [[14, 0, 0, "-", "csr"], [14, 0, 0, "-", "csr_generic"], [14, 0, 0, "-", "exception"], [14, 0, 0, "-", "instr_counter"], [14, 0, 0, "-", "interrupt_controller"], [14, 0, 0, "-", "rat"], [14, 0, 0, "-", "rf"], [14, 0, 0, "-", "rob"], [14, 0, 0, "-", "rs"]], "coreblocks.structs_common.csr": [[14, 1, 1, "", "CSRBlockComponent"], [14, 1, 1, "", "CSRListKey"], [14, 1, 1, "", "CSRRegister"], [14, 1, 1, "", "CSRUnit"], [14, 1, 1, "", "PrivilegeLevel"], [14, 4, 1, "", "csr_access_privilege"]], "coreblocks.structs_common.csr.CSRBlockComponent": [[14, 2, 1, "", "get_module"], [14, 2, 1, "", "get_optypes"], [14, 2, 1, "", "get_rs_entry_count"]], "coreblocks.structs_common.csr.CSRListKey": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.CSRRegister": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.CSRUnit": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.PrivilegeLevel": [[14, 3, 1, "", "MACHINE"], [14, 3, 1, "", "SUPERVISOR"], [14, 3, 1, "", "USER"], [14, 2, 1, "", "__new__"]], "coreblocks.structs_common.csr_generic": [[14, 1, 1, "", "CSRAddress"], [14, 1, 1, "", "DoubleCounterCSR"], [14, 1, 1, "", "GenericCSRRegisters"], [14, 1, 1, "", "MachineModeCSRRegisters"]], "coreblocks.structs_common.csr_generic.CSRAddress": [[14, 3, 1, "", "CYCLE"], [14, 3, 1, "", "CYCLEH"], [14, 3, 1, "", "INSTRET"], [14, 3, 1, "", "INSTRETH"], [14, 3, 1, "", "MCAUSE"], [14, 3, 1, "", "MEPC"], [14, 3, 1, "", "MTVEC"], [14, 3, 1, "", "TIME"], [14, 3, 1, "", "TIMEH"], [14, 2, 1, "", "__new__"]], "coreblocks.structs_common.csr_generic.DoubleCounterCSR": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr_generic.GenericCSRRegisters": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr_generic.MachineModeCSRRegisters": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.exception": [[14, 1, 1, "", "ExceptionCauseRegister"], [14, 4, 1, "", "should_update_prioriy"]], "coreblocks.structs_common.exception.ExceptionCauseRegister": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.instr_counter": [[14, 1, 1, "", "CoreInstructionCounter"]], "coreblocks.structs_common.instr_counter.CoreInstructionCounter": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.interrupt_controller": [[14, 1, 1, "", "InterruptController"]], "coreblocks.structs_common.interrupt_controller.InterruptController": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rat": [[14, 1, 1, "", "FRAT"], [14, 1, 1, "", "RRAT"]], "coreblocks.structs_common.rat.FRAT": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rat.RRAT": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rf": [[14, 1, 1, "", "RegisterFile"]], "coreblocks.structs_common.rf.RegisterFile": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rob": [[14, 1, 1, "", "ReorderBuffer"]], "coreblocks.structs_common.rob.ReorderBuffer": [[14, 2, 1, "", "__init__"]], "coreblocks.structs_common.rs": [[14, 1, 1, "", "RS"]], "coreblocks.structs_common.rs.RS": [[14, 2, 1, "", "__init__"]], "coreblocks.utils": [[15, 0, 0, "-", "protocols"]], "coreblocks.utils.protocols": [[15, 1, 1, "", "FuncBlock"], [15, 1, 1, "", "FuncUnit"]], "coreblocks.utils.protocols.FuncBlock": [[15, 3, 1, "", "get_result"], [15, 3, 1, "", "insert"], [15, 3, 1, "", "select"], [15, 3, 1, "", "update"]], "coreblocks.utils.protocols.FuncUnit": [[15, 3, 1, "", "accept"], [15, 3, 1, "", "issue"]], "transactron": [[29, 1, 1, "", "Method"], [29, 1, 1, "", "TModule"], [29, 1, 1, "", "Transaction"], [29, 1, 1, "", "TransactionManager"], [29, 1, 1, "", "TransactionModule"], [29, 0, 0, "-", "core"], [29, 4, 1, "", "def_method"], [29, 0, 0, "-", "graph"], [30, 0, 0, "-", "lib"], [29, 0, 0, "-", "profiler"], [31, 0, 0, "-", "testing"], [29, 0, 0, "-", "tracing"], [32, 0, 0, "-", "utils"]], "transactron.Method": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "body"], [29, 2, 1, "", "debug_signals"], [29, 5, 1, "", "layout_in"], [29, 5, 1, "", "layout_out"], [29, 2, 1, "", "like"], [29, 2, 1, "", "proxy"]], "transactron.TModule": [[29, 2, 1, "", "AvoidedIf"], [29, 2, 1, "", "Case"], [29, 2, 1, "", "Default"], [29, 2, 1, "", "Elif"], [29, 2, 1, "", "Else"], [29, 2, 1, "", "FSM"], [29, 2, 1, "", "If"], [29, 2, 1, "", "State"], [29, 2, 1, "", "Switch"], [29, 2, 1, "", "__init__"], [29, 5, 1, "", "ctrl_path"], [29, 5, 1, "", "next"]], "transactron.Transaction": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "body"], [29, 2, 1, "", "debug_signals"]], "transactron.TransactionManager": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "add_transaction"], [29, 2, 1, "", "debug_signals"], [29, 2, 1, "", "print_info"], [29, 2, 1, "", "visual_graph"]], "transactron.TransactionModule": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "context"]], "transactron.core": [[29, 1, 1, "", "Method"], [29, 1, 1, "", "Priority"], [29, 1, 1, "", "TModule"], [29, 1, 1, "", "Transaction"], [29, 1, 1, "", "TransactionManager"], [29, 1, 1, "", "TransactionManagerKey"], [29, 1, 1, "", "TransactionModule"], [29, 4, 1, "", "def_method"], [29, 4, 1, "", "eager_deterministic_cc_scheduler"], [29, 4, 1, "", "trivial_roundrobin_cc_scheduler"]], "transactron.core.Method": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "body"], [29, 2, 1, "", "debug_signals"], [29, 5, 1, "", "layout_in"], [29, 5, 1, "", "layout_out"], [29, 2, 1, "", "like"], [29, 2, 1, "", "proxy"]], "transactron.core.Priority": [[29, 3, 1, "", "LEFT"], [29, 3, 1, "", "RIGHT"], [29, 3, 1, "", "UNDEFINED"]], "transactron.core.TModule": [[29, 2, 1, "", "AvoidedIf"], [29, 2, 1, "", "Case"], [29, 2, 1, "", "Default"], [29, 2, 1, "", "Elif"], [29, 2, 1, "", "Else"], [29, 2, 1, "", "FSM"], [29, 2, 1, "", "If"], [29, 2, 1, "", "State"], [29, 2, 1, "", "Switch"], [29, 2, 1, "", "__init__"], [29, 5, 1, "", "ctrl_path"], [29, 5, 1, "", "next"]], "transactron.core.Transaction": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "body"], [29, 2, 1, "", "debug_signals"]], "transactron.core.TransactionManager": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "add_transaction"], [29, 2, 1, "", "debug_signals"], [29, 2, 1, "", "print_info"], [29, 2, 1, "", "visual_graph"]], "transactron.core.TransactionManagerKey": [[29, 2, 1, "", "__init__"]], "transactron.core.TransactionModule": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "context"]], "transactron.graph": [[29, 1, 1, "", "Direction"], [29, 1, 1, "", "Owned"], [29, 1, 1, "", "OwnershipGraph"]], "transactron.graph.Direction": [[29, 3, 1, "", "IN"], [29, 3, 1, "", "INOUT"], [29, 3, 1, "", "NONE"], [29, 3, 1, "", "OUT"], [29, 2, 1, "", "__new__"]], "transactron.graph.Owned": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "name"], [29, 3, 1, "", "owner"]], "transactron.graph.OwnershipGraph": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "dump"], [29, 2, 1, "", "dump_dot"], [29, 2, 1, "", "dump_elk"], [29, 2, 1, "", "dump_mermaid"], [29, 2, 1, "", "get_hier_name"], [29, 2, 1, "", "get_name"], [29, 2, 1, "", "insert_edge"], [29, 2, 1, "", "insert_node"], [29, 3, 1, "", "mermaid_direction"], [29, 2, 1, "", "prune"], [29, 2, 1, "", "remember"], [29, 2, 1, "", "remember_field"]], "transactron.lib": [[30, 0, 0, "-", "adapters"], [30, 0, 0, "-", "buttons"], [30, 0, 0, "-", "connectors"], [30, 0, 0, "-", "dependencies"], [30, 0, 0, "-", "fifo"], [30, 0, 0, "-", "metrics"], [30, 0, 0, "-", "reqres"], [30, 0, 0, "-", "simultaneous"], [30, 0, 0, "-", "storage"], [30, 0, 0, "-", "transformers"]], "transactron.lib.adapters": [[30, 1, 1, "", "Adapter"], [30, 1, 1, "", "AdapterBase"], [30, 1, 1, "", "AdapterTrans"]], "transactron.lib.adapters.Adapter": [[30, 2, 1, "", "__init__"]], "transactron.lib.adapters.AdapterBase": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "data_in"], [30, 3, 1, "", "data_out"], [30, 2, 1, "", "debug_signals"]], "transactron.lib.adapters.AdapterTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.buttons": [[30, 1, 1, "", "ClickIn"], [30, 1, 1, "", "ClickOut"]], "transactron.lib.buttons.ClickIn": [[30, 2, 1, "", "__init__"]], "transactron.lib.buttons.ClickOut": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors": [[30, 1, 1, "", "Connect"], [30, 1, 1, "", "ConnectTrans"], [30, 1, 1, "", "FIFO"], [30, 1, 1, "", "Forwarder"], [30, 1, 1, "", "ManyToOneConnectTrans"]], "transactron.lib.connectors.Connect": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors.ConnectTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors.FIFO": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors.Forwarder": [[30, 2, 1, "", "__init__"]], "transactron.lib.connectors.ManyToOneConnectTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.dependencies": [[30, 1, 1, "", "DependencyKey"], [30, 1, 1, "", "DependencyManager"], [30, 1, 1, "", "ListKey"], [30, 1, 1, "", "SimpleKey"], [30, 1, 1, "", "UnifierKey"]], "transactron.lib.dependencies.DependencyKey": [[30, 2, 1, "", "combine"], [30, 3, 1, "", "empty_valid"], [30, 3, 1, "", "lock_on_get"]], "transactron.lib.dependencies.DependencyManager": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "add_dependency"], [30, 2, 1, "", "get_dependency"]], "transactron.lib.dependencies.ListKey": [[30, 2, 1, "", "combine"], [30, 3, 1, "", "empty_valid"]], "transactron.lib.dependencies.SimpleKey": [[30, 2, 1, "", "combine"], [30, 3, 1, "", "default_value"]], "transactron.lib.dependencies.UnifierKey": [[30, 2, 1, "", "combine"], [30, 3, 1, "", "unifier"]], "transactron.lib.fifo": [[30, 1, 1, "", "BasicFifo"], [30, 1, 1, "", "Semaphore"]], "transactron.lib.fifo.BasicFifo": [[30, 2, 1, "", "__init__"]], "transactron.lib.fifo.Semaphore": [[30, 2, 1, "", "__init__"]], "transactron.lib.metrics": [[30, 1, 1, "", "HardwareMetricsManager"], [30, 1, 1, "", "HwCounter"], [30, 1, 1, "", "HwExpHistogram"], [30, 1, 1, "", "HwMetric"], [30, 1, 1, "", "HwMetricsEnabledKey"], [30, 1, 1, "", "LatencyMeasurer"], [30, 1, 1, "", "MetricModel"], [30, 1, 1, "", "MetricRegisterModel"]], "transactron.lib.metrics.HardwareMetricsManager": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "debug_signals"], [30, 2, 1, "", "get_metrics"], [30, 2, 1, "", "get_register_value"]], "transactron.lib.metrics.HwCounter": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "incr"]], "transactron.lib.metrics.HwExpHistogram": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "add"]], "transactron.lib.metrics.HwMetric": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "add_registers"], [30, 2, 1, "", "metrics_enabled"]], "transactron.lib.metrics.HwMetricsEnabledKey": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "default_value"], [30, 3, 1, "", "empty_valid"], [30, 3, 1, "", "lock_on_get"]], "transactron.lib.metrics.LatencyMeasurer": [[30, 2, 1, "", "__init__"], [30, 2, 1, "", "metrics_enabled"], [30, 2, 1, "", "start"], [30, 2, 1, "", "stop"]], "transactron.lib.metrics.MetricModel": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "description"], [30, 2, 1, "", "from_dict"], [30, 2, 1, "", "from_json"], [30, 3, 1, "", "fully_qualified_name"], [30, 3, 1, "", "regs"], [30, 2, 1, "", "schema"], [30, 2, 1, "", "to_dict"], [30, 2, 1, "", "to_json"]], "transactron.lib.metrics.MetricRegisterModel": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "description"], [30, 2, 1, "", "from_dict"], [30, 2, 1, "", "from_json"], [30, 3, 1, "", "name"], [30, 2, 1, "", "schema"], [30, 2, 1, "", "to_dict"], [30, 2, 1, "", "to_json"], [30, 3, 1, "", "width"]], "transactron.lib.reqres": [[30, 1, 1, "", "ArgumentsToResultsZipper"], [30, 1, 1, "", "Serializer"]], "transactron.lib.reqres.ArgumentsToResultsZipper": [[30, 2, 1, "", "__init__"]], "transactron.lib.reqres.Serializer": [[30, 2, 1, "", "__init__"]], "transactron.lib.simultaneous": [[30, 4, 1, "", "condition"]], "transactron.lib.storage": [[30, 1, 1, "", "MemoryBank"]], "transactron.lib.storage.MemoryBank": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers": [[30, 1, 1, "", "CatTrans"], [30, 1, 1, "", "Collector"], [30, 1, 1, "", "ConnectAndMapTrans"], [30, 1, 1, "", "MethodFilter"], [30, 1, 1, "", "MethodMap"], [30, 1, 1, "", "MethodProduct"], [30, 1, 1, "", "MethodTryProduct"], [30, 1, 1, "", "Transformer"], [30, 1, 1, "", "Unifier"]], "transactron.lib.transformers.CatTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.Collector": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.ConnectAndMapTrans": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodFilter": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodMap": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodProduct": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodTryProduct": [[30, 2, 1, "", "__init__"]], "transactron.lib.transformers.Transformer": [[30, 3, 1, "", "method"], [30, 2, 1, "", "use"]], "transactron.lib.transformers.Unifier": [[30, 2, 1, "", "__init__"], [30, 3, 1, "", "method"]], "transactron.profiler": [[29, 1, 1, "", "MethodSamples"], [29, 1, 1, "", "Profile"], [29, 1, 1, "", "ProfileData"], [29, 1, 1, "", "ProfileInfo"], [29, 1, 1, "", "ProfileSamples"], [29, 1, 1, "", "RunStat"], [29, 1, 1, "", "RunStatNode"], [29, 1, 1, "", "TransactionSamples"]], "transactron.profiler.MethodSamples": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "run"]], "transactron.profiler.Profile": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "analyze_methods"], [29, 2, 1, "", "analyze_transactions"], [29, 3, 1, "", "cycles"], [29, 2, 1, "", "decode"], [29, 2, 1, "", "encode"], [29, 2, 1, "", "from_dict"], [29, 2, 1, "", "from_json"], [29, 2, 1, "", "schema"], [29, 2, 1, "", "to_dict"], [29, 2, 1, "", "to_json"], [29, 3, 1, "", "transactions_and_methods"]], "transactron.profiler.ProfileData": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "make"], [29, 3, 1, "", "method_parents"], [29, 3, 1, "", "transaction_conflicts"], [29, 3, 1, "", "transactions_and_methods"], [29, 3, 1, "", "transactions_by_method"]], "transactron.profiler.ProfileInfo": [[29, 2, 1, "", "__init__"], [29, 2, 1, "", "from_dict"], [29, 2, 1, "", "from_json"], [29, 3, 1, "", "is_transaction"], [29, 3, 1, "", "name"], [29, 2, 1, "", "schema"], [29, 3, 1, "", "src_loc"], [29, 2, 1, "", "to_dict"], [29, 2, 1, "", "to_json"]], "transactron.profiler.ProfileSamples": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "methods"], [29, 3, 1, "", "transactions"]], "transactron.profiler.RunStat": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "locked"], [29, 2, 1, "", "make"], [29, 3, 1, "", "name"], [29, 3, 1, "", "run"], [29, 3, 1, "", "src_loc"]], "transactron.profiler.RunStatNode": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "callers"], [29, 2, 1, "", "make"], [29, 3, 1, "", "stat"]], "transactron.profiler.TransactionSamples": [[29, 2, 1, "", "__init__"], [29, 3, 1, "", "grant"], [29, 3, 1, "", "request"], [29, 3, 1, "", "runnable"]], "transactron.testing": [[31, 0, 0, "-", "assertion"], [31, 0, 0, "-", "functions"], [31, 0, 0, "-", "gtkw_extension"], [31, 0, 0, "-", "infrastructure"], [31, 0, 0, "-", "profiler"], [31, 0, 0, "-", "sugar"], [31, 0, 0, "-", "testbenchio"]], "transactron.testing.assertion": [[31, 4, 1, "", "make_assert_handler"]], "transactron.testing.functions": [[31, 4, 1, "", "get_outputs"], [31, 4, 1, "", "set_inputs"]], "transactron.testing.gtkw_extension": [[31, 4, 1, "", "write_vcd_ext"]], "transactron.testing.infrastructure": [[31, 1, 1, "", "CoreblocksCommand"], [31, 1, 1, "", "Now"], [31, 1, 1, "", "PysimSimulator"], [31, 1, 1, "", "SimpleTestCircuit"], [31, 1, 1, "", "SyncProcessWrapper"], [31, 1, 1, "", "TestCaseWithSimulator"], [31, 4, 1, "", "guard_nested_collection"]], "transactron.testing.infrastructure.PysimSimulator": [[31, 2, 1, "", "__init__"], [31, 2, 1, "", "add_sync_process"], [31, 2, 1, "", "run"]], "transactron.testing.infrastructure.SimpleTestCircuit": [[31, 2, 1, "", "__init__"], [31, 2, 1, "", "debug_signals"]], "transactron.testing.infrastructure.SyncProcessWrapper": [[31, 2, 1, "", "__init__"]], "transactron.testing.infrastructure.TestCaseWithSimulator": [[31, 2, 1, "", "__init__"], [31, 2, 1, "", "add_all_mocks"], [31, 2, 1, "", "add_class_mocks"], [31, 2, 1, "", "add_local_mocks"], [31, 3, 1, "", "dependency_manager"], [31, 2, 1, "", "random_wait"], [31, 2, 1, "", "random_wait_geom"], [31, 2, 1, "", "run_simulation"], [31, 2, 1, "", "tick"]], "transactron.testing.profiler": [[31, 4, 1, "", "profiler_process"]], "transactron.testing.sugar": [[31, 4, 1, "", "def_method_mock"]], "transactron.testing.testbenchio": [[31, 1, 1, "", "TestbenchIO"]], "transactron.testing.testbenchio.TestbenchIO": [[31, 2, 1, "", "__init__"], [31, 2, 1, "", "call"], [31, 2, 1, "", "call_do"], [31, 2, 1, "", "call_init"], [31, 2, 1, "", "call_result"], [31, 2, 1, "", "call_try"], [31, 2, 1, "", "debug_signals"], [31, 2, 1, "", "disable"], [31, 2, 1, "", "done"], [31, 2, 1, "", "enable"], [31, 2, 1, "", "get_outputs"], [31, 2, 1, "", "method_argument"], [31, 2, 1, "", "method_handle"], [31, 2, 1, "", "method_handle_loop"], [31, 2, 1, "", "method_return"], [31, 2, 1, "", "set_enable"], [31, 2, 1, "", "set_inputs"], [31, 2, 1, "", "wait_until_done"]], "transactron.tracing": [[29, 1, 1, "", "TracingEnabler"], [29, 1, 1, "", "TracingFragment"], [29, 1, 1, "", "TracingFragmentTransformer"], [29, 1, 1, "", "TracingInstance"]], "transactron.tracing.TracingFragment": [[29, 2, 1, "", "get"], [29, 2, 1, "", "prepare"], [29, 3, 1, "", "subfragments"]], "transactron.tracing.TracingFragmentTransformer": [[29, 2, 1, "", "on_fragment"]], "transactron.tracing.TracingInstance": [[29, 2, 1, "", "get"]], "transactron.utils": [[33, 0, 0, "-", "amaranth_ext"], [32, 0, 0, "-", "assertion"], [32, 0, 0, "-", "assign"], [32, 0, 0, "-", "data_repr"], [32, 0, 0, "-", "debug_signals"], [32, 0, 0, "-", "depcache"], [32, 0, 0, "-", "dependencies"], [32, 0, 0, "-", "gen"], [32, 0, 0, "-", "idgen"], [32, 0, 0, "-", "transactron_helpers"]], "transactron.utils.amaranth_ext": [[33, 0, 0, "-", "elaboratables"], [33, 0, 0, "-", "functions"]], "transactron.utils.amaranth_ext.elaboratables": [[33, 1, 1, "", "ModuleConnector"], [33, 4, 1, "", "OneHotSwitch"], [33, 4, 1, "", "OneHotSwitchDynamic"], [33, 1, 1, "", "RoundRobin"], [33, 1, 1, "", "Scheduler"]], "transactron.utils.amaranth_ext.elaboratables.ModuleConnector": [[33, 2, 1, "", "__init__"]], "transactron.utils.amaranth_ext.elaboratables.RoundRobin": [[33, 2, 1, "", "__init__"]], "transactron.utils.amaranth_ext.elaboratables.Scheduler": [[33, 2, 1, "", "__init__"]], "transactron.utils.amaranth_ext.functions": [[33, 4, 1, "", "count_leading_zeros"], [33, 4, 1, "", "count_trailing_zeros"], [33, 4, 1, "", "flatten_signals"], [33, 4, 1, "", "mod_incr"], [33, 4, 1, "", "popcount"]], "transactron.utils.assertion": [[32, 1, 1, "", "AssertKey"], [32, 4, 1, "", "assert_bit"], [32, 4, 1, "", "assert_bits"], [32, 4, 1, "", "assertion"]], "transactron.utils.assertion.AssertKey": [[32, 2, 1, "", "__init__"]], "transactron.utils.assign": [[32, 1, 1, "", "AssignType"], [32, 4, 1, "", "assign"]], "transactron.utils.assign.AssignType": [[32, 3, 1, "", "ALL"], [32, 3, 1, "", "COMMON"], [32, 3, 1, "", "RHS"]], "transactron.utils.data_repr": [[32, 4, 1, "", "align_down_to_power_of_two"], [32, 4, 1, "", "align_to_power_of_two"], [32, 4, 1, "", "average_dict_of_lists"], [32, 4, 1, "", "bits_from_int"], [32, 4, 1, "", "data_layout"], [32, 4, 1, "", "int_to_signed"], [32, 4, 1, "", "layout_subset"], [32, 4, 1, "", "make_hashable"], [32, 4, 1, "", "neg"], [32, 4, 1, "", "signed_to_int"]], "transactron.utils.debug_signals": [[32, 4, 1, "", "auto_debug_signals"]], "transactron.utils.depcache": [[32, 1, 1, "", "DependentCache"]], "transactron.utils.depcache.DependentCache": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "get"]], "transactron.utils.dependencies": [[32, 1, 1, "", "DependencyContext"], [32, 1, 1, "", "DependencyKey"], [32, 1, 1, "", "DependencyManager"], [32, 1, 1, "", "ListKey"], [32, 1, 1, "", "SimpleKey"]], "transactron.utils.dependencies.DependencyContext": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "get"], [32, 3, 1, "", "stack"]], "transactron.utils.dependencies.DependencyKey": [[32, 2, 1, "", "combine"], [32, 3, 1, "", "empty_valid"], [32, 3, 1, "", "lock_on_get"]], "transactron.utils.dependencies.DependencyManager": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "add_dependency"], [32, 2, 1, "", "get_dependency"]], "transactron.utils.dependencies.ListKey": [[32, 2, 1, "", "combine"], [32, 3, 1, "", "empty_valid"]], "transactron.utils.dependencies.SimpleKey": [[32, 2, 1, "", "combine"], [32, 3, 1, "", "default_value"]], "transactron.utils.gen": [[32, 1, 1, "", "AssertLocation"], [32, 1, 1, "", "GenerationInfo"], [32, 1, 1, "", "MetricLocation"], [32, 4, 1, "", "generate_verilog"]], "transactron.utils.gen.AssertLocation": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "from_dict"], [32, 2, 1, "", "from_json"], [32, 3, 1, "", "location"], [32, 2, 1, "", "schema"], [32, 3, 1, "", "src_loc"], [32, 2, 1, "", "to_dict"], [32, 2, 1, "", "to_json"]], "transactron.utils.gen.GenerationInfo": [[32, 2, 1, "", "__init__"], [32, 3, 1, "", "asserts"], [32, 2, 1, "", "decode"], [32, 2, 1, "", "encode"], [32, 2, 1, "", "from_dict"], [32, 2, 1, "", "from_json"], [32, 3, 1, "", "method_signals_location"], [32, 3, 1, "", "metrics_location"], [32, 3, 1, "", "profile_data"], [32, 2, 1, "", "schema"], [32, 2, 1, "", "to_dict"], [32, 2, 1, "", "to_json"], [32, 3, 1, "", "transaction_signals_location"]], "transactron.utils.gen.MetricLocation": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "from_dict"], [32, 2, 1, "", "from_json"], [32, 3, 1, "", "regs"], [32, 2, 1, "", "schema"], [32, 2, 1, "", "to_dict"], [32, 2, 1, "", "to_json"]], "transactron.utils.idgen": [[32, 1, 1, "", "IdGenerator"]], "transactron.utils.idgen.IdGenerator": [[32, 2, 1, "", "__init__"]], "transactron.utils.transactron_helpers": [[32, 4, 1, "", "def_helper"], [32, 4, 1, "", "from_method_layout"], [32, 4, 1, "", "get_caller_class_name"], [32, 4, 1, "", "get_src_loc"], [32, 4, 1, "", "method_def_helper"], [32, 4, 1, "", "mock_def_helper"], [32, 4, 1, "", "silence_mustuse"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "titleterms": {"api": 0, "coreblock": [0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 21, 28], "transactron": [0, 22, 29, 30, 31, 32, 33], "list": 1, "assumpt": [1, 3], "made": 1, "dure": 1, "develop": [1, 17], "instruct": [3, 26], "cach": [3, 5], "interfac": [3, 25, 26], "address": 3, "map": 3, "exampl": 3, "packag": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 29, 30, 31, 32, 33], "subpackag": [4, 7, 29, 32], "submodul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 29, 30, 31, 32, 33], "core": [4, 27, 29], "modul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 29, 30, 31, 32, 33], "content": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 29, 30, 31, 32, 33], "icach": 5, "ifac": 5, "refil": 5, "frontend": 6, "decode_stag": 6, "fetch": 6, "instr_decod": 6, "instr_descript": 6, "rvc": 6, "fu": [7, 8], "alu": 7, "div_unit": 7, "except": [7, 14, 20], "fu_decod": 7, "jumpbranch": 7, "mul_unit": 7, "priv": 7, "shift_unit": 7, "zbc": 7, "zb": 7, "unsigned_multipl": 8, "common": 8, "fast_recurs": 8, "sequenc": 8, "shift": 8, "lsu": 9, "dummylsu": 9, "pma": 9, "param": 10, "configur": 10, "fu_param": 10, "genparam": 10, "icache_param": 10, "instr": 10, "isa": 10, "kei": 10, "layout": 10, "optyp": 10, "peripher": 11, "axi_lit": 11, "bus_adapt": 11, "wishbon": 11, "schedul": [12, 24, 28], "wakeup_select": 12, "stage": 13, "backend": 13, "func_blocks_unifi": 13, "retir": 13, "rs_func_block": 13, "structs_common": 14, "csr": 14, "csr_gener": 14, "instr_count": 14, "interrupt_control": 14, "rat": 14, "rf": 14, "rob": 14, "r": 14, "util": [15, 32, 33], "protocol": 15, "full": 16, "transact": [16, 28], "method": [16, 25, 26, 28], "graph": [16, 29], "environ": 17, "set": 17, "up": 17, "us": [17, 25, 26], "script": 17, "run_test": 17, "py": 17, "lint": 17, "sh": 17, "core_graph": 17, "build_doc": 17, "tprof": 17, "introduct": [18, 20, 28], "document": [18, 28], "summari": 20, "paper": 20, "about": 20, "interrupt": 20, "handl": 20, "old": 20, "pc": 20, "out": 20, "order": [20, 28], "execut": [20, 27], "processor": 20, "In": 20, "line": 20, "softwar": 20, "manag": 20, "tlb": 20, "hardwar": 20, "cost": 20, "analysi": 20, "process": 20, "strategi": 20, "igpu": 20, "support": 20, "specul": 20, "gpu": 20, "effici": 20, "other": 20, "problem": 23, "checklist": 23, "overview": [24, 26], "descript": 24, "schema": 24, "structur": 24, "more": 24, "detail": 24, "each": 24, "block": 24, "proposit": 25, "reserv": [25, 26], "station": [25, 26], "implement": [25, 28], "intern": 25, "data": 25, "actual": 25, "slot": [25, 26], "tabl": 25, "compar": [25, 26], "substitut": [25, 26], "read": [25, 26], "row": [25, 26], "clean": [25, 26], "get": [25, 26], "free": 25, "mark": [25, 26], "extern": [25, 26], "all": [25, 26], "reset": 26, "initi": 26, "state": 26, "insert": 26, "new": 26, "readi": [26, 28], "vector": 26, "signal": [26, 28], "verif": 27, "synthesi": 27, "manual": 27, "reproduct": 27, "depend": [27, 30, 32], "benchmark": 27, "regress": 27, "test": [27, 31], "framework": 28, "basic": 28, "usag": 28, "argument": 28, "pass": 28, "convent": 28, "definit": 28, "return": 28, "valu": 28, "The": 28, "librari": 28, "advanc": 28, "concept": 28, "special": 28, "combin": 28, "domain": 28, "conflict": 28, "nest": 28, "profil": [29, 31], "trace": 29, "lib": 30, "adapt": 30, "button": 30, "connector": 30, "fifo": 30, "metric": 30, "reqr": 30, "simultan": 30, "storag": 30, "transform": 30, "assert": [31, 32], "function": [31, 33], "gtkw_extens": 31, "infrastructur": 31, "sugar": 31, "testbenchio": 31, "assign": 32, "data_repr": 32, "debug_sign": 32, "depcach": 32, "gen": 32, "idgen": 32, "transactron_help": 32, "amaranth_ext": 33, "elaborat": 33}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 56}}) \ No newline at end of file diff --git a/shared-structs/implementation/rs-impl.html b/shared-structs/implementation/rs-impl.html index 1725febff..ea8bbc9ed 100644 --- a/shared-structs/implementation/rs-impl.html +++ b/shared-structs/implementation/rs-impl.html @@ -252,7 +252,7 @@

    Read and clean row

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/shared-structs/rs.html b/shared-structs/rs.html index f4330cd58..c30ad4991 100644 --- a/shared-structs/rs.html +++ b/shared-structs/rs.html @@ -222,7 +222,7 @@

    External interface signals

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/synthesis/synthesis.html b/synthesis/synthesis.html index ceed6635e..da6d319e7 100644 --- a/synthesis/synthesis.html +++ b/synthesis/synthesis.html @@ -266,7 +266,7 @@

    Regression tests manual execution

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/transactions.html b/transactions.html index 872111e3f..5713da55f 100644 --- a/transactions.html +++ b/transactions.html @@ -409,7 +409,7 @@

    Transaction and method nesting

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/transactron.html b/transactron.html index 9ee5dd0da..b5115876e 100644 --- a/transactron.html +++ b/transactron.html @@ -1791,7 +1791,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/transactron.lib.html b/transactron.lib.html index 6ade3bc3b..a91fcfbd0 100644 --- a/transactron.lib.html +++ b/transactron.lib.html @@ -1269,7 +1269,7 @@

    Submodules
    -__init__(*, data_layout: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], elem_count: int, granularity: Optional[int] = None, safe_writes: bool = True, src_loc: int | tuple[str, int] = 0)
    +__init__(*, data_layout: list[tuple[str, 'ShapeLike | LayoutList']], elem_count: int, granularity: Optional[int] = None, safe_writes: bool = True, src_loc: int | tuple[str, int] = 0)
    Parameters
    @@ -1643,7 +1643,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/transactron.testing.html b/transactron.testing.html index af4c4a868..4920ae592 100644 --- a/transactron.testing.html +++ b/transactron.testing.html @@ -399,7 +399,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/transactron.utils.amaranth_ext.html b/transactron.utils.amaranth_ext.html index 7162e1da8..ada0a00ca 100644 --- a/transactron.utils.amaranth_ext.html +++ b/transactron.utils.amaranth_ext.html @@ -293,7 +293,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.

    diff --git a/transactron.utils.html b/transactron.utils.html index c2b37bda6..1742510cf 100644 --- a/transactron.utils.html +++ b/transactron.utils.html @@ -183,7 +183,7 @@

    Submodulestransactron.utils.assign.assign(lhs: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, AssignArg], rhs: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, AssignArg], *, fields: transactron.utils.assign.AssignType | collections.abc.Iterable[str] | collections.abc.Mapping[str, AssignFields] = AssignType.RHS, lhs_strict=False, rhs_strict=False) Iterable[Assign]

    Safe structured assignment.

    This function recursively generates assignment statements for -field-containing structures. This includes: Amaranth Records, +field-containing structures. This includes: Amaranth Views using StructLayout, Python dicts. In case of mismatching fields or bit widths, error is raised.

    When both lhs and rhs are field-containing, assign generates @@ -192,16 +192,16 @@

    Submodules -
  • Any of lhs or rhs is a Record or View.

  • +
  • Any of lhs or rhs is a View.

  • Both lhs and rhs have an explicitly defined shape (e.g. are a -Signal, a field of a Record or a View).

  • +Signal, a field of a View).

    Parameters
    -
    lhsRecord or View or Value-castable or dict

    Record, signal or dict being assigned.

    +
    lhsView or Value-castable or dict

    View, signal or dict being assigned.

    -
    rhsRecord or View or Value-castable or dict

    Record, signal or dict containing assigned values.

    +
    rhsView or Value-castable or dict

    View, signal or dict containing assigned values.

    fieldsAssignType or Iterable or Mapping, optional

    Determines which fields will be assigned. Possible values:

    @@ -850,7 +850,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2024. - Last updated on 09:58 2024-03-13. + Last updated on 09:21 2024-03-14.