From cd3043bf31339e1459ce7ab42b1c0d8d4b5c13e0 Mon Sep 17 00:00:00 2001 From: tilk Date: Tue, 5 Mar 2024 11:12:31 +0000 Subject: [PATCH] A step towards amaranth `v0.5.0` (#577) --- .doctrees/api.doctree | Bin 21036 -> 21036 bytes .doctrees/auto_graph.doctree | Bin 44469 -> 44467 bytes .doctrees/coreblocks.cache.doctree | Bin 56706 -> 56728 bytes .doctrees/coreblocks.doctree | Bin 11232 -> 11236 bytes .doctrees/coreblocks.frontend.doctree | Bin 121524 -> 121611 bytes .doctrees/coreblocks.fu.doctree | Bin 280284 -> 280343 bytes ...eblocks.fu.unsigned_multiplication.doctree | Bin 47433 -> 47441 bytes .doctrees/coreblocks.lsu.doctree | Bin 47580 -> 47588 bytes .doctrees/coreblocks.params.doctree | Bin 788908 -> 789257 bytes .doctrees/coreblocks.peripherals.doctree | Bin 170794 -> 170832 bytes .doctrees/coreblocks.scheduler.doctree | Bin 42169 -> 42177 bytes .doctrees/coreblocks.stages.doctree | Bin 77941 -> 77957 bytes .doctrees/coreblocks.structs_common.doctree | Bin 155695 -> 155756 bytes .doctrees/current-graph.doctree | Bin 45690 -> 45688 bytes .doctrees/environment.pickle | Bin 438206 -> 438308 bytes .doctrees/transactron.doctree | Bin 669266 -> 669619 bytes .doctrees/transactron.lib.doctree | Bin 685443 -> 685671 bytes .doctrees/transactron.testing.doctree | Bin 266485 -> 265437 bytes .../transactron.utils.amaranth_ext.doctree | Bin 79575 -> 79638 bytes .doctrees/transactron.utils.doctree | Bin 354473 -> 345683 bytes _sources/auto_graph.rst.txt | 366 ++++++++--------- api.html | 2 +- assumptions.html | 2 +- auto_graph.html | 368 +++++++++--------- components/icache.html | 2 +- coreblocks.cache.html | 4 +- coreblocks.frontend.html | 4 +- coreblocks.fu.html | 4 +- coreblocks.fu.unsigned_multiplication.html | 2 +- coreblocks.html | 2 +- coreblocks.lsu.html | 2 +- coreblocks.params.html | 14 +- coreblocks.peripherals.html | 2 +- coreblocks.scheduler.html | 2 +- coreblocks.stages.html | 2 +- coreblocks.structs_common.html | 2 +- coreblocks.utils.html | 2 +- current-graph.html | 368 +++++++++--------- development-environment.html | 2 +- genindex.html | 2 +- home.html | 2 +- index.html | 2 +- miscellany/exceptions-summary.html | 2 +- modules-coreblocks.html | 2 +- modules-transactron.html | 2 +- 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 | 48 +-- transactron.lib.html | 18 +- transactron.testing.html | 6 +- transactron.utils.amaranth_ext.html | 4 +- transactron.utils.html | 16 +- 59 files changed, 637 insertions(+), 637 deletions(-) diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index 537f7ad38367fe992f010e63a4aebcbd3b90ea8f..fafad35f5081016da7f50ddd0fc1d28e88ad528a 100644 GIT binary patch delta 459 zcmY+AF;4<96vuOk42pmR!G#dwWK8aufFo}1t~wc0dWCD~wU@p&>g2-MfutQB85vAi z-24hoehPP23kh;=FaN&&-tWEDGFUBxx359JiiIR&Ch!a*2HKgLl86JsN(vq^I(DXB zOthj5>|K1`K1fAIoH;E30H-9;j7S^Am-c&bVc&<{v-I9HGO@`aETHTnZguOBB1w`E zl+;*3Pl7XL1fa8AQNh99jykqBYTD1ZS*;XCO|*TCJ1>9kpwN`~&nJbRt*bLf`^Ybo zOEG373%x3yF$&6O`-Uh-5@nv#C}b0V3PpJ0Q+VboB|xFKt-71ind9AB8)ZKbX(b+} z66L9V9ky@EyJye&Z-|lCaHd3gLY_Rn&=@HKit?#56|AKsT!mZWdOlhOrH}b_<8a-- H`f2?F;up03 delta 457 zcmYk%zfS@&6bJB-NMb~kUlJ1uF>Vs?ZqkGJ7q}W%qor54hF*L2wTP38W4Cs5WikvV z%*Ox1f5p{9!Mm;P`}V!hTg*#~dFlP@qSeGgk|7g#0{%z}t_Y9pL)g2iLyRPeJWx_& z1%U)-cJi<@wfy2^gk$33TeDYqWT2hdRT6PPSW&^je)iklD%MgGuDr2CY3xk3@MWa! z(V$~r!{bxageR_I0u+M(lQZ>HiXkJ3mkq=dMnT!Duymij5BU{l{ z!V`Pn@6?i1@C*V0{qx(8@bI}1^w*sliHI~K;N?Kxbp1)n!m*80TLk4!Xl8w@+5%+*aorMB(@PYOG|9CSzclUNQf5N)Fv?# zI~lNnPqgf2wKJa9*nRPzI5qaP(@r~XAf67LX{I)g+ob)GOgdfNx^?e+LYS19{y0zf zeCNAoyXRir`k2Rj%;Wb8M&2Fb|AMmJTp6Pf)+WO`FBJ}v3=!TixcC`()-FUlPd_Xb z<57|ju^}(vY)BHEIstSFAu2->F{p?ll7LZxjCmYlr%*01Y!Z}$lr01={2m2PiVE?( zO$v=DWmqa=Mna7|M2LP#;%cxg%ww_Ni>7&SLWB<`TF~VJEJ;+*b&1eVbbYLr5ljC` zfsW9jm(Ry)mFP33|(wE`HmDOjz089&u#qEDBCFSMbs z>P$HCdIUmrb~Na8?B2UF5pL_sVAC5mtNah42m9Tp??Ssl2d$wBPxWjo*)7bB;XDsV zk^?odXOxm`!rh8|=7Z!rAuyOsXiJk|Db0&-rI~P}F&s4nduU3-O>-uMW+%>=Xk0Lx zaNT6XBeR|hUSm!tPEwd;%NP&WEE!nJAO|G{otcBtObb_AV`e7ko$)LWm3b0Io+YMG zPg@X1J6P^8T?UEO#Bm?cG~t?tZ6fA`HIauq_5j{zXYm(4va`b|teg{|fi{v#MX=@U zAikI%=KNd?eNjGsTx3Ikkr3w`nW!iFpB!2EYmo`-4h8&0S-9yS2N4)vy4Zm$#V;Du zR?Idg1z#3B(OX(dM1Zp;b~s8x@vP(`J}4=}N~xKvKdV$qa1%Eiwz2}umRTVv@4$mH zJG#o7$&5^^I&KBZ1469W_9B^8(UP&XVst~`a3gTkSRpml{kdNb4 z7B0KO8aeaUK_P|vhf+5;_aDj%Y_8sm`Rd?iAx>2XN-C^*g8JG3?yMCN>#_vHM*>&-{$UeW>Wz9aN{)Pj2Zz&+@!+bY5R zmUIj>d$HV-hYq&@y)A|KM@ups&Cx^;#d50@ziySIp;W>SF)08!$JV&HUsnmyQ5lXs zu6%^MGPs=9Tzj!JFMzqx$l2nLyV%0nQTo^Ml@NTnpdn!k$!`QjL)IG4qZ=^T9E+*b zO}INA4a?~~+&C@5zG<<<`fB37Lp7ycZg)=u21?@yDV{Ufwi=d8f`)KBe9eH*T3^Qd zZWa37i6q35+rad@e?_6GeGR!C$v8sfO(GVL47WO>DJ$G zo1qi4*zw3?pzOomG_oVjYmnN- z7@8@-+~Cqwf_w@`mD5p91%MMFgqnN@Yx43l#I= zH{PMp(xXRr_fD*Lr&Ab|BB5`(^QB6ysfW+Ue($L;ek5s&nR-MDpL&D^{2 zbv`r$dBk<~zz&L7vMy%e`Nez*-Eh$5JLPq`U2Q%BTqmaMmkKaA%m1n=0LpR3ufm@P zHF$kc%aX|P|6$O$p{ek6(2Vzo63{=y4aQI!S+(QYQ08`r0Wje3(s1r}LI6}ik3*Cg zm0fDAgO+a1H;6VO-X8&{zZAL=HNNi;W)?M)xSW7~`nD9>+2jq&$ZQ2!m2mg{;iwwloz!A= zAsjPfVhAVY$Q>&pQixCHqBl4qSQgG9b3C04(W~RTxNiaCCQ7k3UW$o{-8f3*cXMoW zRcub&TV`2|-ZFg8C)BWBj@m#Z!;`8ls+f${R|#SgWO>rEL6_qvlg3SFwk;Mh3=2_^ zPYKYv7`Mr=;-l$E%!m}YvltUZ1y=U9V@4cS(0 CLExDH delta 2773 zcmZ`)drVu`8P_$o!55o{39$nPKd=Ft7+>>BFfa2gslq#fWTZS|oJRu`8|dO@X{j3J zQH6*7gDsFi!Xv2~sUzuaC!thrwxy3v)e>bL(iF9YR@Ej=Q<|xo)NUd>_g)w`UG|61 zJ?Hy<-*>*p?>lB6NZx%Qkq*fwt_P*Rr*dxIousfLNkg493eo;>c%^n6mgI$0G`>uU zz_zd*xPKrO`q&86g_$uHyM_Fca6uNuu7+h(sF0;#NGipORsl8HZz}llxL1jfBU~8u zsgWqRg;WZ5LY^wY&{Z{VDl+&xhZbV-+lUW2>>I_51U-Wa{6U!v#w)|3aw~?Rz`MnDu7p z^)kG!*W(qv9N#5dIJ?_X3f$6Hf-wjs<+5DUZ)=uKB*G2M@s(yh4B5sAG-X0|anY0JWpH5K=*jaar> z`B?8-WoWjg;hHrQi#7vsWMR!2lM*B_8CbLzgj6apnYozC6!f_wdNS=`3Ur(<>hhIr zjDx0dJ;RQ0rkK+YF_oa58SAx>;!ngCQ(z5cDcHkKlLYT&Z(?W2UhFF;CtUDl%`GCn z*tc_kN29JZ0uSApcv$MdVreW|$oGWXg``p!Zj=4H?kt=xwQi7@DRX0?Oehe?(_XUY zV*R$P9``DQJQmAUaF@$)t~{H3Y1CI#;^Xpjc(&X{bmSPTaPUOQsw~FaRTjd}aP(El z&{ye1Y*jX9EBjDUb&$laMSTH{@2hU1vD$*ZC>pKLB;w990Uo>2MYEIDQ&L>6$>j^8 zui1j<$v(SA&l5^r8^=m(cS~@m-a&4OMs2+pD|HM~8cGn=D9Ao*aFIdq@DY{ljbTqW zMo{>uiL`+joNuxU279XU<(@QN_QN?Ew&onXLCzfCOZI+^pEnDbp;@@#@6FXX*0K}1 zEqUyGi$jLB0|F7b9^XA+7UKU2jq>NdLQ|VCC>&;LOBJw=NcI(S73)HAMbd~9CJz3$n9E2z{>@_3z1$6AM~=f8qJ41e9*c>q&FS;98dmr z=x!J~&c@-xZWCgal#&(f(`=;=mZqB^AcBn$R#7&nNhxyP3*{vnOW*r5JMB ziIPzzyVP@yk~nGjdh;>)!X?Uy+&(i|_w(yXex2=0A@<$9Ci09aq4ALc_oYDeNpKRy`A6ZP|h5f|y_ zfFy^;qZ1l@I-0rxN|+6ijcAyN<>FZW21uB&I2ItX+doafaL_1{3lcxU9tSf;^2fof zbw9z-PLVtqD&!c2KZg=f0GA}2M)aVD{5@{pP~svHL=4f4f_|KfrgXfCtjQA^d^?`J zp-SQsBz-s$(nt#lyRd4|!eNxLQxgv*WYQF5x+2jrt>x)ElMchQ220cBxHVlu`ewNL zE8LjbP8@wcQ^>EyxOBM!N3TZVIcWrXFJ~g@N)c8r7r{59gL{qyH><^t>3C5`Hpdm6 z)7y|g9VY@s?Gix2%cry3MM@$MBeNMIKx92K>qh#*P5gT<9i8)Hs)&><^JVz!{QvO~ zoQuOh=aaTRjbw&GjLvRF$$|{}tMTGjf|TWpsYFQ@8R26lzIpEl<#1e#7ewN2EL|i| zGU@Kp#avO3)-L``bXq;1fQ3tk|Mv#|6}of5AkzKrf@9+(XAFFQd%JYlGx=Zlc+%jL z$=w?UKSG+O#Dg$7Wm_kQk}yI6`^;;E4UZr&N^b0xva@#d8+qS|d%T~xaxb7Ep_ VsvtO5`1H1}&Lxr;MS5*9{6C0P`uqR@ diff --git a/.doctrees/coreblocks.cache.doctree b/.doctrees/coreblocks.cache.doctree index 02a8e60d9fe0459e78df960f6192753aef1a3cd0..332fe6816954fe44df5ae344884596a2490031d9 100644 GIT binary patch delta 453 zcmZqL%{*f_GfM;O)ZUFOFE|-fCr{X^z!*Py!%nNo|9SW)hjIBZYE5Pgl?00I;nES1 zt4qvHEK1BP$=|k_S(E!Nzbu-#Uzo&Z9UdnG#>B~vuHuv1Y(OT=w^3z` z-+aWzfKf`RD6u>~F(swQN&(Ht&AfJx82QD~%;Wd9nQZB>iBW0tS{reoAW Al>h($ delta 424 zcmbQSo4IK>GfM;O)bfoiFE|-fCcouWn9RpDl~HrDK&a&8eOx;HvUQ2MiA9NdB^i1d zDLHzR=k79^tiyemPX<*uAxvVk0gsabWBlZEw&Ih!Y$PWyu~FT8%Eo|^Rk0|sJbv;- zPm#?cc8?hO#87q0`r1r(bl4=Jn39=X5?x$Uq@#eMU^9>7G$wRS8=aHTg@ER4j&s@1 z%osTNg1hKsV-Mra=^o-N{NiXH=<{hn)4EyK*OMLY`RvJ`LuB9qAU4?{lnYBB7*FmE wJ%Sbpn-jtulNocMfoL^3VXENd{d?FZhjS@SHrqwm%NpT}rom?{fFe;okE*-_Q5=aPGr!YTtCK zwtMw3Cbdt}U>EIm0-WOEx;*eMS7 z?h@bX=JXq7-&@K}Qyw)9CfA&5DSx~*M(;?nT7pZV zCI0c3=6+QWqgN^x^(N_WLGDe`o9L_ZXAJ-RqLChtwV_FjEN%(gus0Bkp{D^P$tj^@ zZBRAOD%;VVhH9z}!bmgF8j?c(M#k^$ zxCb*k+K+6QEYN6tCmYKIxv%6&^Fy$RQAY+F8U#~K+d)?@!H-2+$3vGb{>MJ!qWiJ_ zdt<%NUn8qy63O$^W@a14Hl>};`!G?**Sld!Rx2MH_*loeK~$C(+9=cRb0 z(3Dy*KAorv60Mmfq!r94X^hh*wY&lL2*3DCzkxsmpJ2?b_xk*;iW|k;v-qqm1J5{* Wyw5SG`fKP`WW(e0S>{XJ%>E5LG$fw@ delta 1487 zcma)+Ur5tY6vuzxxiXw-xw$`Xjy+_u6ceNpv!WiQqR@vxNVk%fEGwOxP=u~1b*ALc zb%<&il|C4$O}&tYiD~u_L_!a}Oz5eH-U?rWx^1ZJ=iT)8bh+o=&-Z)Ix#t&{NF5tb zRkv;lsz%lC(oif%I&8h22jpDM9@weP3sY}rw(QdwGIMV@E;$+<4IWpK>%6-t9MWVV z!xFzYo&KwEg;6SRFEg(($m)Ye36VpcCGtSodj&_HPB+Sx`+VVT<;AQ5QuGx_mw5Q<=UG>9E-~BMsA3rS2bQ5+MZH?Y@HH~!_%53p{Vb!+~L54oA zF?5>Y7zJ+Qb*3TyIGwnIR?%r@ZAVLr`V%CH&UV8@;Q(~B5I`Q;f+(P&KIF$%fBRsI zttPv8AR1lWW3_it2!obmn(Ew2vm5Y^2Vr6(J(v^cGk*^r{HEb<tvTEcoW9%qe4_M+VKE|>>8m%onehvIXuowRPu=5Qv^Owp(1uq z^%z+yB{r&e@JTW~RevJAH_sF6ZKdlkkxBXqUb?Oqcq$aG8b~H=9!w;>IFv+~abY)f z4?WFS+;yU6tUev$PshZ1Uh&s1v=^3U*JO>}HO&fqIxrT$rD6CY9w`!b8S>r&$~c{DqRCDEkrryujeq<1sd I2RzgM1HYdTZ~y=R diff --git a/.doctrees/coreblocks.fu.doctree b/.doctrees/coreblocks.fu.doctree index 0e718d81a1115dd0cf120c24c36efc046527817d..653a075d139bf2f3971f7f0d00b62735b8deea98 100644 GIT binary patch delta 1523 zcmcc9D>%JRkfnijD&s~LB|XOE$&Su)(;sYOGGUCL{NSAE^aqTL%9}Upxic|pO}}Wv zBncK)7Lcn;%uOsx%qz*z%Sg%5i=X~}CzJ8ya>FD1vS<>Dc1+TnQ;e3C;V^sZN?)SP zPF#b-Y`?YM+>9xcXYFv1icc&q(F;q=DNWT;Ky}9EPdhHK=$V(47UZNxqe|h{^KP#b zBfmJR>dAKdQ_;mXZ`?0}O`*i(*9Uyj6;Ix{KWw^yD5KQoZ3lI@a0E*3nMk4n#q~Un zKry;-OrLiu69Xdy2xN%$NKS7wW0ah(uf)jD6d*cz;&O+r`Ha?#jE2An7oNV4k&zb> z;f_Sa_4EZyj9BfK+TO#=_|1XQa(bX4qwsWl7eMoN+@3=Tru0a7`}kQJX5q z#5VcyWSi*?yMe*>K7+Y>>tCkd78q{Wo?yjPK$P|VwoDiSwjG!|u6kjO1m)@eolJ7X z#KfCUOoOKb4VKz|ql@XKHinbId3w9gcBXJ5-2EMEhThJ* z5@tC~%$4$(27}7M>2`~liHecii*T8Kd@-|W4CmC_Zs2^$Fj-Jpc)CIXlRDGY(8-3) j&RbhpxW#cqn3M#IGZ7JHJpGOo3s%2LZ$Bx`BCHJnuXP_1 delta 1380 zcmbQ4L?KLDK`77)7TySTQMY-lXTw#Hcwv(27YCB&y6W zTbG!dSd^GolA)K8lA|~MekYUhd@`uw^1GR&H)j|vE5kH%)=FO@%*Z9aBThYQnRb!Q@p@K?ln?EZ4Qa7=%?mJ*{9=Tt@pMg|brYR=fs z$Y=nH6XEH4+nIO~5i?zaiBXPV#7y7L#E8u{sp+DujOE*-^x7mw`R$JGjOVp6f@b@i zV#XN4VKcq546Adcx2KmgZs?fokg3M+s?ETV!8ny08bs628ZuqjF2l(5+XC6v?ZCua zK!k;bwoKTff^L37C@YOyNYh(`OfkJGTRK z*gPXlCxWu=bn$mgM5K;w?=VcA4m4G2I+rqY-1G%i7k{dXqF>GyQaTP~SK;Y7EdyoW+GZC>PCe4D)R_X05 IGAzQ{0N&!eWB>pF diff --git a/.doctrees/coreblocks.fu.unsigned_multiplication.doctree b/.doctrees/coreblocks.fu.unsigned_multiplication.doctree index 5d532b5421ca2e5b2e48a21cee20bbe590e6c8f3..ad964a8a9fde5f8285ed154b26790bbc239c6825 100644 GIT binary patch delta 180 zcmX^4iRt1eCYA=)scsut9&j@nPQExrcyfRyFJt`V1|HGLQanD4T9Y?wN`m=10&;bU zxrs%Ic_kTo87Vn>@tb$^s5A1*q6vQB^^wM6l+xrWnlebniA{c>$%SF$T{M0F<*l>i_@% delta 153 zcmcckiRt7gCYA=)sdgJ#9&j@nOm@^%n0!G~bh0#$52NPfH{6myp4j9WJYxK^b&0u& zMTvPO8G0EhIeL?{j3dhwGFBpFXG(mld2iz>d^MQ^_`yP;EJacZ&EpZD{l zeL3N)a>Fw>LUVYp&=W4jtB!y|F%a(;vCc3F4^4os^k+S19iRVNvL9OF#Zacg{(Hg8 z?z#_FO#p9)OHmVFymXth;aEBmDj^TIPXfd9hhODayd#+b2P8llH9 zE)@y|sB>mJM>QcCsnI_TW|CtovY5SNP3SY{^*7t^Nyy->L62bYR?$x@BuKZcoB=|Sa#e2Z6{KEilJ=3(Y;{nYSM&jCk>MmVMtFIFd3?~hw}SED z2?#)AA#Gd9A>p>oEpoDL+snaZwNztU4l`ShOiL8S8?9*|x*wGjYT4gNf*&|epRf8B zg8A5DA-%_O5j~lwJJ+23-^-!xenLRY$;}l4^~paY!W&)ciuw#WD+l$bG6AYBB08O? zh}dvW=+hY5{6=|)BEr?YbGt$g^wi5z&_!2-x##yv=eVZaE1>3C*WrMYg~nj}Ko$g( zIEl|>k?y$NltSQnH=&Q0wp&bUYSIS@sW{*U1kwv@??a;V7iK!kyQ6!ET%FmI4dt5G zg*#o+yYWsVbq!%imO(hR50lF0oR-vIMiElkSAsVnH;SS&?+qdI*k}o6tF;&E=koa+o6ftf#S>>Rq-eTP_IpnQINRrPQN#wtd5Rz{gBS}u? zYK)9!O?Mfbx(tJiP{|)F$$ue^0KCStU_SR<;UYrfBo{&Nu-1Mwb9g}|sFClAi$ito zAP3ivXFfP<4JD_#cy{jPYwj@<1#95t6NTC1;uH}y83plqiOgE5jCoqA*xICJ$znOK zN)bR>AI3ADACdO{-{YCU`EpLvjs+qoMrB#UV-cOE zl!d}TG%gkGX@j{MOP5+tQxmlTr;&}HjMLO_xdeX@=6ym3Nx4GEU%Xm^f1P9h#OVwT zmH~O|QwhibwB#@~&s@v$1zpsH90|yJb4jt~G!l!FL7kB+N&WLC3XLcfy7ti)N$Sr& zx1|UdCOO$#j1C3MZ&~N`v*=7IjaC<>l%SeiSs? zI%Zbl0#N(m!*QC>0&O;+u~y^7cY!u;2qa-thISZ^jL|lu$wqvPb_;`!Sanw2N@e?R zhxc%;zgHW_p>5yc+IyY``$;bEIYOIrSYu}OAUOIVyjiHzeFu2yFYPGaj_C@B(sq-a zRh`CW_7pW*Q%?wxrr=Dv&W+a?_}>!{dZ;58Qa0EV$U^}ZN29z1wIrr%SmF(1>> SFhs%cSoBjEAI&`CH2(rc-W>Y? delta 6581 zcmchcdr;I>6vw%DcYnJp2&;&ou80N-3X6|2Lz@&U6@|eUm4LYf@eoO6HAO+m$Bap# z@;GH9qm_P z&-vbSF1t!6o-CTUwU~I4TUIY}JwbDfxVc5b=xQ1a=0q|9MiUzJ^piInOe8+`Ut4n= z3;4+gx>pc`ePP8DvH-3xCvECt^aW9x?YhC~6H2yh^sWO>J=uUZum(9>27p~zdY33*R!r~Xiwp^P`F7b-*4zoaQk zkw}8F7Q?r9B5u+%91PzSh{#q(;s=*3(vbuI_em(*wT|qP0?UwKin5sq@F2$)xwYAo zxRGNRxe%gkgOhVPnDtu_b3&dpW&qs(Kr((&fOY~DY_qdY=CZ=wB{U53wkr**u#>|Z z{vq-r{3NPDQBO5c?#d-KXsl2g{MgfyuRj*{oF#La z?-^e3o2w*)Z?f5qfenmg4US%$%+D3fYtPc@bR?u!D@E?8;UgPi{sl~$s&hQP-hYjFQ14&%W_4A0{RGM1Sy^B9LUav0HgkGx(0#x)Eozf~I38CN;H zxSd8=-iiWH)`ZZiYdq-lEgWcv2aC&RMBH_y_;C=l|LxRv;TioL=M00+=GG3#WY5bUIAo zn;f1Y^CoQO%ak*x1V+j+qn!XvkuhA**0^Tz{*l?s;%2PR<86j%8)q{_c8q>!gOVfcE7XK2gs^xpJRk&Qp3+$$1KCBVY19m!ccOrK68(ONAybR>X z>km+&bU%Wpe8K}Cc|Z;v9f;t31+-s~RF^3QpLvi2zV&lDmuV02c*_Em0&96ezI}-kWQPY=hYm}FQuxQ;$ie$xvz20_trV~D;5S{B zgGUdp4;@3Bl;W3tCx>5u1M9KXR*%gbdQt=Vtuix*Z37s(vCSMyowEE!8#l{mwM!#0 z^i>lC@ek<~t5sD=^d;oqsTjWYP(`pWsOnx9Tp6sMW^GVc;IhiGOj4;I+fCI%HyjLA z4X}Qx`H^T#mWazNmudpK;r-N;>xQ%0T5pJXOB=?Lh^`PFo9vD|sBYC9xU)>R050Cw=sj)!7O;)>i_=rH z%$YDNUN@dSh|;A}sJWsWD1JvR{_7w!S~tSWuh%^(MC*R_^zCtX%J#+Riq1gC68$Xp z9?@UKSDxy4<0DaMqbAF=@%@R%qJ^yYcXm~zQ`pB5fGhR z#Vsx%SC^QZSd^GolA)K8lA{;Dc>%X5Bfl)F;PgT(rijS`@ot+Fc~?3yZk@c|UwN`# zKpSKH<}Cr?jEoZ|>j$&~ITM3qxTf1jG4W6Tn82hqSE|Na$`7V@&az7$=O{;vAIWLb6EG`5=O?YQjF^vF>IJlr0LWDFfn2`e*1G~ z#$7fT!Duo4mjffQZl6BE5tr%JPK=5cSWN#~MZD?V)woPAt6^*n!eV;JdE!lfbsm@L zS1&Ny>T^z&n#}+PQv;avw|X%x62fAkt1uJMfpuG$2}e{M6JdI(jA42(v2i@l64T)A zz$Cp_nsL%}{V=9B?)b#w620Ke^t{BJ=>eUL*3*B5F}-H5$^{Ci7ESA9RG6L<#^lKu XKY3!1-1g!KrUDLdGT#nN=9X3fn^rMU delta 833 zcmcbxjce65E|vz?sk|Fmj&d;?OyB6hs4)Fv6{GoNC2lQ7&B+(JBtcx!$u->K{IYe4 zxrs%Ic_kTo87Vn>(+eCKjV52^e#|F>Dt?cdQDXCb9(`xVEt3P{l_whov~AuQ5YEWh zKUpxSb$V3GT!_@#zBX%1ni>8iJjAt95a0{ z6C*b^*BDPO>pFtXHPgR+V|19z*B-I?XSa3OLWy5rCW=3=? zwgWwU$p$I(ET(fg5@+6bY_8qj=ftRJfn;7VaZX!Qjp4NEpt#uHTf^8Igk+w@^qlj= zxzBhy>jfN!ez?GBt3NfHNuP7-gINq!(@SL( zLp3akHT0k*c0(uM=W&>BaFNkzdVviS$96MoCTVHLiPIM*Gl@;l2xBVPelv{8fRV9s YI#&c!{&rx3?c?A>O|09+6PYZn0E2BEjQ{`u diff --git a/.doctrees/coreblocks.scheduler.doctree b/.doctrees/coreblocks.scheduler.doctree index 8c838eabcdde4092a2856eb34e9a1b9034254cf4..83de48216e3bd7662496f2f3ead8b304abb98006 100644 GIT binary patch delta 168 zcmdmalIh?{CYA=)soOTPeGV2q#4&n-H6ewxzc(_C7NT9XUYB*9`j0&;bU zxrs%Ic_kTo87Vn>@teK4g&Fx}(FC)3{zal0Wrt*p*ks;xE)1h4dvP00jz~X>VVZVE GpA7&OjyE;{ delta 162 zcmX?jl4<8jCYA=)sp~ef!yE4Gi`D{ LkHlv0j4~Sl5l}YI diff --git a/.doctrees/coreblocks.stages.doctree b/.doctrees/coreblocks.stages.doctree index fe024da4e137311726688d745f6e3ae8d60861a8..2ebf5a319e71090451ede8fe678a1701651f4331 100644 GIT binary patch delta 390 zcmezRfTi^z3rhp*RHltAfn1D+llS>4Fvd^*$R#?to6Cn$YjP}?B$%%wAXk@|n^=^X zSCXNZk&>eqKe_RP(d0Ppd;GF!;`IR%o0E8=ozP5Enk?!sgJhzZ)L+fUDYa8HGFW@C zm~A|Ht^W~pvp3fV$f;wP`?Z`Tb9*Z=&5f`8RLqz%Ip}RL-1kbG@4Ss+BHqE@(H%Rv pK0ti)+>Z%-qEqt?7{DMyD{B%n14D*%)@hOHhH{LWTdf(b3;>GMjA8%) delta 352 zcmZpD$ny083rhp*ROXE=fn1CRlf$?aCI|Y9PVV9IVbq))%OwfqiB0C@7UP$#OUz9y zO3W+C(91~4(VN`pZ!|fP`yQVRituJXo?<5?bMBNYPnPzVhMT2;#hmYGW=!_uk=Q&x zfK46696P*b7*C#2aRi$=&6T%`8IvdbZ<3oV`%Y@|w71e={{h{#`PJKKCIW^Y{(!|$ s@y%;LCh$pRXk|@eW?;yW&N?l^z)+f$IyKIK0SqP!n#yiTW;C9xVRwXI7ER*6KcmEEA^RuJj42?aCv!DBKuz8p-(1E- zjIn`jSdA6mY}J0MLTsu610w?nXf{r%ouZM!+QV#NY&?A;AEVAzH^x9|>|UDwL7I^m zKTU6!VZ>^?#B?VX#@6Y4T8skQ+2k0_4RF{q&5t;Hbp0{y*$xc6E`Cgdr|*wvv?C(q zrdK9l8af>mBioY`8H(eDo|a z1{+V0IfpBh-Oe*!7Q!@ry8k2MQU~W_Tqb{h%(#sYi^=yt5ohwu&$vu({=(SE%{f&s z0i0zSrq9=8Ql73L!o)e%fQe;#F_5=4foU!qrrqF_8OF{;RHl8)&V-R^x9{g*x`ZXT ozy`mPCeGkS8BBvA87f;y+*BB5qUBHkDM;g*KVq($*08B~ZdjJ3c delta 1283 zcmaEJfOGu;&J7l}j0TerY70+aV8FyX{h&0X#pFr0(u|tZ1N|5!rz@UgRN$AbOUz9y zO3W+C(91~4(VHH4j?s9sw%rjv8B}rp07i+;V)jp*8IwUKPUdTN02{cuy*ZePu!#|E z*i01P?9_g$LQu1DO6?Sl4A!ag42%pQuvM0^NgB=R!2~UtK1qfVn=KOCYh@YF7@(PF zF@3QgBjK=^ZsU((=yqUWbn#=D_c@*z^Li36&5KWD>=MQ>&$*Ns^X`;lnzz1;ahnX| ztm$c!83U*9n9Qg${qAH&neD$OGx9JoW=yY{%xDc3-kvdyv4@3E3^l5I=Q7%Dcbv^= z%Y;Sd1HU+0is_xl*nmZ$-S(*Yj9%OrzWTR{7++0ajp3{5pd`4xX$>R4B8H)_&k{ED zJGLafJ^wu8Wg!gn<~$;7p7C_k$2c6R@Pu(2ABLd@pNTQ_Zf>c_F>qX$8>-V!~PC-CL+?iA_o)pOvJ;< mv7 diff --git a/.doctrees/current-graph.doctree b/.doctrees/current-graph.doctree index 5731e43152ba29cf46c77475b45530274c531576..2c3aa3bf6a9f2b395f78e285c97f5ad003978cbf 100644 GIT binary patch delta 2657 zcmaJ?YfM|`8P+kj@f91e&DCHVF!B8c1PIq+u0_Rxlw7*T5NaTkxEmOQ1-hi9rBRal zAU-ldap-Hi?u;Q8p#}&M_u*Nc-^}pZ9s5 z@4bER`TXP_=kYxbcZ7GQ?FzRljB?U7VP`2E?~FhLFCA;*2%PeV;3YvebwbM9__V7llv4wVQ%Kc-j_0Hx&Lz{9Rm# z;Vvnr#A(E_kX8!y9GnvWi9}97p*V*HeUcdt*3Ss>k}N3@&V^MLgV}x|B(fyTB_z>f zvL_T)Ba<1WqiWICBSBx(3;3!>O1q*h6ylZHXjbU4rZ|8T zid?!@*~P`9xHLB1`*A#6k4q0U<)FdJMSc8T98L(9YD+LNRnT(@^%UyWcIe3(Rjc7? za?LMj}UpN-`td5+)qiyOv-Kyq_C|7*+Oel zk8|*)K3EiUNK1MHimG$zy!2~fm^T^lqfr8zsT)s>2H2a#_?%z|%{$<*Sn;OWgQq4t z1Qr9VW+%KB4XKikFU&^bB#mCQoaMl1wZLX)4oZqudnRHXCbqh-?N+SjCo)3Z*d?J) zJ46(2J54z5EMmn`u2P(E8CY?x%TB}wjARJu?_4?#3bKL(H;W;jdwD-AoI=eg4|kk; zQmqhIcV;o(XlM4PBFvTKqQvcl#4SKri50hr-Bn^kuiJozl1M1rHaLhK8sSxU5%i_c zyYnN_G5L0udIII{KsgW3N?lkhv{${wP_I@+BBLru*;_<(+>7V9$n>z|J6od& zcrtPCoE+C{nDbR5;EAS>d8#>(*EKQQAM6(6&$SLT)Y`F7SBL|9Het=4T%6v+#oy{o zOllwRmDBu}1r)05(?dHY^|s*7`U<4%-Q4+)dbXI4_uj?reVgdqKGHW5rfq)(e%POd z5B6u%DFO!O#mye9_VcB#p& zluWtshh-Jk1yM-zM{!&tydzXaYb=%mO=U@AQ>)J#{BgnS*AnrFe+PM9^lPOqQJK%* z)aqrQxaHU4F@})l|w^sB7W7INs_$Us|$CC7@ZRh zeN5WYUOg0j>Ii~9kK{mpU-th(ulIS0{_DOM;qB$4xjz!c{lx_Nv_GBxP5&ZAzcesL z;qIUYkAJxf4TENi#2EY;J{r`caVQSyLpuoK88V<|$VfTqfgxQOl|fGpo49ymGzw3% zBA_0X;@YujntyDVgHMh|(UYT%VI;=tSWDx+=JBi2Dv3z8X#n8oX@8@Fb zR1R@{^Hdf^n9HXv7=9;LV)xei{D-@JZN7Ft0p25&HBbQgBKN0M5R~KTgbF=Kz<&Zs zjEJ0nEA$(d3Ii}AcU%q0I6E2RJIGrHhQ_Vi9R|UmL)n?^?Sdc}iMca%ln6KaW6&^R zmu}5Bgf?J$LWcDTH)bbeV4e(RHa@A_u!xt*Vk!gQOse=9nmjUHXiSNv74JUcYB*=+ zT*yTK1tt3y^849^pEDcTD8=NBX%ZLdC#0BJNZnwRiMAj3UO#jxuFr_((+NfH*F?k^q1*8_E~^)=iR6$D`6%dU!Bj#YfDUfRZLFI zb%skT$}QtJJQIT}^NJ0G+-NhZEw+eE*H0B95~Xm~w4s;7J*(gJ=G?-FFu$z8=~*7W zUy0vTIIw#@8X8F?3NFTmP@aSN;GvPm;__TN@&Cmf`HyEWyo`{Bpu6Yo8r| delta 2764 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 delta 38737 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 diff --git a/.doctrees/transactron.doctree b/.doctrees/transactron.doctree index 0274461740ae40a597dcfbb187e05bc311509a84..636b0b82575c79025d76b4e0ce2dd8d689002393 100644 GIT binary patch delta 6203 zcmdUzYgAO%702E8-nkD{W|Zdu&hV5`2MpkISU#|UXcU3COvFf$D2hSAAgRe}RY;8Z zHh3Agd59X@N)~FcWO9t6##dHVRJ5zcBvy2}R-~yhxK`V=5vAu2uX*Ai{m_1bIcJ}J z?%w;J|JlEL^`4>bM*~-?GP8%c>ysf<{>$X8kc|&Q1TAFCC)1YVR<$6Y*I;3`)9`M& z_!oCzDz<5a)lQRc*1UpE-w1r&-jsbj+{Qgx7j9Kp8YGOAGiSEK*LW*Jc)`|pxr?y^ zIeU(`JTfEI)g0c75<=uJZV##3^1{ymx8f?7W0Ix$~^x$y@S#we)P%u z;mL2oN50cG9vdx;N=`2jE%7ia7ZzgNE>VvcjjT870!1&Z%7qXbVw+aM#qbgLYqj0+MIkmSJ`^$>@d&AXT&vUds8`q6D}JR?Rask6RG_^1Jf;`!Ck z>X)&gsBobv)M06dnI>P1?Af9vUQEG*Wzedg?%Kr{Mc4^^B~EHuDStT_p(PBUFml3AxIH2S;n*r3ZatpzKs;&l@%Q`idYqssyCQI8zI7k^|sTWZD7v&K%62oKA1jJ8c4IF zhznA2i9lTyqw`2$j#e>F0z;_4oD^UZN!!N=K>c2-VaAiK)r=NYku-G%ES)DccZ?$) z=W*;j!5hL+v!D4}`*@PwFB2JkfO)S!{2ebJX2wv9C*A;r-T=${oa?mXHYtn7w6B=y zB;*8Ru+4h@S!bJZU)rbs;x$_vLjBA#_?i24y!k6D4SA|OJ}>yy{mGaS!%WAP6YMx; zH@zj3{d9=iDlO8no>hs}vrbh)TBTspqGzvo7rS9bW2od8@+NzN=O6#CRC_FpK@8fs>TuSehk; z;<~l$&HmX7moJS?En4{c(p(%ghn+#{%h|*L9CLu|K#agG ze`15l&0Xw*AWl>qPOfM5ZXE77$_}@6xX#)lbo(OI7i*Nd3XBzPY&9Oa17Vg0TzEJ< zgKNV%J-zIH7tX!OINs017{!&oMX!rP2e|+|vyY=WCg1GiVjv)@XhmUeu_@HWUGIy* zW#COFeau}4M~_H78ZkYW)01U2+%1k?k{Pw!4C;1gEjJEmC5vjgSehK#Gx(CgKX46v z4=yHr&dpAd%>6rc`_=<)8GiC_&dWSNH5T(8a~iDuEey51rHX8m%+P7}!#PzHUT9NY z!qYprLAarW_p%)04VxgQTZ6dlCB?CL@H8KXrp>&L_99A)Ge8+lDb873kXu-SNsGW& z6XckI-JAIz)mr68Bs1TUdO0jC5?j9G1#D>J|0VOIlF48Y z$_IGPWrX5d5j+i)38=p)P9Ph61b_EvMktz%=nW%z<2yqHw_uh?zS9X0d!{mZs<-O!2$8T#xgl!^I~ky6fXQ9qM6*ZZ5VkmTi~9C&&cyTgvEWnolk!t z*q{|Iix>1*x>qogcRv*DuIQ$ZoD2yyeBZV^O8V5vrrnvhMOgH_WHxr{SXq$ZOV+gs zDS)B=qL<~i81LUBu30-OvMWGL@r2oaa?&CzuB8Wy8{OmD2wWK_Ug;y@5DEcPJnH`` zuLa`qQDPU}JSY>B$uCEX=iPwKizd+tYzPILbMAR<2nw%?=ld8ES~2wVe9==34aB4Z z`>?R4NHmgxg`zuX`?}aUHl(qolCtIEL}y+bxQa5$e}&iXuNFPywN+(e7hls-x!`N> za?vGUr*2;(^5jOjSYPZ4!3agLDc~NzkmA>NvhER$*cEEIWw61O=ERQk<{rk7!k8K# zw2Ajnvz-mb1?fy6(Sme1=&1pX*GYW`v}eO4TUn}#mZGpJLK;d2g-dp_G~eLHFlLx! zM{cLayD{8qk`B0sIP*-&Gdze-lU(A#yQDH*igqM9h1e#dDO39PscG(`Ea}(1p*idK zJd&9&CG`2ys4BG0B?&E(mUq+KqV8{fNN1*#@?Y6kBBb1Qb-T@9%cbhkZW-pVMa2a8bd#PD&Ibh^VxIe RbT7nBIh4KngV%GT{{xk?_@)2= delta 5152 zcmc(jc~n%_9moCM_vXEK(awM@0s{^po7*5N3X&SEOJfZpMBES*+{T4blpJGgT%t*^ zCPDg~{2Gl*PMSmwu}&s%V`AcR)TBmPtVcXrtG1^JHj5@P##U>4X9n=iFyPR0ddffW z?(cVheDCkw-~D~=bKFQi`&F{IPG<|Uix;vWU%i}Fi9zvl1jfe6Wq78iJXP~}AXqMR zq>qjTaSZ9!O}&}5T4QYQJIC?%xVI#7Wg#~7lqa{jK8Hm{IZ~Z7@g6j(jnnel3`^9t zQ;qG$%(*k$jqRJB;nX4>3~l*sR1dr`!}&K>70HoUG(%pXzW?H9@GGn;kTW`WuD(k{U=<#{OJmiWn|pQU z9OtK>5eF3sdPlliFkJi_@V8NRCIrtcCc$`ZFn{d~uCz@$1mU=L17xd% z&b18Lt^EJYc7Tb+Y=l#yzPCpVEIto07_kYmy$wajARGA!ykz&Htc`0UG@!kNKg~}O-Yt@;EPoIJBxz4gW@JMmn zb8CwA?2&qi@=t6ye$n7N#}$pf6_j|P!Y+hp?SgT07Hbu_=G znXDZT4S49T@|bH$srQuM;L-`C0XC|Qo8$53T_vQ|5Q~xb6&owaCJ_L|wk#UvwD5x> z26J+V4lhq6`u5|B=Meiahx}lKzoUIIN%1a2XT`GSQZk^cB|E>hT$AwdFUbUUr;H?P ziWVPxinLW{i%ZxlV%5|yR&Ua{u#{huzz`VZtkf81flhgNX{PTYzDjco+rFEm$}kdh z50Wt4y`L!fH6@~AsLSp(qrA9@SDAC~hUeVl|w zJaL4Uv)eJk++i>lSN}*$T6Sq19{3l1!nK)Qee9Dvv?uoc8Zz1U(}bA-na*|=hk=E{ zunuOpnpuXknN9WS5eJNv#L2gUqxc#i0n;jDj(0k#vm;l!403xr-6a{?0CV9>??8+V-2 zCD=AfbwRecmYrvbo&ZmlST3rmg~6;8q~sT1fV<$?i&7pWxO#E-h0D$3mKQH5oo6k_ zYdc8@Zrddo@QIhC8~SjMR>yKHB{d?#yky~u@`Cawmo1rB;Ay|VM@kZcJexOKcfhpc(#DoW25=eUtt-llt#k0|P7>-~qi~}A8sVfgYlM1oc>K$EB-yrAzVl!s zsX-Y={Ov8N7yB6GZ9V)!YBhcINc=8Pu75aIGmhZQ2U0VR)M4OFvmNlX0rPsx?a)`< zH$55$?UGHb#w2^9HRG3oSN)H^J)yJc_Y>vDRDTegal{@B|6jglV`s~vAArqPzan>? zu<_ulvZf*P%y-yW{`!{sGL#aHu>WI0jFW}jT%AJ+_4 z8XrcuZaB{zs`v}%C({&9I3LRv3{yJb^4Xb+H|09P(Tq1{DkerBQC4fYobfBgPryIL zr zFbU{a56*8)ohwGM6hiAGJHzu~Cfa2@kHDwmsHWbpX3zu{(}#Mn<;#7&U68vZvbp_e zYtdgDK{agYjN*3rG?Ts)?17KIRvy83+rKVPa%)w&Hl54%_KRK2&1dK{tRO5c8GSGJ|p`Mm=z72bXVSiHEbhuqgk*CziIF{FTPUMUe`Ro6C4tIS%V$<)_N`iH>g+Jg25P;NHlIHqE M(~aelfReQT05D8xg#Z8m diff --git a/.doctrees/transactron.lib.doctree b/.doctrees/transactron.lib.doctree index 1b56a0a92867d2cc56a98f6f6fea70e9b3f4ad57..1b2644d9640cb473fa3a5a426f34e6e8b4493fff 100644 GIT binary patch delta 4724 zcmbVQeNa@_73c1~yL;~%U;zzm0Nur~2;%akDWEYJQE)*^#mR@EStwE|0xO1o7!yOx zBsQ9ulIP=Ci4i7F)ESdN2;QdB3O2Tyv=K%#iB+TGv^W)8oEVc-Guykc?6U0J$zh%g4#`#^<%NC)?kAW0*G`u3b%eZ`_&a+^W zI!f*CMaj6_+4aj+_ZY`E)_5$dHro}l9C}AxmYX{QvXmmyW4fw4)8;9-9r>p^w_Ar4 z-NN6l>TALnE=scmMu#2?QWYLb6OdB; zA3-_M+y^7^i1F^3$gxx*MqQ1n7++294L582-|Nt}Bn77fk}9WJP`y(TcnlP+*XN9( z|II!`_;DFMl&lb_@uf%u*~=y4n- zzv}6L>ew2|CN+1*$#EJZJZz=u&sS;WDx8U8x_99p%u&EF%ZAmp!%-U!Xb0Y$hIcIp z@VZcqHh`%v&>;wio50q988p>kEpM#Hr_JPR(cjRp4M&4(2M!G;8C*z4)BhzGCOEYd zkIO?6n1724d5eqk{{+rL4vtUa zH*_Y`B)P13qS03Rv$gdVfUKo;d#Ne*BFQm3x%fyq(&h|1w^sis`n& zK&D4WZQB(b8Gn}?;%T3!ch2fQK-Oc_3?@Pr3t4WMLuZRWVLFloZxiCuJU0t24Ustb zNK0b8`&{gQjHZ=WI_uZunkQ+s&xIN0Qxc`Z>@7;@_nYyljC^xf03|sf-%ZrDbZRsS zXz5X2?v5dHDq0DL@=1Xx*%$dF0-=RtnV-vdXU=n$lGQ}|Z)uqL+-@hAYXhcWCY<9c zfo%9)5FkQG<`yt-fuNxZnc(VSGQGQBd(y?^Y2(u0_pNqW_ch(sRs|TTdvxmf_|qPp zA|GIUndZQ$-MS*4u~&DjKp{r)kjfZWhLmG)ajOlA%M6WY)cj|h+5Ip5);fh~AJ*&D zWmMtRD`v#SRS;jP;JNR#O3#m+QT7bt`pN<0UYZMS1Nu;Y>=XSx)6p8w-1auGbx?g% zWenHNz!-esOZ|C+uO+0u!6Z0nA@R_5Rv#w2XaxMjLL$eXsJxv{;l+sZ84B5!S*SW5 zzpzkc9xo)&BaD=2gg{p`&{%LaAUiyoPS<0KOrqdpE zN8GMvOUCA@@cCS-2lESP3amD0A|a&_CGpoYsZ)zMgk{qu{{DDRHqAxoAfT0Wp?8Z5 zbQkr|){4a-L+3DyfvN|oeQdBn47L@TR?#@<&8Mk+_G0=X37;`Z;3BNd41)#K9?}!Yg=?v;o^K6 z%`Y6J%XEH~F7EKBaO6!<>HY7DN=J4ErSN2TAcb61`iOQy({N)CwFS0{FtbBy4^898 zd+E!W6G?W0_Lj@Y{mF8D3gLdlzGKAhLF%jiG+k9wy4&LdoSIfR8A zTn}ZRc^&bQFt!zu``oW|Bbc4=Zh$af#NUZv7sLFD^q!gdjbrbl zgl6bn%9ORjcX~$wi%6MxYrLRp29IrE$})ZE3HA~}Jv`@EEMZd7c>hMW1d)C2f()!M zSmA+9Y|ux|Xe$VlL@2@Z7d+!>_Blq&!T2mY=Q9%gl|k3vSu(V4VRy&^PjUA_(|M+a zJDXUd&(>Y$F*bG2vzbP}TK`b?V-qfI6}6t$5|qim?heA_*vZ|k?9(|DSzHI-o@C#9 z<5hgfl)ss7{)p`&=pv8qXHjkzZ=Youeu>$6{{SmQz2^9at^Tukq&YXC{dJG&M@lr1~3*p=? z(Zo;P2ugj{tzgvWT@pn@U$G*_WZTb2|1%LHWt7B%O>fZ4^@jH$?=uz;uV@WAFlY=` Kz7ZJ=jsF91Di@Rh delta 4359 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 delta 4411 zcmbVPZBSHI80J0at}b88f{+U=ACd~lr(mf~AgnlQ3aR*krog5kDWKsxQ$N(*teMi# zajtN5Y!oCi%MY9z9Wfk0Eg7&)mkGUr?lR)>1#;nxr;z){@mRiWo{Fy@6DjCN19gjm^iD+KKfTd}4HH&gA#nIfdWxh_SPF&dnl_yRtNzsc*u?It2! zr`6>YymU!*T2}GZUJ^9Mg5aHXM$uKMfvy*bk4lVZP6{VRkaF$S6+TuJYZNj0l znM0;aQ171$eD=y$1${-UKWyU@H>mlfdX9g;?ihrVh9>YOZB6j9M}T!%5k)h^^IzAW zRj93%H#F=_a4vCjVv(>Pze5|xPk(xu?DBz#>IJa52!iRQB4`1}We`Vi=^)e_l8NUh z@K6d~vjt*&21QR|_d*K2y$^;?Wj|zLIrM}8GGrDF=!O}CdO$^Xesm|M!6uxQz(O<6fr;VjlB5o5I_2_D;hFA z8e)O1c1NEoPz)l5LNtQ7snIlxJ%p3CAfzVBSQJ6-sZk0s#G){h?~t5UkYYM?Y#>qt zw~7@m@l>NEDM$Yli-ytKV02j&T2cgxq$5JnuY;|L+&qupplq3P&_X(b&`4XPDLeTC zP&8WgmMtJLQXu*erpLxZ$VG0ke8X|z=Gc@jcnEvwOm)pfz}?d(LWX-$P7WcTYv1Bgr04ou{J!Q5N)b z8HbA5_KM2{8Igv5mb1FQkipW?yAWv|6hCXmXwtD5O(kw?kqf=P2;~7>m)6D6lx^H9 zqMEhR+zWqX*`sTLWoS{TJMdIrh&&v)46)FqjBeaW$xMwQ7E;Z}Vr6MnF^U@MQPI%g z?P!rZciY%XS&hh-?EH+?r?w0&aknmL_SY%n|0OhUFWLm2&1{DVG2|vvQ_jwwl!z3h zvmE7;wUt;w{;WZ3==b~4J(*?2mt6Uh)#tP20|!yP$AIPSHRff?b_XcoG;wZnXn@8+ zg`R3M8lcocgZ_O^EG1dp%8GPbi@mIyAbr1}lX9pdwO7!)j_Wgu=C&KF@}RV;jH1i0 zp>$DIDsMAx@i**oGeIi4P>mc;k!APLItScLy7_dY<m91Vn5ixKB~OrH@k@Tq14mNiitW6GCPmjF>zP1C;7WIGZ9;O;5c!)8EEidAv zCnmj295V^7FqhJuN_)w%z?L1rzsaGIbRNYok(pI^xr6RB`OW<*ESEG)PzE;)kb$xf z-!--#I?6tF6P#f&*>@T*d4ViEJcEO*vOw8KvV7R!Y3*=}Ssm_2aS|w-CCi^f|M?ef z=-=GIQhc|~p7th4W;?zlhi1}wgBebGmqWub>HfIO=rxkx$Emk$5LEtUmZ1HvJ(3n! bYBz3nbuOt@n!Z4tsOkwW=BkfyF>e0>bNMZi diff --git a/.doctrees/transactron.utils.amaranth_ext.doctree b/.doctrees/transactron.utils.amaranth_ext.doctree index 207950f7e276ed19838cdc9f2460ed375d4e1262..e0fbc60d8645aaf5a88c11cd5ea2fe5c4b26b8ad 100644 GIT binary patch delta 1103 zcmah{Ur1A76yMqI1nD}jE=6~3Tq(UMZeWH=f-{5~)}Y!j9L2g2IRB)P!zG1S5LgI8 zhjkUZ)btuhzt@sM~DJfvOB)`A^N#cFyPE9z&^5;o9KvJPaxOB}Wtk*l#$3a++< zT(7CuLd#Y$SKGT)jFPpQd_J+33eQvxBD!4$;ygPD;EOj=6p^@H&54a%gWa4km~(rm zRlksYDEqasT|=3=++qSsB~Cu#_d@!y3#I&VN+Fy=>4OnZk7v@Uk4@)MF}lZ1S|i_a zRM;tT-;9ey-gQA-G^#@Z4o!UHa(31YP4;Y;6yDp&A)QlCbl^aKy6`Uvc8}jC%hL}a z84>B5nfyl*MZl-CFOu<;V{ooc&2{+GfDQzlnlGYU!h##mt)#`G0RCLD#G==%N9yod zolT8xQtJg-$cG!GY4Hv)bD+`S(tP&+Iztcf{gPpiG9rW~AajaBshyboGob;rJB)$5 zkj_N^glAf_@YiZxU=z}@D%?Uw*CKj#HnbkglB%%8sWWdP@jm|dXhuL&p@|)@-kajh zYj(>Y0nWcV4i*-UU{4J%_p?BSQGzTyhb=mrd?gLC(6V7t-WuRL0}gq_2-FkutP!HS zqgzvM?gt-ai5*RiyBwmVX2YU-b4pnbaJrYLO4ly(7+Gjh ag87s(nNyHjQt3Ph37(AFMX4%)V8$Q33Y<0o delta 1163 zcmbRCj^+AW7M2FqsmvQ$9&s}oOn%O-FqwlVkx_HvUQ2MiA9NdB^i1d zDLHzZ5AY~3^2wlzz2~)%WDK3Gq3+F?UiOUoBZpn7qUvV z=?1Kf5}PNUTf)rfJ^A8gk;z_{gg};VuDT@4gww)*S5Pg47&H0EwN2P<-E$qAt-&{D zGc(Feet#R78tz0*?s>oqqz?h{)X6vR>TYJgC%`0ig^_`wI5RyjF$d^(lyrrm=fPvv z$=@IHk)UPsgU9BKf~SF25Hgu<^807PeB!9e1fM5Qz7WAT+5dm`=6BEkv0}1O**5ylcm5j9{Cq9>j0 zPGXGrP?8NK7Pse0FbXhZi^m4cl(RibhVd?os!BnA0XX4mV5Cr_EI;o=&Gws$K=)ut SSKEOJ`7AcqRH-t~5d;7t0K-54 diff --git a/.doctrees/transactron.utils.doctree b/.doctrees/transactron.utils.doctree index 7813cbe644ce11b5fe85ff53855f173a0381b04c..96219c50750b83fb4d7fe87841fb43b440ad9422 100644 GIT binary patch delta 51135 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 NzT);4&(UR}e*vP!w4wk2 diff --git a/_sources/auto_graph.rst.txt b/_sources/auto_graph.rst.txt index 29177e46c..497fc261f 100644 --- a/_sources/auto_graph.rst.txt +++ b/_sources/auto_graph.rst.txt @@ -7,12 +7,12 @@ Core_DiscardBranchVerify["DiscardBranchVerify"] Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_request["request"] - 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"] @@ -20,13 +20,13 @@ WishboneMaster1_result["result"] WishboneMaster1_WishboneMaster["WishboneMaster"] subgraph Forwarder1["result Forwarder"] - Forwarder1_write["write"] Forwarder1_read["read"] + Forwarder1_write["write"] end end subgraph WishboneMasterAdapter["bus_master_instr_adapter WishboneMasterAdapter"] - WishboneMasterAdapter_request_read["request_read"] WishboneMasterAdapter_get_read_response["get_read_response"] + WishboneMasterAdapter_request_read["request_read"] subgraph Serializer["bus_serializer Serializer"] Serializer_Serializer["Serializer"] Serializer_Serializer1["Serializer"] @@ -37,10 +37,10 @@ end end subgraph WishboneMasterAdapter1["bus_master_data_adapter WishboneMasterAdapter"] - WishboneMasterAdapter1_get_write_response["get_write_response"] WishboneMasterAdapter1_request_read["request_read"] WishboneMasterAdapter1_get_read_response["get_read_response"] WishboneMasterAdapter1_request_write["request_write"] + WishboneMasterAdapter1_get_write_response["get_write_response"] subgraph Serializer1["bus_serializer Serializer"] Serializer1_Serializer["Serializer"] Serializer1_Serializer1["Serializer"] @@ -53,8 +53,8 @@ end end subgraph CoreInstructionCounter["core_counter CoreInstructionCounter"] - CoreInstructionCounter_increment["increment"] CoreInstructionCounter_decrement["decrement"] + CoreInstructionCounter_increment["increment"] end subgraph FIFO["fifo_fetch FIFO"] FIFO_write["write"] @@ -67,12 +67,12 @@ MethodProduct_method["method"] end subgraph BasicFifo2["free_rf_fifo BasicFifo"] - BasicFifo2_read["read"] BasicFifo2_write["write"] + BasicFifo2_read["read"] end subgraph SimpleCommonBusCacheRefiller["icache_refiller SimpleCommonBusCacheRefiller"] - SimpleCommonBusCacheRefiller_start_refill["start_refill"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] + SimpleCommonBusCacheRefiller_start_refill["start_refill"] SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] subgraph Forwarder2["address_fwd Forwarder"] Forwarder2_read["read"] @@ -80,11 +80,11 @@ end end subgraph ICache["icache ICache"] + ICache_issue_req["issue_req"] ICache_ICache["ICache"] - ICache_accept_res["accept_res"] ICache_ICache1["ICache"] ICache_ICache2["ICache"] - ICache_issue_req["issue_req"] + ICache_accept_res["accept_res"] ICache_ICache3["ICache"] subgraph HwCounter["perf_loads HwCounter"] HwCounter__incr["_incr"] @@ -108,8 +108,8 @@ HwExpHistogram__add["_add"] end subgraph FIFO1["fifo FIFO"] - FIFO1_write["write"] FIFO1_read["read"] + FIFO1_write["write"] end end subgraph FIFO2["req_fifo FIFO"] @@ -117,8 +117,8 @@ FIFO2_write["write"] end subgraph Forwarder3["res_fwd Forwarder"] - Forwarder3_read["read"] Forwarder3_write["write"] + Forwarder3_read["read"] end end subgraph FRAT["FRAT FRAT"] @@ -129,17 +129,17 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_write["write"] - RegisterFile_read2["read2"] RegisterFile_read1["read1"] + RegisterFile_read2["read2"] RegisterFile_free["free"] + RegisterFile_write["write"] end subgraph ReorderBuffer["ROB ReorderBuffer"] ReorderBuffer_retire["retire"] ReorderBuffer_peek["peek"] - ReorderBuffer_get_indices["get_indices"] ReorderBuffer_put["put"] ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_get_indices["get_indices"] subgraph LatencyMeasurer1["perf_rob_wait_time LatencyMeasurer"] LatencyMeasurer1__stop["_stop"] LatencyMeasurer1__start["_start"] @@ -147,25 +147,25 @@ HwExpHistogram1__add["_add"] end subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end end subgraph Fetch["fetch Fetch"] - Fetch_stall_exception["stall_exception"] + Fetch_resume["resume"] Fetch_Fetch["Fetch"] + Fetch_stall_exception["stall_exception"] 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"] + ExceptionCauseRegister_report["report"] subgraph BasicFifo4["fu_report_fifo BasicFifo"] BasicFifo4_read["read"] BasicFifo4_write["write"] @@ -178,8 +178,8 @@ subgraph Collector["result_collector Collector"] Collector_method["method"] subgraph Forwarder4["forwarder Forwarder"] - Forwarder4_write["write"] Forwarder4_read["read"] + Forwarder4_write["write"] end subgraph ManyToOneConnectTrans["connect ManyToOneConnectTrans"] subgraph ConnectTrans1["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -197,20 +197,20 @@ MethodProduct1_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_insert["insert"] + RSFuncBlock_select["select"] RSFuncBlock_update["update"] RSFuncBlock_get_result["get_result"] - RSFuncBlock_select["select"] + RSFuncBlock_insert["insert"] subgraph RS["rs RS"] - RS_update["update"] - RS_insert["insert"] RS_RS["RS"] + RS_take["take"] RS_RS1["RS"] RS_RS2["RS"] - RS_select["select"] + RS_update["update"] RS_RS3["RS"] - RS_take["take"] + RS_insert["insert"] RS_RS4["RS"] + RS_select["select"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] AluFuncUnit_issue["issue"] @@ -224,22 +224,22 @@ WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] + ShiftFuncUnit_issue["issue"] subgraph FIFO5["fifo FIFO"] - FIFO5_read["read"] FIFO5_write["write"] + FIFO5_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_accept["accept"] JumpBranchFuncUnit_issue["issue"] + JumpBranchFuncUnit_accept["accept"] subgraph FIFO6["fifo_branch_resolved FIFO"] - FIFO6_write["write"] FIFO6_read["read"] + FIFO6_write["write"] end subgraph HwCounter5["perf_jumps HwCounter"] HwCounter5__incr["_incr"] @@ -251,16 +251,16 @@ HwCounter7__incr["_incr"] end subgraph FIFO7["fifo_res FIFO"] - FIFO7_write["write"] FIFO7_read["read"] + FIFO7_write["write"] end end subgraph WakeupSelect2["wakeup_select_2 WakeupSelect"] WakeupSelect2_WakeupSelect["WakeupSelect"] end subgraph ExceptionFuncUnit["func_unit_3 ExceptionFuncUnit"] - ExceptionFuncUnit_accept["accept"] ExceptionFuncUnit_issue["issue"] + ExceptionFuncUnit_accept["accept"] subgraph FIFO8["fifo FIFO"] FIFO8_write["write"] FIFO8_read["read"] @@ -307,42 +307,42 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_LSUDummy["LSUDummy"] - LSUDummy_precommit["precommit"] - LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_get_result["get_result"] - LSUDummy_select["select"] - LSUDummy_LSUDummy2["LSUDummy"] LSUDummy_insert["insert"] + LSUDummy_LSUDummy["LSUDummy"] + LSUDummy_select["select"] + LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_update["update"] + LSUDummy_LSUDummy2["LSUDummy"] + LSUDummy_precommit["precommit"] subgraph Forwarder6["forwarder Forwarder"] - Forwarder6_write["write"] Forwarder6_read["read"] + Forwarder6_write["write"] end subgraph LSURequester["requester LSURequester"] - LSURequester_accept["accept"] + LSURequester_issue_cond1["issue_cond1"] LSURequester_issue["issue"] - LSURequester_issue_cond2["issue_cond2"] LSURequester_accept_cond0["accept_cond0"] LSURequester_issue_cond0["issue_cond0"] - LSURequester_issue_cond1["issue_cond1"] + LSURequester_issue_cond2["issue_cond2"] LSURequester_accept_cond1["accept_cond1"] + LSURequester_accept["accept"] end end subgraph CSRUnit["rs_block_2 CSRUnit"] - CSRUnit_select["select"] CSRUnit_update["update"] - CSRUnit_CSRUnit["CSRUnit"] CSRUnit_precommit["precommit"] CSRUnit_get_result["get_result"] + CSRUnit_CSRUnit["CSRUnit"] CSRUnit_insert["insert"] CSRUnit_fetch_resume["fetch_resume"] + CSRUnit_select["select"] end subgraph MethodTryProduct["InstructionPrecommitKey_unifier MethodTryProduct"] MethodTryProduct_MethodTryProduct["MethodTryProduct"] - MethodTryProduct_method["method"] MethodTryProduct_MethodTryProduct1["MethodTryProduct"] MethodTryProduct_MethodTryProduct2["MethodTryProduct"] + MethodTryProduct_method["method"] end subgraph Collector2["FetchResumeKey_unifier Collector"] Collector2_method["method"] @@ -364,9 +364,9 @@ ResultAnnouncement_ResultAnnouncement["ResultAnnouncement"] end subgraph InterruptController["interrupt_controller InterruptController"] - InterruptController_report_interrupt["report_interrupt"] - InterruptController_mret["mret"] InterruptController_entry["entry"] + InterruptController_mret["mret"] + InterruptController_report_interrupt["report_interrupt"] end subgraph GenericCSRRegisters["csr_generic GenericCSRRegisters"] GenericCSRRegisters_GenericCSRRegisters["GenericCSRRegisters"] @@ -377,40 +377,40 @@ CSRRegister__fu_read["_fu_read"] end subgraph CSRRegister1["mtvec CSRRegister"] - CSRRegister1__fu_write["_fu_write"] CSRRegister1_read["read"] CSRRegister1__fu_read["_fu_read"] + CSRRegister1__fu_write["_fu_write"] end subgraph CSRRegister2["mepc CSRRegister"] - CSRRegister2__fu_write["_fu_write"] - CSRRegister2_write["write"] CSRRegister2_read["read"] CSRRegister2__fu_read["_fu_read"] + CSRRegister2_write["write"] + CSRRegister2__fu_write["_fu_write"] end end subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] DoubleCounterCSR_increment["increment"] subgraph CSRRegister3["register_low CSRRegister"] CSRRegister3_read["read"] - CSRRegister3__fu_read["_fu_read"] CSRRegister3_write["write"] + CSRRegister3__fu_read["_fu_read"] end subgraph CSRRegister4["register_high CSRRegister"] - CSRRegister4_write["write"] CSRRegister4__fu_read["_fu_read"] CSRRegister4_read["read"] + CSRRegister4_write["write"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5_write["write"] CSRRegister5__fu_read["_fu_read"] CSRRegister5_read["read"] + CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] - CSRRegister6_write["write"] CSRRegister6_read["read"] + CSRRegister6_write["write"] CSRRegister6__fu_read["_fu_read"] end end @@ -441,15 +441,15 @@ Renaming_Renaming["Renaming"] end subgraph FIFO12["reg_alloc_out_buf FIFO"] - FIFO12_write["write"] FIFO12_read["read"] + FIFO12_write["write"] end subgraph ROBAllocation["rob_alloc ROBAllocation"] ROBAllocation_ROBAllocation["ROBAllocation"] end subgraph FIFO13["rs_select_out_buf FIFO"] - FIFO13_read["read"] FIFO13_write["write"] + FIFO13_read["read"] end subgraph RSSelection["rs_selector RSSelection"] RSSelection_RSSelection["RSSelection"] @@ -469,25 +469,25 @@ ConnectTrans11_ConnectTrans["ConnectTrans"] end subgraph Retirement["retirement Retirement"] + Retirement_core_state["core_state"] Retirement_Retirement["Retirement"] Retirement_Retirement1["Retirement"] Retirement_Retirement2["Retirement"] - Retirement_Retirement_cond0["Retirement_cond0"] - Retirement_core_state["core_state"] - Retirement_Retirement_cond1["Retirement_cond1"] Retirement_Retirement3["Retirement"] + Retirement_Retirement_cond1["Retirement_cond1"] Retirement_Retirement4["Retirement"] + Retirement_Retirement_cond0["Retirement_cond0"] 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_write["write"] + CSRRegister7__fu_read["_fu_read"] end subgraph CSRRegister8["register_high CSRRegister"] + CSRRegister8_write["write"] CSRRegister8__fu_read["_fu_read"] CSRRegister8_read["read"] - CSRRegister8_write["write"] end end subgraph HwCounter9["perf_instr_ret HwCounter"] @@ -512,61 +512,61 @@ end end subgraph TransactionManager["transactionManager TransactionManager"] - TransactionManager_LSUDummy_issue_cond0["LSUDummy_issue_cond0"] - TransactionManager_LSUDummy_accept_cond1["LSUDummy_accept_cond1"] - TransactionManager_issue_cond2_LSUDummy["issue_cond2_LSUDummy"] - TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] TransactionManager_Retirement_cond1_Retirement["Retirement_cond1_Retirement"] - TransactionManager_issue_cond1_LSUDummy["issue_cond1_LSUDummy"] - TransactionManager_Retirement_Retirement_cond0["Retirement_Retirement_cond0"] + TransactionManager_Retirement_cond0_Retirement["Retirement_cond0_Retirement"] + TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] + TransactionManager_LSUDummy_accept_cond1["LSUDummy_accept_cond1"] + TransactionManager_LSUDummy_issue_cond1["LSUDummy_issue_cond1"] + TransactionManager_LSUDummy_issue_cond2["LSUDummy_issue_cond2"] + TransactionManager_LSUDummy_issue_cond0["LSUDummy_issue_cond0"] end end Core_InitFreeRFFifo --> BasicFifo2_write - Retirement_Retirement3 --> BasicFifo2_write - TransactionManager_Retirement_Retirement_cond0 --> BasicFifo2_write + Retirement_Retirement --> BasicFifo2_write + TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write TransactionManager_Retirement_cond1_Retirement --> BasicFifo2_write FIFO6_read --> Core_DiscardBranchVerify WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write Forwarder2_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMasterAdapter_request_read - SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer1 + SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request ICache_ICache2 <--> HwCounter4__incr - ICache_ICache1 <--> HwCounter3__incr - ICache_ICache1 <--> HwCounter2__incr - ICache_ICache1 <--> HwCounter1__incr - ICache_ICache1 --> Forwarder3_write - ICache_ICache3 --> SimpleCommonBusCacheRefiller_start_refill + ICache_ICache <--> HwCounter3__incr + ICache_ICache <--> HwCounter2__incr + ICache_ICache <--> HwCounter1__incr + ICache_ICache --> Forwarder3_write + ICache_ICache1 --> SimpleCommonBusCacheRefiller_start_refill + ICache_ICache1 --> Forwarder2_write ICache_ICache3 --> Forwarder2_write - ICache_ICache --> Forwarder2_write - SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache - WishboneMasterAdapter_get_read_response --> ICache_ICache - Serializer_Serializer --> ICache_ICache - BasicFifo_read --> ICache_ICache - WishboneMaster_result --> ICache_ICache - Forwarder_read --> ICache_ICache - 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 + SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache3 + WishboneMasterAdapter_get_read_response --> ICache_ICache3 + Serializer_Serializer1 --> ICache_ICache3 + 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 AdapterTrans_AdapterTrans_method --> MethodProduct_method - Fetch_Fetch --> FIFO_write + Fetch_Fetch1 --> FIFO_write AdapterTrans_AdapterTrans_method --> FIFO_write - Fetch_Fetch --> MethodMap_method + Fetch_Fetch1 --> MethodMap_method AdapterTrans_AdapterTrans_method --> MethodMap_method - Fetch_Fetch <--> CoreInstructionCounter_increment + Fetch_Fetch1 <--> CoreInstructionCounter_increment AdapterTrans_AdapterTrans_method <--> CoreInstructionCounter_increment FIFO_read --> DecodeStage_DecodeStage DecodeStage_DecodeStage <--> HwCounter8__incr @@ -576,7 +576,7 @@ RegAllocation_RegAllocation --> FIFO10_write FIFO10_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename - Retirement_Retirement3 --> FRAT_rename + Retirement_Retirement --> FRAT_rename TransactionManager_Retirement_cond1_Retirement --> FRAT_rename Renaming_Renaming --> FIFO11_write FIFO11_read --> ROBAllocation_ROBAllocation @@ -584,17 +584,17 @@ ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO3_write ROBAllocation_ROBAllocation --> FIFO12_write - FIFO12_read --> RSSelection_RSSelection2 - RSSelection_RSSelection2 --> Forwarder8_write - Forwarder8_read --> RSSelection_RSSelection1 + FIFO12_read --> RSSelection_RSSelection1 + RSSelection_RSSelection1 --> Forwarder8_write Forwarder8_read --> RSSelection_RSSelection + Forwarder8_read --> RSSelection_RSSelection2 Forwarder8_read --> RSSelection_RSSelection3 - RSFuncBlock_select --> RSSelection_RSSelection1 - RS_select --> RSSelection_RSSelection1 - RSSelection_RSSelection1 --> FIFO13_write + RSFuncBlock_select --> RSSelection_RSSelection + RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO13_write + RSSelection_RSSelection2 --> FIFO13_write RSSelection_RSSelection3 --> FIFO13_write - RSSelection_RSSelection <--> LSUDummy_select + RSSelection_RSSelection2 <--> LSUDummy_select RSSelection_RSSelection3 <--> CSRUnit_select FIFO13_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion @@ -611,7 +611,7 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume - Retirement_Retirement --> Fetch_resume + Retirement_Retirement4 --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done @@ -633,7 +633,7 @@ RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO5_write - RS_RS4 --> WakeupSelect2_WakeupSelect + RS_RS1 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect <--> HwCounter5__incr WakeupSelect2_WakeupSelect <--> HwCounter6__incr @@ -648,7 +648,7 @@ RS_RS2 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO8_write - RS_RS1 --> WakeupSelect4_WakeupSelect + RS_RS4 --> WakeupSelect4_WakeupSelect WakeupSelect4_WakeupSelect --> PrivilegedFuncUnit_issue ConnectTrans4_ConnectTrans --> Forwarder5_write ConnectTrans5_ConnectTrans --> Forwarder5_write @@ -666,12 +666,12 @@ PrivilegedFuncUnit_accept --> ConnectTrans8_ConnectTrans CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo5_write - LSUDummy_LSUDummy --> Forwarder6_write - TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write - TransactionManager_LSUDummy_issue_cond0 --> Forwarder6_write - TransactionManager_issue_cond2_LSUDummy --> Forwarder6_write + LSUDummy_LSUDummy1 --> Forwarder6_write TransactionManager_LSUDummy_accept_cond1 --> Forwarder6_write - TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write + TransactionManager_LSUDummy_issue_cond1 --> Forwarder6_write + TransactionManager_LSUDummy_issue_cond0 --> Forwarder6_write + TransactionManager_LSUDummy_issue_cond2 --> Forwarder6_write + TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -695,43 +695,43 @@ CSRUnit_get_result --> ConnectTrans3_ConnectTrans MethodTryProduct_MethodTryProduct1 --> PrivilegedFuncUnit_precommit MethodTryProduct_MethodTryProduct1 <--> InterruptController_mret - MethodTryProduct_MethodTryProduct2 --> LSUDummy_precommit - MethodTryProduct_MethodTryProduct --> CSRUnit_precommit + MethodTryProduct_MethodTryProduct --> LSUDummy_precommit + MethodTryProduct_MethodTryProduct2 --> CSRUnit_precommit ConnectTrans9_ConnectTrans --> Forwarder7_write ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo5_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans ReorderBuffer_peek --> Retirement_Retirement1 - ReorderBuffer_peek --> Retirement_Retirement4 - ReorderBuffer_peek --> Retirement_Retirement3 - ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond0 + ReorderBuffer_peek --> Retirement_Retirement2 + ReorderBuffer_peek --> Retirement_Retirement + ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement ReorderBuffer_peek --> TransactionManager_Retirement_cond1_Retirement Retirement_Retirement1 --> MethodTryProduct_method - ExceptionCauseRegister_get --> Retirement_Retirement4 - ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond0 + ExceptionCauseRegister_get --> Retirement_Retirement2 + ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement ExceptionCauseRegister_get --> TransactionManager_Retirement_cond1_Retirement - Retirement_Retirement3 <--> ReorderBuffer_retire - TransactionManager_Retirement_Retirement_cond0 <--> ReorderBuffer_retire + Retirement_Retirement <--> ReorderBuffer_retire + TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire TransactionManager_Retirement_cond1_Retirement <--> ReorderBuffer_retire - Retirement_Retirement3 <--> LatencyMeasurer1__stop - TransactionManager_Retirement_Retirement_cond0 <--> LatencyMeasurer1__stop + Retirement_Retirement <--> LatencyMeasurer1__stop + TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop TransactionManager_Retirement_cond1_Retirement <--> LatencyMeasurer1__stop - FIFO3_read --> Retirement_Retirement3 - FIFO3_read --> TransactionManager_Retirement_Retirement_cond0 + FIFO3_read --> Retirement_Retirement + FIFO3_read --> TransactionManager_Retirement_cond0_Retirement FIFO3_read --> TransactionManager_Retirement_cond1_Retirement - Retirement_Retirement3 --> HwExpHistogram1__add - TransactionManager_Retirement_Retirement_cond0 --> HwExpHistogram1__add + Retirement_Retirement --> HwExpHistogram1__add + TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram1__add - CoreInstructionCounter_decrement --> Retirement_Retirement3 - CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond0 + CoreInstructionCounter_decrement --> Retirement_Retirement + CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond1_Retirement - RRAT_peek --> Retirement_Retirement3 + RRAT_peek --> Retirement_Retirement RRAT_peek --> TransactionManager_Retirement_cond1_Retirement - Retirement_Retirement3 --> RegisterFile_free - TransactionManager_Retirement_Retirement_cond0 --> RegisterFile_free + Retirement_Retirement --> RegisterFile_free + TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free TransactionManager_Retirement_cond1_Retirement --> RegisterFile_free - CSRRegister1_read --> Retirement_Retirement - Retirement_Retirement <--> ExceptionCauseRegister_clear + CSRRegister1_read --> Retirement_Retirement4 + Retirement_Retirement4 <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -743,53 +743,53 @@ CSRRegister6_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans2_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt - TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy1 - TransactionManager_LSUDummy_accept_cond1 <--> LSUDummy_LSUDummy1 - LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 + TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement_cond0 + TransactionManager_Retirement_cond0_Retirement --> RRAT_commit + TransactionManager_Retirement_cond0_Retirement <--> DoubleCounterCSR2_increment + CSRRegister7_read --> TransactionManager_Retirement_cond0_Retirement + TransactionManager_Retirement_cond0_Retirement --> CSRRegister7_write + CSRRegister8_read --> TransactionManager_Retirement_cond0_Retirement + TransactionManager_Retirement_cond0_Retirement --> CSRRegister8_write + TransactionManager_Retirement_cond0_Retirement <--> 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_LSUDummy2 + TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy2 LSURequester_accept --> TransactionManager_LSUDummy_accept_cond1 - TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 - WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 - Serializer1_Serializer --> TransactionManager_LSUDummy_accept_cond0 - BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 + 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 - WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 + BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond1 - Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 + WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 Forwarder1_read --> TransactionManager_LSUDummy_accept_cond1 - TransactionManager_LSUDummy_issue_cond0 <--> LSUDummy_LSUDummy2 - TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy2 - TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy2 + Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 + TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 + TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy + TransactionManager_LSUDummy_issue_cond0 <--> LSUDummy_LSUDummy + TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy + TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue TransactionManager_LSUDummy_issue_cond0 --> LSURequester_issue - TransactionManager_issue_cond2_LSUDummy --> LSURequester_issue - TransactionManager_issue_cond1_LSUDummy --> 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_cond2 --> LSURequester_issue + 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_issue_cond1_LSUDummy --> BasicFifo1_write + TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request TransactionManager_LSUDummy_issue_cond0 --> WishboneMaster1_request - TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request - TransactionManager_issue_cond2_LSUDummy <--> LSURequester_issue_cond2 - TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement2 - TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement2 - TransactionManager_Retirement_Retirement_cond0 --> CSRRegister_write - TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write - TransactionManager_Retirement_Retirement_cond0 --> CSRRegister2_write - TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write - TransactionManager_Retirement_Retirement_cond0 <--> InterruptController_entry - TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry - TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement_cond0 - TransactionManager_Retirement_Retirement_cond0 --> RRAT_commit - TransactionManager_Retirement_Retirement_cond0 <--> DoubleCounterCSR2_increment - CSRRegister7_read --> TransactionManager_Retirement_Retirement_cond0 - TransactionManager_Retirement_Retirement_cond0 --> CSRRegister7_write - CSRRegister8_read --> TransactionManager_Retirement_Retirement_cond0 - TransactionManager_Retirement_Retirement_cond0 --> CSRRegister8_write - TransactionManager_Retirement_Retirement_cond0 <--> HwCounter9__incr - TransactionManager_LSUDummy_accept_cond1 <--> LSURequester_accept_cond1 - WishboneMasterAdapter1_get_read_response --> TransactionManager_LSUDummy_accept_cond1 - Serializer1_Serializer1 --> TransactionManager_LSUDummy_accept_cond1 - TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 - TransactionManager_issue_cond1_LSUDummy <--> LSURequester_issue_cond1 - TransactionManager_issue_cond1_LSUDummy --> WishboneMasterAdapter1_request_read - TransactionManager_issue_cond1_LSUDummy --> Serializer1_Serializer3 + TransactionManager_LSUDummy_issue_cond0 <--> LSURequester_issue_cond0 + TransactionManager_LSUDummy_issue_cond0 --> WishboneMasterAdapter1_request_write + TransactionManager_LSUDummy_issue_cond0 --> Serializer1_Serializer1 + TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 + TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 + WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 + Serializer1_Serializer3 --> TransactionManager_LSUDummy_accept_cond0 diff --git a/api.html b/api.html index b4f5cab57..1632f131e 100644 --- a/api.html +++ b/api.html @@ -281,7 +281,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/assumptions.html b/assumptions.html index 820b0c878..e90fe2e23 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 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/auto_graph.html b/auto_graph.html index d6f5d5e69..94f37c369 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -86,12 +86,12 @@ Core_DiscardBranchVerify["DiscardBranchVerify"] Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_request["request"] - 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"] @@ -99,13 +99,13 @@ WishboneMaster1_result["result"] WishboneMaster1_WishboneMaster["WishboneMaster"] subgraph Forwarder1["result Forwarder"] - Forwarder1_write["write"] Forwarder1_read["read"] + Forwarder1_write["write"] end end subgraph WishboneMasterAdapter["bus_master_instr_adapter WishboneMasterAdapter"] - WishboneMasterAdapter_request_read["request_read"] WishboneMasterAdapter_get_read_response["get_read_response"] + WishboneMasterAdapter_request_read["request_read"] subgraph Serializer["bus_serializer Serializer"] Serializer_Serializer["Serializer"] Serializer_Serializer1["Serializer"] @@ -116,10 +116,10 @@ end end subgraph WishboneMasterAdapter1["bus_master_data_adapter WishboneMasterAdapter"] - WishboneMasterAdapter1_get_write_response["get_write_response"] WishboneMasterAdapter1_request_read["request_read"] WishboneMasterAdapter1_get_read_response["get_read_response"] WishboneMasterAdapter1_request_write["request_write"] + WishboneMasterAdapter1_get_write_response["get_write_response"] subgraph Serializer1["bus_serializer Serializer"] Serializer1_Serializer["Serializer"] Serializer1_Serializer1["Serializer"] @@ -132,8 +132,8 @@ end end subgraph CoreInstructionCounter["core_counter CoreInstructionCounter"] - CoreInstructionCounter_increment["increment"] CoreInstructionCounter_decrement["decrement"] + CoreInstructionCounter_increment["increment"] end subgraph FIFO["fifo_fetch FIFO"] FIFO_write["write"] @@ -146,12 +146,12 @@ MethodProduct_method["method"] end subgraph BasicFifo2["free_rf_fifo BasicFifo"] - BasicFifo2_read["read"] BasicFifo2_write["write"] + BasicFifo2_read["read"] end subgraph SimpleCommonBusCacheRefiller["icache_refiller SimpleCommonBusCacheRefiller"] - SimpleCommonBusCacheRefiller_start_refill["start_refill"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] + SimpleCommonBusCacheRefiller_start_refill["start_refill"] SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] subgraph Forwarder2["address_fwd Forwarder"] Forwarder2_read["read"] @@ -159,11 +159,11 @@ end end subgraph ICache["icache ICache"] + ICache_issue_req["issue_req"] ICache_ICache["ICache"] - ICache_accept_res["accept_res"] ICache_ICache1["ICache"] ICache_ICache2["ICache"] - ICache_issue_req["issue_req"] + ICache_accept_res["accept_res"] ICache_ICache3["ICache"] subgraph HwCounter["perf_loads HwCounter"] HwCounter__incr["_incr"] @@ -187,8 +187,8 @@ HwExpHistogram__add["_add"] end subgraph FIFO1["fifo FIFO"] - FIFO1_write["write"] FIFO1_read["read"] + FIFO1_write["write"] end end subgraph FIFO2["req_fifo FIFO"] @@ -196,8 +196,8 @@ FIFO2_write["write"] end subgraph Forwarder3["res_fwd Forwarder"] - Forwarder3_read["read"] Forwarder3_write["write"] + Forwarder3_read["read"] end end subgraph FRAT["FRAT FRAT"] @@ -208,17 +208,17 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_write["write"] - RegisterFile_read2["read2"] RegisterFile_read1["read1"] + RegisterFile_read2["read2"] RegisterFile_free["free"] + RegisterFile_write["write"] end subgraph ReorderBuffer["ROB ReorderBuffer"] ReorderBuffer_retire["retire"] ReorderBuffer_peek["peek"] - ReorderBuffer_get_indices["get_indices"] ReorderBuffer_put["put"] ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_get_indices["get_indices"] subgraph LatencyMeasurer1["perf_rob_wait_time LatencyMeasurer"] LatencyMeasurer1__stop["_stop"] LatencyMeasurer1__start["_start"] @@ -226,25 +226,25 @@ HwExpHistogram1__add["_add"] end subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end end subgraph Fetch["fetch Fetch"] - Fetch_stall_exception["stall_exception"] + Fetch_resume["resume"] Fetch_Fetch["Fetch"] + Fetch_stall_exception["stall_exception"] 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"] + ExceptionCauseRegister_report["report"] subgraph BasicFifo4["fu_report_fifo BasicFifo"] BasicFifo4_read["read"] BasicFifo4_write["write"] @@ -257,8 +257,8 @@ subgraph Collector["result_collector Collector"] Collector_method["method"] subgraph Forwarder4["forwarder Forwarder"] - Forwarder4_write["write"] Forwarder4_read["read"] + Forwarder4_write["write"] end subgraph ManyToOneConnectTrans["connect ManyToOneConnectTrans"] subgraph ConnectTrans1["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -276,20 +276,20 @@ MethodProduct1_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_insert["insert"] + RSFuncBlock_select["select"] RSFuncBlock_update["update"] RSFuncBlock_get_result["get_result"] - RSFuncBlock_select["select"] + RSFuncBlock_insert["insert"] subgraph RS["rs RS"] - RS_update["update"] - RS_insert["insert"] RS_RS["RS"] + RS_take["take"] RS_RS1["RS"] RS_RS2["RS"] - RS_select["select"] + RS_update["update"] RS_RS3["RS"] - RS_take["take"] + RS_insert["insert"] RS_RS4["RS"] + RS_select["select"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] AluFuncUnit_issue["issue"] @@ -303,22 +303,22 @@ WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] + ShiftFuncUnit_issue["issue"] subgraph FIFO5["fifo FIFO"] - FIFO5_read["read"] FIFO5_write["write"] + FIFO5_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_accept["accept"] JumpBranchFuncUnit_issue["issue"] + JumpBranchFuncUnit_accept["accept"] subgraph FIFO6["fifo_branch_resolved FIFO"] - FIFO6_write["write"] FIFO6_read["read"] + FIFO6_write["write"] end subgraph HwCounter5["perf_jumps HwCounter"] HwCounter5__incr["_incr"] @@ -330,16 +330,16 @@ HwCounter7__incr["_incr"] end subgraph FIFO7["fifo_res FIFO"] - FIFO7_write["write"] FIFO7_read["read"] + FIFO7_write["write"] end end subgraph WakeupSelect2["wakeup_select_2 WakeupSelect"] WakeupSelect2_WakeupSelect["WakeupSelect"] end subgraph ExceptionFuncUnit["func_unit_3 ExceptionFuncUnit"] - ExceptionFuncUnit_accept["accept"] ExceptionFuncUnit_issue["issue"] + ExceptionFuncUnit_accept["accept"] subgraph FIFO8["fifo FIFO"] FIFO8_write["write"] FIFO8_read["read"] @@ -386,42 +386,42 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_LSUDummy["LSUDummy"] - LSUDummy_precommit["precommit"] - LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_get_result["get_result"] - LSUDummy_select["select"] - LSUDummy_LSUDummy2["LSUDummy"] LSUDummy_insert["insert"] + LSUDummy_LSUDummy["LSUDummy"] + LSUDummy_select["select"] + LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_update["update"] + LSUDummy_LSUDummy2["LSUDummy"] + LSUDummy_precommit["precommit"] subgraph Forwarder6["forwarder Forwarder"] - Forwarder6_write["write"] Forwarder6_read["read"] + Forwarder6_write["write"] end subgraph LSURequester["requester LSURequester"] - LSURequester_accept["accept"] + LSURequester_issue_cond1["issue_cond1"] LSURequester_issue["issue"] - LSURequester_issue_cond2["issue_cond2"] LSURequester_accept_cond0["accept_cond0"] LSURequester_issue_cond0["issue_cond0"] - LSURequester_issue_cond1["issue_cond1"] + LSURequester_issue_cond2["issue_cond2"] LSURequester_accept_cond1["accept_cond1"] + LSURequester_accept["accept"] end end subgraph CSRUnit["rs_block_2 CSRUnit"] - CSRUnit_select["select"] CSRUnit_update["update"] - CSRUnit_CSRUnit["CSRUnit"] CSRUnit_precommit["precommit"] CSRUnit_get_result["get_result"] + CSRUnit_CSRUnit["CSRUnit"] CSRUnit_insert["insert"] CSRUnit_fetch_resume["fetch_resume"] + CSRUnit_select["select"] end subgraph MethodTryProduct["InstructionPrecommitKey_unifier MethodTryProduct"] MethodTryProduct_MethodTryProduct["MethodTryProduct"] - MethodTryProduct_method["method"] MethodTryProduct_MethodTryProduct1["MethodTryProduct"] MethodTryProduct_MethodTryProduct2["MethodTryProduct"] + MethodTryProduct_method["method"] end subgraph Collector2["FetchResumeKey_unifier Collector"] Collector2_method["method"] @@ -443,9 +443,9 @@ ResultAnnouncement_ResultAnnouncement["ResultAnnouncement"] end subgraph InterruptController["interrupt_controller InterruptController"] - InterruptController_report_interrupt["report_interrupt"] - InterruptController_mret["mret"] InterruptController_entry["entry"] + InterruptController_mret["mret"] + InterruptController_report_interrupt["report_interrupt"] end subgraph GenericCSRRegisters["csr_generic GenericCSRRegisters"] GenericCSRRegisters_GenericCSRRegisters["GenericCSRRegisters"] @@ -456,40 +456,40 @@ CSRRegister__fu_read["_fu_read"] end subgraph CSRRegister1["mtvec CSRRegister"] - CSRRegister1__fu_write["_fu_write"] CSRRegister1_read["read"] CSRRegister1__fu_read["_fu_read"] + CSRRegister1__fu_write["_fu_write"] end subgraph CSRRegister2["mepc CSRRegister"] - CSRRegister2__fu_write["_fu_write"] - CSRRegister2_write["write"] CSRRegister2_read["read"] CSRRegister2__fu_read["_fu_read"] + CSRRegister2_write["write"] + CSRRegister2__fu_write["_fu_write"] end end subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] DoubleCounterCSR_increment["increment"] subgraph CSRRegister3["register_low CSRRegister"] CSRRegister3_read["read"] - CSRRegister3__fu_read["_fu_read"] CSRRegister3_write["write"] + CSRRegister3__fu_read["_fu_read"] end subgraph CSRRegister4["register_high CSRRegister"] - CSRRegister4_write["write"] CSRRegister4__fu_read["_fu_read"] CSRRegister4_read["read"] + CSRRegister4_write["write"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5_write["write"] CSRRegister5__fu_read["_fu_read"] CSRRegister5_read["read"] + CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] - CSRRegister6_write["write"] CSRRegister6_read["read"] + CSRRegister6_write["write"] CSRRegister6__fu_read["_fu_read"] end end @@ -520,15 +520,15 @@ Renaming_Renaming["Renaming"] end subgraph FIFO12["reg_alloc_out_buf FIFO"] - FIFO12_write["write"] FIFO12_read["read"] + FIFO12_write["write"] end subgraph ROBAllocation["rob_alloc ROBAllocation"] ROBAllocation_ROBAllocation["ROBAllocation"] end subgraph FIFO13["rs_select_out_buf FIFO"] - FIFO13_read["read"] FIFO13_write["write"] + FIFO13_read["read"] end subgraph RSSelection["rs_selector RSSelection"] RSSelection_RSSelection["RSSelection"] @@ -548,25 +548,25 @@ ConnectTrans11_ConnectTrans["ConnectTrans"] end subgraph Retirement["retirement Retirement"] + Retirement_core_state["core_state"] Retirement_Retirement["Retirement"] Retirement_Retirement1["Retirement"] Retirement_Retirement2["Retirement"] - Retirement_Retirement_cond0["Retirement_cond0"] - Retirement_core_state["core_state"] - Retirement_Retirement_cond1["Retirement_cond1"] Retirement_Retirement3["Retirement"] + Retirement_Retirement_cond1["Retirement_cond1"] Retirement_Retirement4["Retirement"] + Retirement_Retirement_cond0["Retirement_cond0"] 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_write["write"] + CSRRegister7__fu_read["_fu_read"] end subgraph CSRRegister8["register_high CSRRegister"] + CSRRegister8_write["write"] CSRRegister8__fu_read["_fu_read"] CSRRegister8_read["read"] - CSRRegister8_write["write"] end end subgraph HwCounter9["perf_instr_ret HwCounter"] @@ -591,61 +591,61 @@ end end subgraph TransactionManager["transactionManager TransactionManager"] - TransactionManager_LSUDummy_issue_cond0["LSUDummy_issue_cond0"] - TransactionManager_LSUDummy_accept_cond1["LSUDummy_accept_cond1"] - TransactionManager_issue_cond2_LSUDummy["issue_cond2_LSUDummy"] - TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] TransactionManager_Retirement_cond1_Retirement["Retirement_cond1_Retirement"] - TransactionManager_issue_cond1_LSUDummy["issue_cond1_LSUDummy"] - TransactionManager_Retirement_Retirement_cond0["Retirement_Retirement_cond0"] + TransactionManager_Retirement_cond0_Retirement["Retirement_cond0_Retirement"] + TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] + TransactionManager_LSUDummy_accept_cond1["LSUDummy_accept_cond1"] + TransactionManager_LSUDummy_issue_cond1["LSUDummy_issue_cond1"] + TransactionManager_LSUDummy_issue_cond2["LSUDummy_issue_cond2"] + TransactionManager_LSUDummy_issue_cond0["LSUDummy_issue_cond0"] end end Core_InitFreeRFFifo --> BasicFifo2_write -Retirement_Retirement3 --> BasicFifo2_write -TransactionManager_Retirement_Retirement_cond0 --> BasicFifo2_write +Retirement_Retirement --> BasicFifo2_write +TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write TransactionManager_Retirement_cond1_Retirement --> BasicFifo2_write FIFO6_read --> Core_DiscardBranchVerify WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write Forwarder2_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMasterAdapter_request_read -SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer1 +SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request ICache_ICache2 <--> HwCounter4__incr -ICache_ICache1 <--> HwCounter3__incr -ICache_ICache1 <--> HwCounter2__incr -ICache_ICache1 <--> HwCounter1__incr -ICache_ICache1 --> Forwarder3_write -ICache_ICache3 --> SimpleCommonBusCacheRefiller_start_refill +ICache_ICache <--> HwCounter3__incr +ICache_ICache <--> HwCounter2__incr +ICache_ICache <--> HwCounter1__incr +ICache_ICache --> Forwarder3_write +ICache_ICache1 --> SimpleCommonBusCacheRefiller_start_refill +ICache_ICache1 --> Forwarder2_write ICache_ICache3 --> Forwarder2_write -ICache_ICache --> Forwarder2_write -SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache -WishboneMasterAdapter_get_read_response --> ICache_ICache -Serializer_Serializer --> ICache_ICache -BasicFifo_read --> ICache_ICache -WishboneMaster_result --> ICache_ICache -Forwarder_read --> ICache_ICache -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 +SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache3 +WishboneMasterAdapter_get_read_response --> ICache_ICache3 +Serializer_Serializer1 --> ICache_ICache3 +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 AdapterTrans_AdapterTrans_method --> MethodProduct_method -Fetch_Fetch --> FIFO_write +Fetch_Fetch1 --> FIFO_write AdapterTrans_AdapterTrans_method --> FIFO_write -Fetch_Fetch --> MethodMap_method +Fetch_Fetch1 --> MethodMap_method AdapterTrans_AdapterTrans_method --> MethodMap_method -Fetch_Fetch <--> CoreInstructionCounter_increment +Fetch_Fetch1 <--> CoreInstructionCounter_increment AdapterTrans_AdapterTrans_method <--> CoreInstructionCounter_increment FIFO_read --> DecodeStage_DecodeStage DecodeStage_DecodeStage <--> HwCounter8__incr @@ -655,7 +655,7 @@ RegAllocation_RegAllocation --> FIFO10_write FIFO10_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename -Retirement_Retirement3 --> FRAT_rename +Retirement_Retirement --> FRAT_rename TransactionManager_Retirement_cond1_Retirement --> FRAT_rename Renaming_Renaming --> FIFO11_write FIFO11_read --> ROBAllocation_ROBAllocation @@ -663,17 +663,17 @@ ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO3_write ROBAllocation_ROBAllocation --> FIFO12_write -FIFO12_read --> RSSelection_RSSelection2 -RSSelection_RSSelection2 --> Forwarder8_write -Forwarder8_read --> RSSelection_RSSelection1 +FIFO12_read --> RSSelection_RSSelection1 +RSSelection_RSSelection1 --> Forwarder8_write Forwarder8_read --> RSSelection_RSSelection +Forwarder8_read --> RSSelection_RSSelection2 Forwarder8_read --> RSSelection_RSSelection3 -RSFuncBlock_select --> RSSelection_RSSelection1 -RS_select --> RSSelection_RSSelection1 -RSSelection_RSSelection1 --> FIFO13_write +RSFuncBlock_select --> RSSelection_RSSelection +RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO13_write +RSSelection_RSSelection2 --> FIFO13_write RSSelection_RSSelection3 --> FIFO13_write -RSSelection_RSSelection <--> LSUDummy_select +RSSelection_RSSelection2 <--> LSUDummy_select RSSelection_RSSelection3 <--> CSRUnit_select FIFO13_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion @@ -690,7 +690,7 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume -Retirement_Retirement --> Fetch_resume +Retirement_Retirement4 --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done @@ -712,7 +712,7 @@ RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO5_write -RS_RS4 --> WakeupSelect2_WakeupSelect +RS_RS1 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect <--> HwCounter5__incr WakeupSelect2_WakeupSelect <--> HwCounter6__incr @@ -727,7 +727,7 @@ RS_RS2 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO8_write -RS_RS1 --> WakeupSelect4_WakeupSelect +RS_RS4 --> WakeupSelect4_WakeupSelect WakeupSelect4_WakeupSelect --> PrivilegedFuncUnit_issue ConnectTrans4_ConnectTrans --> Forwarder5_write ConnectTrans5_ConnectTrans --> Forwarder5_write @@ -745,12 +745,12 @@ PrivilegedFuncUnit_accept --> ConnectTrans8_ConnectTrans CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo5_write -LSUDummy_LSUDummy --> Forwarder6_write -TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write -TransactionManager_LSUDummy_issue_cond0 --> Forwarder6_write -TransactionManager_issue_cond2_LSUDummy --> Forwarder6_write +LSUDummy_LSUDummy1 --> Forwarder6_write TransactionManager_LSUDummy_accept_cond1 --> Forwarder6_write -TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write +TransactionManager_LSUDummy_issue_cond1 --> Forwarder6_write +TransactionManager_LSUDummy_issue_cond0 --> Forwarder6_write +TransactionManager_LSUDummy_issue_cond2 --> Forwarder6_write +TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -774,43 +774,43 @@ CSRUnit_get_result --> ConnectTrans3_ConnectTrans MethodTryProduct_MethodTryProduct1 --> PrivilegedFuncUnit_precommit MethodTryProduct_MethodTryProduct1 <--> InterruptController_mret -MethodTryProduct_MethodTryProduct2 --> LSUDummy_precommit -MethodTryProduct_MethodTryProduct --> CSRUnit_precommit +MethodTryProduct_MethodTryProduct --> LSUDummy_precommit +MethodTryProduct_MethodTryProduct2 --> CSRUnit_precommit ConnectTrans9_ConnectTrans --> Forwarder7_write ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo5_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans ReorderBuffer_peek --> Retirement_Retirement1 -ReorderBuffer_peek --> Retirement_Retirement4 -ReorderBuffer_peek --> Retirement_Retirement3 -ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond0 +ReorderBuffer_peek --> Retirement_Retirement2 +ReorderBuffer_peek --> Retirement_Retirement +ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement ReorderBuffer_peek --> TransactionManager_Retirement_cond1_Retirement Retirement_Retirement1 --> MethodTryProduct_method -ExceptionCauseRegister_get --> Retirement_Retirement4 -ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond0 +ExceptionCauseRegister_get --> Retirement_Retirement2 +ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement ExceptionCauseRegister_get --> TransactionManager_Retirement_cond1_Retirement -Retirement_Retirement3 <--> ReorderBuffer_retire -TransactionManager_Retirement_Retirement_cond0 <--> ReorderBuffer_retire +Retirement_Retirement <--> ReorderBuffer_retire +TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire TransactionManager_Retirement_cond1_Retirement <--> ReorderBuffer_retire -Retirement_Retirement3 <--> LatencyMeasurer1__stop -TransactionManager_Retirement_Retirement_cond0 <--> LatencyMeasurer1__stop +Retirement_Retirement <--> LatencyMeasurer1__stop +TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop TransactionManager_Retirement_cond1_Retirement <--> LatencyMeasurer1__stop -FIFO3_read --> Retirement_Retirement3 -FIFO3_read --> TransactionManager_Retirement_Retirement_cond0 +FIFO3_read --> Retirement_Retirement +FIFO3_read --> TransactionManager_Retirement_cond0_Retirement FIFO3_read --> TransactionManager_Retirement_cond1_Retirement -Retirement_Retirement3 --> HwExpHistogram1__add -TransactionManager_Retirement_Retirement_cond0 --> HwExpHistogram1__add +Retirement_Retirement --> HwExpHistogram1__add +TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram1__add -CoreInstructionCounter_decrement --> Retirement_Retirement3 -CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond0 +CoreInstructionCounter_decrement --> Retirement_Retirement +CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond1_Retirement -RRAT_peek --> Retirement_Retirement3 +RRAT_peek --> Retirement_Retirement RRAT_peek --> TransactionManager_Retirement_cond1_Retirement -Retirement_Retirement3 --> RegisterFile_free -TransactionManager_Retirement_Retirement_cond0 --> RegisterFile_free +Retirement_Retirement --> RegisterFile_free +TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free TransactionManager_Retirement_cond1_Retirement --> RegisterFile_free -CSRRegister1_read --> Retirement_Retirement -Retirement_Retirement <--> ExceptionCauseRegister_clear +CSRRegister1_read --> Retirement_Retirement4 +Retirement_Retirement4 <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -822,56 +822,56 @@ CSRRegister6_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans2_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt -TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy1 -TransactionManager_LSUDummy_accept_cond1 <--> LSUDummy_LSUDummy1 -LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 +TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement_cond0 +TransactionManager_Retirement_cond0_Retirement --> RRAT_commit +TransactionManager_Retirement_cond0_Retirement <--> DoubleCounterCSR2_increment +CSRRegister7_read --> TransactionManager_Retirement_cond0_Retirement +TransactionManager_Retirement_cond0_Retirement --> CSRRegister7_write +CSRRegister8_read --> TransactionManager_Retirement_cond0_Retirement +TransactionManager_Retirement_cond0_Retirement --> CSRRegister8_write +TransactionManager_Retirement_cond0_Retirement <--> 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_LSUDummy2 +TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy2 LSURequester_accept --> TransactionManager_LSUDummy_accept_cond1 -TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 -WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 -Serializer1_Serializer --> TransactionManager_LSUDummy_accept_cond0 -BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 +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 -WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 +BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond1 -Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 +WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 Forwarder1_read --> TransactionManager_LSUDummy_accept_cond1 -TransactionManager_LSUDummy_issue_cond0 <--> LSUDummy_LSUDummy2 -TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy2 -TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy2 +Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 +TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 +TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy +TransactionManager_LSUDummy_issue_cond0 <--> LSUDummy_LSUDummy +TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy +TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue TransactionManager_LSUDummy_issue_cond0 --> LSURequester_issue -TransactionManager_issue_cond2_LSUDummy --> LSURequester_issue -TransactionManager_issue_cond1_LSUDummy --> 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_cond2 --> LSURequester_issue +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_issue_cond1_LSUDummy --> BasicFifo1_write +TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request TransactionManager_LSUDummy_issue_cond0 --> WishboneMaster1_request -TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request -TransactionManager_issue_cond2_LSUDummy <--> LSURequester_issue_cond2 -TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement2 -TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement2 -TransactionManager_Retirement_Retirement_cond0 --> CSRRegister_write -TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write -TransactionManager_Retirement_Retirement_cond0 --> CSRRegister2_write -TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write -TransactionManager_Retirement_Retirement_cond0 <--> InterruptController_entry -TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry -TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement_cond0 -TransactionManager_Retirement_Retirement_cond0 --> RRAT_commit -TransactionManager_Retirement_Retirement_cond0 <--> DoubleCounterCSR2_increment -CSRRegister7_read --> TransactionManager_Retirement_Retirement_cond0 -TransactionManager_Retirement_Retirement_cond0 --> CSRRegister7_write -CSRRegister8_read --> TransactionManager_Retirement_Retirement_cond0 -TransactionManager_Retirement_Retirement_cond0 --> CSRRegister8_write -TransactionManager_Retirement_Retirement_cond0 <--> HwCounter9__incr -TransactionManager_LSUDummy_accept_cond1 <--> LSURequester_accept_cond1 -WishboneMasterAdapter1_get_read_response --> TransactionManager_LSUDummy_accept_cond1 -Serializer1_Serializer1 --> TransactionManager_LSUDummy_accept_cond1 -TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 -TransactionManager_issue_cond1_LSUDummy <--> LSURequester_issue_cond1 -TransactionManager_issue_cond1_LSUDummy --> WishboneMasterAdapter1_request_read -TransactionManager_issue_cond1_LSUDummy --> Serializer1_Serializer3 +TransactionManager_LSUDummy_issue_cond0 <--> LSURequester_issue_cond0 +TransactionManager_LSUDummy_issue_cond0 --> WishboneMasterAdapter1_request_write +TransactionManager_LSUDummy_issue_cond0 --> Serializer1_Serializer1 +TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 +TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 +WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 +Serializer1_Serializer3 --> TransactionManager_LSUDummy_accept_cond0 @@ -882,7 +882,7 @@

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/components/icache.html b/components/icache.html index 2c50789ee..f2b0d3a15 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

Address mapping example

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.cache.html b/coreblocks.cache.html index fc16564af..acf3c8004 100644 --- a/coreblocks.cache.html +++ b/coreblocks.cache.html @@ -124,7 +124,7 @@

Submodules
-deserialize_addr(raw_addr: Value) dict[str, amaranth.hdl.ast.Value]
+deserialize_addr(raw_addr: Value) dict[str, amaranth.hdl._ast.Value]
@@ -241,7 +241,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index 705937a20..3fb57cebd 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -340,7 +340,7 @@

Submodules
-instr_mux(sel: Value, inputs: list[amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | tuple[amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]]) tuple[amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]
+instr_mux(sel: Value, inputs: list[amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | tuple[amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable]]) tuple[amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable]

@@ -368,7 +368,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.fu.html b/coreblocks.fu.html index 6a354b540..5371f33e1 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: Record) tuple[amaranth.hdl._ast.Value, amaranth.hdl._ast.Value]
@@ -965,7 +965,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.fu.unsigned_multiplication.html b/coreblocks.fu.unsigned_multiplication.html index 0ffaef62b..265990af8 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 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.html b/coreblocks.html index b4caa05d4..67963c8c9 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -234,7 +234,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.lsu.html b/coreblocks.lsu.html index cbb68601a..c8710f148 100644 --- a/coreblocks.lsu.html +++ b/coreblocks.lsu.html @@ -236,7 +236,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.params.html b/coreblocks.params.html index b196673c9..09be8e8ba 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -314,7 +314,7 @@

SubmodulesRISCVInstr

-__init__(opcode: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, imm: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, funct3: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rs1: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rs2: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
@@ -341,7 +341,7 @@

SubmodulesRISCVInstr

-__init__(opcode: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rd: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, funct3: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rs1: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, imm: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
@@ -373,7 +373,7 @@

SubmodulesRISCVInstr

-__init__(opcode: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rd: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, imm: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
@@ -389,7 +389,7 @@

SubmodulesRISCVInstr

-__init__(opcode: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rd: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, funct3: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rs1: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rs2: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, funct7: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct7: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
@@ -405,7 +405,7 @@

SubmodulesRISCVInstr

-__init__(opcode: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, imm: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, funct3: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rs1: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rs2: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
@@ -421,7 +421,7 @@

SubmodulesRISCVInstr

-__init__(opcode: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, rd: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable, imm: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
@@ -2701,7 +2701,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index ea1b480dc..60ca692af 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -598,7 +598,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

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

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.stages.html b/coreblocks.stages.html index e3a4fc8dd..a61ced1a2 100644 --- a/coreblocks.stages.html +++ b/coreblocks.stages.html @@ -263,7 +263,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.structs_common.html b/coreblocks.structs_common.html index a21cc5e10..6fab03ea7 100644 --- a/coreblocks.structs_common.html +++ b/coreblocks.structs_common.html @@ -522,7 +522,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/coreblocks.utils.html b/coreblocks.utils.html index a61b73560..393cb7a0a 100644 --- a/coreblocks.utils.html +++ b/coreblocks.utils.html @@ -149,7 +149,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/current-graph.html b/current-graph.html index ec91adc1b..160968cf3 100644 --- a/current-graph.html +++ b/current-graph.html @@ -92,12 +92,12 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/development-environment.html b/development-environment.html index 373472b3d..397322f8c 100644 --- a/development-environment.html +++ b/development-environment.html @@ -209,7 +209,7 @@

tprof.py

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/genindex.html b/genindex.html index 48a0f19b5..ee77323d7 100644 --- a/genindex.html +++ b/genindex.html @@ -3754,7 +3754,7 @@

Z

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/home.html b/home.html index 84f730a38..57feccdc4 100644 --- a/home.html +++ b/home.html @@ -129,7 +129,7 @@

Documentation

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/index.html b/index.html index 912db2708..fd5264b16 100644 --- a/index.html +++ b/index.html @@ -229,7 +229,7 @@

Coreblocks

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/miscellany/exceptions-summary.html b/miscellany/exceptions-summary.html index 37ebe736b..a11b9c72c 100644 --- a/miscellany/exceptions-summary.html +++ b/miscellany/exceptions-summary.html @@ -271,7 +271,7 @@

Summary

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/modules-coreblocks.html b/modules-coreblocks.html index 89d460b88..cf26944d7 100644 --- a/modules-coreblocks.html +++ b/modules-coreblocks.html @@ -203,7 +203,7 @@

coreblocks

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/modules-transactron.html b/modules-transactron.html index 46abd356f..b8a31464d 100644 --- a/modules-transactron.html +++ b/modules-transactron.html @@ -148,7 +148,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/problem-checklist.html b/problem-checklist.html index 81379f282..59d0fa908 100644 --- a/problem-checklist.html +++ b/problem-checklist.html @@ -105,7 +105,7 @@

Problem checklist

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/py-modindex.html b/py-modindex.html index 0dd36f78a..25a79562d 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -613,7 +613,7 @@

Python Module Index

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/scheduler/overview.html b/scheduler/overview.html index d0ab2223d..1415569ec 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 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/search.html b/search.html index 8a2757781..23940dc65 100644 --- a/search.html +++ b/search.html @@ -101,7 +101,7 @@

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/searchindex.js b/searchindex.js index 29570c4f8..52dfa8d13 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, 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], "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, 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, 11, 20, 28, 29, 30], "For": [3, 10, 17, 25, 26, 28, 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, "wishbonebu": [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, 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, 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, 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, 11, 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, 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, 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, 11, 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, "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, 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, 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, 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, 11, 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, "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, "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], "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, "wishbonelayout": 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], "slave_wb": 11, "intefac": 11, "boolean": [11, 30], "whether": [11, 27, 29, 33], "otherwis": [11, 32, 33], "wb_layout": 11, "wb_master": 11, "becom": 11, "wishbonemastermethodlayout": 11, "patamet": 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, "master_wb": 11, "ssel_tga": 11, "corespond": 11, "tga": 11, "so": [11, 13, 20, 27, 28, 29, 30], "stb": 11, "note": [11, 14, 30], "stare": 11, "finish": [11, 13, 14, 30], "stall": [11, 14, 20], "clear": [11, 25, 26, 30], "delai": [11, 28], "deassert": [11, 33], "dat_r": 11, "dat_w": 11, "adr": 11, "singal": 11, "granular": [11, 30], "smallest": 11, "port": [11, 30, 32, 33], "capabl": 11, "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, "lock": [17, 20, 28, 30], "show": 17, "caller": [17, 28, 29, 30], "condit": [17, 28, 29, 30], "could": [17, 28, 30], "forc": 17, "conflict": [17, 19, 29], "tree": [17, 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, "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], "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, 32], "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, "multiplex": 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], "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, 33], "amount": [29, 31], "useless": 29, "multplex": 29, "unguard": 29, "path": [29, 30, 32], "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, "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, "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], "is_transact": 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, "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, "src_loc_at": 32, "bug": 32, "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, "generationinfo": 32, "variou": 32, "metrics_loc": 32, "metricinfo": 32, "metricloc": 32, "denot": 32, "consit": 32, "lead": 32, "generate_verilog": 32, "top_modul": 32, "top_nam": 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, "", "AXILiteMaster"], [11, 1, 1, "", "AXILiteParameters"]], "coreblocks.peripherals.axi_lite.AXILiteMaster": [[11, 2, 1, "", "__init__"], [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.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, "", "WishboneBus"], [11, 1, 1, "", "WishboneLayout"], [11, 1, 1, "", "WishboneMaster"], [11, 1, 1, "", "WishboneMasterMethodLayout"], [11, 1, 1, "", "WishboneMemorySlave"], [11, 1, 1, "", "WishboneMuxer"], [11, 1, 1, "", "WishboneParameters"]], "coreblocks.peripherals.wishbone.PipelinedWishboneMaster": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "generate_method_layouts"]], "coreblocks.peripherals.wishbone.WishboneArbiter": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneBus": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneLayout": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMaster": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMasterMethodLayout": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMemorySlave": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMuxer": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneParameters": [[11, 2, 1, "", "__init__"]], "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, "", "Profile"], [29, 1, 1, "", "ProfileInfo"]], "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.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.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, "-", "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, "", "GenerationInfo"], [32, 1, 1, "", "MetricLocation"], [32, 4, 1, "", "generate_verilog"]], "transactron.utils.gen.GenerationInfo": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "decode"], [32, 2, 1, "", "encode"], [32, 2, 1, "", "from_dict"], [32, 2, 1, "", "from_json"], [32, 3, 1, "", "metrics_location"], [32, 2, 1, "", "schema"], [32, 2, 1, "", "to_dict"], [32, 2, 1, "", "to_json"]], "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.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, "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, 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], "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, 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, 11, 20, 28, 29, 30], "For": [3, 10, 17, 25, 26, 28, 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, "wishbonebu": [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, 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, 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, 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, 11, 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, 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, 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, 11, 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, "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, 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, 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, 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, 11, 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, "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, "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], "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, "wishbonelayout": 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], "slave_wb": 11, "intefac": 11, "boolean": [11, 30], "whether": [11, 27, 29, 33], "otherwis": [11, 32, 33], "wb_layout": 11, "wb_master": 11, "becom": 11, "wishbonemastermethodlayout": 11, "patamet": 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, "master_wb": 11, "ssel_tga": 11, "corespond": 11, "tga": 11, "so": [11, 13, 20, 27, 28, 29, 30], "stb": 11, "note": [11, 14, 30], "stare": 11, "finish": [11, 13, 14, 30], "stall": [11, 14, 20], "clear": [11, 25, 26, 30], "delai": [11, 28], "deassert": [11, 33], "dat_r": 11, "dat_w": 11, "adr": 11, "singal": 11, "granular": [11, 30], "smallest": 11, "port": [11, 30, 32, 33], "capabl": 11, "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, "lock": [17, 20, 28, 30], "show": 17, "caller": [17, 28, 29, 30], "condit": [17, 28, 29, 30], "could": [17, 28, 30], "forc": 17, "conflict": [17, 19, 29], "tree": [17, 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, "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], "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, 32], "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, "multiplex": 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], "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, 33], "amount": [29, 31], "useless": 29, "multplex": 29, "unguard": 29, "path": [29, 30, 32], "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, "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, "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], "is_transact": 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, "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, "src_loc_at": 32, "bug": 32, "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, "generationinfo": 32, "variou": 32, "metrics_loc": 32, "metricinfo": 32, "metricloc": 32, "denot": 32, "consit": 32, "lead": 32, "generate_verilog": 32, "top_modul": 32, "top_nam": 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, "", "AXILiteMaster"], [11, 1, 1, "", "AXILiteParameters"]], "coreblocks.peripherals.axi_lite.AXILiteMaster": [[11, 2, 1, "", "__init__"], [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.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, "", "WishboneBus"], [11, 1, 1, "", "WishboneLayout"], [11, 1, 1, "", "WishboneMaster"], [11, 1, 1, "", "WishboneMasterMethodLayout"], [11, 1, 1, "", "WishboneMemorySlave"], [11, 1, 1, "", "WishboneMuxer"], [11, 1, 1, "", "WishboneParameters"]], "coreblocks.peripherals.wishbone.PipelinedWishboneMaster": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "generate_method_layouts"]], "coreblocks.peripherals.wishbone.WishboneArbiter": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneBus": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneLayout": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMaster": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMasterMethodLayout": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMemorySlave": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMuxer": [[11, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneParameters": [[11, 2, 1, "", "__init__"]], "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, "", "Profile"], [29, 1, 1, "", "ProfileInfo"]], "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.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.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, "-", "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, "", "GenerationInfo"], [32, 1, 1, "", "MetricLocation"], [32, 4, 1, "", "generate_verilog"]], "transactron.utils.gen.GenerationInfo": [[32, 2, 1, "", "__init__"], [32, 2, 1, "", "decode"], [32, 2, 1, "", "encode"], [32, 2, 1, "", "from_dict"], [32, 2, 1, "", "from_json"], [32, 3, 1, "", "metrics_location"], [32, 2, 1, "", "schema"], [32, 2, 1, "", "to_dict"], [32, 2, 1, "", "to_json"]], "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.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, "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 5cf8c0196..b47cec00e 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 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/shared-structs/rs.html b/shared-structs/rs.html index 7842f3a8a..a60e0de58 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 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/synthesis/synthesis.html b/synthesis/synthesis.html index 0ff9a7e96..efb7a5c69 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 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/transactions.html b/transactions.html index 15ca3f924..02599b875 100644 --- a/transactions.html +++ b/transactions.html @@ -409,7 +409,7 @@

Transaction and method nesting

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/transactron.html b/transactron.html index 156f84a66..6203bff52 100644 --- a/transactron.html +++ b/transactron.html @@ -187,7 +187,7 @@

Submodules
-__init__(*, name: Optional[str] = None, i: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl.ast.Shape | amaranth.hdl.ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]] = (), o: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl.ast.Shape | amaranth.hdl.ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]] = (), nonexclusive: bool = False, single_caller: bool = False, src_loc: int | tuple[str, int] = 0)
+__init__(*, name: Optional[str] = None, i: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl._ast.Shape | amaranth.hdl._ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]] = (), o: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl._ast.Shape | amaranth.hdl._ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]] = (), nonexclusive: bool = False, single_caller: bool = False, src_loc: int | tuple[str, int] = 0)
Parameters
@@ -217,7 +217,7 @@

Submodules
-body(m: ~transactron.core.TModule, *, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), out: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 0'd0), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]] = None) Iterator[View[StructLayout]]
+body(m: ~transactron.core.TModule, *, ready: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 1'd1), out: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 0'd0), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable]] = None) Iterator[View[StructLayout]]

Define method body

The body context manager can be used to define the actions performed by a Method when it’s run. Each assignment added to @@ -267,7 +267,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

@@ -373,7 +373,7 @@

Submodules
-AvoidedIf(cond: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+AvoidedIf(cond: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

@@ -403,7 +403,7 @@

Submodules
-If(cond: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+If(cond: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

@@ -413,7 +413,7 @@

Submodules
-Switch(test: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+Switch(test: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

@@ -495,7 +495,7 @@

Submodules
-body(m: ~transactron.core.TModule, *, request: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1)) Iterator[Transaction]
+body(m: ~transactron.core.TModule, *, request: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 1'd1)) Iterator[Transaction]

Defines the Transaction body.

This context manager allows to conveniently define the actions performed by a Transaction when it’s granted. Each assignment @@ -519,7 +519,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

@@ -534,7 +534,7 @@

Submodules
-__init__(cc_scheduler: ~collections.abc.Callable[[~transactron.core.MethodMap, dict[transactron.core.Transaction, set[transactron.core.Transaction]], set[transactron.core.Transaction], dict[transactron.core.Transaction, int]], ~amaranth.hdl.dsl.Module] = <function eager_deterministic_cc_scheduler>)
+__init__(cc_scheduler: ~collections.abc.Callable[[~transactron.core.MethodMap, dict[transactron.core.Transaction, set[transactron.core.Transaction]], set[transactron.core.Transaction], dict[transactron.core.Transaction, int]], ~amaranth.hdl._dsl.Module] = <function eager_deterministic_cc_scheduler>)

@@ -544,7 +544,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

@@ -608,7 +608,7 @@

Submodules
-transactron.core.def_method(m: ~transactron.core.TModule, method: ~transactron.core.Method, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]] = None)
+transactron.core.def_method(m: ~transactron.core.TModule, method: ~transactron.core.Method, ready: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 1'd1), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable]] = None)

Define a method.

This decorator allows to define transactional methods in an elegant way using Python’s def syntax. Internally, def_method @@ -1021,7 +1021,7 @@

Submodules
-subfragments: list[tuple[amaranth.hdl.ir.Elaboratable, str]]
+subfragments: list[tuple[amaranth.hdl._ir.Elaboratable, str]]

@@ -1096,7 +1096,7 @@

Submodules
-__init__(*, name: Optional[str] = None, i: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl.ast.Shape | amaranth.hdl.ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]] = (), o: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl.ast.Shape | amaranth.hdl.ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]] = (), nonexclusive: bool = False, single_caller: bool = False, src_loc: int | tuple[str, int] = 0)
+__init__(*, name: Optional[str] = None, i: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl._ast.Shape | amaranth.hdl._ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]] = (), o: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl._ast.Shape | amaranth.hdl._ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]] = (), nonexclusive: bool = False, single_caller: bool = False, src_loc: int | tuple[str, int] = 0)
Parameters
@@ -1126,7 +1126,7 @@

Submodules
-body(m: ~transactron.core.TModule, *, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), out: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 0'd0), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]] = None) Iterator[View[StructLayout]]
+body(m: ~transactron.core.TModule, *, ready: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 1'd1), out: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 0'd0), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable]] = None) Iterator[View[StructLayout]]

Define method body

The body context manager can be used to define the actions performed by a Method when it’s run. Each assignment added to @@ -1176,7 +1176,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

@@ -1258,7 +1258,7 @@

Submodules
-AvoidedIf(cond: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+AvoidedIf(cond: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

@@ -1288,7 +1288,7 @@

Submodules
-If(cond: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+If(cond: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

@@ -1298,7 +1298,7 @@

Submodules
-Switch(test: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable)
+Switch(test: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

@@ -1380,7 +1380,7 @@

Submodules
-body(m: ~transactron.core.TModule, *, request: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1)) Iterator[Transaction]
+body(m: ~transactron.core.TModule, *, request: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 1'd1)) Iterator[Transaction]

Defines the Transaction body.

This context manager allows to conveniently define the actions performed by a Transaction when it’s granted. Each assignment @@ -1404,7 +1404,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

@@ -1419,7 +1419,7 @@

Submodules
-__init__(cc_scheduler: ~collections.abc.Callable[[~transactron.core.MethodMap, dict[transactron.core.Transaction, set[transactron.core.Transaction]], set[transactron.core.Transaction], dict[transactron.core.Transaction, int]], ~amaranth.hdl.dsl.Module] = <function eager_deterministic_cc_scheduler>)
+__init__(cc_scheduler: ~collections.abc.Callable[[~transactron.core.MethodMap, dict[transactron.core.Transaction, set[transactron.core.Transaction]], set[transactron.core.Transaction], dict[transactron.core.Transaction, int]], ~amaranth.hdl._dsl.Module] = <function eager_deterministic_cc_scheduler>)

@@ -1429,7 +1429,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

@@ -1482,7 +1482,7 @@

Submodules
-transactron.def_method(m: ~transactron.core.TModule, method: ~transactron.core.Method, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]] = None)
+transactron.def_method(m: ~transactron.core.TModule, method: ~transactron.core.Method, ready: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 1'd1), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable]] = None)

Define a method.

This decorator allows to define transactional methods in an elegant way using Python’s def syntax. Internally, def_method @@ -1550,7 +1550,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/transactron.lib.html b/transactron.lib.html index e1a01353b..c7b8f304c 100644 --- a/transactron.lib.html +++ b/transactron.lib.html @@ -147,7 +147,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

@@ -696,7 +696,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

Returns tree-like SignalBundle composed of all metric registers.

@@ -751,7 +751,7 @@

Submodules
-incr(m: ~transactron.core.TModule, *, cond: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1))
+incr(m: ~transactron.core.TModule, *, cond: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable = (const 1'd1))

Increases the value of the counter by 1.

Should be called in the body of either a transaction or a method.

@@ -1380,7 +1380,7 @@

Submodules
-__init__(method1: Method, method2: Method, *, i_fun: Optional[Callable[[TModule, View[StructLayout]], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, RecordDict]]] = None, o_fun: Optional[Callable[[TModule, View[StructLayout]], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, RecordDict]]] = None, src_loc: int | tuple[str, int] = 0)
+__init__(method1: Method, method2: Method, *, i_fun: Optional[Callable[[TModule, View[StructLayout]], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, RecordDict]]] = None, o_fun: Optional[Callable[[TModule, View[StructLayout]], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, RecordDict]]] = None, src_loc: int | tuple[str, int] = 0)
Parameters
@@ -1426,7 +1426,7 @@

Submodules
-__init__(target: Method, condition: Callable[[TModule, View[StructLayout]], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable], default: Optional[Union[Value, int, Enum, ValueCastable, Mapping[str, RecordDict]]] = None, *, use_condition: bool = False, src_loc: int | tuple[str, int] = 0)
+__init__(target: Method, condition: Callable[[TModule, View[StructLayout]], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable], default: Optional[Union[Value, int, Enum, ValueCastable, Mapping[str, RecordDict]]] = None, *, use_condition: bool = False, src_loc: int | tuple[str, int] = 0)
Parameters
@@ -1471,7 +1471,7 @@

Submodules
-__init__(target: Method, *, i_transform: Optional[tuple[amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], collections.abc.Callable[[transactron.core.TModule, 'View[StructLayout]'], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, 'RecordDict']]]] = None, o_transform: Optional[tuple[amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], collections.abc.Callable[[transactron.core.TModule, 'View[StructLayout]'], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, 'RecordDict']]]] = None, src_loc: int | tuple[str, int] = 0)
+__init__(target: Method, *, i_transform: Optional[tuple[amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], collections.abc.Callable[[transactron.core.TModule, 'View[StructLayout]'], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, 'RecordDict']]]] = None, o_transform: Optional[tuple[amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], collections.abc.Callable[[transactron.core.TModule, 'View[StructLayout]'], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, 'RecordDict']]]] = None, src_loc: int | tuple[str, int] = 0)
Parameters
@@ -1501,7 +1501,7 @@

SubmodulesElaboratable, Unifier

-__init__(targets: list[transactron.core.Method], combiner: Optional[tuple[amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], collections.abc.Callable[[transactron.core.TModule, list['View[StructLayout]']], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, 'RecordDict']]]] = None, *, src_loc: int | tuple[str, int] = 0)
+__init__(targets: list[transactron.core.Method], combiner: Optional[tuple[amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], collections.abc.Callable[[transactron.core.TModule, list['View[StructLayout]']], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, 'RecordDict']]]] = None, *, src_loc: int | tuple[str, int] = 0)

Method product.

Takes arbitrary, non-zero number of target methods, and constructs a method which calls all of the target methods using the same @@ -1540,7 +1540,7 @@

SubmodulesElaboratable, Unifier

-__init__(targets: list[transactron.core.Method], combiner: Optional[tuple[amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], collections.abc.Callable[[transactron.core.TModule, list[tuple[amaranth.hdl.ast.Value, 'View[StructLayout]']]], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, 'RecordDict']]]] = None, *, src_loc: int | tuple[str, int] = 0)
+__init__(targets: list[transactron.core.Method], combiner: Optional[tuple[amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']], collections.abc.Callable[[transactron.core.TModule, list[tuple[amaranth.hdl._ast.Value, 'View[StructLayout]']]], amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, 'RecordDict']]]] = None, *, src_loc: int | tuple[str, int] = 0)

Method product with optional calling.

Takes arbitrary, non-zero number of target methods, and constructs a method which tries to call all of the target methods using the same @@ -1643,7 +1643,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/transactron.testing.html b/transactron.testing.html index 82bec45ad..02b05f850 100644 --- a/transactron.testing.html +++ b/transactron.testing.html @@ -306,7 +306,7 @@

Submodules
-call_init(data: Mapping[str, Union[Value, int, Enum, ValueCastable, RecordValueDict]] = {}, /, **kwdata: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, Union[amaranth.hdl.ast.Value, int, enum.Enum, amaranth.hdl.ast.ValueCastable, RecordValueDict]]) Generator[Optional[Union[Command, Value, Statement, CoreblocksCommand]], Any, None]
+call_init(data: Mapping[str, Union[Value, int, Enum, ValueCastable, RecordValueDict]] = {}, /, **kwdata: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable | collections.abc.Mapping[str, Union[amaranth.hdl._ast.Value, int, enum.Enum, amaranth.hdl._ast.ValueCastable, RecordValueDict]]) Generator[Optional[Union[Command, Value, Statement, CoreblocksCommand]], Any, None]

@@ -321,7 +321,7 @@

Submodules
-debug_signals() amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+debug_signals() amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

@@ -399,7 +399,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/transactron.utils.amaranth_ext.html b/transactron.utils.amaranth_ext.html index a48179257..708388943 100644 --- a/transactron.utils.amaranth_ext.html +++ b/transactron.utils.amaranth_ext.html @@ -261,7 +261,7 @@

Submodules
-transactron.utils.amaranth_ext.functions.flatten_signals(signals: amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]) Iterable[Signal]
+transactron.utils.amaranth_ext.functions.flatten_signals(signals: amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]) Iterable[Signal]

Flattens input data, which can be either a signal, a record, a list (or a dict) of SignalBundle items.

@@ -293,7 +293,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.

diff --git a/transactron.utils.html b/transactron.utils.html index d1dafddca..20655f8ff 100644 --- a/transactron.utils.html +++ b/transactron.utils.html @@ -133,7 +133,7 @@

Submodules
-transactron.utils.assertion.assert_bits(dependencies: DependencyManager) list[tuple[amaranth.hdl.ast.Value, tuple[str, int]]]
+transactron.utils.assertion.assert_bits(dependencies: DependencyManager) list[tuple[amaranth.hdl._ast.Value, tuple[str, int]]]

Gets assertion bits.

This function returns all the assertion signals created by assertion, together with their source locations.

@@ -196,7 +196,7 @@

Submodules
-transactron.utils.assign.assign(lhs: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, 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, 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, transactron.utils.assign.AssignType | collections.abc.Iterable[str] | collections.abc.Mapping[str, AssignFields]] = AssignType.RHS, lhs_strict=False, rhs_strict=False) Iterable[Assign]
+transactron.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, @@ -312,7 +312,7 @@

Submodules
-transactron.utils.data_repr.data_layout(val: amaranth.hdl.ast.Shape | amaranth.hdl.ast.ShapeCastable | int | range | type[enum.Enum]) amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']]
+transactron.utils.data_repr.data_layout(val: amaranth.hdl._ast.Shape | amaranth.hdl._ast.ShapeCastable | int | range | type[enum.Enum]) amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, 'ShapeLike | LayoutList']]

@@ -396,7 +396,7 @@

Submodules

transactron.utils.debug_signals module

-transactron.utils.debug_signals.auto_debug_signals(thing) amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl.ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]
+transactron.utils.debug_signals.auto_debug_signals(thing) amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]] | collections.abc.Mapping[str, amaranth.hdl._ast.Signal | amaranth.hdl._rec.Record | amaranth.lib.data.View | collections.abc.Iterable[SignalBundle] | collections.abc.Mapping[str, SignalBundle]]

Automatic debug signal generation.

Exposes class attributes with debug signals (Amaranth Signals, Records, Arrays and Elaboratables, Methods, classes @@ -712,7 +712,7 @@

Submodules
-transactron.utils.gen.generate_verilog(top_module: Elaboratable, ports: list[amaranth.hdl.ast.Signal], top_name: str = 'top') tuple[str, transactron.utils.gen.GenerationInfo]
+transactron.utils.gen.generate_verilog(top_module: Elaboratable, ports: list[amaranth.hdl._ast.Signal], top_name: str = 'top') tuple[str, transactron.utils.gen.GenerationInfo]

@@ -725,12 +725,12 @@

Submodules
-transactron.utils.transactron_helpers.from_method_layout(layout: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl.ast.Shape | amaranth.hdl.ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]]) StructLayout
+transactron.utils.transactron_helpers.from_method_layout(layout: amaranth.lib.data.StructLayout | collections.abc.Iterable[tuple[str, amaranth.hdl._ast.Shape | amaranth.hdl._ast.ShapeCastable | int | range | type[enum.Enum] | list[tuple[str, ForwardRef('ShapeLike | LayoutList')]]]]) StructLayout

-transactron.utils.transactron_helpers.get_caller_class_name(default: Optional[str] = None) tuple[Optional[amaranth.hdl.ir.Elaboratable], str]
+transactron.utils.transactron_helpers.get_caller_class_name(default: Optional[str] = None) tuple[Optional[amaranth.hdl._ir.Elaboratable], str]
@@ -771,7 +771,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 14:11 2024-03-04. + Last updated on 11:12 2024-03-05.