From c46cc65c8a7cb38e6facdb8c215ad8760fdf6734 Mon Sep 17 00:00:00 2001 From: tilk Date: Sun, 3 Dec 2023 18:50:25 +0000 Subject: [PATCH] Add `condition` based MethodFilter (#504) --- .doctrees/api.doctree | Bin 20945 -> 20945 bytes .doctrees/auto_graph.doctree | Bin 24908 -> 24898 bytes .doctrees/current-graph.doctree | Bin 26129 -> 26119 bytes .doctrees/environment.pickle | Bin 331764 -> 331764 bytes .doctrees/transactron.lib.doctree | Bin 369429 -> 373015 bytes _sources/auto_graph.rst.txt | 140 ++++++++++---------- api.html | 2 +- assumptions.html | 2 +- auto_graph.html | 142 ++++++++++----------- components/icache.html | 2 +- coreblocks.frontend.html | 2 +- coreblocks.fu.html | 2 +- coreblocks.fu.unsigned_multiplication.html | 2 +- coreblocks.html | 2 +- coreblocks.params.html | 2 +- coreblocks.peripherals.html | 2 +- coreblocks.scheduler.html | 2 +- coreblocks.stages.html | 2 +- coreblocks.structs_common.html | 2 +- coreblocks.utils.html | 2 +- current-graph.html | 142 ++++++++++----------- 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 | 2 +- transactron.lib.html | 15 ++- transactron.utils.html | 2 +- 40 files changed, 253 insertions(+), 248 deletions(-) diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index 68200e86c6b8bd627190f9e16603977684cfb953..d740c48623ff8cd2c8d534257621927aa9a9d64e 100644 GIT binary patch delta 367 zcmYk1u}T9$5QYgD!9C?lH3$O%<@-ZubEKX#^V~ z58yMTN#QG4SlYTO&fb^ROZZlC2jMPoS5gt z?=(oMQJe7GNh5HC2PKmqA>ivyssd(lDjcR4}u7aI^ howJ+I_-eb(#ehATRvavXo7YP delta 342 zcmY+9Jx;?w5JqK0Bosh`#3cMwfDmpHS9l#xK|zb6Wj(|z;$3TJ9YEm-?#AK(q((x@ z1rRp~1qHXDqQwGCpc`rCz4^Y`#F#Z7o(bmr7CDz@UVDXrz7ikGz9H`5`Eo9)Pu)o*rbE?=1^7?fCLh*ksMS(>rb zR)C|HUZT1N9oAzgDe_~M)Z2=N2^o){)^dae8?w9+i$$F{Zu4TmW`N|V(VS*&A(R!% zn#(V?8m;$ys8s9kbQ*B6_?Omuq9nBPvJrbd_Sn4|q>k)4`hOtmg5Ad==33@7xc=i* zAGo#@fR{I7NR~%r9+cF8#%=-avL6#tBQ{I5cqu8^FUgu_Zru0eFxFRl@>AfjD9bDF zQU|Ne3?BKah-n75eMX$}d9-3!aH*xW4_Vv|EYIQf1~;-wg&ME7>u^q4PWCD5)U0xV zLQm)~zcZBQSKR9TP_JG!M@$sPqbB&G``{$|&1f?fz}Kim;@X&t3aE9lh>lziwtgmY zSHg+GcoT->J}i)BN>rjZUWQb{jgCY$6;vk^Z)hrrtL=)KZ6Bg>q`gpW?wrn1EbZ`; zC?|cmo-DyYQbbQOf~lmW3ku{{TSvOA1XEA7R6I!t6f_R4CkhZp_;YGEKP delta 961 zcmZWnOK1~O6lF3q?aVZpq?LR$iAh@WnZzWMXo!h4BoPy##?-V)D~O`F5-NyTzhDGK zQ2ZVX{uT;uR4kDJMFl?vH(F>#MNqH-5z&Q+h$tfX@=9Ik=AJwE-E;1_@6E&nGdaO< zb$%>&ihII5y*YK5!4X{o)2xiD&Ih+y#M^EW&vZ$oSP#@V50w=musu-IF-$Tt&ap+T z-`%(NB%HotDqV5LCB z=^z1?R!#<86gD6#hVe^CSr}cif2!FK`n@l$9__^s4hxg|7 zkS%<224;HUX^vqGG7V6|lrepnRTuy#{{$CkzLSPvm9+0YOT_+~9*k1dR?Ha$K$ zLezc3mV#q`h&umZ3(?+_DF^K@yYx6S|0nI;zhK$iwx{h0Y_Thpve+K}m!dW85guPf zKORZ~rk8Ngd;Zha?s!(V!Jr7(9*7W3Vy{9J10vo8(paTL!335fJ=j`OMJmu*aP~jA zrDPEd`swqygA%?g-nj*}(V&T3cf?D#|E+f5U__yZS;?b0qIY?)iP=YbvBZl;vRf-8 z>^huC&KB1veOe>AjX^avtFN*GTqLI#nC#JRr-s{^xMs{58Jy1>5zdcbA;GKpUM7wY z`2dNg-cwXnl zL8%%BSu+-7RaB!zBFbV+CZI>=NNaVOYj9;*MQy83I+|55T4f=pva}3Vn>g4N4s^>O zrMGt}_F`UPOQY`6_eqpl*^McsAA?F4hbe2BXj?GVVBF;1J{g=bm5G|+fH|e3r~l5zVV8MR)ciKrq{khwRNbdlHnS^2fuhX26#CJJ=K_LSKuu#ppf_DwWk7yc^}q1 zZqY^Zzo;$^;AyEN<(B4`OWiwD=gY}PsYZ%AuS?ue;Z;HAb%+}hoQ;fmXIND3-u`4R z2>v4S#%Ica%D-KdVzs822>y!nf(;oo`QH46#!q1@HbS*v!{z9q&+V`i??VMx4%@L9_Ar&izJFQ5 zRKgnZ5h2ni!Os>gdD%9bY|$U(X?zkbhcjlxdQ^>-XafSVl8j0Py#{$0h~-h~y_l2s zc@-OEa5HYfv5p3ecT_P7OxNe)TSplTaVG-tmcNz9@y66@w6hH5ojkfa0~B-esGH1n GMz}wswK@C% delta 963 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 delta 28706 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ðsN;l2?T zF3flMeGOO)0#MsHZ8U$Zfd=4L4V3Hf7aFKGgt<;UnrqE<3@>7?(~b<&_`8xKX2+3)@|7xoA>OSOlqe=Ntn%M#+`IOZ(^C1}gZsPg1 zfMr~4bT5+fp<7I*m=BeiEi)flx!RWxb~ z!mq8Cd42bakYSxBp^?AvFQsV8U3%bvsU2UV4+aJ(4_o8&_oa6R39s!Y6kU;u$B zsvLegvB&+?rnKvMk|Ezl87uM;t6aHAf7liDc~{VRKM>_z`p(@?RMnb0x6HfZ2qg0^ z9V^)ni}J3C5{vRKI22&s#Wu^+L+&OPYg>h9E17%U-ase96%BYIypqG&?cgG9r0sU! z>8rj$oLZ!{1m!jYQLOWpMtV5<$YO0fU(zU(t@%r|3p~gr5y}xEy`QrTn=;c{0w5#P za!cK|I<=UfwTKc2m@?CvyHp#@`Q42&)7m2u>HcV!ZV-N=q4UK|YiFY`)ACB`PY@>E zA6XC|lTiFTWT(ikg22U(ZY>C&M(?l!Z8zh8Zj>3?R;+QxzLawJ?hg#nLN8d-u(3@t4NGsbc=|PdeUnVX=0P{6Vb?XuG)(6-3^-lgGKzOv4V~FG|A>fM86+SOcYD2mKNxO2eKtsScS`ha{Cu z!#;CqfsDTcwqY9fQ4{S=(DbEYZ#9XvRodtLYXD*z_7*VGXVlpyO2gDY14s-RtR-^p zmWh}j5>2}|fZR;Pkiba9<gVh#hI7MC|1n?J7PHIN_z#h+1t9AMTckSfZN}u`zC$ zh()=LMC{K^B4xRD58$`8%Ibq{CUok2quulQ-YLc5jg-I;aT z{Xt7)_af|unY~al!H3&`g%7vO-7?Ia*b@f`^l)2zRImMpZ*a?4+Xy%qYqz>(tm$0v zMRl{AVr|AsZFJDRQr13LC*Y%bn~oI)SbN;^v-xH;C)wyh`bM{mwN-9ktijj0fR^O3 z#|Idw{Q-5En=VB`Z;ZCLKo@+x9qpEnvgfVQf<@%@i}xV*S+t;=nv5iVtr#lfS_@NY?bx7<)_~ zfd~VwKi!0$MR&-hT5G15`4Wu9r5Z-p?$#1)TC+K%r`!-K14Lsg8|caWF3@($N{llm z-m}0pIQk}_kh5k!{-RkkAB5tp0mtlf%@k9cwH2o2oz0pPKGn_Js>ORUpB~Je&E5?y z+CawFgL#lab9b|R3FnbMaKm44AlfH=0G*rGYxDT;oAEg1IUj5jlh$bi#kIF;aozf1 zzmGfaV0=w84%RSFdO@JgiAGDetd?$ZfC1o^RP-cN4?}ON&a0>?a#fc*s?*?GuIsBz9S%@pb0=Wf%+v5?3X0Lsr)BSrQ`$jc)(X+wE*i;VpKEi&@YNEI-q`?XNy z|6!B1B`6)KW1XojGV*mSd?%6IB3D_!##PorAKW4%KcK}I`TSh7TxE4Ud<$^4nZh0n z!LVNnir^x992JpXJOd_vn`~R=gRE|rYwQY8OGZl_{-S891F?Fv;6s2T=yS;jRzF%} z*O^r7O{(>h3fI^W&%xc7i7i{SSAupzKWMnU1s0c-zWDv&widB{t9BcQzlUtoUgd34 z-K1@ZDa9PXpK!QXp6@6gjQ@I!9sb1{=c6s&Nx#xw=lo2IH*kmcS0&&z6#l0c@y|Q7 znZq|@V-x=I0{+nfe=Khes>p+XYNw&nQG@>qjq|k@anqgJ=t#u9f$(lvUTnu6;NrPc zn;$rF9f*!=E%BUIOFYw5P293et57EaR8*zH-O*>ev?M-pod~&0^IE_k-lZiOwD1^j zEh`r*?$&O#V8rZ}gj05FPguYqdn9>Z5Y1mJlSW9uSf9@)XDg$ lRWzisPzB)P_+6Uaa8E9{cA|J{AJjy)wRlhNgMUWk{{Sh}9((`* delta 17003 zcmcIsd3+T`wx+7PNg@dlvO)H+laP=oFn}xp+#-qz3bG`S6_P7tVM!1$$pvOqKm?mm z>d5wV1i^(c`0nU9Dxx^*IKqtkf&mp}#Ana}9iHGjOLyPC;*Xnuo_~bys&l?`>U3@2 zsk*A;u`P#Un^%j~a=-TJk1|*Ij{T@j5WdO(tKFoDWVQ8zmK?t6x0}41?$|W2(pbkO zoi|k`c=pXwxw^Trg{+-Ei9>CR8ofTsf)@gE6SJ5ud1Fmm_!$sESy)d_%c=dvlb^y=BckQXbDp` zRfZI8s*GLt|AZgqZ=dJuS)DpT+fJ&2@3bVdcxN;=FQoHjP?k5#^zQV?^Rv{E%jBT2 zb10eUX`N-h@XuIvSks>uJ=MLsKD28~r%s|1{s&6&g{ok&7$jp0mG?n8D54d$k|rfV zRgXe5vR7~QbA>)J?21B?&M8!NKGC0TCW1^>q1yN?sDtc*eS=hTXYd7eyA`TqQuJ2Y z?}-o_fsfe}v;q6k+xJ@j-5l|?=D-D*)JKz2VSu2uOj zYW)aTJrb$MnC&Ox#pUW)te)+E&!u+}uj&%?p6a1(TAY}SaM7xLjm}Pyu*xqN@uHNq z^&a|QQHx^Psy;!FQYkyMSkXv&o7?s4RPjNrkIV4h0rBEKzhTDO?!tP~h1K?Vt-pAV zu+01k!&LrT+EB(Kvxl)JN9~E!yQ=0lw0LpUg>%Y<)4pCtiF1Ub+I#5>6{^dwvoZSI zBvhA)v+?6_Wja-IFmmLG*=E{^>(rbgV}Rejyy2GsGhG0cE`XkDuc>FrdPezqpEf!$ zB61BW%J?D`IYSP?&&QwK_hqskCFHKz+>0KW&AsTqS^N?B2YS)VZ0Qm8S*rdYbuLAZ zHgm@hP^06tab!mRW475kK2!dSwcxGp>YnOUZ#`Q6h#rkZ(H`o?KKeD5D0CyyM~^aV zuT8=d6p!euM?*BAc$CV1MVsg#9~+h_vK(=>HWm8AXnc=0n}^4Ox;pZRmM*Sm)!Gfv zPpEqXE~?J{h3b5_su?*UPMzrwmY1=5evvUeKz;o$)E~M?eeOU#N$h6z_I=u<0QKj8 zq5ijv)XxmkgR*8_yP6r5fH#!w}?7DMP|ZK^drC&;78#2dax)@?Tyyb$VJ9!3=kxobuOF-1FGx( zp=FC*jN|X=ff`s$B3+H`zHMI!)yEwsE{{Bu_=iI{FwosKelDiv6C>Gzd&0%Xt ziN5$4t=jIE!&Uo!YxvvUbcCa4$Nw4|TF zYAW>ut;p6>1=AtwYaB)F$y9Xz#YK-^T(m!+h(daO8r*cuLdiQGm7O})-x9(!Q;b3F| z+kNU9y-ltwRU5C>b43fAXxkHlMHjBshvL6&C$wmF-F5m9@mN6pBiHGdWBq|EM1R|t zE`WSDOQEA+1RPDZT7hPBpovRLJs#L946?U=J5*DizDd1Puk|pq|J_XuxLzM2-zilk z*XuKtmJ53j3gAC4ZV2vJ-r|PjPSQ_@wsQdg2PFdn*bM}~_WK1o;FtXw5GAM7JpJ?_ zk%=82@y^HF1t6nBoKy|hl6)_87EoYaP zDepKfN*0x=6SwNU<(e|us0E790GS5L1={H3%FdNvc!~gFNo9KFy)b~5BN`8u>18-r z_RAfBa);=p_GTEScoO}KQhU#88L*yU#8lf$B0)X_{*`J&!?$1~lb|aAsuE?|6XbCy zBLdQaGA+?UY!UCcz>c`U+I|fzyF$x~c*E}=f>Nracz!H1 zy+3EGA#=4wwkHybx0b22VIs=cI$Qsvlp*EH`BF%K2~R}la*C%;HjxvE=_p9kPS{keO!RavcW8lJ zRIWDY`fwQTD8-|sj-P3ovGC#nZ$Y`k2}0K+Qi5k4O7bYN1aWtNH(P|!D;B7_Y0$}= zqq~H=kYL$FV@MFhTz*E1Af}SEY9AoF*bRvVyeZ{4ZX`sz?QErZ9u;WZK#B4$&|6gd z`(mWJP^quLl9F{=y6@2{eTycKmosrVTJ8h6$-4Lt>PDIE#Yyr^Iqm9zqO_J+o31nE zv=YQ%2@eS<0gfOBU`dKfU8K)R!Vb4CwD$HWljsUzG0I+d+Pj&c4F#rY^ zwW)o1hH8%y!-654=wdr=4`@fp&0?0g69u9-cZVqo z+E4qOmH?fH19WHy*cu@4LV!TQ4|*nh*umBvbHK25-?DDUS|_!6M5-aG&^j48Pi+h_ z(gpNfXqilzrwS^7fkQ1sLS_cYUg^jlNfi@h-aMc~%_*Ks_gxB)EV6<4^)~yJtlaLr zp+|Q*R_e~f#sun4%pgJ@?9(A@d(45tH=q5cBKPUzykt&!6M$$E&{-q2N^LEy$9{&7DEQ)#QMX^Uel;sQ#r$MwS!dwBUN&lOmlN3=eO zDVlPwb))bgoqCZeSl;}mm>bn$(elxetjVD zb!Xt~)6OgLEncYPYgLqFgOv;kmwXR}qSS_2A`w^f!f?Z$d}LWjoYEOQSl91(+#;f+Lsf8Nx&MLOr}F%26IW$1?7c;Ti6s zEX`yOeI0m%1yL4y)Q(bdTSpXY9YuQ~l#L!3#k0)jvAr)nr-3p27Wc8|!#y;%acLP*D4^Y7c5ONI^;e>EH5@0#D(`OIK}7~%6S+%?DQ-;MR~5So zXk`@D410c?cIk~7AYyk}=>nj5Zm_+)cySb43ERwV3I@#~+2_VaV=uZ3FeHC>jA6o) zvVkA7|CsR(@+HXKb{m10#S6c*5UvXL`3C@HWaF`jGlm_pkQIPH!(p`A_ymu!*7X?y z)wCc^X9Ji@?1+K+0SIJZnPUK>beCJezZh<2GeH+aYbx07M&W4vDZtDjw*W4R;%&C@ z?fxLUEUR~Z<-p;*b(WOPU|U)4hw`#&d-lgUw`VmiB`{QIaqM5si=#ExY))w zk&1KjsJ)z$EgzIqHWJe^ytt5wBB zNG6jYq4URAboBSe)QFUrpzN5%2n?&QP57`pG^;>?`dJ3rJv-LfP^*JK6j;+^RWW75`&S$)~EUl*qu#PYvRb$3br9B6S z)Y*R)vG650X=u5RNyC?_Df#h2H6=e_2aLgK?<#smynq4c5C3kps(DnVM||Y&3!E_g z6L`l7!)Ne`5{A#zP(BbdDy>@vM@+}m6$3#=57LZDs(7c2k3Hn5zUrvH%BqS|iFdrC zcNMa&hEs`OaR9cDio+s*D)HkQv-lb7)b_0?BSby?o?ao(g9xS*KL%*a_)j&QPCQzp z=Dx4@mtAT(ofsfOJ^VdTcG8JQ0l`iu{)A|p{QIDW(}}$S#Yra)QLS&->BJ0tw$h2C zYB`;lTx+Kj!3jtwj#3YOq~9e0gA$31)gq?3V5YcWN`4K75{Wkeu;mznVIt90lv1k- zuGUH+M}RJ2PB=UT73ia^yGxav(UvNRU9{?YL5@}xpX#e6=uoOFrcIBMatp^Q{DEIr z+xmp)?hF46lHy`N`A(bZy#N8{ z86)M+gV|pJ^I%77DbsY;4+|wZYkR7DzJ$-J*8$tfQ{D4nk-anu&#*n~Xm&nY%g40f z5D|pOYkl2M>TN;}hcp?U_FoRi6nNTy70bixj;}<9sH55Z@;cv#U+V{jEU)tugG*U2 zt|MZwl)>N)_tC!tOe6*!P<+r)bcn&OIzKT8f`F^UbL@F>9TS7s9YCyn->D>GZ~`iU z7z9B@26@hb!PH-^&eFxX7lna&fY_HJCDPz{Wbt&;W4* zDVsQ3KnsZ+%)}y2hd~jMgUSG%`T!l;tgH?YxX&#>@ORU_{2EOYk zV*@{T`@#+U4vXvt(hj(jiag5!MU}2fd~fX+Appb;60s;xJvBp&3=(4wShfwwuRyLW zeEb48IB#feW`H%K1(j?K5~~(12;QN@3LDg-R&0;?!2OIzd>{xE`Um976^&=z{?X2} ztxk&;e`U;|lMoMJ@v(z>QNB(5i=c>7T-rMh<^>yyU&B@Fc`F46w$T50cL}8>uz=@L z8Z#En7>>nO2JX^^P2A(VFnH?>M>;Oc_$}cS#czo7Z;ROo-c1P7bBN2_6@WlvYqQ&o zD%c69=x!@SH}FsHa8puWLKD9|efC&F zs|b7s@I$8Bm6U(WT0;4^AfPyVPH<3QevtV~IR6$z5xRyfcNEe5Lfbr3jOHawF|1in zuD6A;qxJ96a&`w@+3Qqk!1-x{=OK4>rraI)`X}d=D97d8;J>j&SQLqJe2798<*+2a zawLdyoL$0{12nAVmM=f}HyEBhwX_-A1Pd};eh9@KK;;+fVpX?K^*Hs(JR>w>kAK&* zxfZu$ebv8u7*~WP*Mn$+C$XLmOQ%H{8)YxJ4T2}6KSdcQWmqN)WT3#1uAX#!O`3$K zn!TWCXM(yW&d671FEgT%9N?Xbu+b=!2%=`nu2^4NoN+|Rnf0o=#<)rr)-$1*Ue7lj zExfLPcS}7nnicWJ&0$N}>Y{pPG%l&ydS)~rjSRw7Q&8`lpI}T8(yUi6CK@Yci)CwL zpsi%Ebr0F{y_#e+3Hf-vI`9w3m~B}g2g|4H@y_HREPOh}SV)z)N3;w@g7RaQ3jpGB z0bvX3iALPq#jt3^=z69RmNv4Wk@YGs&A3&zLlxc-{lLbT=#(7DmrD3k$KG>I<+&14XZ>k8x#a{|5S~eOVe=m}S2Y2&QogA1&Ty(zBBqwU_(;5AqV;znb2Q|5KUuMB1FBgP0VA`Az1y4^oY&Qb{Kjq z6QTv+CKIA+d?G?r-N1w>1vaigh&~A5Bz{7)+)-WOsIFjDCPZBZ7;!?jG%z9B!fnPa z4ixzb(Z&YVI?y;R_dy|2pp5`#`Q6&U6v%AYoNf$~FE%g(3Xq^dw+?h224n(&&45}F zj2Y1S24+C-0gA(bKDT0x7b@D=!QAl?X4|ZI`E3J}pnqcH=uU+Rnn;31W*TcHzz_*y zxE9ex?MQiC9W*uh;zZ#OUr$|5WzK@y5`h8hp?0e@(Y zu?9h87E)ln>Sjya{fs2saKv4mnG=WUC$_NpvzuK2eY0ZQWFcKz1y!`p)Qs0R&#&H2xXrOEqT}e&4lru3(j5M;~ z;u45Q;h_p#Q7Rc}^i)H}$ry1Z7UyAVy(1tuT?Ddy8g!BkF(O735t1sNU<|)xaAIz! zCIQ#7ngsp`c;xHGO^yX=3EtxtM90mxaRbHg*&1FF=!oM_Ij{k({|ljXwDm_W0(mh^ zixQtQ2xKFJdlJo;v%hzctX4{~jP^4zw-c9;-Imdw!3vEDH@s!iGTP#BRAdIpyF({O z1_)eh3t-6TTg$1-h~EbHGD}twmK`f>rfgV7+o9mv+(x-Jz?}yI+qW~IeH0Y=bb!La z0ROZ8SI>|~mf=-`WKYoE9!&xJ!fpfhE-LxnUBX{Nz$HQ>+wN=K)R9SW&4C99^fTf~ zVJiD>$b==S@z)r1Err=r@IYjV975->lqJU5Z}ds>3ygu{Mg~O+6&%m%JS71x*SK9) z#G&qBP~=d-L9^h75r)A2)-)?@BZQ8Qi$4Yc&{4|)b^(uCg1ca~3-0f^KE-DN?Sg4$ zpg7H5!5L8pF!6)K?V=r1oJr5_25`aX*GkiVS;`$`h*NBLk}+6fcM?8XnuJBs&hIHY zGXKr7QP3@(`xabeYPl^$J%)aAaW|P#-T$CX>xh{xHiF*_EN)g%>=wbg=4#PTg+?#& zDw`?J)(bmg<|7-yZ|3AhW`3}Rs5Nw*-GEim3LG)NOAc*bIC`N9hTm^$02a~OX18dV zEd-`|siyt#o0o}X%75!Ucpu7w8(}uEJv?Z}hf56THQa~~4q|og+Z`m^#XGSi9o~o~ z!qsXtr4HXLaDm3QQ4fCD(Q}u!{%Yw9zgqgHQ;N2THCnrhV_1`p+YY)m|1AmfwRub8 zydy!Zu}dSfM$oV}F~l0fC*#hKx8}vFF5QThc_0C-QNkAUFY}Cn;l=*F;Uv|TZuC>J zmByT~D;hx&?p8MvQ+%@0*d((WnJL~{Wt^8`6IdV@1%N4z!&hdCSx{s%#gt-*mdz9k zP$m&Xi7DQ+z(|s^rjeOqT_ZEa1&z!UEj(n3RgHe8xQ4CX)yPcICH31zW{MzJmU(nHSm1szsRER%|*tmLLPw7I(+fA>hW6 z(#lx1rrubpy!FOv62pzPWf+;`^Oj2h=W+=R%xy&GC`$>=;#>udOdc%&B#)CDnLHXz zOde&E9l${HnA$|-QTA@)ASO2j1hF4L#Wy*GG3-i&0czS55JV(|!<#sWAno!P_2ZiS zKQ5F})(ic7{;O4NrtqFf=7?FkFj{D-cMpd)INDrU%i|!ev z+LmiwR9loxh+PR@GGAPUPsA5jH8Ed&yMg%PdgNS;2n5d07dJSn8y(e+tjc`xs>g(~_Udfex0jF%xAs$eyouDrb#BL8|b zQ`|$%F0te5j1ut)V(^;wK{GL?ud#$lAe7*(mc4h1SiJQP#+a1i*K$)^yC)#E{h*n; zT@U&J$RP{}_v!bWsRtc^YM8OJQ3djRJ#N9DO3$rXxS(QT)`E(~l{Mv?>^}8Ae>A*t zaIhKsR8Q5EDSDZ?KZZsebOY01F>kF&jve5&huJ`UqG2}B%fk$UwxedE%H3epJHa`= z!SKlOUJlL}uW!vp*ptZVUOo%F#mi@bbG<}~Zh?Ow?Yh`Y6bdTuF^!w#@4V2NuQShe ziBMPG2b+K!HW`V@mkQ8IMi;lJlDpyS;r0D|fGq0AH!;S5<5tLS@>0k~Km#CTnO4ZU zxkCoOL3iSH6Ke7p9OdOPc(BFzZP+tdp5XC$Rl#QCS-BsK?Hp@9`Ik)L<(c?36iD>E z;>7{rJD`lALVoF0KiqFjkS9S4Z*hF#rCB)q6*ht$`j|?)3;ONz4;c4`%9UgTZu;GW zJBnUW5tbm{_c-sRiC7%N7WXmp-w&~C5#}iPYX8z(erUbWFF9UA`E*+r?=c+mQvZi0 zVE@0Itf|9;MO?&w^ox5Mw8Q&Ddc-Jy$xU9)+U0?lJPTisPt-lGU+HuY%-TJS{gQED zV)W0#w>qlR9o6ZqinDOI`R6T{sf}BV*Tbry9$cNb5~iNPYQt7Tm*p$f=B>uv_;1=a z;|;Oe?|7eb6la60@Da8hOG+y$lkxvXkXp29pvSw?cjb2DO(|bl>AUP<<6|vk8+!22 zO7+d7#>B`He3^}Z6#m(?QjOnfM9FO{)wG>PMl@DWrmD$HDpLUz6eNo- zxC~#V4(~EX<9pY~44?HLuZ}%t^bYN^3S3HDw?KIt;b%BYcf&LrzH0Lx79YFEc-j%~ z_PAdh4x1mBb!zwH#$c!ZJE*s8jBR;Q8=_V{VGM{Q#~0>-Mm&e`&j{!(9vpiRLHL7T1tJfB!XX0oF9g+xyNvGA3!nXQ UBNZF7;whsVzN+ukQ$~jPKY(wIaR2}S diff --git a/_sources/auto_graph.rst.txt b/_sources/auto_graph.rst.txt index fbbbf1d4b..6300da96a 100644 --- a/_sources/auto_graph.rst.txt +++ b/_sources/auto_graph.rst.txt @@ -7,48 +7,48 @@ Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] WishboneMaster_request["request"] - WishboneMaster_WishboneMaster["WishboneMaster"] WishboneMaster_result["result"] + WishboneMaster_WishboneMaster["WishboneMaster"] subgraph Forwarder["result Forwarder"] - Forwarder_read["read"] Forwarder_write["write"] + Forwarder_read["read"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] - WishboneMaster1_result["result"] - WishboneMaster1_request["request"] WishboneMaster1_WishboneMaster["WishboneMaster"] + WishboneMaster1_request["request"] + WishboneMaster1_result["result"] subgraph Forwarder1["result Forwarder"] Forwarder1_read["read"] Forwarder1_write["write"] end end subgraph FIFO["fifo_fetch FIFO"] - FIFO_read["read"] FIFO_write["write"] + FIFO_read["read"] end subgraph BasicFifo["free_rf_fifo BasicFifo"] BasicFifo_read["read"] BasicFifo_write["write"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] + SimpleWBCacheRefiller_start_refill["start_refill"] SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] SimpleWBCacheRefiller_accept_refill["accept_refill"] - SimpleWBCacheRefiller_start_refill["start_refill"] subgraph Forwarder2["address_fwd Forwarder"] - Forwarder2_write["write"] Forwarder2_read["read"] + Forwarder2_write["write"] end end subgraph ICache["icache ICache"] ICache_ICache["ICache"] - ICache_ICache1["ICache"] ICache_accept_res["accept_res"] - ICache_ICache2["ICache"] + ICache_ICache1["ICache"] ICache_issue_req["issue_req"] + ICache_ICache2["ICache"] subgraph FIFO1["req_fifo FIFO"] - FIFO1_read["read"] FIFO1_write["write"] + FIFO1_read["read"] end subgraph Forwarder3["res_fwd Forwarder"] Forwarder3_read["read"] @@ -71,21 +71,21 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_write["write"] RegisterFile_read2["read2"] - RegisterFile_read1["read1"] RegisterFile_free["free"] + RegisterFile_read1["read1"] + RegisterFile_write["write"] end subgraph ReorderBuffer["ROB ReorderBuffer"] + ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_peek["peek"] ReorderBuffer_get_indices["get_indices"] ReorderBuffer_retire["retire"] ReorderBuffer_put["put"] - ReorderBuffer_mark_done["mark_done"] - ReorderBuffer_peek["peek"] end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] - ExceptionCauseRegister_report["report"] ExceptionCauseRegister_get["get"] + ExceptionCauseRegister_report["report"] end subgraph FuncBlocksUnifier["func_blocks_unifier FuncBlocksUnifier"] subgraph Collector["result_collector Collector"] @@ -107,37 +107,37 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] + RSFuncBlock_select["select"] + RSFuncBlock_get_result["get_result"] RSFuncBlock_update["update"] RSFuncBlock_insert["insert"] - RSFuncBlock_get_result["get_result"] - RSFuncBlock_select["select"] subgraph RS["rs RS"] RS_RS["RS"] RS_RS1["RS"] - RS_RS2["RS"] - RS_RS3["RS"] RS_update["update"] + RS_RS2["RS"] RS_take["take"] RS_insert["insert"] RS_select["select"] + RS_RS3["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_accept["accept"] AluFuncUnit_issue["issue"] + AluFuncUnit_accept["accept"] subgraph FIFO2["fifo FIFO"] - FIFO2_write["write"] FIFO2_read["read"] + FIFO2_write["write"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] + ShiftFuncUnit_issue["issue"] subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] @@ -163,8 +163,8 @@ ExceptionFuncUnit_issue["issue"] ExceptionFuncUnit_accept["accept"] subgraph FIFO6["fifo FIFO"] - FIFO6_write["write"] FIFO6_read["read"] + FIFO6_write["write"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] @@ -193,17 +193,17 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] + LSUDummy_precommit["precommit"] + LSUDummy_select["select"] LSUDummy_LSUDummy["LSUDummy"] - LSUDummy_LSUDummy1["LSUDummy"] - LSUDummy_insert["insert"] + LSUDummy_get_result["get_result"] LSUDummy_update["update"] + LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_LSUDummy2["LSUDummy"] - LSUDummy_precommit["precommit"] - LSUDummy_get_result["get_result"] - LSUDummy_select["select"] + LSUDummy_insert["insert"] subgraph Forwarder6["forwarder Forwarder"] - Forwarder6_write["write"] Forwarder6_read["read"] + Forwarder6_write["write"] end subgraph LSURequesterWB["requester LSURequesterWB"] LSURequesterWB_issue["issue"] @@ -223,8 +223,8 @@ CSRRegister_write["write"] end subgraph CSRRegister1["register_high CSRRegister"] - CSRRegister1_read["read"] CSRRegister1_write["write"] + CSRRegister1_read["read"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] @@ -258,8 +258,8 @@ RegAllocation_RegAllocation["RegAllocation"] end subgraph FIFO9["rename_out_buf FIFO"] - FIFO9_read["read"] FIFO9_write["write"] + FIFO9_read["read"] end subgraph Renaming["renaming Renaming"] Renaming_Renaming["Renaming"] @@ -272,16 +272,16 @@ ROBAllocation_ROBAllocation["ROBAllocation"] end subgraph FIFO11["rs_select_out_buf FIFO"] - FIFO11_read["read"] FIFO11_write["write"] + FIFO11_read["read"] end subgraph RSSelection["rs_selector RSSelection"] RSSelection_RSSelection["RSSelection"] RSSelection_RSSelection1["RSSelection"] RSSelection_RSSelection2["RSSelection"] subgraph Forwarder7["forwarder Forwarder"] - Forwarder7_write["write"] Forwarder7_read["read"] + Forwarder7_write["write"] end end subgraph RSInsertion["rs_insertion RSInsertion"] @@ -325,18 +325,18 @@ end end Core_InitFreeRFFifo --> BasicFifo_write - Retirement_Retirement2 --> BasicFifo_write + Retirement_Retirement --> BasicFifo_write WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write Forwarder2_read --> SimpleWBCacheRefiller_SimpleWBCacheRefiller SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request - ICache_ICache1 --> Forwarder3_write + ICache_ICache2 --> Forwarder3_write ICache_ICache --> SimpleWBCacheRefiller_start_refill ICache_ICache --> Forwarder2_write - ICache_ICache2 --> Forwarder2_write - SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 - WishboneMaster_result --> ICache_ICache2 - Forwarder_read --> ICache_ICache2 + ICache_ICache1 --> Forwarder2_write + SimpleWBCacheRefiller_accept_refill --> ICache_ICache1 + WishboneMaster_result --> ICache_ICache1 + Forwarder_read --> ICache_ICache1 Fetch_Fetch1 --> ICache_issue_req Fetch_Fetch1 --> FIFO1_write Fetch_Fetch1 --> BasicFifo1_write @@ -353,20 +353,20 @@ RegAllocation_RegAllocation --> FIFO8_write FIFO8_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename - Retirement_Retirement --> FRAT_rename + Retirement_Retirement1 --> FRAT_rename Renaming_Renaming --> FIFO9_write FIFO9_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation --> FIFO10_write - FIFO10_read --> RSSelection_RSSelection - RSSelection_RSSelection --> Forwarder7_write + FIFO10_read --> RSSelection_RSSelection1 + RSSelection_RSSelection1 --> Forwarder7_write + Forwarder7_read --> RSSelection_RSSelection Forwarder7_read --> RSSelection_RSSelection2 - Forwarder7_read --> RSSelection_RSSelection1 - RSFuncBlock_select --> RSSelection_RSSelection2 - RS_select --> RSSelection_RSSelection2 + RSFuncBlock_select --> RSSelection_RSSelection + RS_select --> RSSelection_RSSelection + RSSelection_RSSelection --> FIFO11_write RSSelection_RSSelection2 --> FIFO11_write - RSSelection_RSSelection1 --> FIFO11_write - RSSelection_RSSelection1 <--> LSUDummy_select + RSSelection_RSSelection2 <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -385,7 +385,7 @@ ResultAnnouncement_ResultAnnouncement --> RSFuncBlock_update ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update - RS_RS3 --> WakeupSelect_WakeupSelect + RS_RS2 --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect @@ -405,7 +405,7 @@ ReorderBuffer_get_indices --> ConnectTrans1_ConnectTrans WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write - RS_RS2 --> WakeupSelect3_WakeupSelect + RS_RS3 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO6_write ConnectTrans2_ConnectTrans --> Forwarder5_write @@ -420,14 +420,14 @@ FIFO4_read --> ConnectTrans4_ConnectTrans ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans - LSUDummy_LSUDummy --> LSURequesterWB_issue - LSUDummy_LSUDummy --> WishboneMaster1_request + LSUDummy_LSUDummy1 --> LSURequesterWB_issue + LSUDummy_LSUDummy1 --> WishboneMaster1_request + LSUDummy_LSUDummy1 --> Forwarder6_write LSUDummy_LSUDummy --> Forwarder6_write LSUDummy_LSUDummy2 --> Forwarder6_write - LSUDummy_LSUDummy1 --> Forwarder6_write - LSURequesterWB_accept --> LSUDummy_LSUDummy1 - WishboneMaster1_result --> LSUDummy_LSUDummy1 - Forwarder1_read --> LSUDummy_LSUDummy1 + LSURequesterWB_accept --> LSUDummy_LSUDummy2 + WishboneMaster1_result --> LSUDummy_LSUDummy2 + Forwarder1_read --> LSUDummy_LSUDummy2 ConnectTrans_ConnectTrans --> Forwarder4_write ConnectTrans1_ConnectTrans --> Forwarder4_write RSFuncBlock_get_result --> ConnectTrans_ConnectTrans @@ -435,20 +435,20 @@ Forwarder5_read --> ConnectTrans_ConnectTrans LSUDummy_get_result --> ConnectTrans1_ConnectTrans Forwarder6_read --> ConnectTrans1_ConnectTrans - ReorderBuffer_peek --> Retirement_Retirement1 - Retirement_Retirement1 --> LSUDummy_precommit - ReorderBuffer_retire --> Retirement_Retirement2 - ExceptionCauseRegister_get --> Retirement_Retirement2 - Retirement_Retirement2 --> CSRRegister4_write - Retirement_Retirement2 --> RRAT_commit - Retirement_Retirement2 <--> DoubleCounterCSR2_increment - CSRRegister5_read --> Retirement_Retirement2 - Retirement_Retirement2 --> CSRRegister5_write - CSRRegister6_read --> Retirement_Retirement2 - Retirement_Retirement2 --> CSRRegister6_write - Retirement_Retirement2 --> Forwarder8_write - Retirement_Retirement2 --> RegisterFile_free - Forwarder8_read --> Retirement_Retirement + ReorderBuffer_peek --> Retirement_Retirement2 + Retirement_Retirement2 --> LSUDummy_precommit + ReorderBuffer_retire --> Retirement_Retirement + ExceptionCauseRegister_get --> Retirement_Retirement + Retirement_Retirement --> CSRRegister4_write + Retirement_Retirement --> RRAT_commit + Retirement_Retirement <--> DoubleCounterCSR2_increment + CSRRegister5_read --> Retirement_Retirement + Retirement_Retirement --> CSRRegister5_write + CSRRegister6_read --> Retirement_Retirement + Retirement_Retirement --> CSRRegister6_write + Retirement_Retirement --> Forwarder8_write + Retirement_Retirement --> RegisterFile_free + Forwarder8_read --> Retirement_Retirement1 GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister_write diff --git a/api.html b/api.html index 2ca9519ae..0dd828ef1 100644 --- a/api.html +++ b/api.html @@ -240,7 +240,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/assumptions.html b/assumptions.html index 42113b60d..8677dd8be 100644 --- a/assumptions.html +++ b/assumptions.html @@ -104,7 +104,7 @@

List of assumptions made during development

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/auto_graph.html b/auto_graph.html index a863af49a..48165ffad 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -86,48 +86,48 @@ Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] WishboneMaster_request["request"] - WishboneMaster_WishboneMaster["WishboneMaster"] WishboneMaster_result["result"] + WishboneMaster_WishboneMaster["WishboneMaster"] subgraph Forwarder["result Forwarder"] - Forwarder_read["read"] Forwarder_write["write"] + Forwarder_read["read"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] - WishboneMaster1_result["result"] - WishboneMaster1_request["request"] WishboneMaster1_WishboneMaster["WishboneMaster"] + WishboneMaster1_request["request"] + WishboneMaster1_result["result"] subgraph Forwarder1["result Forwarder"] Forwarder1_read["read"] Forwarder1_write["write"] end end subgraph FIFO["fifo_fetch FIFO"] - FIFO_read["read"] FIFO_write["write"] + FIFO_read["read"] end subgraph BasicFifo["free_rf_fifo BasicFifo"] BasicFifo_read["read"] BasicFifo_write["write"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] + SimpleWBCacheRefiller_start_refill["start_refill"] SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] SimpleWBCacheRefiller_accept_refill["accept_refill"] - SimpleWBCacheRefiller_start_refill["start_refill"] subgraph Forwarder2["address_fwd Forwarder"] - Forwarder2_write["write"] Forwarder2_read["read"] + Forwarder2_write["write"] end end subgraph ICache["icache ICache"] ICache_ICache["ICache"] - ICache_ICache1["ICache"] ICache_accept_res["accept_res"] - ICache_ICache2["ICache"] + ICache_ICache1["ICache"] ICache_issue_req["issue_req"] + ICache_ICache2["ICache"] subgraph FIFO1["req_fifo FIFO"] - FIFO1_read["read"] FIFO1_write["write"] + FIFO1_read["read"] end subgraph Forwarder3["res_fwd Forwarder"] Forwarder3_read["read"] @@ -150,21 +150,21 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_write["write"] RegisterFile_read2["read2"] - RegisterFile_read1["read1"] RegisterFile_free["free"] + RegisterFile_read1["read1"] + RegisterFile_write["write"] end subgraph ReorderBuffer["ROB ReorderBuffer"] + ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_peek["peek"] ReorderBuffer_get_indices["get_indices"] ReorderBuffer_retire["retire"] ReorderBuffer_put["put"] - ReorderBuffer_mark_done["mark_done"] - ReorderBuffer_peek["peek"] end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] - ExceptionCauseRegister_report["report"] ExceptionCauseRegister_get["get"] + ExceptionCauseRegister_report["report"] end subgraph FuncBlocksUnifier["func_blocks_unifier FuncBlocksUnifier"] subgraph Collector["result_collector Collector"] @@ -186,37 +186,37 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] + RSFuncBlock_select["select"] + RSFuncBlock_get_result["get_result"] RSFuncBlock_update["update"] RSFuncBlock_insert["insert"] - RSFuncBlock_get_result["get_result"] - RSFuncBlock_select["select"] subgraph RS["rs RS"] RS_RS["RS"] RS_RS1["RS"] - RS_RS2["RS"] - RS_RS3["RS"] RS_update["update"] + RS_RS2["RS"] RS_take["take"] RS_insert["insert"] RS_select["select"] + RS_RS3["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_accept["accept"] AluFuncUnit_issue["issue"] + AluFuncUnit_accept["accept"] subgraph FIFO2["fifo FIFO"] - FIFO2_write["write"] FIFO2_read["read"] + FIFO2_write["write"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] + ShiftFuncUnit_issue["issue"] subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] @@ -242,8 +242,8 @@ ExceptionFuncUnit_issue["issue"] ExceptionFuncUnit_accept["accept"] subgraph FIFO6["fifo FIFO"] - FIFO6_write["write"] FIFO6_read["read"] + FIFO6_write["write"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] @@ -272,17 +272,17 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] + LSUDummy_precommit["precommit"] + LSUDummy_select["select"] LSUDummy_LSUDummy["LSUDummy"] - LSUDummy_LSUDummy1["LSUDummy"] - LSUDummy_insert["insert"] + LSUDummy_get_result["get_result"] LSUDummy_update["update"] + LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_LSUDummy2["LSUDummy"] - LSUDummy_precommit["precommit"] - LSUDummy_get_result["get_result"] - LSUDummy_select["select"] + LSUDummy_insert["insert"] subgraph Forwarder6["forwarder Forwarder"] - Forwarder6_write["write"] Forwarder6_read["read"] + Forwarder6_write["write"] end subgraph LSURequesterWB["requester LSURequesterWB"] LSURequesterWB_issue["issue"] @@ -302,8 +302,8 @@ CSRRegister_write["write"] end subgraph CSRRegister1["register_high CSRRegister"] - CSRRegister1_read["read"] CSRRegister1_write["write"] + CSRRegister1_read["read"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] @@ -337,8 +337,8 @@ RegAllocation_RegAllocation["RegAllocation"] end subgraph FIFO9["rename_out_buf FIFO"] - FIFO9_read["read"] FIFO9_write["write"] + FIFO9_read["read"] end subgraph Renaming["renaming Renaming"] Renaming_Renaming["Renaming"] @@ -351,16 +351,16 @@ ROBAllocation_ROBAllocation["ROBAllocation"] end subgraph FIFO11["rs_select_out_buf FIFO"] - FIFO11_read["read"] FIFO11_write["write"] + FIFO11_read["read"] end subgraph RSSelection["rs_selector RSSelection"] RSSelection_RSSelection["RSSelection"] RSSelection_RSSelection1["RSSelection"] RSSelection_RSSelection2["RSSelection"] subgraph Forwarder7["forwarder Forwarder"] - Forwarder7_write["write"] Forwarder7_read["read"] + Forwarder7_write["write"] end end subgraph RSInsertion["rs_insertion RSInsertion"] @@ -404,18 +404,18 @@ end end Core_InitFreeRFFifo --> BasicFifo_write -Retirement_Retirement2 --> BasicFifo_write +Retirement_Retirement --> BasicFifo_write WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write Forwarder2_read --> SimpleWBCacheRefiller_SimpleWBCacheRefiller SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request -ICache_ICache1 --> Forwarder3_write +ICache_ICache2 --> Forwarder3_write ICache_ICache --> SimpleWBCacheRefiller_start_refill ICache_ICache --> Forwarder2_write -ICache_ICache2 --> Forwarder2_write -SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 -WishboneMaster_result --> ICache_ICache2 -Forwarder_read --> ICache_ICache2 +ICache_ICache1 --> Forwarder2_write +SimpleWBCacheRefiller_accept_refill --> ICache_ICache1 +WishboneMaster_result --> ICache_ICache1 +Forwarder_read --> ICache_ICache1 Fetch_Fetch1 --> ICache_issue_req Fetch_Fetch1 --> FIFO1_write Fetch_Fetch1 --> BasicFifo1_write @@ -432,20 +432,20 @@ RegAllocation_RegAllocation --> FIFO8_write FIFO8_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename -Retirement_Retirement --> FRAT_rename +Retirement_Retirement1 --> FRAT_rename Renaming_Renaming --> FIFO9_write FIFO9_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation --> FIFO10_write -FIFO10_read --> RSSelection_RSSelection -RSSelection_RSSelection --> Forwarder7_write +FIFO10_read --> RSSelection_RSSelection1 +RSSelection_RSSelection1 --> Forwarder7_write +Forwarder7_read --> RSSelection_RSSelection Forwarder7_read --> RSSelection_RSSelection2 -Forwarder7_read --> RSSelection_RSSelection1 -RSFuncBlock_select --> RSSelection_RSSelection2 -RS_select --> RSSelection_RSSelection2 +RSFuncBlock_select --> RSSelection_RSSelection +RS_select --> RSSelection_RSSelection +RSSelection_RSSelection --> FIFO11_write RSSelection_RSSelection2 --> FIFO11_write -RSSelection_RSSelection1 --> FIFO11_write -RSSelection_RSSelection1 <--> LSUDummy_select +RSSelection_RSSelection2 <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -464,7 +464,7 @@ ResultAnnouncement_ResultAnnouncement --> RSFuncBlock_update ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update -RS_RS3 --> WakeupSelect_WakeupSelect +RS_RS2 --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect @@ -484,7 +484,7 @@ ReorderBuffer_get_indices --> ConnectTrans1_ConnectTrans WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write -RS_RS2 --> WakeupSelect3_WakeupSelect +RS_RS3 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO6_write ConnectTrans2_ConnectTrans --> Forwarder5_write @@ -499,14 +499,14 @@ FIFO4_read --> ConnectTrans4_ConnectTrans ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans -LSUDummy_LSUDummy --> LSURequesterWB_issue -LSUDummy_LSUDummy --> WishboneMaster1_request +LSUDummy_LSUDummy1 --> LSURequesterWB_issue +LSUDummy_LSUDummy1 --> WishboneMaster1_request +LSUDummy_LSUDummy1 --> Forwarder6_write LSUDummy_LSUDummy --> Forwarder6_write LSUDummy_LSUDummy2 --> Forwarder6_write -LSUDummy_LSUDummy1 --> Forwarder6_write -LSURequesterWB_accept --> LSUDummy_LSUDummy1 -WishboneMaster1_result --> LSUDummy_LSUDummy1 -Forwarder1_read --> LSUDummy_LSUDummy1 +LSURequesterWB_accept --> LSUDummy_LSUDummy2 +WishboneMaster1_result --> LSUDummy_LSUDummy2 +Forwarder1_read --> LSUDummy_LSUDummy2 ConnectTrans_ConnectTrans --> Forwarder4_write ConnectTrans1_ConnectTrans --> Forwarder4_write RSFuncBlock_get_result --> ConnectTrans_ConnectTrans @@ -514,20 +514,20 @@ Forwarder5_read --> ConnectTrans_ConnectTrans LSUDummy_get_result --> ConnectTrans1_ConnectTrans Forwarder6_read --> ConnectTrans1_ConnectTrans -ReorderBuffer_peek --> Retirement_Retirement1 -Retirement_Retirement1 --> LSUDummy_precommit -ReorderBuffer_retire --> Retirement_Retirement2 -ExceptionCauseRegister_get --> Retirement_Retirement2 -Retirement_Retirement2 --> CSRRegister4_write -Retirement_Retirement2 --> RRAT_commit -Retirement_Retirement2 <--> DoubleCounterCSR2_increment -CSRRegister5_read --> Retirement_Retirement2 -Retirement_Retirement2 --> CSRRegister5_write -CSRRegister6_read --> Retirement_Retirement2 -Retirement_Retirement2 --> CSRRegister6_write -Retirement_Retirement2 --> Forwarder8_write -Retirement_Retirement2 --> RegisterFile_free -Forwarder8_read --> Retirement_Retirement +ReorderBuffer_peek --> Retirement_Retirement2 +Retirement_Retirement2 --> LSUDummy_precommit +ReorderBuffer_retire --> Retirement_Retirement +ExceptionCauseRegister_get --> Retirement_Retirement +Retirement_Retirement --> CSRRegister4_write +Retirement_Retirement --> RRAT_commit +Retirement_Retirement <--> DoubleCounterCSR2_increment +CSRRegister5_read --> Retirement_Retirement +Retirement_Retirement --> CSRRegister5_write +CSRRegister6_read --> Retirement_Retirement +Retirement_Retirement --> CSRRegister6_write +Retirement_Retirement --> Forwarder8_write +Retirement_Retirement --> RegisterFile_free +Forwarder8_read --> Retirement_Retirement1 GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister_write @@ -548,7 +548,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/components/icache.html b/components/icache.html index 70b8e68b1..6f04d63ab 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

Address mapping example

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index f92f19715..004ba37ac 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -399,7 +399,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.fu.html b/coreblocks.fu.html index acaf00e06..8bd485f17 100644 --- a/coreblocks.fu.html +++ b/coreblocks.fu.html @@ -898,7 +898,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.fu.unsigned_multiplication.html b/coreblocks.fu.unsigned_multiplication.html index 6d8aacaed..1487a7e54 100644 --- a/coreblocks.fu.unsigned_multiplication.html +++ b/coreblocks.fu.unsigned_multiplication.html @@ -237,7 +237,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.html b/coreblocks.html index 076d23a3d..85a3afdc1 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -215,7 +215,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.params.html b/coreblocks.params.html index 8702b76f1..d25fe0c89 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -2675,7 +2675,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index e7c62a36b..82466c05a 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -348,7 +348,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.scheduler.html b/coreblocks.scheduler.html index 5ff3518e5..af59a3891 100644 --- a/coreblocks.scheduler.html +++ b/coreblocks.scheduler.html @@ -191,7 +191,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

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

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.structs_common.html b/coreblocks.structs_common.html index 4c543d13a..c9089656e 100644 --- a/coreblocks.structs_common.html +++ b/coreblocks.structs_common.html @@ -454,7 +454,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/coreblocks.utils.html b/coreblocks.utils.html index 57369ca1d..af8ab5e79 100644 --- a/coreblocks.utils.html +++ b/coreblocks.utils.html @@ -165,7 +165,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/current-graph.html b/current-graph.html index 4b83f8005..3d49375ce 100644 --- a/current-graph.html +++ b/current-graph.html @@ -92,48 +92,48 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/development-environment.html b/development-environment.html index 359ba1c4c..5e0d28643 100644 --- a/development-environment.html +++ b/development-environment.html @@ -178,7 +178,7 @@

build_docs.sh

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/genindex.html b/genindex.html index 027645128..6779bc992 100644 --- a/genindex.html +++ b/genindex.html @@ -2885,7 +2885,7 @@

Z

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/home.html b/home.html index c7ecdb005..33fb13cd4 100644 --- a/home.html +++ b/home.html @@ -129,7 +129,7 @@

Documentation

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/index.html b/index.html index dedad8c3d..655837845 100644 --- a/index.html +++ b/index.html @@ -221,7 +221,7 @@

Coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/miscellany/exceptions-summary.html b/miscellany/exceptions-summary.html index f3bdb7541..2a975c8d3 100644 --- a/miscellany/exceptions-summary.html +++ b/miscellany/exceptions-summary.html @@ -271,7 +271,7 @@

Summary

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/modules-coreblocks.html b/modules-coreblocks.html index 582d35f59..0ec13c499 100644 --- a/modules-coreblocks.html +++ b/modules-coreblocks.html @@ -184,7 +184,7 @@

coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/modules-transactron.html b/modules-transactron.html index e82c1b10c..64a860cce 100644 --- a/modules-transactron.html +++ b/modules-transactron.html @@ -126,7 +126,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/problem-checklist.html b/problem-checklist.html index 32462ed4f..091ce56b1 100644 --- a/problem-checklist.html +++ b/problem-checklist.html @@ -105,7 +105,7 @@

Problem checklist

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/py-modindex.html b/py-modindex.html index 65cd665a6..e8b80affb 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -458,7 +458,7 @@

Python Module Index

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/scheduler/overview.html b/scheduler/overview.html index 99602f116..23f49b97e 100644 --- a/scheduler/overview.html +++ b/scheduler/overview.html @@ -146,7 +146,7 @@

More detailed description of each block

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/search.html b/search.html index aa8451ad3..e8fe2ec60 100644 --- a/search.html +++ b/search.html @@ -101,7 +101,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/searchindex.js b/searchindex.js index a468f8480..b328b4d22 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "assumptions", "auto_graph", "components/icache", "coreblocks", "coreblocks.frontend", "coreblocks.fu", "coreblocks.fu.unsigned_multiplication", "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.utils"], "filenames": ["api.md", "assumptions.md", "auto_graph.rst", "components/icache.md", "coreblocks.rst", "coreblocks.frontend.rst", "coreblocks.fu.rst", "coreblocks.fu.unsigned_multiplication.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.utils.rst"], "titles": ["API", "List of assumptions made during development", "<no title>", "Instruction Cache", "coreblocks package", "coreblocks.frontend package", "coreblocks.fu package", "coreblocks.fu.unsigned_multiplication 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", "Synthesis", "Documentation for Coreblocks transaction framework", "transactron package", "transactron.lib package", "transactron.utils package"], "terms": {"packag": [0, 15, 17, 19, 20], "subpackag": [0, 19, 20], "frontend": [0, 4, 19, 22], "submodul": [0, 19, 20], "decod": [0, 4, 6, 8, 10, 19], "modul": [0, 19, 20, 26], "fetch": [0, 3, 4, 8, 11, 12, 18, 19], "icach": [0, 4, 19], "rvc": [0, 4, 8, 19], "content": [0, 19, 20], "fu": [0, 1, 4, 8, 11, 12, 19, 23, 24], "alu": [0, 4, 8, 19], "div_unit": [0, 4, 19], "except": [0, 4, 8, 11, 17, 19, 21, 27, 29], "fu_decod": [0, 4, 19], "jumpbranch": [0, 4, 8, 19], "mul_unit": [0, 4, 19], "shift_unit": [0, 4, 8, 19], "zbc": [0, 4, 8, 19], "zb": [0, 4, 8, 19], "param": [0, 4, 5, 6, 10, 11, 12, 19], "configur": [0, 4, 10, 19], "depend": [0, 4, 12, 19, 26, 27, 29], "fu_param": [0, 4, 19], "genparam": [0, 4, 5, 6, 7, 10, 11, 12, 19], "icache_param": [0, 4, 19], "instr": [0, 4, 5, 19], "isa": [0, 4, 5, 12, 19], "kei": [0, 4, 12, 19, 29], "layout": [0, 4, 5, 9, 10, 11, 15, 19, 21, 26, 27, 28, 29], "optyp": [0, 4, 5, 6, 10, 11, 12, 19], "peripher": [0, 4, 19], "wishbon": [0, 4, 19], "schedul": [0, 4, 8, 17, 18, 19, 27, 28], "wakeup_select": [0, 4, 19], "stage": [0, 1, 4, 12, 19], "backend": [0, 4, 19], "func_blocks_unifi": [0, 4, 19], "retir": [0, 4, 19], "rs_func_block": [0, 4, 19], "structs_common": [0, 4, 19], "csr": [0, 4, 5, 8, 19], "csr_gener": [0, 4, 19], "rat": [0, 1, 4, 8, 10, 18, 19], "rf": [0, 1, 4, 11, 18, 19, 23, 24], "rob": [0, 1, 4, 8, 10, 11, 18, 19, 22, 23, 24], "r": [0, 1, 4, 8, 10, 11, 15, 18, 19, 22, 23, 24], "util": [0, 4, 10, 11, 19, 20, 21, 26, 27, 28], "protocol": [0, 4, 5, 10, 11, 19, 27], "core": [0, 5, 6, 7, 8, 10, 11, 12, 13, 15, 18, 19, 20, 25, 28], "lib": [0, 20, 27, 29], "adapt": [0, 20, 26, 27], "button": [0, 20, 27], "connector": [0, 20, 27], "reqr": [0, 20, 27], "simultan": [0, 12, 20, 26, 27], "storag": [0, 20, 27], "transform": [0, 20, 27], "debug_sign": [0, 11, 20, 27, 28], "fifo": [0, 11, 18, 20, 26, 27, 28], "graph": [0, 15, 17, 20, 25], "trace": [0, 15, 20], "ha": [1, 5, 8, 10, 12, 15, 18, 21, 23, 26, 27, 29], "data": [1, 5, 8, 9, 12, 17, 24, 27, 28, 29], "forward": [1, 26, 27, 28], "from": [1, 5, 6, 8, 9, 10, 11, 12, 15, 16, 18, 21, 23, 24, 25, 26, 27, 28, 29], "tomasulo": 1, "announc": [1, 11, 12], "bu": [1, 8, 9], "read": [1, 8, 9, 12, 17, 21, 26, 28, 29], "x0": [1, 8], "rf0": 1, "return": [1, 3, 6, 8, 9, 17, 18, 27, 28, 29], "0": [1, 5, 6, 8, 10, 12, 23, 24, 27], "write": [1, 5, 12, 18, 24, 26, 28, 29], "i": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 18, 22, 23, 24, 25, 26, 27, 28, 29], "noop": 1, "separ": [1, 22, 28], "each": [1, 5, 6, 8, 9, 12, 17, 18, 23, 24, 25, 26, 27, 28], "writeback": 1, "save": [1, 8, 11, 15, 18, 23, 24, 25, 28], "after": [1, 3, 5, 8, 9, 18, 22, 26, 28], "get": [1, 5, 6, 7, 8, 10, 11, 15, 17, 27, 28, 29], "output": [1, 5, 9, 11, 12, 15, 18, 23, 24, 25, 27, 28], "commit": [1, 8, 12, 15, 18, 25], "updat": [1, 11, 12, 13], "The": [3, 5, 6, 8, 9, 11, 15, 16, 17, 18, 22, 23, 24, 27, 28, 29], "should": [3, 5, 8, 9, 10, 11, 15, 16, 18, 22, 23, 24, 26, 27, 28, 29], "expos": [3, 28, 29], "three": [3, 5, 18, 27], "method": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 27, 28, 29], "issue_req": [3, 5], "thi": [3, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 21, 23, 24, 25, 26, 27, 28, 29], "issu": [3, 5, 6, 7, 10, 13, 15, 26, 28], "an": [3, 5, 8, 10, 11, 15, 16, 18, 21, 23, 26, 27, 28, 29], "lookup": [3, 5], "request": [3, 5, 6, 7, 8, 9, 26, 27, 28], "accept_resp": 3, "result": [3, 5, 6, 7, 8, 9, 11, 12, 18, 26, 28, 29], "flush": [3, 5, 18], "entir": [3, 26], "oper": [3, 5, 6, 8, 18, 26, 27, 28, 29], "under": [3, 26, 27], "follow": [3, 6, 8, 10, 15, 23, 25, 26, 29], "ar": [3, 8, 9, 11, 12, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29], "alwai": [3, 12, 26, 27, 28], "multipl": [3, 6, 7, 8, 9, 10, 11, 26, 27], "4": [3, 6, 8, 28], "byte": [3, 8], "risc": [3, 8, 16], "v": [3, 8, 15, 16, 18, 23], "specif": [3, 8, 15, 18], "requir": [3, 12, 15, 17, 18, 26, 27], "align": [3, 29], "c": [3, 8, 18], "extens": [3, 8], "introduc": [3, 18, 26], "16": [3, 8, 18, 27], "bit": [3, 5, 6, 7, 8, 9, 12, 18, 23, 24, 26, 28, 29], "relax": [3, 26], "unit": [3, 5, 6, 7, 8, 9, 10, 11, 12, 15, 22], "handl": [3, 6, 17, 26, 27], "case": [3, 9, 10, 11, 18, 21, 26, 27, 28, 29], "fulli": [3, 28], "pipelin": [3, 9, 10, 12, 18, 23, 28], "process": [3, 17, 28], "order": [3, 8, 10, 15, 16, 17, 25, 27, 28], "As": [3, 18, 26], "can": [3, 8, 9, 11, 12, 15, 16, 18, 22, 23, 25, 26, 27, 28, 29], "invok": [3, 5, 10, 11, 18, 23], "independ": [3, 26, 28], "accept_r": [3, 5], "If": [3, 5, 8, 9, 12, 18, 21, 23, 26, 27, 28, 29], "space": [3, 18], "anoth": [3, 5, 26, 27, 28], "simpli": 3, "block": [3, 6, 7, 8, 9, 10, 11, 17, 18, 26, 27, 28], "latenc": [3, 18, 28], "least": 3, "one": [3, 5, 6, 8, 9, 11, 15, 18, 22, 23, 24, 26, 27, 28, 29], "cycl": [3, 6, 7, 9, 12, 18, 22, 26, 27, 28], "miss": [3, 18], "occur": [3, 5], "arbitrarili": 3, "long": [3, 24, 28], "ensur": 3, "ani": [3, 5, 8, 9, 10, 18, 21, 29], "refetch": 3, "howev": 3, "guarante": [3, 18], "have": [3, 8, 9, 11, 12, 18, 21, 25, 26, 27, 29], "alreadi": [3, 8, 11, 18], "been": 3, "still": [3, 18, 24, 27], "wait": [3, 9, 11, 18, 23, 24, 27], "accept": [3, 5, 6, 7, 12, 13, 27, 28, 29], "inform": [3, 10, 25, 27], "regard": 3, "error": [3, 5, 8, 9, 27, 29], "mean": [3, 10, 24, 27, 28], "dure": [3, 17, 22], "line": [3, 5, 8, 17], "refil": [3, 5, 8], "subsequ": 3, "access": [3, 8, 12, 18, 26], "trigger": [3, 12], "which": [3, 5, 6, 8, 10, 11, 15, 16, 18, 22, 23, 24, 26, 27, 28, 29], "most": [3, 18, 26, 27], "like": [3, 5, 9, 18, 26, 27, 28], "For": [3, 8, 23, 24, 25, 26, 29], "32": [3, 6, 7, 8, 18, 26], "128": [3, 8], "set": [3, 5, 6, 8, 10, 11, 12, 17, 23, 27, 28], "size": [3, 8, 9, 18, 26, 28, 29], "equal": 3, "31": [3, 8], "15": [3, 8], "14": [3, 8], "13": [3, 8], "12": [3, 8], "11": [3, 8, 15], "10": [3, 8, 18], "09": 3, "08": 3, "07": 3, "06": 3, "05": 3, "04": 3, "03": 3, "02": 3, "01": 3, "00": 3, "tag": [3, 9, 18, 23, 24], "index": [3, 8, 27, 29], "offset": 3, "unsigned_multipl": [4, 6], "common": [4, 6, 28, 29], "fast_recurs": [4, 6], "sequenc": [4, 6, 10, 27, 28, 29], "shift": [4, 6, 8], "class": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 26, 27, 28, 29], "base": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 27, 28, 29], "elaborat": [4, 5, 6, 7, 9, 10, 11, 12, 26, 27, 28, 29], "__init__": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 26, 27, 28, 29], "gen_param": [4, 5, 6, 8, 10, 11, 12], "wb_instr_bu": 4, "wishbonebu": [4, 9], "wb_data_bu": 4, "simpl": [5, 10, 11, 27, 28, 29], "transact": [5, 8, 9, 12, 17, 23, 27, 28, 29], "interfac": [5, 7, 9, 10, 11, 12, 17, 26, 27, 28], "instanti": [5, 27], "instrdecod": 5, "make": [5, 6, 15, 16, 18, 21, 26], "actual": [5, 15, 17, 26], "combinatori": [5, 26], "manner": [5, 9], "get_raw": 5, "push_decod": 5, "none": [5, 6, 8, 11, 12, 27, 28, 29], "paramet": [5, 6, 7, 8, 9, 10, 11, 12, 25, 26, 27, 28, 29], "instanc": [5, 6, 8, 10, 11, 27], "us": [5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 21, 25, 26, 27, 28, 29], "gener": [5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 18, 21, 25, 27, 28, 29], "raw": 5, "instruct": [5, 6, 8, 10, 11, 12, 17, 18, 22, 23], "previou": [5, 9, 18], "step": [5, 10, 15, 18, 26], "e": [5, 8, 15, 18, 21, 26, 28, 29], "g": [5, 8, 15, 18, 21, 26, 29], "fetchlayout": [5, 8], "send": [5, 8, 10, 11], "next": [5, 10, 11, 12, 18, 27], "It": [5, 6, 7, 8, 10, 11, 15, 18, 22, 23, 26, 27, 28], "describ": [5, 8, 10, 11, 18, 27, 28], "decodelayout": [5, 8, 10], "perform": [5, 6, 7, 8, 10, 12, 25, 26, 27, 28, 29], "elementari": 5, "compon": [5, 8, 16, 27], "opcod": [5, 8, 23, 24], "funct3": [5, 6, 8], "etc": [5, 26], "connect": [5, 9, 11, 12, 18, 26, 27, 28], "via": [5, 26, 27], "its": [5, 10, 11, 12, 18, 26, 27, 28, 29], "attribut": [5, 6, 7, 8, 9, 11, 12, 27, 28, 29], "signal": [5, 6, 9, 17, 21, 27, 28, 29], "gen": [5, 6, 7, 11], "ilen": [5, 8], "out": [5, 6, 7, 9, 11, 16, 17, 27, 28], "function": [5, 6, 8, 10, 11, 18, 21, 25, 26, 27, 28, 29], "identifi": [5, 8, 23], "funct3_v": 5, "1": [5, 6, 7, 8, 10, 12, 18, 23, 24, 26, 27, 28, 29], "funct7": [5, 6, 8], "seven": 5, "funct7_v": 5, "funct12": [5, 8], "twelv": 5, "funct12_v": 5, "rd": [5, 8], "reg_cnt_log": 5, "address": [5, 8, 9, 12, 17, 18], "regist": [5, 8, 10, 12, 18, 22], "rd_v": 5, "rs1": [5, 8], "hold": [5, 9, 12], "first": [5, 6, 8, 10, 18, 23, 24, 26, 28], "input": [5, 6, 11, 12, 18, 23, 24, 26, 27, 28, 29], "valu": [5, 6, 8, 9, 10, 11, 12, 17, 21, 23, 24, 27, 28, 29], "rs1_v": 5, "take": [5, 8, 9, 11, 22, 23, 25, 26, 27, 28], "form": [5, 8, 12, 18, 28], "rs2": [5, 8], "second": [5, 6, 8, 10, 23, 24, 28], "rs2_v": 5, "imm": [5, 8], "xlen": [5, 6, 8, 12], "immedi": [5, 8, 9], "provid": [5, 6, 8, 10, 12, 26, 28], "were": [5, 18, 26], "succ": 5, "fencetarget": [5, 8], "successor": 5, "fenc": [5, 8], "pred": 5, "predecessor": 5, "fm": 5, "fencefm": [5, 8], "mode": [5, 8, 18], "csr_alen": [5, 8], "control": [5, 8, 9, 12, 27, 28], "sourc": [5, 8, 10, 23], "type": [5, 6, 8, 15, 27], "defin": [5, 12, 26, 27, 28, 29], "kind": [5, 6, 8, 10], "illeg": 5, "wa": [5, 8, 12, 18, 26, 27, 28], "success": [5, 9], "do": [5, 8, 18, 21, 26, 27], "fit": 5, "support": [5, 8, 10, 15, 17, 27, 28], "select": [5, 6, 9, 10, 11, 12, 13, 15], "t": [5, 8, 15, 18, 21, 23, 25, 26, 27, 28, 29], "constructor": [5, 26, 27], "pc": [5, 8, 12, 17], "insid": [5, 26, 27, 28], "increment": [5, 12], "ilen_byt": 5, "icacheinterfac": 5, "cont": 5, "cach": [5, 8, 17], "unalignedfetch": 5, "work": [5, 10, 18, 21, 26, 27], "unalign": 5, "A": [5, 8, 26, 27, 28], "associ": [5, 8], "replac": [5, 7, 8, 23], "polici": 5, "pseudo": 5, "random": 5, "scheme": 5, "everi": [5, 6, 9, 15, 27, 28], "time": [5, 9, 12, 18, 25, 27, 28], "trash": 5, "we": [5, 11, 18, 22, 23, 24, 25, 26], "wai": [5, 6, 8, 15, 18, 26, 27], "keep": [5, 27], "global": [5, 12, 18], "counter": [5, 8, 12], "abstract": [5, 7, 8, 28], "awai": 5, "need": [5, 9, 15, 18, 23, 25, 26, 27], "two": [5, 8, 12, 18, 21, 26, 27, 28, 29], "refiller_start": 5, "call": [5, 6, 10, 12, 15, 21, 23, 26, 27, 28], "whenev": 5, "refiller_accept": 5, "readi": [5, 8, 9, 10, 11, 12, 17, 23, 27, 28, 29], "word": [5, 8], "written": [5, 12, 24, 28], "last": [5, 8, 10, 27, 28], "when": [5, 9, 15, 18, 21, 23, 24, 26, 27, 28, 29], "either": [5, 26, 27, 29], "transfer": [5, 9, 27, 28], "over": [5, 12, 27, 29], "shouldn": 5, "until": [5, 18, 28], "start": [5, 6, 8, 9, 18, 27], "icachelayout": [5, 8], "icacheparamet": [5, 8], "cacherefillerinterfac": 5, "creat": [5, 7, 15, 26, 27, 28, 29], "start_refil": 5, "accept_refil": 5, "deserialize_addr": 5, "raw_addr": 5, "dict": [5, 9, 26, 27, 28, 29], "str": [5, 8, 27, 28, 29], "amaranth": [5, 6, 8, 9, 21, 25, 26, 27, 28, 29], "hdl": [5, 6, 8, 27, 28, 29], "ast": [5, 6, 8, 27, 28, 29], "serialize_addr": 5, "addr": [5, 8, 28], "record": [5, 6, 9, 21, 26, 27, 28, 29], "icachebypass": 5, "wb_master": 5, "wishbonemast": [5, 8, 9], "haselabor": [5, 13, 27, 29], "whole": [5, 16, 18, 28], "simplewbcacherefil": 5, "instrdecompress": 5, "decompr_reg": 5, "rvc_reg": 5, "instr_mux": 5, "sel": 5, "list": [5, 6, 8, 9, 12, 13, 15, 17, 21, 27, 28, 29], "int": [5, 6, 7, 8, 9, 11, 12, 27, 28, 29], "enum": [5, 6, 8, 27, 28, 29], "valuecast": [5, 8, 27, 28, 29], "tupl": [5, 6, 8, 10, 11, 12, 27, 28, 29], "is_instr_compress": 5, "alucompon": [6, 8], "functionalcomponentparam": [6, 8, 11], "zba_en": 6, "fals": [6, 8, 26, 27, 28, 29], "zbb_enabl": 6, "get_modul": [6, 8, 11, 12], "funcunit": [6, 8, 11, 13], "get_optyp": [6, 8, 11, 12], "alufuncunit": 6, "alu_fn": 6, "alufn": 6, "object": [6, 8, 9, 26, 27], "divcompon": 6, "ipc": 6, "3": [6, 8, 12, 15, 27, 29], "div_fn": 6, "divfn": 6, "decodermanag": 6, "fn": 6, "intflag": [6, 8, 27], "div": [6, 8], "divu": [6, 8], "2": [6, 7, 8, 9, 12, 27, 28, 29], "rem": [6, 8], "remu": [6, 8], "8": [6, 7, 8, 9, 27], "__new__": [6, 8, 12, 27], "get_instruct": 6, "valid": [6, 8, 9, 10, 23], "implement": [6, 8, 9, 16, 17, 18, 22], "format": [6, 15, 26, 27, 28, 29], "option": [6, 8, 12, 15, 26, 27, 28, 29], "divunit": 6, "get_input": 6, "arg": [6, 26, 27, 28, 29], "exceptionfuncunit": 6, "unit_fn": 6, "exceptionunitfn": 6, "exceptionunitcompon": [6, 8], "respons": [6, 9, 10, 27, 28], "decode_fn": 6, "exec_fn": [6, 8], "op": [6, 8], "check_optyp": 6, "bool": [6, 8, 12, 27, 28, 29], "manag": [6, 8, 15, 17, 27, 28], "enumer": 6, "given": [6, 8, 15, 23, 26, 27, 28, 29], "get_decod": 6, "auto": 6, "pass": [6, 11, 12, 15, 17, 27, 28, 29], "contructor": 6, "get_funct": 6, "get_op_typ": 6, "jumpbranchfuncunit": 6, "jb_fn": 6, "jumpbranchfn": 6, "jumpcompon": [6, 8], "mulcompon": 6, "mul_unit_typ": 6, "multyp": 6, "dsp_width": [6, 7], "mul_fn": 6, "mulfn": 6, "hot": [6, 18, 29], "wire": 6, "5": [6, 8, 22], "differ": [6, 8, 9, 11, 16, 18, 21, 27, 28], "mul": [6, 8], "mulh": [6, 8], "mulhsu": [6, 8], "mulhu": [6, 8], "intenum": [6, 8, 12], "recursive_mul": 6, "fastest": 6, "multipli": [6, 7], "onli": [6, 12, 18, 26, 27, 28, 29], "costli": [6, 18], "term": 6, "resourc": [6, 18, 25, 26], "sequence_mul": 6, "singl": [6, 7, 8, 10, 11, 26, 27, 28, 29], "dsp": [6, 7], "balanc": 6, "between": [6, 18, 26, 27, 28], "cost": [6, 17, 26], "shift_mul": 6, "cheapest": 6, "russian": [6, 7], "peasant": [6, 7], "algorithm": [6, 7], "mulunit": 6, "unsign": [6, 7], "integ": [6, 8, 29], "standard": [6, 12, 18, 29], "funcunitlayout": [6, 8, 10, 11], "comput": [6, 7, 12, 18, 28], "mul_typ": 6, "shiftfuncunit": 6, "shift_unit_fn": 6, "shiftunitfn": 6, "shiftunitcompon": [6, 8], "clmultipli": 6, "carri": [6, 8, 25], "less": [6, 8], "product": [6, 28], "i1": [6, 7], "n": [6, 7, 8], "factor": 6, "i2": [6, 7], "reset": [6, 12, 17, 27], "new": [6, 8, 9, 17, 18, 27, 28, 29], "busi": 6, "while": [6, 27], "progress": 6, "bit_width": 6, "recursion_depth": 6, "width": [6, 7, 8, 9, 12, 28, 29], "depth": [6, 9, 28, 29], "recurs": [6, 7, 26, 29], "parallel": 6, "assum": [6, 11, 18, 28, 29], "power": [6, 29], "iterative_modul": 6, "recursive_modul": 6, "zbccompon": 6, "zbc_fn": 6, "zbcfn": 6, "clmul": [6, 8], "clmulh": [6, 8], "clmulr": [6, 8], "classmethod": [6, 27], "zbcunit": 6, "execut": [6, 8, 9, 10, 11, 17, 22, 24, 26, 27, 28], "zbsfunction": 6, "in1": 6, "in2": 6, "zbscompon": 6, "bclr": [6, 8], "bext": [6, 8], "binv": [6, 8], "bset": [6, 8], "zbsunit": 6, "zbs_fn": 6, "dspmulunit": 7, "clock": [7, 22, 25, 26, 27, 28], "design": [7, 18, 26, 27], "synthesi": [7, 17], "tool": [7, 15, 25], "o": [7, 18, 26, 27, 28], "same": [7, 8, 15, 26, 27, 28, 29], "number": [7, 8, 9, 11, 15, 18, 25, 27, 28, 29], "mulbaseunsign": 7, "unsignedmulunitlayout": [7, 8], "recursiveunsignedmul": 7, "see": [7, 21, 26], "fast": 7, "within": [7, 15], "sequentialunsignedmul": 7, "sequenti": [7, 9], "classic": [7, 18], "shiftunsignedmul": 7, "cheap": 7, "multi": 7, "coreconfigur": 8, "func_units_config": 8, "collect": [8, 11, 12, 16, 25, 27, 28, 29], "blockcomponentparam": [8, 11, 12], "reserv": [8, 12, 17, 18], "station": [8, 17], "exampl": [8, 12, 15, 17, 23, 25, 26, 27, 28, 29], "rsblockcompon": [8, 11], "rs_entri": [8, 11, 12], "lsublockcompon": 8, "compress": 8, "enabl": [8, 28], "embed": 8, "reduc": [8, 18, 27], "phys_regs_bit": 8, "physic": [8, 10, 18], "file": [8, 15, 18, 29], "rob_entries_bit": 8, "reorder": [8, 18, 28], "buffer": [8, 9, 18, 23, 28], "start_pc": 8, "initi": [8, 17], "program": [8, 18, 26], "icache_en": 8, "disabl": [8, 28], "bypass": 8, "directli": [8, 26, 27], "icache_wai": 8, "icache_sets_bit": 8, "log": [8, 18], "icache_block_size_bit": 8, "allow_partial_extens": 8, "allow": [8, 16, 18, 26, 27, 28, 29], "partial": 8, "_implied_extens": 8, "extenst": 8, "flag": 8, "specifi": [8, 9, 12, 24, 28], "intern": [8, 17, 26, 27, 29], "test": [8, 15, 21, 25, 27, 28, 29], "abc": [8, 27, 28, 29], "func_unit": [8, 11], "lsu": 8, "dummylsu": 8, "6": [8, 18], "7": 8, "true": [8, 9, 26, 27, 28, 29], "kwarg": [8, 9, 27, 29], "dependencykei": 8, "u": [8, 18], "dependencymanag": [8, 12], "concret": 8, "frozen": 8, "lock_on_get": 8, "default": [8, 9, 15, 26, 27, 28, 29], "ad": [8, 21, 25, 26, 27, 28, 29], "get_depend": 8, "empty_valid": 8, "without": [8, 10, 11, 18], "action": [8, 12, 27], "would": [8, 15, 18, 26], "caus": [8, 18, 28], "rais": [8, 18, 27, 29], "keyerror": [8, 27], "combin": [8, 11, 17, 21, 27, 28], "add_depend": 8, "them": [8, 18, 26, 27, 28, 29], "give": 8, "behavior": [8, 27], "track": 8, "across": 8, "add": [8, 26, 27, 28], "multpl": 8, "interpret": [8, 15, 28], "funcblock": [8, 10, 11, 12, 13], "get_rs_entry_count": [8, 11, 12], "optypes_support": 8, "iter": [8, 11, 12, 27, 28, 29], "dependentcach": 8, "cfg": 8, "addr_width": [8, 9], "length": [8, 18, 27, 29], "word_width": 8, "machin": [8, 12], "num_of_wai": 8, "num_of_sets_bit": 8, "block_size_bit": 8, "btypeinstr": 8, "riscvinstr": 8, "pack": 8, "ebreakinstr": 8, "itypeinstr": 8, "illegalinstr": 8, "jtypeinstr": 8, "rtypeinstr": 8, "stypeinstr": 8, "utypeinstr": 8, "exceptioncaus": 8, "breakpoint": 8, "environment_call_from_m": 8, "environment_call_from_": 8, "9": 8, "environment_call_from_u": 8, "illegal_instruct": 8, "instruction_access_fault": 8, "instruction_address_misalign": 8, "instruction_page_fault": 8, "load_access_fault": 8, "load_address_misalign": 8, "load_page_fault": 8, "store_access_fault": 8, "store_address_misalign": 8, "store_page_fault": 8, "avail": [8, 9, 10, 12, 15, 16, 25], "atom": [8, 23, 26], "b": 8, "512": 8, "manipul": 8, "256": 8, "d": [8, 26, 27], "doubl": [8, 12, 18], "precis": [8, 18], "float": 8, "point": [8, 18, 21], "64": [8, 9], "f": [8, 10, 15, 25], "98366": 8, "contain": [8, 15, 26, 27, 28, 29], "all": [8, 9, 12, 15, 17, 18, 21, 25, 26, 27, 28, 29], "basic": [8, 17], "full": [8, 15, 17, 18, 28, 29], "j": 8, "1024": 8, "dynam": [8, 18, 29], "languag": [8, 26], "l": [8, 15], "decim": 8, "m": [8, 12, 15, 18, 26, 27, 28, 29], "divis": 8, "16384": 8, "user": [8, 12, 18], "level": [8, 16, 18, 26], "interrupt": [8, 17], "p": [8, 15], "4096": 8, "simd": 8, "q": 8, "quad": 8, "2048": 8, "memori": [8, 9, 18, 28], "8192": 8, "vector": [8, 10, 17, 18], "xintmachinemod": 8, "8589934592": 8, "categor": 8, "privilieg": 8, "xintsupervisor": 8, "17179869184": 8, "supervisor": [8, 12], "zam": 8, "2097152": 8, "misalign": 8, "zba": 8, "268435456": 8, "extend": [8, 21, 27], "zbb": 8, "536870912": 8, "1073741824": 8, "2147483648": 8, "zdinx": 8, "33554432": 8, "zfh": 8, "4194304": 8, "half": 8, "zfhmin": 8, "8388608": 8, "minim": 8, "zfinx": 8, "16777216": 8, "zhinx": 8, "67108864": 8, "zicntr": 8, "524288": 8, "timer": [8, 12], "zicsr": 8, "32768": 8, "statu": [8, 12], "zifencei": 8, "65536": 8, "zihintntl": 8, "262144": 8, "non": [8, 23, 27, 28], "tempor": 8, "local": [8, 15], "hint": [8, 27], "zihintpaus": 8, "131072": 8, "paus": 8, "energi": 8, "zihpm": 8, "1048576": 8, "hardwar": [8, 17, 22, 26], "zmmul": 8, "134217728": 8, "ztso": 8, "4294967296": 8, "total": 8, "store": [8, 11, 18, 23, 24, 28, 29], "tso": 8, "dev_i": 8, "dev_o": 8, "mem_r": 8, "mem_w": 8, "clz": 8, "1536": 8, "cpop": 8, "1538": 8, "ctz": 8, "1537": 8, "ebreak": 8, "ecal": 8, "mret": 8, "770": 8, "orcb": 8, "647": 8, "rev8_32": 8, "1688": 8, "rev8_64": 8, "1720": 8, "sextb": 8, "1540": 8, "sexth": 8, "1541": 8, "sret": 8, "258": 8, "wfi": 8, "261": 8, "zexth": 8, "AND": 8, "andn": 8, "beq": 8, "bge": 8, "bgeu": 8, "blt": 8, "bltu": 8, "bne": 8, "csrrc": 8, "csrrci": 8, "csrr": 8, "csrrsi": 8, "csrrw": 8, "csrrwi": 8, "divuw": 8, "divw": 8, "fencei": 8, "h": [8, 18], "hu": 8, "jalr": 8, "max": [8, 25], "maxu": 8, "min": 8, "minu": 8, "mulw": 8, "OR": 8, "orn": 8, "priv": 8, "remuw": 8, "remw": 8, "rev8": 8, "rol": 8, "ror": 8, "sh1add": 8, "sh2add": 8, "sh3add": 8, "sll": 8, "slt": 8, "sltu": 8, "sr": 8, "sub": 8, "w": [8, 18], "xnor": 8, "xor": 8, "36": 8, "52": 8, "20": 8, "48": 8, "muldiv": 8, "sa": 8, "sfencevma": 8, "sl": 8, "gather": 8, "numer": 8, "val": [8, 29], "correspond": [8, 23, 27], "val_log": 8, "field": [8, 12, 23, 24, 26, 27, 28, 29], "relev": [8, 27], "nativ": 8, "reg_cnt": 8, "maximum": 8, "bitwis": 8, "isa_str": 8, "string": 8, "pleas": [8, 15, 21, 26], "refer": 8, "gcc": 8, "": [8, 9, 18, 26, 27, 28, 29], "arch": [8, 15], "detail": [8, 17], "instrtyp": 8, "auipc": 8, "branch": [8, 18, 25, 28], "24": 8, "jal": 8, "27": 8, "25": 8, "load": [8, 18], "load_fp": 8, "lui": 8, "misc_mem": 8, "op32": 8, "op_imm": 8, "op_imm_32": 8, "store_fp": 8, "system": [8, 26], "28": [8, 18], "a0": 8, "a1": 8, "a2": 8, "a3": 8, "a4": 8, "a5": 8, "a6": 8, "a7": 8, "17": 8, "fp": [8, 27], "gp": [8, 12], "ra": 8, "s0": 8, "s1": 8, "s10": 8, "26": 8, "s11": 8, "s2": 8, "18": 8, "s3": 8, "19": 8, "s4": 8, "s5": 8, "21": 8, "s6": 8, "22": 8, "s7": 8, "23": 8, "s8": 8, "s9": 8, "sp": 8, "t0": 8, "t1": [8, 26], "t2": [8, 26], "t3": 8, "t4": 8, "29": 8, "t5": 8, "30": [8, 18], "t6": 8, "tp": 8, "x1": 8, "x10": 8, "x11": 8, "x12": 8, "x13": 8, "x14": 8, "x15": 8, "x16": 8, "x17": 8, "x18": 8, "x19": 8, "x2": 8, "x20": 8, "x21": 8, "x22": 8, "x23": 8, "x24": 8, "x25": 8, "x26": 8, "x27": 8, "x28": 8, "x29": 8, "x3": 8, "x30": 8, "x31": 8, "x4": 8, "x5": 8, "x6": 8, "x7": 8, "x8": 8, "x9": 8, "zero": [8, 23, 28], "branchresolvedkei": 8, "unifierkei": [8, 11], "unifi": [8, 13], "alia": 8, "collector": [8, 28], "exceptionreportkei": 8, "simplekei": 8, "genericcsrregisterskei": 8, "genericcsrregist": [8, 12], "instructionprecommitkei": 8, "methodtryproduct": [8, 28], "wishbonedatakei": 8, "csrlayout": 8, "commonlayoutfield": 8, "commonli": 8, "layoutlistfield": 8, "piec": 8, "end": [8, 11, 18], "exec_fn_layout": 8, "layoutlist": 8, "op_typ": 8, "reg_id": 8, "id": [8, 10, 23, 24], "reg_val": 8, "some": [8, 12, 18, 21, 25, 26, 27, 28], "regs_l": 8, "logic": [8, 18, 24, 25, 26], "manual": [8, 25, 26], "thei": [8, 9, 12, 15, 18, 22, 26, 27, 28], "regs_p": 8, "rl_dst": 8, "destin": 8, "operand": [8, 18, 23, 24], "rl_s1": 8, "rl_s2": 8, "rob_id": 8, "entri": [8, 10, 11, 18, 22, 23, 24, 28, 29], "rp_dst": 8, "rp_s1": 8, "rp_s2": 8, "s1_val": 8, "s2_val": 8, "side_fx": 8, "side": [8, 9, 12, 18, 23, 24], "effect": [8, 12, 18, 23, 24, 27], "fetcher": 8, "access_fault": 8, "fail": [8, 18], "produc": 8, "lsulayout": 8, "ratlayout": [8, 10], "tabl": [8, 17], "old_rp_dst": 8, "previous": [8, 9], "rrat": [8, 12], "rflayout": [8, 10], "assign": [8, 12, 21, 26, 27, 29], "roblayout": [8, 10], "done": [8, 18, 26, 27, 28], "yet": [8, 27], "latest": [8, 28], "rob_data": 8, "earliest": 8, "rsinterfacelayout": 8, "rs_entries_bit": 8, "data_layout": [8, 10, 28], "shapelik": [8, 27, 28, 29], "rslayout": [8, 10], "ready_list": 8, "bitmask": 8, "run": [8, 15, 25, 26, 27, 28], "schedulerlayout": 8, "regs_l_rob_in": 8, "befor": [8, 9, 15, 21, 22, 26, 28], "alloc": [8, 10, 22, 23, 24], "regs_p_alloc_out": 8, "rs_entry_id": 8, "rs_select": 8, "confus": 8, "address_gener": 8, "arithmet": 8, "bit_manipul": 8, "compar": [8, 17], "csr_imm": [8, 12], "csr_reg": [8, 12], "div_rem": 8, "33": 8, "single_bit_manipul": 8, "unary_bit_manipulation_1": 8, "unary_bit_manipulation_2": 8, "unary_bit_manipulation_3": 8, "unary_bit_manipulation_4": 8, "unary_bit_manipulation_5": 8, "unknown": [8, 15], "optypes_required_by_extens": 8, "resolve_impl": 8, "ignore_unsupport": 8, "pipelinedwishbonemast": 9, "master": [9, 25], "wb_param": 9, "wishboneparamet": 9, "max_req": 9, "limit": [9, 26, 28], "pend": 9, "wb": 9, "wishbonelayout": 9, "sent": [9, 11], "requestlayout": 9, "argument": [9, 10, 15, 17, 24, 27, 28, 29], "complet": [9, 11, 18], "state": [9, 17, 18, 26, 27, 28], "resultlayout": 9, "requests_finish": 9, "generate_method_layout": 9, "wishbonearbit": 9, "arbit": 9, "slave": 9, "assert": 9, "cyc": 9, "grant": [9, 26, 27, 28], "round": [9, 27, 29], "robin": [9, 27], "slave_wb": 9, "intefac": 9, "boolean": [9, 28], "whether": [9, 27, 29], "otherwis": 9, "wb_layout": 9, "wbmaster": 9, "being": [9, 15, 28, 29], "becom": 9, "generate_layout": 9, "wishbonememoryslav": 9, "underneath": 9, "keyword": [9, 26, 27], "underli": 9, "re": [9, 18, 21, 26, 27], "infer": [9, 27], "data_width": 9, "wishbonemux": 9, "muxer": 9, "master_wb": 9, "ssel_tga": 9, "corespond": 9, "tga": 9, "so": [9, 11, 18, 26, 27, 28], "stb": 9, "note": [9, 12, 28, 29], "stare": 9, "finish": [9, 11], "stall": [9, 12, 18], "clear": [9, 23, 24, 28, 29], "delai": [9, 26], "deassert": 9, "dat_r": 9, "dat_w": 9, "adr": 9, "singal": 9, "granular": [9, 28], "smallest": 9, "port": [9, 28], "capabl": 9, "prepar": [10, 15, 18, 27], "insert": [10, 11, 12, 13, 17, 18, 22, 23], "In": [10, 15, 16, 17, 24, 25, 26, 27, 29], "renam": [10, 22], "stuck": 10, "get_instr": 10, "get_free_reg": 10, "rat_renam": 10, "rob_put": 10, "rf_read1": 10, "rf_read2": 10, "reservation_st": 10, "decoded_instr": 10, "current": [10, 12, 18, 27], "free": [10, 17, 18, 24], "rat_rename_in": 10, "rat_rename_out": 10, "rf_read_out": 10, "rf_read_in": 10, "wakeupselect": 10, "wakeup": [10, 24], "firstli": 10, "get_readi": 10, "binari": 10, "where": [10, 18, 23, 24, 26, 27, 28], "th": [10, 28], "posit": [10, 23, 24], "row": [10, 17], "taken": 10, "take_row": 10, "get_ready_list_out": 10, "take_out": 10, "push": 10, "down": [10, 29], "resultannounc": 11, "mark": [11, 17, 18, 27], "also": [11, 15, 26, 28], "get_result": [11, 12, 13, 28], "serial": [11, 28], "more": [11, 15, 17, 18, 25], "than": [11, 18], "manytooneconnecttran": [11, 28], "rob_mark_don": 11, "rs_updat": 11, "rf_write": 11, "funcblocksunifi": 11, "extra_methods_requir": 11, "get_extra_method": 11, "item": [11, 29], "rob_peek": 11, "rob_retir": 11, "r_rat_commit": 11, "free_rf_put": 11, "rf_free": 11, "precommit": [11, 15], "exception_cause_get": 11, "frat_renam": 11, "rsfuncblock": 11, "With": 11, "csrblockcompon": 12, "csrlistkei": 12, "listkei": 12, "csrregist": 12, "behaviour": 12, "automat": [12, 15, 29], "csrunit": 12, "bodi": [12, 26, 27, 28], "csr_val": 12, "els": [12, 18, 26, 27], "_fu_read": 12, "_fu_writ": 12, "other": [12, 17, 26, 27, 28], "ignor": 12, "prioriti": [12, 26, 27, 28, 29], "csr_number": 12, "ro_bit": 12, "mask": [12, 28], "those": [12, 18, 27], "upper": 12, "0b11": 12, "discard": 12, "regitst": 12, "unitl": 12, "place": [12, 18, 23, 26, 27, 28], "put": [12, 23, 28], "receiv": [12, 26, 27, 28], "fetch_continu": 12, "resum": 12, "privilegelevel": 12, "csr_access_privileg": 12, "csr_addr": 12, "csraddress": 12, "3072": 12, "cycleh": 12, "3200": 12, "instret": 12, "3074": 12, "instreth": 12, "3202": 12, "mcaus": 12, "834": 12, "3073": 12, "timeh": 12, "3201": 12, "doublecountercsr": 12, "group": 12, "At": 12, "overflow": [12, 28], "low_addr": 12, "high_addr": 12, "repres": [12, 27], "lower": [12, 29], "part": [12, 18, 22, 26, 27, 28], "higher": 12, "synthetis": 12, "exceptioncauseregist": 12, "rob_get_indic": 12, "should_update_priorii": 12, "tmodul": [12, 26, 27, 28], "current_caus": 12, "new_caus": 12, "frat": 12, "registerfil": 12, "reorderbuff": 12, "ready_for": 12, "target": [13, 28], "transactron": [13, 17, 26], "below": 15, "instal": [15, 25], "python": [15, 26, 27, 29], "pip": 15, "virtual": 15, "python3": 15, "venv": 15, "project": [15, 16, 18, 25], "directori": [15, 16], "activ": [15, 28], "bin": 15, "librari": [15, 17, 28], "pip3": 15, "dev": 15, "txt": 15, "riscv64": 15, "elf": 15, "binutil": 15, "your": [15, 21], "favourit": 15, "On": [15, 28], "debian": 15, "distro": 15, "hook": [15, 27], "pre": 15, "linter": 15, "ci": [15, 25], "intend": [15, 27], "By": [15, 27, 28], "test_transact": 15, "One": [15, 18, 26, 28, 29], "even": [15, 18, 26, 27, 28], "testschedul": 15, "Or": [15, 26], "test_singl": 15, "search": 15, "name": [15, 25, 26, 27, 28, 29], "match": [15, 23, 24, 29], "queri": 15, "thank": 15, "uniqu": 15, "just": [15, 26], "help": [15, 18, 25], "find": [15, 18], "parameter": 15, "waveform": 15, "vcd": 15, "gtkw": [15, 29], "gtkwave": [15, 29], "__traces__": 15, "debug": [15, 29], "driven": 15, "verbos": [15, 25], "runner": 15, "print": 15, "check": [15, 18, 21, 23, 24, 27, 29], "code": [15, 16, 18, 21, 26, 27, 28, 29], "subcommand": 15, "filenam": 15, "main": [15, 18, 22], "reformat": 15, "black": 15, "check_format": 15, "verifi": 15, "flake8": 15, "check_typ": 15, "pyright": 15, "confront": 15, "messag": 15, "you": [15, 21, 23, 25], "mai": [15, 25], "diff": 15, "displai": 15, "chang": [15, 23, 26, 28], "appli": [15, 18, 21, 27], "chose": 15, "locat": [15, 16, 22], "visual": 15, "architectur": [15, 18], "appropri": [15, 23, 28], "prune": [15, 27], "remov": [15, 18], "disconnect": 15, "node": 15, "elk": [15, 27], "eclips": 15, "kernel": [15, 18], "dot": [15, 27], "graphviz": 15, "mermaid": [15, 27], "document": [15, 17], "sphinx": 15, "html": [15, 16], "build": [15, 25], "coreblock": [16, 21, 25], "go": [16, 18, 21, 27], "processor": [16, 17, 22], "microarchitectur": 16, "focu": 16, "flexibl": [16, 22], "easili": [16, 28], "experi": 16, "doc": 16, "descript": [16, 17], "overview": [16, 17, 18], "high": 16, "found": 16, "version": 16, "page": [16, 18], "api": [16, 17], "kuznia": 16, "rdzeni": 16, "github": 16, "io": 16, "introduct": 17, "assumpt": [17, 18], "made": [17, 18, 26], "develop": 17, "environ": 17, "up": [17, 24, 29], "script": [17, 25], "run_test": 17, "py": [17, 25], "lint": 17, "sh": 17, "core_graph": 17, "build_doc": 17, "framework": [17, 23], "usag": [17, 28], "convent": 17, "definit": [17, 27], "advanc": 17, "concept": 17, "special": 17, "domain": [17, 21, 27], "conflict": [17, 27], "nest": [17, 28], "schema": 17, "structur": [17, 18, 23, 26, 29], "proposit": [17, 18], "slot": 17, "substitut": 17, "clean": 17, "extern": [17, 26, 27], "problem": [17, 18], "checklist": 17, "benchmark": 17, "map": [17, 18, 27, 28, 29], "summari": 17, "paper": 17, "about": 17, "old": 17, "softwar": 17, "tlb": 17, "analysi": 17, "strategi": 17, "igpu": 17, "specul": 17, "gpu": 17, "effici": 17, "journal": 18, "articl": 18, "look": 18, "choic": 18, "primari": 18, "relat": [18, 27], "determin": [18, 29], "procedur": 18, "chosen": 18, "basi": 18, "improv": [18, 26], "pretti": 18, "1993": 18, "2001": 18, "much": 18, "research": 18, "cpu": 18, "consid": [18, 26, 28], "solv": 18, "instead": [18, 21, 26, 27], "try": [18, 21, 26], "due": [18, 27], "characterist": 18, "easi": [18, 21, 26], "our": [18, 22], "decid": [18, 22, 26], "what": 18, "peopl": 18, "probabl": 18, "lot": 18, "worth": 18, "walker": 18, "cragon": 18, "concurr": [18, 27], "ieee": 18, "vol": 18, "june": 18, "1995": 18, "moudgil": 18, "vassiliadi": 18, "micro": 18, "pp": 18, "58": 18, "67": 18, "februari": 18, "1996": 18, "These": [18, 25, 26], "present": [18, 26, 28, 29], "survei": 18, "topic": 18, "cdc": 18, "6600": 18, "jump": 18, "handler": 18, "ibm360": 18, "stop": [18, 28], "crai": 18, "similar": [18, 26, 28, 29], "here": [18, 23], "bigger": 18, "torng": 18, "martin": 18, "dai": 18, "probe": 18, "veri": [18, 26], "idea": [18, 26], "author": 18, "window": 18, "iw": 18, "dispatch": [18, 22, 23, 24], "didn": 18, "context": [18, 27, 28], "copi": [18, 27], "restor": 18, "restart": 18, "few": 18, "encod": 18, "big": 18, "overhead": 18, "origin": [18, 27, 28], "unfeas": 18, "becaus": [18, 26, 27, 28], "job": 18, "addition": 18, "But": 18, "mayb": [18, 26], "possibl": [18, 26, 28, 29], "cooper": 18, "smaller": 18, "interest": 18, "propos": 18, "nrp": 18, "No": [18, 28], "itself": 18, "don": [18, 21, 23, 26, 27], "wast": 18, "rememb": [18, 26, 27], "how": [18, 23, 25], "mani": [18, 25, 26, 28], "element": [18, 28], "left": [18, 26, 27], "middl": [18, 22], "aamer": 18, "jaleel": 18, "bruce": 18, "jacob": 18, "cours": 18, "switch": [18, 23, 26, 27, 28, 29], "penalti": 18, "alpha": 18, "mip": 18, "concentr": 18, "properti": [18, 27], "short": 18, "inlin": 18, "observ": 18, "import": [18, 26], "enough": 18, "live": 18, "lock": [18, 26, 28], "known": 18, "fly": 18, "swap": 18, "nop": 18, "reexecut": 18, "indic": [18, 24, 27], "privileg": 18, "correct": [18, 23, 24], "contrast": 18, "tendenc": 18, "longer": 18, "hard": 18, "risk": [18, 26], "linux": [18, 25], "purpos": [18, 27], "addit": [18, 26], "hw": 18, "bore": 18, "treat": [18, 22], "mansur": 18, "samadzadeh": 18, "loai": 18, "garalnabi": 18, "checkpoint": 18, "repair": 18, "histori": 18, "futur": [18, 22, 23], "jaikrishnan": 18, "menon": 18, "marc": 18, "de": 18, "kruijf": 18, "karthikeyan": 18, "sankaralingam": 18, "2012": 18, "To": [18, 25], "low": 18, "boundari": 18, "safe": [18, 26, 29], "rewritten": 18, "recompil": 18, "runtim": 18, "region": 18, "subregion": 18, "begin": 18, "small": 18, "overrid": 18, "barrier": 18, "warp": 18, "wrong": 18, "split": [18, 22, 28], "prevent": 18, "ivan": 18, "tanas": 18, "isaac": 18, "gelado": 18, "jorda": 18, "eduard": 18, "ayguad": 18, "nacho": 18, "navarro": 18, "2017": 18, "analys": 18, "problemat": 18, "successfulli": 18, "kill": 18, "modif": 18, "usual": [18, 26], "repli": 18, "modifi": [18, 28], "claim": 18, "doesn": [18, 21, 26, 29], "replai": 18, "queue": [18, 26, 28, 29], "marker": 18, "jerom": 18, "hampton": 18, "2008": 18, "mention": 18, "alli": 18, "bailei": 18, "ab04": 18, "ag": 18, "younger": 18, "repeat": 18, "commun": [18, 23, 26], "canon": 18, "eventu": 18, "aren": [18, 26, 28], "someth": [21, 26], "puzzl": 21, "why": 21, "through": 21, "sure": 21, "yield": 21, "testbenchio": 21, "notabl": 21, "settl": 21, "unexpect": 21, "right": [21, 26, 27], "eq": [21, 26, 27], "statement": [21, 26, 27, 29], "loop": [21, 26], "especi": 21, "simul": [21, 28], "hang": 21, "spot": 21, "yourself": [21, 25, 26], "fix": 21, "mistak": 21, "Its": [22, 26], "task": [22, 27], "rss": 22, "phase": 22, "choos": 22, "potenti": 22, "merg": 22, "optim": 22, "todo": 22, "want": [23, 27], "feel": 23, "anyth": 23, "id_out": [23, 24], "id_rob": [23, 24], "id_rs1": [23, 24], "val_rs1": [23, 24], "id_rs2": [23, 24], "val_rs2": [23, 24], "fill": 23, "id_rsx": 23, "val_rsx": 23, "both": [23, 26, 27, 28, 29], "releas": 23, "comparison": 23, "null": [23, 24], "woken": 24, "invalid": 24, "src1": [24, 28], "src2": [24, 28], "inst_readi": 24, "synthes": 25, "circuit": [25, 26, 27], "consum": 25, "grow": 25, "yosi": 25, "prjtrelli": 25, "nextpnr": 25, "ecp5": 25, "compil": [25, 26], "git": 25, "repositori": 25, "docker": 25, "imag": 25, "vuush": 25, "synth": 25, "amaranthsynthecp5": 25, "dockerfil": 25, "command": 25, "platform": [25, 26, 27], "amd64": 25, "parse_benchmark_info": 25, "pars": 25, "extract": [25, 27], "frequenc": 25, "cell": 25, "ram": 25, "dff": 25, "dedic": 25, "subpag": 25, "modular": 26, "inspir": 26, "bluespec": 26, "wiki": 26, "entrieti": 26, "doe": 26, "link": 26, "indirectli": [26, 27], "coordin": 26, "avoid": 26, "caller": [26, 27, 28], "direct": [26, 27, 28, 29], "back": 26, "simplest": 26, "myth": 26, "def": [26, 27], "elabor": 26, "self": 26, "condit": [26, 27, 28], "includ": [26, 27, 28, 29], "comb": [26, 27], "sig1": 26, "expr1": 26, "sync": [26, 27], "sig2": 26, "expr2": 26, "arg_expr": 26, "analog": 26, "multiplex": 26, "onc": [26, 27, 28], "typic": [26, 27, 28], "declar": 26, "myotherth": 26, "my_method": 26, "input_layout": 26, "output_layout": 26, "def_method": [26, 27], "_": [26, 27], "other_method": 26, "ret_expr": 26, "techniqu": 26, "abov": 26, "conveni": [26, 27], "syntax": [26, 27], "particular": 26, "unnam": 26, "could": 26, "around": 26, "sometim": 26, "might": [26, 27], "altern": [26, 27, 28], "best": 26, "question": 26, "ask": 26, "thing": [26, 29], "doubt": 26, "prefer": 26, "noth": 26, "Such": 26, "adaptertran": [26, 28], "though": 26, "cleaner": 26, "suppos": 26, "foo": 26, "bar": 26, "cleanest": 26, "recommend": 26, "foo_expr": 26, "bar_expr": 26, "final": 26, "rec": 26, "layout2": 26, "foobar": 26, "baz": 26, "42": 26, "method2": [26, 28], "baz_expr": 26, "method3": 26, "express": 26, "expr": 26, "mechan": [26, 28], "certain": 26, "occas": 26, "facilit": 26, "ones": 26, "connecttran": [26, 28], "togeth": [26, 27], "plain": [26, 27, 28], "testbench": [26, 28], "own": [26, 27], "variant": 26, "role": 26, "omit": [26, 27, 28], "unneed": 26, "av_comb": [26, 27], "top_comb": [26, 27], "avoidedif": [26, 27], "guard": [26, 27, 28], "therefor": 26, "induc": 26, "often": 26, "belong": 26, "move": [26, 28], "top": 26, "caveat": [26, 28], "normal": 26, "cannot": [26, 27, 28], "exist": 26, "schedule_befor": 26, "first_t_or_m": 26, "other_t_or_m": 26, "lift": 26, "first_m": 26, "other_t": 26, "situat": [26, 27], "mutual": [26, 28], "exclus": [26, 27, 28], "similarli": 26, "add_conflict": [26, 27], "undefin": [26, 27], "other_m": 26, "come": 26, "increas": [26, 28], "featur": 26, "consider": 26, "parent": 26, "convers": 26, "impli": 26, "transactionbas": 27, "serv": 27, "simultena": 27, "transactionmanag": 27, "rest": 27, "must": 27, "combination": 27, "data_out": [27, 28], "data_in": [27, 28], "_rec": [27, 28, 29], "layoutlik": [27, 28, 29], "nonexclus": 27, "single_cal": 27, "variabl": [27, 29], "happen": 27, "thrown": 27, "const": 27, "d1": 27, "d0": 27, "validate_argu": 27, "callabl": [27, 28], "combinationi": 27, "valuelik": 27, "my_sum_method": 27, "arg1": 27, "arg2": 27, "sum": 27, "view": [27, 28, 29], "signalbundl": [27, 28, 29], "static": 27, "construct": [27, 28], "blueprint": 27, "freshli": 27, "proxi": 27, "priorit": 27, "modulelik": [27, 28, 29], "amount": 27, "useless": 27, "multplex": 27, "unguard": 27, "path": [27, 28], "synchron": [27, 28], "cond": 27, "pattern": 27, "elif": 27, "fsm": 27, "noreturn": 27, "regularli": 27, "met": 27, "explicit": 27, "implicit": 27, "aris": 27, "pair": [27, 28], "transactioncontext": 27, "stack": 27, "care": 27, "never": 27, "cc_schedul": 27, "methodmap": [27, 28], "dsl": 27, "eager_deterministic_cc_schedul": 27, "add_transact": 27, "visual_graph": 27, "fragment": 27, "transactionmodul": 27, "wrapper": 27, "wrap": 27, "transaction_context": 27, "decor": 27, "eleg": 27, "dictionari": 27, "whose": 27, "method_map": 27, "gr": 27, "cc": 27, "porder": 27, "eager": 27, "subsystem": 27, "isn": 27, "fair": 27, "lowest": 27, "highest": 27, "arbitr": 27, "agent": 27, "transactiongraph": 27, "vertic": 27, "edg": [27, 28], "priorityord": 27, "linear": 27, "consist": 27, "constraint": 27, "trivial_roundrobin_cc_schedul": 27, "mainli": 27, "IN": 27, "inout": 27, "owner": 27, "ownershipgraph": 27, "root": 27, "dump": 27, "liter": [27, 29], "dump_dot": 27, "indent": 27, "dump_elk": 27, "dump_mermaid": 27, "get_hier_nam": 27, "obj": 27, "hierarch": 27, "get_nam": 27, "insert_edg": 27, "fr": 27, "insert_nod": 27, "mermaid_direct": 27, "empti": [27, 28, 29], "subgraph": 27, "remember_field": 27, "owner_id": 27, "tracingenabl": 27, "tracingfrag": 27, "lose": 27, "too": 27, "difficult": 27, "exact": 27, "copyright": 27, "subfrag": 27, "ir": 27, "tracingfragmenttransform": 27, "fragmenttransform": 27, "on_frag": 27, "tracinginst": 27, "adapterbas": 28, "mock": 28, "en": 28, "ifac": 28, "clickin": 28, "click": 28, "interact": 28, "fpga": 28, "rise": 28, "btn": 28, "dat": 28, "retriev": 28, "clickout": 28, "led": 28, "flow": 28, "revers": 28, "possibli": 28, "rev_layout": 28, "vice": 28, "versa": 28, "compat": 28, "method1": 28, "respect": 28, "fulfil": 28, "fifo_typ": 28, "syncfifo": 28, "fifotyp": 28, "conform": 28, "further": 28, "equival": 28, "put_result": 28, "argumentstoresultszipp": 28, "zip": 28, "cut": 28, "critic": 28, "calle": 28, "asymmetri": 28, "correctli": 28, "rate": 28, "reach": 28, "capac": 28, "topologi": 28, "write_arg": 28, "args_layout": 28, "write_result": 28, "results_layout": 28, "client": 28, "somethig": 28, "server": 28, "deseri": 28, "proper": 28, "serialize_in": 28, "serialized_req_method": 28, "serialize_out": 28, "serialized_resp_method": 28, "port_count": 28, "len": 28, "resist": 28, "nonblock": 28, "overlap": 28, "catch": 28, "reason": 28, "influenc": 28, "cond1": 28, "cond2": 28, "memorybank": 28, "read_req": 28, "read_resp": 28, "elem_count": 28, "safe_writ": 28, "optimis": 28, "throughput": 28, "eg": 28, "x": 28, "later": 28, "cattran": 28, "concaten": 28, "third": 28, "dst": 28, "ident": 28, "method_list": 28, "connectandmaptran": 28, "behav": 28, "i_fun": 28, "recorddict": 28, "o_fun": 28, "methodfilt": 28, "filter": 28, "union": 28, "bidirect": 28, "i_transform": 28, "o_transform": 28, "unmodifi": 28, "methodproduct": 28, "arbitrari": 28, "tri": 28, "succeed": 28, "auto_debug_sign": 29, "arrai": 29, "basicfifo": 29, "reiniti": 29, "init": 29, "paramt": 29, "semaphor": 29, "max_count": 29, "assigntyp": 29, "rh": 29, "moduleconnector": 29, "anonym": 29, "onehotswitch": 29, "style": 29, "benefit": 29, "represent": 29, "sig": 29, "onehotcas": 29, "0b01": 29, "0b10": 29, "onehotswitchdynam": 29, "signifi": 29, "align_down_to_power_of_two": 29, "num": 29, "align_to_power_of_two": 29, "lh": 29, "assignarg": 29, "assignfield": 29, "lhs_strict": 29, "rhs_strict": 29, "structlayout": 29, "mismatch": 29, "accord": 29, "explicitli": 29, "shape": 29, "castabl": 29, "subrecord": 29, "valueerror": 29, "bits_from_int": 29, "count_leading_zero": 29, "count_trailing_zero": 29, "flatten_sign": 29, "flatten": 29, "make_hash": 29, "mod_incr": 29, "mod": 29, "popcount": 29, "silence_mustus": 29}, "objects": {"": [[4, 0, 0, "-", "coreblocks"], [27, 0, 0, "-", "transactron"]], "coreblocks": [[4, 0, 0, "-", "core"], [5, 0, 0, "-", "frontend"], [6, 0, 0, "-", "fu"], [8, 0, 0, "-", "params"], [9, 0, 0, "-", "peripherals"], [10, 0, 0, "-", "scheduler"], [11, 0, 0, "-", "stages"], [12, 0, 0, "-", "structs_common"], [13, 0, 0, "-", "utils"]], "coreblocks.core": [[4, 1, 1, "", "Core"]], "coreblocks.core.Core": [[4, 2, 1, "", "__init__"]], "coreblocks.frontend": [[5, 0, 0, "-", "decode"], [5, 0, 0, "-", "decoder"], [5, 0, 0, "-", "fetch"], [5, 0, 0, "-", "icache"], [5, 0, 0, "-", "rvc"]], "coreblocks.frontend.decode": [[5, 1, 1, "", "Decode"]], "coreblocks.frontend.decode.Decode": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.decoder": [[5, 1, 1, "", "InstrDecoder"]], "coreblocks.frontend.decoder.InstrDecoder": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.fetch": [[5, 1, 1, "", "Fetch"], [5, 1, 1, "", "UnalignedFetch"]], "coreblocks.frontend.fetch.Fetch": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.fetch.UnalignedFetch": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.icache": [[5, 1, 1, "", "ICache"], [5, 1, 1, "", "ICacheBypass"], [5, 1, 1, "", "ICacheInterface"], [5, 1, 1, "", "SimpleWBCacheRefiller"]], "coreblocks.frontend.icache.ICache": [[5, 2, 1, "", "__init__"], [5, 2, 1, "", "deserialize_addr"], [5, 2, 1, "", "serialize_addr"]], "coreblocks.frontend.icache.ICacheBypass": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.icache.ICacheInterface": [[5, 3, 1, "", "accept_res"], [5, 3, 1, "", "flush"], [5, 3, 1, "", "issue_req"]], "coreblocks.frontend.icache.SimpleWBCacheRefiller": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.rvc": [[5, 1, 1, "", "InstrDecompress"], [5, 4, 1, "", "is_instr_compressed"]], "coreblocks.frontend.rvc.InstrDecompress": [[5, 2, 1, "", "__init__"], [5, 2, 1, "", "decompr_reg"], [5, 2, 1, "", "instr_mux"]], "coreblocks.fu": [[6, 0, 0, "-", "alu"], [6, 0, 0, "-", "div_unit"], [6, 0, 0, "-", "exception"], [6, 0, 0, "-", "fu_decoder"], [6, 0, 0, "-", "jumpbranch"], [6, 0, 0, "-", "mul_unit"], [6, 0, 0, "-", "shift_unit"], [7, 0, 0, "-", "unsigned_multiplication"], [6, 0, 0, "-", "zbc"], [6, 0, 0, "-", "zbs"]], "coreblocks.fu.alu": [[6, 1, 1, "", "ALUComponent"], [6, 1, 1, "", "AluFuncUnit"]], "coreblocks.fu.alu.ALUComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.alu.AluFuncUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.div_unit": [[6, 1, 1, "", "DivComponent"], [6, 1, 1, "", "DivFn"], [6, 1, 1, "", "DivUnit"], [6, 4, 1, "", "get_input"]], "coreblocks.fu.div_unit.DivComponent": [[6, 2, 1, "", "__init__"], [6, 3, 1, "", "div_fn"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"], [6, 3, 1, "", "ipc"]], "coreblocks.fu.div_unit.DivFn": [[6, 1, 1, "", "Fn"], [6, 2, 1, "", "get_instructions"]], "coreblocks.fu.div_unit.DivFn.Fn": [[6, 3, 1, "", "DIV"], [6, 3, 1, "", "DIVU"], [6, 3, 1, "", "REM"], [6, 3, 1, "", "REMU"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.div_unit.DivUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.exception": [[6, 1, 1, "", "ExceptionFuncUnit"], [6, 1, 1, "", "ExceptionUnitComponent"]], "coreblocks.fu.exception.ExceptionFuncUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.exception.ExceptionUnitComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.fu_decoder": [[6, 1, 1, "", "Decoder"], [6, 1, 1, "", "DecoderManager"]], "coreblocks.fu.fu_decoder.Decoder": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.fu_decoder.DecoderManager": [[6, 3, 1, "", "Fn"], [6, 2, 1, "", "get_decoder"], [6, 2, 1, "", "get_function"], [6, 2, 1, "", "get_instructions"], [6, 2, 1, "", "get_op_types"]], "coreblocks.fu.jumpbranch": [[6, 1, 1, "", "JumpBranchFuncUnit"], [6, 1, 1, "", "JumpComponent"]], "coreblocks.fu.jumpbranch.JumpBranchFuncUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.jumpbranch.JumpComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.mul_unit": [[6, 1, 1, "", "MulComponent"], [6, 1, 1, "", "MulFn"], [6, 1, 1, "", "MulType"], [6, 1, 1, "", "MulUnit"]], "coreblocks.fu.mul_unit.MulComponent": [[6, 2, 1, "", "__init__"], [6, 3, 1, "", "dsp_width"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"], [6, 3, 1, "", "mul_fn"], [6, 3, 1, "", "mul_unit_type"]], "coreblocks.fu.mul_unit.MulFn": [[6, 1, 1, "", "Fn"], [6, 2, 1, "", "get_instructions"]], "coreblocks.fu.mul_unit.MulFn.Fn": [[6, 3, 1, "", "MUL"], [6, 3, 1, "", "MULH"], [6, 3, 1, "", "MULHSU"], [6, 3, 1, "", "MULHU"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.mul_unit.MulType": [[6, 3, 1, "", "RECURSIVE_MUL"], [6, 3, 1, "", "SEQUENCE_MUL"], [6, 3, 1, "", "SHIFT_MUL"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.mul_unit.MulUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.shift_unit": [[6, 1, 1, "", "ShiftFuncUnit"], [6, 1, 1, "", "ShiftUnitComponent"]], "coreblocks.fu.shift_unit.ShiftFuncUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.shift_unit.ShiftUnitComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.unsigned_multiplication": [[7, 0, 0, "-", "common"], [7, 0, 0, "-", "fast_recursive"], [7, 0, 0, "-", "sequence"], [7, 0, 0, "-", "shift"]], "coreblocks.fu.unsigned_multiplication.common": [[7, 1, 1, "", "DSPMulUnit"], [7, 1, 1, "", "MulBaseUnsigned"]], "coreblocks.fu.unsigned_multiplication.common.DSPMulUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.common.MulBaseUnsigned": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.fast_recursive": [[7, 1, 1, "", "RecursiveUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.fast_recursive.RecursiveUnsignedMul": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.sequence": [[7, 1, 1, "", "SequentialUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.sequence.SequentialUnsignedMul": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.shift": [[7, 1, 1, "", "ShiftUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.shift.ShiftUnsignedMul": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.zbc": [[6, 1, 1, "", "ClMultiplier"], [6, 1, 1, "", "ZbcComponent"], [6, 1, 1, "", "ZbcFn"], [6, 1, 1, "", "ZbcUnit"]], "coreblocks.fu.zbc.ClMultiplier": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "iterative_module"], [6, 2, 1, "", "recursive_module"]], "coreblocks.fu.zbc.ZbcComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"], [6, 3, 1, "", "recursion_depth"], [6, 3, 1, "", "zbc_fn"]], "coreblocks.fu.zbc.ZbcFn": [[6, 1, 1, "", "Fn"], [6, 2, 1, "", "get_instructions"]], "coreblocks.fu.zbc.ZbcFn.Fn": [[6, 3, 1, "", "CLMUL"], [6, 3, 1, "", "CLMULH"], [6, 3, 1, "", "CLMULR"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.zbc.ZbcUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.zbs": [[6, 1, 1, "", "Zbs"], [6, 1, 1, "", "ZbsComponent"], [6, 1, 1, "", "ZbsFunction"], [6, 1, 1, "", "ZbsUnit"]], "coreblocks.fu.zbs.Zbs": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.zbs.ZbsComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.zbs.ZbsFunction": [[6, 1, 1, "", "Fn"], [6, 2, 1, "", "get_instructions"]], "coreblocks.fu.zbs.ZbsFunction.Fn": [[6, 3, 1, "", "BCLR"], [6, 3, 1, "", "BEXT"], [6, 3, 1, "", "BINV"], [6, 3, 1, "", "BSET"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.zbs.ZbsUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.params": [[8, 0, 0, "-", "configurations"], [8, 0, 0, "-", "dependencies"], [8, 0, 0, "-", "fu_params"], [8, 0, 0, "-", "genparams"], [8, 0, 0, "-", "icache_params"], [8, 0, 0, "-", "instr"], [8, 0, 0, "-", "isa"], [8, 0, 0, "-", "keys"], [8, 0, 0, "-", "layouts"], [8, 0, 0, "-", "optypes"]], "coreblocks.params.configurations": [[8, 1, 1, "", "CoreConfiguration"]], "coreblocks.params.configurations.CoreConfiguration": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "allow_partial_extensions"], [8, 3, 1, "", "compressed"], [8, 3, 1, "", "embedded"], [8, 3, 1, "", "func_units_config"], [8, 3, 1, "", "icache_block_size_bits"], [8, 3, 1, "", "icache_enable"], [8, 3, 1, "", "icache_sets_bits"], [8, 3, 1, "", "icache_ways"], [8, 3, 1, "", "phys_regs_bits"], [8, 2, 1, "", "replace"], [8, 3, 1, "", "rob_entries_bits"], [8, 3, 1, "", "start_pc"], [8, 3, 1, "", "xlen"]], "coreblocks.params.dependencies": [[8, 1, 1, "", "DependencyKey"], [8, 1, 1, "", "DependencyManager"]], "coreblocks.params.dependencies.DependencyKey": [[8, 2, 1, "", "combine"], [8, 3, 1, "", "empty_valid"], [8, 3, 1, "", "lock_on_get"]], "coreblocks.params.dependencies.DependencyManager": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "add_dependency"], [8, 2, 1, "", "get_dependency"]], "coreblocks.params.fu_params": [[8, 1, 1, "", "BlockComponentParams"], [8, 1, 1, "", "FunctionalComponentParams"], [8, 4, 1, "", "optypes_supported"]], "coreblocks.params.fu_params.BlockComponentParams": [[8, 2, 1, "", "get_module"], [8, 2, 1, "", "get_optypes"], [8, 2, 1, "", "get_rs_entry_count"]], "coreblocks.params.fu_params.FunctionalComponentParams": [[8, 2, 1, "", "get_module"], [8, 2, 1, "", "get_optypes"]], "coreblocks.params.genparams": [[8, 1, 1, "", "GenParams"]], "coreblocks.params.genparams.GenParams": [[8, 2, 1, "", "__init__"]], "coreblocks.params.icache_params": [[8, 1, 1, "", "ICacheParameters"]], "coreblocks.params.icache_params.ICacheParameters": [[8, 2, 1, "", "__init__"]], "coreblocks.params.instr": [[8, 1, 1, "", "BTypeInstr"], [8, 1, 1, "", "EBreakInstr"], [8, 1, 1, "", "ITypeInstr"], [8, 1, 1, "", "IllegalInstr"], [8, 1, 1, "", "JTypeInstr"], [8, 1, 1, "", "RTypeInstr"], [8, 1, 1, "", "STypeInstr"], [8, 1, 1, "", "UTypeInstr"]], "coreblocks.params.instr.BTypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.EBreakInstr": [[8, 2, 1, "", "__init__"]], "coreblocks.params.instr.ITypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.IllegalInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.JTypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.RTypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.STypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.UTypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.isa": [[8, 1, 1, "", "ExceptionCause"], [8, 1, 1, "", "Extension"], [8, 1, 1, "", "FenceFm"], [8, 1, 1, "", "FenceTarget"], [8, 1, 1, "", "Funct12"], [8, 1, 1, "", "Funct3"], [8, 1, 1, "", "Funct7"], [8, 1, 1, "", "ISA"], [8, 1, 1, "", "InstrType"], [8, 1, 1, "", "Opcode"], [8, 1, 1, "", "Registers"]], "coreblocks.params.isa.ExceptionCause": [[8, 3, 1, "", "BREAKPOINT"], [8, 3, 1, "", "ENVIRONMENT_CALL_FROM_M"], [8, 3, 1, "", "ENVIRONMENT_CALL_FROM_S"], [8, 3, 1, "", "ENVIRONMENT_CALL_FROM_U"], [8, 3, 1, "", "ILLEGAL_INSTRUCTION"], [8, 3, 1, "", "INSTRUCTION_ACCESS_FAULT"], [8, 3, 1, "", "INSTRUCTION_ADDRESS_MISALIGNED"], [8, 3, 1, "", "INSTRUCTION_PAGE_FAULT"], [8, 3, 1, "", "LOAD_ACCESS_FAULT"], [8, 3, 1, "", "LOAD_ADDRESS_MISALIGNED"], [8, 3, 1, "", "LOAD_PAGE_FAULT"], [8, 3, 1, "", "STORE_ACCESS_FAULT"], [8, 3, 1, "", "STORE_ADDRESS_MISALIGNED"], [8, 3, 1, "", "STORE_PAGE_FAULT"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Extension": [[8, 3, 1, "", "A"], [8, 3, 1, "", "B"], [8, 3, 1, "", "C"], [8, 3, 1, "", "D"], [8, 3, 1, "", "E"], [8, 3, 1, "", "F"], [8, 3, 1, "", "G"], [8, 3, 1, "", "I"], [8, 3, 1, "", "J"], [8, 3, 1, "", "L"], [8, 3, 1, "", "M"], [8, 3, 1, "", "N"], [8, 3, 1, "", "P"], [8, 3, 1, "", "Q"], [8, 3, 1, "", "T"], [8, 3, 1, "", "V"], [8, 3, 1, "", "XINTMACHINEMODE"], [8, 3, 1, "", "XINTSUPERVISOR"], [8, 3, 1, "", "ZAM"], [8, 3, 1, "", "ZBA"], [8, 3, 1, "", "ZBB"], [8, 3, 1, "", "ZBC"], [8, 3, 1, "", "ZBS"], [8, 3, 1, "", "ZDINX"], [8, 3, 1, "", "ZFH"], [8, 3, 1, "", "ZFHMIN"], [8, 3, 1, "", "ZFINX"], [8, 3, 1, "", "ZHINX"], [8, 3, 1, "", "ZICNTR"], [8, 3, 1, "", "ZICSR"], [8, 3, 1, "", "ZIFENCEI"], [8, 3, 1, "", "ZIHINTNTL"], [8, 3, 1, "", "ZIHINTPAUSE"], [8, 3, 1, "", "ZIHPM"], [8, 3, 1, "", "ZMMUL"], [8, 3, 1, "", "ZTSO"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.FenceFm": [[8, 3, 1, "", "NONE"], [8, 3, 1, "", "TSO"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.FenceTarget": [[8, 3, 1, "", "DEV_I"], [8, 3, 1, "", "DEV_O"], [8, 3, 1, "", "MEM_R"], [8, 3, 1, "", "MEM_W"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct12": [[8, 3, 1, "", "CLZ"], [8, 3, 1, "", "CPOP"], [8, 3, 1, "", "CTZ"], [8, 3, 1, "", "EBREAK"], [8, 3, 1, "", "ECALL"], [8, 3, 1, "", "MRET"], [8, 3, 1, "", "ORCB"], [8, 3, 1, "", "REV8_32"], [8, 3, 1, "", "REV8_64"], [8, 3, 1, "", "SEXTB"], [8, 3, 1, "", "SEXTH"], [8, 3, 1, "", "SRET"], [8, 3, 1, "", "WFI"], [8, 3, 1, "", "ZEXTH"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct3": [[8, 3, 1, "", "ADD"], [8, 3, 1, "", "AND"], [8, 3, 1, "", "ANDN"], [8, 3, 1, "", "B"], [8, 3, 1, "", "BCLR"], [8, 3, 1, "", "BEQ"], [8, 3, 1, "", "BEXT"], [8, 3, 1, "", "BGE"], [8, 3, 1, "", "BGEU"], [8, 3, 1, "", "BINV"], [8, 3, 1, "", "BLT"], [8, 3, 1, "", "BLTU"], [8, 3, 1, "", "BNE"], [8, 3, 1, "", "BSET"], [8, 3, 1, "", "BU"], [8, 3, 1, "", "CLMUL"], [8, 3, 1, "", "CLMULH"], [8, 3, 1, "", "CLMULR"], [8, 3, 1, "", "CLZ"], [8, 3, 1, "", "CPOP"], [8, 3, 1, "", "CSRRC"], [8, 3, 1, "", "CSRRCI"], [8, 3, 1, "", "CSRRS"], [8, 3, 1, "", "CSRRSI"], [8, 3, 1, "", "CSRRW"], [8, 3, 1, "", "CSRRWI"], [8, 3, 1, "", "CTZ"], [8, 3, 1, "", "D"], [8, 3, 1, "", "DIV"], [8, 3, 1, "", "DIVU"], [8, 3, 1, "", "DIVUW"], [8, 3, 1, "", "DIVW"], [8, 3, 1, "", "FENCE"], [8, 3, 1, "", "FENCEI"], [8, 3, 1, "", "H"], [8, 3, 1, "", "HU"], [8, 3, 1, "", "JALR"], [8, 3, 1, "", "MAX"], [8, 3, 1, "", "MAXU"], [8, 3, 1, "", "MIN"], [8, 3, 1, "", "MINU"], [8, 3, 1, "", "MUL"], [8, 3, 1, "", "MULH"], [8, 3, 1, "", "MULHSU"], [8, 3, 1, "", "MULHU"], [8, 3, 1, "", "MULW"], [8, 3, 1, "", "OR"], [8, 3, 1, "", "ORCB"], [8, 3, 1, "", "ORN"], [8, 3, 1, "", "PRIV"], [8, 3, 1, "", "REM"], [8, 3, 1, "", "REMU"], [8, 3, 1, "", "REMUW"], [8, 3, 1, "", "REMW"], [8, 3, 1, "", "REV8"], [8, 3, 1, "", "ROL"], [8, 3, 1, "", "ROR"], [8, 3, 1, "", "SEXTB"], [8, 3, 1, "", "SEXTH"], [8, 3, 1, "", "SH1ADD"], [8, 3, 1, "", "SH2ADD"], [8, 3, 1, "", "SH3ADD"], [8, 3, 1, "", "SLL"], [8, 3, 1, "", "SLT"], [8, 3, 1, "", "SLTU"], [8, 3, 1, "", "SR"], [8, 3, 1, "", "SUB"], [8, 3, 1, "", "W"], [8, 3, 1, "", "XNOR"], [8, 3, 1, "", "XOR"], [8, 3, 1, "", "ZEXTH"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct7": [[8, 3, 1, "", "ADD"], [8, 3, 1, "", "AND"], [8, 3, 1, "", "ANDN"], [8, 3, 1, "", "BCLR"], [8, 3, 1, "", "BEXT"], [8, 3, 1, "", "BINV"], [8, 3, 1, "", "BSET"], [8, 3, 1, "", "CLMUL"], [8, 3, 1, "", "CLZ"], [8, 3, 1, "", "CPOP"], [8, 3, 1, "", "CTZ"], [8, 3, 1, "", "MAX"], [8, 3, 1, "", "MIN"], [8, 3, 1, "", "MULDIV"], [8, 3, 1, "", "OR"], [8, 3, 1, "", "ORCB"], [8, 3, 1, "", "ORN"], [8, 3, 1, "", "REV8"], [8, 3, 1, "", "ROL"], [8, 3, 1, "", "ROR"], [8, 3, 1, "", "SA"], [8, 3, 1, "", "SEXTB"], [8, 3, 1, "", "SEXTH"], [8, 3, 1, "", "SFENCEVMA"], [8, 3, 1, "", "SH1ADD"], [8, 3, 1, "", "SH2ADD"], [8, 3, 1, "", "SH3ADD"], [8, 3, 1, "", "SL"], [8, 3, 1, "", "SLT"], [8, 3, 1, "", "SUB"], [8, 3, 1, "", "XNOR"], [8, 3, 1, "", "XOR"], [8, 3, 1, "", "ZEXTH"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.ISA": [[8, 2, 1, "", "__init__"]], "coreblocks.params.isa.InstrType": [[8, 3, 1, "", "B"], [8, 3, 1, "", "I"], [8, 3, 1, "", "J"], [8, 3, 1, "", "R"], [8, 3, 1, "", "S"], [8, 3, 1, "", "U"]], "coreblocks.params.isa.Opcode": [[8, 3, 1, "", "AUIPC"], [8, 3, 1, "", "BRANCH"], [8, 3, 1, "", "JAL"], [8, 3, 1, "", "JALR"], [8, 3, 1, "", "LOAD"], [8, 3, 1, "", "LOAD_FP"], [8, 3, 1, "", "LUI"], [8, 3, 1, "", "MISC_MEM"], [8, 3, 1, "", "OP"], [8, 3, 1, "", "OP32"], [8, 3, 1, "", "OP_IMM"], [8, 3, 1, "", "OP_IMM_32"], [8, 3, 1, "", "STORE"], [8, 3, 1, "", "STORE_FP"], [8, 3, 1, "", "SYSTEM"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Registers": [[8, 3, 1, "", "A0"], [8, 3, 1, "", "A1"], [8, 3, 1, "", "A2"], [8, 3, 1, "", "A3"], [8, 3, 1, "", "A4"], [8, 3, 1, "", "A5"], [8, 3, 1, "", "A6"], [8, 3, 1, "", "A7"], [8, 3, 1, "", "FP"], [8, 3, 1, "", "GP"], [8, 3, 1, "", "RA"], [8, 3, 1, "", "S0"], [8, 3, 1, "", "S1"], [8, 3, 1, "", "S10"], [8, 3, 1, "", "S11"], [8, 3, 1, "", "S2"], [8, 3, 1, "", "S3"], [8, 3, 1, "", "S4"], [8, 3, 1, "", "S5"], [8, 3, 1, "", "S6"], [8, 3, 1, "", "S7"], [8, 3, 1, "", "S8"], [8, 3, 1, "", "S9"], [8, 3, 1, "", "SP"], [8, 3, 1, "", "T0"], [8, 3, 1, "", "T1"], [8, 3, 1, "", "T2"], [8, 3, 1, "", "T3"], [8, 3, 1, "", "T4"], [8, 3, 1, "", "T5"], [8, 3, 1, "", "T6"], [8, 3, 1, "", "TP"], [8, 3, 1, "", "X0"], [8, 3, 1, "", "X1"], [8, 3, 1, "", "X10"], [8, 3, 1, "", "X11"], [8, 3, 1, "", "X12"], [8, 3, 1, "", "X13"], [8, 3, 1, "", "X14"], [8, 3, 1, "", "X15"], [8, 3, 1, "", "X16"], [8, 3, 1, "", "X17"], [8, 3, 1, "", "X18"], [8, 3, 1, "", "X19"], [8, 3, 1, "", "X2"], [8, 3, 1, "", "X20"], [8, 3, 1, "", "X21"], [8, 3, 1, "", "X22"], [8, 3, 1, "", "X23"], [8, 3, 1, "", "X24"], [8, 3, 1, "", "X25"], [8, 3, 1, "", "X26"], [8, 3, 1, "", "X27"], [8, 3, 1, "", "X28"], [8, 3, 1, "", "X29"], [8, 3, 1, "", "X3"], [8, 3, 1, "", "X30"], [8, 3, 1, "", "X31"], [8, 3, 1, "", "X4"], [8, 3, 1, "", "X5"], [8, 3, 1, "", "X6"], [8, 3, 1, "", "X7"], [8, 3, 1, "", "X8"], [8, 3, 1, "", "X9"], [8, 3, 1, "", "ZERO"], [8, 2, 1, "", "__new__"]], "coreblocks.params.keys": [[8, 1, 1, "", "BranchResolvedKey"], [8, 1, 1, "", "ExceptionReportKey"], [8, 1, 1, "", "GenericCSRRegistersKey"], [8, 1, 1, "", "InstructionPrecommitKey"], [8, 1, 1, "", "WishboneDataKey"]], "coreblocks.params.keys.BranchResolvedKey": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "unifier"]], "coreblocks.params.keys.ExceptionReportKey": [[8, 2, 1, "", "__init__"]], "coreblocks.params.keys.GenericCSRRegistersKey": [[8, 2, 1, "", "__init__"]], "coreblocks.params.keys.InstructionPrecommitKey": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "unifier"]], "coreblocks.params.keys.WishboneDataKey": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts": [[8, 1, 1, "", "CSRLayouts"], [8, 1, 1, "", "CommonLayoutFields"], [8, 1, 1, "", "DecodeLayouts"], [8, 1, 1, "", "FetchLayouts"], [8, 1, 1, "", "FuncUnitLayouts"], [8, 1, 1, "", "ICacheLayouts"], [8, 1, 1, "", "LSULayouts"], [8, 1, 1, "", "RATLayouts"], [8, 1, 1, "", "RFLayouts"], [8, 1, 1, "", "ROBLayouts"], [8, 1, 1, "", "RSInterfaceLayouts"], [8, 1, 1, "", "RSLayouts"], [8, 1, 1, "", "SchedulerLayouts"], [8, 1, 1, "", "UnsignedMulUnitLayouts"]], "coreblocks.params.layouts.CSRLayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts.CommonLayoutFields": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "addr"], [8, 3, 1, "", "cause"], [8, 3, 1, "", "csr"], [8, 3, 1, "", "data"], [8, 3, 1, "", "error"], [8, 3, 1, "", "exception"], [8, 3, 1, "", "exec_fn"], [8, 3, 1, "", "exec_fn_layout"], [8, 3, 1, "", "funct3"], [8, 3, 1, "", "funct7"], [8, 3, 1, "", "imm"], [8, 3, 1, "", "instr"], [8, 3, 1, "", "op_type"], [8, 3, 1, "", "pc"], [8, 3, 1, "", "reg_id"], [8, 3, 1, "", "reg_val"], [8, 3, 1, "", "regs_l"], [8, 3, 1, "", "regs_p"], [8, 3, 1, "", "rl_dst"], [8, 3, 1, "", "rl_s1"], [8, 3, 1, "", "rl_s2"], [8, 3, 1, "", "rob_id"], [8, 3, 1, "", "rp_dst"], [8, 3, 1, "", "rp_s1"], [8, 3, 1, "", "rp_s2"], [8, 3, 1, "", "s1_val"], [8, 3, 1, "", "s2_val"], [8, 3, 1, "", "side_fx"]], "coreblocks.params.layouts.DecodeLayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts.FetchLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "access_fault"], [8, 3, 1, "", "rvc"]], "coreblocks.params.layouts.FuncUnitLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "result"]], "coreblocks.params.layouts.ICacheLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "error"]], "coreblocks.params.layouts.LSULayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RATLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "old_rp_dst"]], "coreblocks.params.layouts.RFLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "valid"]], "coreblocks.params.layouts.ROBLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "done"], [8, 3, 1, "", "end"], [8, 3, 1, "", "rob_data"], [8, 3, 1, "", "start"]], "coreblocks.params.layouts.RSInterfaceLayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RSLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "ready_list"]], "coreblocks.params.layouts.SchedulerLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "regs_l_rob_in"], [8, 3, 1, "", "regs_p_alloc_out"], [8, 3, 1, "", "rs_entry_id"], [8, 3, 1, "", "rs_selected"]], "coreblocks.params.layouts.UnsignedMulUnitLayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.optypes": [[8, 1, 1, "", "OpType"], [8, 4, 1, "", "optypes_required_by_extensions"]], "coreblocks.params.optypes.OpType": [[8, 3, 1, "", "ADDRESS_GENERATION"], [8, 3, 1, "", "ARITHMETIC"], [8, 3, 1, "", "AUIPC"], [8, 3, 1, "", "BIT_MANIPULATION"], [8, 3, 1, "", "BRANCH"], [8, 3, 1, "", "CLMUL"], [8, 3, 1, "", "COMPARE"], [8, 3, 1, "", "CSR_IMM"], [8, 3, 1, "", "CSR_REG"], [8, 3, 1, "", "DIV_REM"], [8, 3, 1, "", "EBREAK"], [8, 3, 1, "", "ECALL"], [8, 3, 1, "", "EXCEPTION"], [8, 3, 1, "", "FENCE"], [8, 3, 1, "", "FENCEI"], [8, 3, 1, "", "JAL"], [8, 3, 1, "", "JALR"], [8, 3, 1, "", "LOAD"], [8, 3, 1, "", "LOGIC"], [8, 3, 1, "", "MRET"], [8, 3, 1, "", "MUL"], [8, 3, 1, "", "SFENCEVMA"], [8, 3, 1, "", "SHIFT"], [8, 3, 1, "", "SINGLE_BIT_MANIPULATION"], [8, 3, 1, "", "SRET"], [8, 3, 1, "", "STORE"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_1"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_2"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_3"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_4"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_5"], [8, 3, 1, "", "UNKNOWN"], [8, 3, 1, "", "WFI"], [8, 2, 1, "", "__new__"]], "coreblocks.peripherals": [[9, 0, 0, "-", "wishbone"]], "coreblocks.peripherals.wishbone": [[9, 1, 1, "", "PipelinedWishboneMaster"], [9, 1, 1, "", "WishboneArbiter"], [9, 1, 1, "", "WishboneBus"], [9, 1, 1, "", "WishboneLayout"], [9, 1, 1, "", "WishboneMaster"], [9, 1, 1, "", "WishboneMemorySlave"], [9, 1, 1, "", "WishboneMuxer"], [9, 1, 1, "", "WishboneParameters"]], "coreblocks.peripherals.wishbone.PipelinedWishboneMaster": [[9, 2, 1, "", "__init__"], [9, 2, 1, "", "generate_method_layouts"]], "coreblocks.peripherals.wishbone.WishboneArbiter": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneBus": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneLayout": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMaster": [[9, 2, 1, "", "__init__"], [9, 2, 1, "", "generate_layouts"]], "coreblocks.peripherals.wishbone.WishboneMemorySlave": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMuxer": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneParameters": [[9, 2, 1, "", "__init__"]], "coreblocks.scheduler": [[10, 0, 0, "-", "scheduler"], [10, 0, 0, "-", "wakeup_select"]], "coreblocks.scheduler.scheduler": [[10, 1, 1, "", "Scheduler"]], "coreblocks.scheduler.scheduler.Scheduler": [[10, 2, 1, "", "__init__"]], "coreblocks.scheduler.wakeup_select": [[10, 1, 1, "", "WakeupSelect"]], "coreblocks.scheduler.wakeup_select.WakeupSelect": [[10, 2, 1, "", "__init__"]], "coreblocks.stages": [[11, 0, 0, "-", "backend"], [11, 0, 0, "-", "func_blocks_unifier"], [11, 0, 0, "-", "retirement"], [11, 0, 0, "-", "rs_func_block"]], "coreblocks.stages.backend": [[11, 1, 1, "", "ResultAnnouncement"]], "coreblocks.stages.backend.ResultAnnouncement": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "debug_signals"]], "coreblocks.stages.func_blocks_unifier": [[11, 1, 1, "", "FuncBlocksUnifier"]], "coreblocks.stages.func_blocks_unifier.FuncBlocksUnifier": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "get_extra_method"]], "coreblocks.stages.retirement": [[11, 1, 1, "", "Retirement"]], "coreblocks.stages.retirement.Retirement": [[11, 2, 1, "", "__init__"]], "coreblocks.stages.rs_func_block": [[11, 1, 1, "", "RSBlockComponent"], [11, 1, 1, "", "RSFuncBlock"]], "coreblocks.stages.rs_func_block.RSBlockComponent": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "func_units"], [11, 2, 1, "", "get_module"], [11, 2, 1, "", "get_optypes"], [11, 2, 1, "", "get_rs_entry_count"], [11, 3, 1, "", "rs_entries"]], "coreblocks.stages.rs_func_block.RSFuncBlock": [[11, 2, 1, "", "__init__"]], "coreblocks.structs_common": [[12, 0, 0, "-", "csr"], [12, 0, 0, "-", "csr_generic"], [12, 0, 0, "-", "exception"], [12, 0, 0, "-", "rat"], [12, 0, 0, "-", "rf"], [12, 0, 0, "-", "rob"], [12, 0, 0, "-", "rs"]], "coreblocks.structs_common.csr": [[12, 1, 1, "", "CSRBlockComponent"], [12, 1, 1, "", "CSRListKey"], [12, 1, 1, "", "CSRRegister"], [12, 1, 1, "", "CSRUnit"], [12, 1, 1, "", "PrivilegeLevel"], [12, 4, 1, "", "csr_access_privilege"]], "coreblocks.structs_common.csr.CSRBlockComponent": [[12, 2, 1, "", "get_module"], [12, 2, 1, "", "get_optypes"], [12, 2, 1, "", "get_rs_entry_count"]], "coreblocks.structs_common.csr.CSRListKey": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.CSRRegister": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.CSRUnit": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.PrivilegeLevel": [[12, 3, 1, "", "MACHINE"], [12, 3, 1, "", "SUPERVISOR"], [12, 3, 1, "", "USER"], [12, 2, 1, "", "__new__"]], "coreblocks.structs_common.csr_generic": [[12, 1, 1, "", "CSRAddress"], [12, 1, 1, "", "DoubleCounterCSR"], [12, 1, 1, "", "GenericCSRRegisters"]], "coreblocks.structs_common.csr_generic.CSRAddress": [[12, 3, 1, "", "CYCLE"], [12, 3, 1, "", "CYCLEH"], [12, 3, 1, "", "INSTRET"], [12, 3, 1, "", "INSTRETH"], [12, 3, 1, "", "MCAUSE"], [12, 3, 1, "", "TIME"], [12, 3, 1, "", "TIMEH"], [12, 2, 1, "", "__new__"]], "coreblocks.structs_common.csr_generic.DoubleCounterCSR": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr_generic.GenericCSRRegisters": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.exception": [[12, 1, 1, "", "ExceptionCauseRegister"], [12, 4, 1, "", "should_update_prioriy"]], "coreblocks.structs_common.exception.ExceptionCauseRegister": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rat": [[12, 1, 1, "", "FRAT"], [12, 1, 1, "", "RRAT"]], "coreblocks.structs_common.rat.FRAT": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rat.RRAT": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rf": [[12, 1, 1, "", "RegisterFile"]], "coreblocks.structs_common.rf.RegisterFile": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rob": [[12, 1, 1, "", "ReorderBuffer"]], "coreblocks.structs_common.rob.ReorderBuffer": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rs": [[12, 1, 1, "", "RS"]], "coreblocks.structs_common.rs.RS": [[12, 2, 1, "", "__init__"]], "coreblocks.utils": [[13, 0, 0, "-", "protocols"]], "coreblocks.utils.protocols": [[13, 1, 1, "", "FuncBlock"], [13, 1, 1, "", "FuncUnit"], [13, 1, 1, "", "Unifier"]], "coreblocks.utils.protocols.FuncBlock": [[13, 3, 1, "", "get_result"], [13, 3, 1, "", "insert"], [13, 3, 1, "", "select"], [13, 3, 1, "", "update"]], "coreblocks.utils.protocols.FuncUnit": [[13, 3, 1, "", "accept"], [13, 3, 1, "", "issue"]], "coreblocks.utils.protocols.Unifier": [[13, 2, 1, "", "__init__"], [13, 3, 1, "", "method"]], "transactron": [[27, 1, 1, "", "Method"], [27, 1, 1, "", "TModule"], [27, 1, 1, "", "Transaction"], [27, 1, 1, "", "TransactionContext"], [27, 1, 1, "", "TransactionManager"], [27, 1, 1, "", "TransactionModule"], [27, 0, 0, "-", "core"], [27, 4, 1, "", "def_method"], [27, 0, 0, "-", "graph"], [28, 0, 0, "-", "lib"], [27, 0, 0, "-", "tracing"], [29, 0, 0, "-", "utils"]], "transactron.Method": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "body"], [27, 2, 1, "", "debug_signals"], [27, 2, 1, "", "like"], [27, 2, 1, "", "proxy"]], "transactron.TModule": [[27, 2, 1, "", "AvoidedIf"], [27, 2, 1, "", "Case"], [27, 2, 1, "", "Default"], [27, 2, 1, "", "Elif"], [27, 2, 1, "", "Else"], [27, 2, 1, "", "FSM"], [27, 2, 1, "", "If"], [27, 2, 1, "", "State"], [27, 2, 1, "", "Switch"], [27, 2, 1, "", "__init__"], [27, 5, 1, "", "next"]], "transactron.Transaction": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "body"], [27, 2, 1, "", "debug_signals"]], "transactron.TransactionContext": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "get"], [27, 3, 1, "", "stack"]], "transactron.TransactionManager": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "add_transaction"], [27, 2, 1, "", "debug_signals"], [27, 2, 1, "", "visual_graph"]], "transactron.TransactionModule": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "transaction_context"]], "transactron.core": [[27, 1, 1, "", "Method"], [27, 1, 1, "", "Priority"], [27, 1, 1, "", "TModule"], [27, 1, 1, "", "Transaction"], [27, 1, 1, "", "TransactionContext"], [27, 1, 1, "", "TransactionManager"], [27, 1, 1, "", "TransactionModule"], [27, 4, 1, "", "def_method"], [27, 4, 1, "", "eager_deterministic_cc_scheduler"], [27, 4, 1, "", "trivial_roundrobin_cc_scheduler"]], "transactron.core.Method": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "body"], [27, 2, 1, "", "debug_signals"], [27, 2, 1, "", "like"], [27, 2, 1, "", "proxy"]], "transactron.core.Priority": [[27, 3, 1, "", "LEFT"], [27, 3, 1, "", "RIGHT"], [27, 3, 1, "", "UNDEFINED"]], "transactron.core.TModule": [[27, 2, 1, "", "AvoidedIf"], [27, 2, 1, "", "Case"], [27, 2, 1, "", "Default"], [27, 2, 1, "", "Elif"], [27, 2, 1, "", "Else"], [27, 2, 1, "", "FSM"], [27, 2, 1, "", "If"], [27, 2, 1, "", "State"], [27, 2, 1, "", "Switch"], [27, 2, 1, "", "__init__"], [27, 5, 1, "", "next"]], "transactron.core.Transaction": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "body"], [27, 2, 1, "", "debug_signals"]], "transactron.core.TransactionContext": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "get"], [27, 3, 1, "", "stack"]], "transactron.core.TransactionManager": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "add_transaction"], [27, 2, 1, "", "debug_signals"], [27, 2, 1, "", "visual_graph"]], "transactron.core.TransactionModule": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "transaction_context"]], "transactron.graph": [[27, 1, 1, "", "Direction"], [27, 1, 1, "", "Owned"], [27, 1, 1, "", "OwnershipGraph"]], "transactron.graph.Direction": [[27, 3, 1, "", "IN"], [27, 3, 1, "", "INOUT"], [27, 3, 1, "", "NONE"], [27, 3, 1, "", "OUT"], [27, 2, 1, "", "__new__"]], "transactron.graph.Owned": [[27, 2, 1, "", "__init__"], [27, 3, 1, "", "name"], [27, 3, 1, "", "owner"]], "transactron.graph.OwnershipGraph": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "dump"], [27, 2, 1, "", "dump_dot"], [27, 2, 1, "", "dump_elk"], [27, 2, 1, "", "dump_mermaid"], [27, 2, 1, "", "get_hier_name"], [27, 2, 1, "", "get_name"], [27, 2, 1, "", "insert_edge"], [27, 2, 1, "", "insert_node"], [27, 3, 1, "", "mermaid_direction"], [27, 2, 1, "", "prune"], [27, 2, 1, "", "remember"], [27, 2, 1, "", "remember_field"]], "transactron.lib": [[28, 0, 0, "-", "adapters"], [28, 0, 0, "-", "buttons"], [28, 0, 0, "-", "connectors"], [28, 0, 0, "-", "reqres"], [28, 0, 0, "-", "simultaneous"], [28, 0, 0, "-", "storage"], [28, 0, 0, "-", "transformers"]], "transactron.lib.adapters": [[28, 1, 1, "", "Adapter"], [28, 1, 1, "", "AdapterBase"], [28, 1, 1, "", "AdapterTrans"]], "transactron.lib.adapters.Adapter": [[28, 2, 1, "", "__init__"]], "transactron.lib.adapters.AdapterBase": [[28, 2, 1, "", "__init__"], [28, 3, 1, "", "data_in"], [28, 3, 1, "", "data_out"], [28, 2, 1, "", "debug_signals"]], "transactron.lib.adapters.AdapterTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.buttons": [[28, 1, 1, "", "ClickIn"], [28, 1, 1, "", "ClickOut"]], "transactron.lib.buttons.ClickIn": [[28, 2, 1, "", "__init__"]], "transactron.lib.buttons.ClickOut": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors": [[28, 1, 1, "", "Connect"], [28, 1, 1, "", "ConnectTrans"], [28, 1, 1, "", "FIFO"], [28, 1, 1, "", "Forwarder"], [28, 1, 1, "", "ManyToOneConnectTrans"]], "transactron.lib.connectors.Connect": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors.ConnectTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors.FIFO": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors.Forwarder": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors.ManyToOneConnectTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.reqres": [[28, 1, 1, "", "ArgumentsToResultsZipper"], [28, 1, 1, "", "Serializer"]], "transactron.lib.reqres.ArgumentsToResultsZipper": [[28, 2, 1, "", "__init__"]], "transactron.lib.reqres.Serializer": [[28, 2, 1, "", "__init__"]], "transactron.lib.simultaneous": [[28, 4, 1, "", "condition"]], "transactron.lib.storage": [[28, 1, 1, "", "MemoryBank"]], "transactron.lib.storage.MemoryBank": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers": [[28, 1, 1, "", "CatTrans"], [28, 1, 1, "", "Collector"], [28, 1, 1, "", "ConnectAndMapTrans"], [28, 1, 1, "", "MethodFilter"], [28, 1, 1, "", "MethodMap"], [28, 1, 1, "", "MethodProduct"], [28, 1, 1, "", "MethodTryProduct"], [28, 1, 1, "", "Transformer"]], "transactron.lib.transformers.CatTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.Collector": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.ConnectAndMapTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodFilter": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodMap": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodProduct": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodTryProduct": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.Transformer": [[28, 3, 1, "", "method"], [28, 2, 1, "", "use"]], "transactron.tracing": [[27, 1, 1, "", "TracingEnabler"], [27, 1, 1, "", "TracingFragment"], [27, 1, 1, "", "TracingFragmentTransformer"], [27, 1, 1, "", "TracingInstance"]], "transactron.tracing.TracingFragment": [[27, 2, 1, "", "get"], [27, 2, 1, "", "prepare"], [27, 3, 1, "", "subfragments"]], "transactron.tracing.TracingFragmentTransformer": [[27, 2, 1, "", "on_fragment"]], "transactron.tracing.TracingInstance": [[27, 2, 1, "", "get"]], "transactron.utils": [[29, 0, 0, "-", "debug_signals"], [29, 0, 0, "-", "fifo"], [29, 0, 0, "-", "utils"]], "transactron.utils.debug_signals": [[29, 4, 1, "", "auto_debug_signals"]], "transactron.utils.fifo": [[29, 1, 1, "", "BasicFifo"], [29, 1, 1, "", "Semaphore"]], "transactron.utils.fifo.BasicFifo": [[29, 2, 1, "", "__init__"]], "transactron.utils.fifo.Semaphore": [[29, 2, 1, "", "__init__"]], "transactron.utils.utils": [[29, 1, 1, "", "AssignType"], [29, 1, 1, "", "ModuleConnector"], [29, 4, 1, "", "OneHotSwitch"], [29, 4, 1, "", "OneHotSwitchDynamic"], [29, 4, 1, "", "align_down_to_power_of_two"], [29, 4, 1, "", "align_to_power_of_two"], [29, 4, 1, "", "assign"], [29, 4, 1, "", "bits_from_int"], [29, 4, 1, "", "count_leading_zeros"], [29, 4, 1, "", "count_trailing_zeros"], [29, 4, 1, "", "flatten_signals"], [29, 4, 1, "", "make_hashable"], [29, 4, 1, "", "mod_incr"], [29, 4, 1, "", "popcount"], [29, 4, 1, "", "silence_mustuse"]], "transactron.utils.utils.AssignType": [[29, 3, 1, "", "ALL"], [29, 3, 1, "", "COMMON"], [29, 3, 1, "", "RHS"]], "transactron.utils.utils.ModuleConnector": [[29, 2, 1, "", "__init__"]]}, "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, 17, 19, 26], "transactron": [0, 20, 27, 28, 29], "list": 1, "assumpt": [1, 3], "made": 1, "dure": 1, "develop": [1, 15], "instruct": [3, 24], "cach": 3, "interfac": [3, 23, 24], "address": 3, "map": 3, "exampl": 3, "packag": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29], "subpackag": [4, 6, 27], "submodul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29], "core": [4, 27], "modul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29], "content": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29], "frontend": 5, "decod": 5, "fetch": 5, "icach": 5, "rvc": 5, "fu": [6, 7], "alu": 6, "div_unit": 6, "except": [6, 12, 18], "fu_decod": 6, "jumpbranch": 6, "mul_unit": 6, "shift_unit": 6, "zbc": 6, "zb": 6, "unsigned_multipl": 7, "common": 7, "fast_recurs": 7, "sequenc": 7, "shift": 7, "param": 8, "configur": 8, "depend": 8, "fu_param": 8, "genparam": 8, "icache_param": 8, "instr": 8, "isa": 8, "kei": 8, "layout": 8, "optyp": 8, "peripher": 9, "wishbon": 9, "schedul": [10, 22, 26], "wakeup_select": 10, "stage": 11, "backend": 11, "func_blocks_unifi": 11, "retir": 11, "rs_func_block": 11, "structs_common": 12, "csr": 12, "csr_gener": 12, "rat": 12, "rf": 12, "rob": 12, "r": 12, "util": [13, 29], "protocol": 13, "full": 14, "transact": [14, 26], "method": [14, 23, 24, 26], "graph": [14, 27], "environ": 15, "set": 15, "up": 15, "us": [15, 23, 24], "script": 15, "run_test": 15, "py": 15, "lint": 15, "sh": 15, "core_graph": 15, "build_doc": 15, "introduct": [16, 18, 26], "document": [16, 25, 26], "summari": 18, "paper": 18, "about": 18, "interrupt": 18, "handl": 18, "old": 18, "pc": 18, "out": 18, "order": [18, 26], "execut": 18, "processor": 18, "In": 18, "line": 18, "softwar": 18, "manag": 18, "tlb": 18, "hardwar": 18, "cost": 18, "analysi": 18, "process": 18, "strategi": 18, "igpu": 18, "support": 18, "specul": 18, "gpu": 18, "effici": 18, "other": 18, "problem": 21, "checklist": 21, "overview": [22, 24], "descript": 22, "schema": 22, "structur": 22, "more": 22, "detail": 22, "each": 22, "block": 22, "proposit": 23, "reserv": [23, 24], "station": [23, 24], "implement": [23, 26], "intern": 23, "data": 23, "actual": 23, "slot": [23, 24], "tabl": 23, "compar": [23, 24], "substitut": [23, 24], "read": [23, 24], "row": [23, 24], "clean": [23, 24], "get": [23, 24], "free": 23, "mark": [23, 24], "extern": [23, 24], "all": [23, 24], "reset": 24, "initi": 24, "state": 24, "insert": 24, "new": 24, "readi": [24, 26], "vector": 24, "signal": [24, 26], "synthesi": 25, "requir": 25, "usag": [25, 26], "benchmark": 25, "framework": 26, "basic": 26, "argument": 26, "pass": 26, "convent": 26, "definit": 26, "return": 26, "valu": 26, "The": 26, "librari": 26, "advanc": 26, "concept": 26, "special": 26, "combin": 26, "domain": 26, "conflict": 26, "nest": 26, "trace": 27, "lib": 28, "adapt": 28, "button": 28, "connector": 28, "reqr": 28, "simultan": 28, "storag": 28, "transform": 28, "debug_sign": 29, "fifo": 29}, "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.frontend", "coreblocks.fu", "coreblocks.fu.unsigned_multiplication", "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.utils"], "filenames": ["api.md", "assumptions.md", "auto_graph.rst", "components/icache.md", "coreblocks.rst", "coreblocks.frontend.rst", "coreblocks.fu.rst", "coreblocks.fu.unsigned_multiplication.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.utils.rst"], "titles": ["API", "List of assumptions made during development", "<no title>", "Instruction Cache", "coreblocks package", "coreblocks.frontend package", "coreblocks.fu package", "coreblocks.fu.unsigned_multiplication 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", "Synthesis", "Documentation for Coreblocks transaction framework", "transactron package", "transactron.lib package", "transactron.utils package"], "terms": {"packag": [0, 15, 17, 19, 20], "subpackag": [0, 19, 20], "frontend": [0, 4, 19, 22], "submodul": [0, 19, 20], "decod": [0, 4, 6, 8, 10, 19], "modul": [0, 19, 20, 26], "fetch": [0, 3, 4, 8, 11, 12, 18, 19], "icach": [0, 4, 19], "rvc": [0, 4, 8, 19], "content": [0, 19, 20], "fu": [0, 1, 4, 8, 11, 12, 19, 23, 24], "alu": [0, 4, 8, 19], "div_unit": [0, 4, 19], "except": [0, 4, 8, 11, 17, 19, 21, 27, 29], "fu_decod": [0, 4, 19], "jumpbranch": [0, 4, 8, 19], "mul_unit": [0, 4, 19], "shift_unit": [0, 4, 8, 19], "zbc": [0, 4, 8, 19], "zb": [0, 4, 8, 19], "param": [0, 4, 5, 6, 10, 11, 12, 19], "configur": [0, 4, 10, 19], "depend": [0, 4, 12, 19, 26, 27, 29], "fu_param": [0, 4, 19], "genparam": [0, 4, 5, 6, 7, 10, 11, 12, 19], "icache_param": [0, 4, 19], "instr": [0, 4, 5, 19], "isa": [0, 4, 5, 12, 19], "kei": [0, 4, 12, 19, 29], "layout": [0, 4, 5, 9, 10, 11, 15, 19, 21, 26, 27, 28, 29], "optyp": [0, 4, 5, 6, 10, 11, 12, 19], "peripher": [0, 4, 19], "wishbon": [0, 4, 19], "schedul": [0, 4, 8, 17, 18, 19, 27, 28], "wakeup_select": [0, 4, 19], "stage": [0, 1, 4, 12, 19], "backend": [0, 4, 19], "func_blocks_unifi": [0, 4, 19], "retir": [0, 4, 19], "rs_func_block": [0, 4, 19], "structs_common": [0, 4, 19], "csr": [0, 4, 5, 8, 19], "csr_gener": [0, 4, 19], "rat": [0, 1, 4, 8, 10, 18, 19], "rf": [0, 1, 4, 11, 18, 19, 23, 24], "rob": [0, 1, 4, 8, 10, 11, 18, 19, 22, 23, 24], "r": [0, 1, 4, 8, 10, 11, 15, 18, 19, 22, 23, 24], "util": [0, 4, 10, 11, 19, 20, 21, 26, 27, 28], "protocol": [0, 4, 5, 10, 11, 19, 27], "core": [0, 5, 6, 7, 8, 10, 11, 12, 13, 15, 18, 19, 20, 25, 28], "lib": [0, 20, 27, 29], "adapt": [0, 20, 26, 27], "button": [0, 20, 27], "connector": [0, 20, 27], "reqr": [0, 20, 27], "simultan": [0, 12, 20, 26, 27], "storag": [0, 20, 27], "transform": [0, 20, 27], "debug_sign": [0, 11, 20, 27, 28], "fifo": [0, 11, 18, 20, 26, 27, 28], "graph": [0, 15, 17, 20, 25], "trace": [0, 15, 20], "ha": [1, 5, 8, 10, 12, 15, 18, 21, 23, 26, 27, 29], "data": [1, 5, 8, 9, 12, 17, 24, 27, 28, 29], "forward": [1, 26, 27, 28], "from": [1, 5, 6, 8, 9, 10, 11, 12, 15, 16, 18, 21, 23, 24, 25, 26, 27, 28, 29], "tomasulo": 1, "announc": [1, 11, 12], "bu": [1, 8, 9], "read": [1, 8, 9, 12, 17, 21, 26, 28, 29], "x0": [1, 8], "rf0": 1, "return": [1, 3, 6, 8, 9, 17, 18, 27, 28, 29], "0": [1, 5, 6, 8, 10, 12, 23, 24, 27], "write": [1, 5, 12, 18, 24, 26, 28, 29], "i": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 18, 22, 23, 24, 25, 26, 27, 28, 29], "noop": 1, "separ": [1, 22, 28], "each": [1, 5, 6, 8, 9, 12, 17, 18, 23, 24, 25, 26, 27, 28], "writeback": 1, "save": [1, 8, 11, 15, 18, 23, 24, 25, 28], "after": [1, 3, 5, 8, 9, 18, 22, 26, 28], "get": [1, 5, 6, 7, 8, 10, 11, 15, 17, 27, 28, 29], "output": [1, 5, 9, 11, 12, 15, 18, 23, 24, 25, 27, 28], "commit": [1, 8, 12, 15, 18, 25], "updat": [1, 11, 12, 13], "The": [3, 5, 6, 8, 9, 11, 15, 16, 17, 18, 22, 23, 24, 27, 28, 29], "should": [3, 5, 8, 9, 10, 11, 15, 16, 18, 22, 23, 24, 26, 27, 28, 29], "expos": [3, 28, 29], "three": [3, 5, 18, 27], "method": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 27, 28, 29], "issue_req": [3, 5], "thi": [3, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 21, 23, 24, 25, 26, 27, 28, 29], "issu": [3, 5, 6, 7, 10, 13, 15, 26, 28], "an": [3, 5, 8, 10, 11, 15, 16, 18, 21, 23, 26, 27, 28, 29], "lookup": [3, 5], "request": [3, 5, 6, 7, 8, 9, 26, 27, 28], "accept_resp": 3, "result": [3, 5, 6, 7, 8, 9, 11, 12, 18, 26, 28, 29], "flush": [3, 5, 18], "entir": [3, 26], "oper": [3, 5, 6, 8, 18, 26, 27, 28, 29], "under": [3, 26, 27], "follow": [3, 6, 8, 10, 15, 23, 25, 26, 29], "ar": [3, 8, 9, 11, 12, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29], "alwai": [3, 12, 26, 27, 28], "multipl": [3, 6, 7, 8, 9, 10, 11, 26, 27], "4": [3, 6, 8, 28], "byte": [3, 8], "risc": [3, 8, 16], "v": [3, 8, 15, 16, 18, 23], "specif": [3, 8, 15, 18], "requir": [3, 12, 15, 17, 18, 26, 27], "align": [3, 29], "c": [3, 8, 18], "extens": [3, 8], "introduc": [3, 18, 26], "16": [3, 8, 18, 27], "bit": [3, 5, 6, 7, 8, 9, 12, 18, 23, 24, 26, 28, 29], "relax": [3, 26], "unit": [3, 5, 6, 7, 8, 9, 10, 11, 12, 15, 22], "handl": [3, 6, 17, 26, 27], "case": [3, 9, 10, 11, 18, 21, 26, 27, 28, 29], "fulli": [3, 28], "pipelin": [3, 9, 10, 12, 18, 23, 28], "process": [3, 17, 28], "order": [3, 8, 10, 15, 16, 17, 25, 27, 28], "As": [3, 18, 26], "can": [3, 8, 9, 11, 12, 15, 16, 18, 22, 23, 25, 26, 27, 28, 29], "invok": [3, 5, 10, 11, 18, 23], "independ": [3, 26, 28], "accept_r": [3, 5], "If": [3, 5, 8, 9, 12, 18, 21, 23, 26, 27, 28, 29], "space": [3, 18], "anoth": [3, 5, 26, 27, 28], "simpli": 3, "block": [3, 6, 7, 8, 9, 10, 11, 17, 18, 26, 27, 28], "latenc": [3, 18, 28], "least": 3, "one": [3, 5, 6, 8, 9, 11, 15, 18, 22, 23, 24, 26, 27, 28, 29], "cycl": [3, 6, 7, 9, 12, 18, 22, 26, 27, 28], "miss": [3, 18], "occur": [3, 5], "arbitrarili": 3, "long": [3, 24, 28], "ensur": 3, "ani": [3, 5, 8, 9, 10, 18, 21, 29], "refetch": 3, "howev": 3, "guarante": [3, 18], "have": [3, 8, 9, 11, 12, 18, 21, 25, 26, 27, 29], "alreadi": [3, 8, 11, 18], "been": 3, "still": [3, 18, 24, 27], "wait": [3, 9, 11, 18, 23, 24, 27], "accept": [3, 5, 6, 7, 12, 13, 27, 28, 29], "inform": [3, 10, 25, 27], "regard": 3, "error": [3, 5, 8, 9, 27, 29], "mean": [3, 10, 24, 27, 28], "dure": [3, 17, 22], "line": [3, 5, 8, 17], "refil": [3, 5, 8], "subsequ": 3, "access": [3, 8, 12, 18, 26], "trigger": [3, 12], "which": [3, 5, 6, 8, 10, 11, 15, 16, 18, 22, 23, 24, 26, 27, 28, 29], "most": [3, 18, 26, 27], "like": [3, 5, 9, 18, 26, 27, 28], "For": [3, 8, 23, 24, 25, 26, 29], "32": [3, 6, 7, 8, 18, 26], "128": [3, 8], "set": [3, 5, 6, 8, 10, 11, 12, 17, 23, 27, 28], "size": [3, 8, 9, 18, 26, 28, 29], "equal": 3, "31": [3, 8], "15": [3, 8], "14": [3, 8], "13": [3, 8], "12": [3, 8], "11": [3, 8, 15], "10": [3, 8, 18], "09": 3, "08": 3, "07": 3, "06": 3, "05": 3, "04": 3, "03": 3, "02": 3, "01": 3, "00": 3, "tag": [3, 9, 18, 23, 24], "index": [3, 8, 27, 29], "offset": 3, "unsigned_multipl": [4, 6], "common": [4, 6, 28, 29], "fast_recurs": [4, 6], "sequenc": [4, 6, 10, 27, 28, 29], "shift": [4, 6, 8], "class": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 26, 27, 28, 29], "base": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 27, 28, 29], "elaborat": [4, 5, 6, 7, 9, 10, 11, 12, 26, 27, 28, 29], "__init__": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 26, 27, 28, 29], "gen_param": [4, 5, 6, 8, 10, 11, 12], "wb_instr_bu": 4, "wishbonebu": [4, 9], "wb_data_bu": 4, "simpl": [5, 10, 11, 27, 28, 29], "transact": [5, 8, 9, 12, 17, 23, 27, 28, 29], "interfac": [5, 7, 9, 10, 11, 12, 17, 26, 27, 28], "instanti": [5, 27], "instrdecod": 5, "make": [5, 6, 15, 16, 18, 21, 26], "actual": [5, 15, 17, 26], "combinatori": [5, 26], "manner": [5, 9], "get_raw": 5, "push_decod": 5, "none": [5, 6, 8, 11, 12, 27, 28, 29], "paramet": [5, 6, 7, 8, 9, 10, 11, 12, 25, 26, 27, 28, 29], "instanc": [5, 6, 8, 10, 11, 27], "us": [5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 21, 25, 26, 27, 28, 29], "gener": [5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 18, 21, 25, 27, 28, 29], "raw": 5, "instruct": [5, 6, 8, 10, 11, 12, 17, 18, 22, 23], "previou": [5, 9, 18], "step": [5, 10, 15, 18, 26], "e": [5, 8, 15, 18, 21, 26, 28, 29], "g": [5, 8, 15, 18, 21, 26, 28, 29], "fetchlayout": [5, 8], "send": [5, 8, 10, 11], "next": [5, 10, 11, 12, 18, 27], "It": [5, 6, 7, 8, 10, 11, 15, 18, 22, 23, 26, 27, 28], "describ": [5, 8, 10, 11, 18, 27, 28], "decodelayout": [5, 8, 10], "perform": [5, 6, 7, 8, 10, 12, 25, 26, 27, 28, 29], "elementari": 5, "compon": [5, 8, 16, 27], "opcod": [5, 8, 23, 24], "funct3": [5, 6, 8], "etc": [5, 26], "connect": [5, 9, 11, 12, 18, 26, 27, 28], "via": [5, 26, 27], "its": [5, 10, 11, 12, 18, 26, 27, 28, 29], "attribut": [5, 6, 7, 8, 9, 11, 12, 27, 28, 29], "signal": [5, 6, 9, 17, 21, 27, 28, 29], "gen": [5, 6, 7, 11], "ilen": [5, 8], "out": [5, 6, 7, 9, 11, 16, 17, 27, 28], "function": [5, 6, 8, 10, 11, 18, 21, 25, 26, 27, 28, 29], "identifi": [5, 8, 23], "funct3_v": 5, "1": [5, 6, 7, 8, 10, 12, 18, 23, 24, 26, 27, 28, 29], "funct7": [5, 6, 8], "seven": 5, "funct7_v": 5, "funct12": [5, 8], "twelv": 5, "funct12_v": 5, "rd": [5, 8], "reg_cnt_log": 5, "address": [5, 8, 9, 12, 17, 18], "regist": [5, 8, 10, 12, 18, 22], "rd_v": 5, "rs1": [5, 8], "hold": [5, 9, 12], "first": [5, 6, 8, 10, 18, 23, 24, 26, 28], "input": [5, 6, 11, 12, 18, 23, 24, 26, 27, 28, 29], "valu": [5, 6, 8, 9, 10, 11, 12, 17, 21, 23, 24, 27, 28, 29], "rs1_v": 5, "take": [5, 8, 9, 11, 22, 23, 25, 26, 27, 28], "form": [5, 8, 12, 18, 28], "rs2": [5, 8], "second": [5, 6, 8, 10, 23, 24, 28], "rs2_v": 5, "imm": [5, 8], "xlen": [5, 6, 8, 12], "immedi": [5, 8, 9], "provid": [5, 6, 8, 10, 12, 26, 28], "were": [5, 18, 26], "succ": 5, "fencetarget": [5, 8], "successor": 5, "fenc": [5, 8], "pred": 5, "predecessor": 5, "fm": 5, "fencefm": [5, 8], "mode": [5, 8, 18], "csr_alen": [5, 8], "control": [5, 8, 9, 12, 27, 28], "sourc": [5, 8, 10, 23], "type": [5, 6, 8, 15, 27], "defin": [5, 12, 26, 27, 28, 29], "kind": [5, 6, 8, 10], "illeg": 5, "wa": [5, 8, 12, 18, 26, 27, 28], "success": [5, 9], "do": [5, 8, 18, 21, 26, 27], "fit": 5, "support": [5, 8, 10, 15, 17, 27, 28], "select": [5, 6, 9, 10, 11, 12, 13, 15], "t": [5, 8, 15, 18, 21, 23, 25, 26, 27, 28, 29], "constructor": [5, 26, 27], "pc": [5, 8, 12, 17], "insid": [5, 26, 27, 28], "increment": [5, 12], "ilen_byt": 5, "icacheinterfac": 5, "cont": 5, "cach": [5, 8, 17], "unalignedfetch": 5, "work": [5, 10, 18, 21, 26, 27], "unalign": 5, "A": [5, 8, 26, 27, 28], "associ": [5, 8], "replac": [5, 7, 8, 23], "polici": 5, "pseudo": 5, "random": 5, "scheme": 5, "everi": [5, 6, 9, 15, 27, 28], "time": [5, 9, 12, 18, 25, 27, 28], "trash": 5, "we": [5, 11, 18, 22, 23, 24, 25, 26], "wai": [5, 6, 8, 15, 18, 26, 27], "keep": [5, 27], "global": [5, 12, 18], "counter": [5, 8, 12], "abstract": [5, 7, 8, 28], "awai": 5, "need": [5, 9, 15, 18, 23, 25, 26, 27], "two": [5, 8, 12, 18, 21, 26, 27, 28, 29], "refiller_start": 5, "call": [5, 6, 10, 12, 15, 21, 23, 26, 27, 28], "whenev": 5, "refiller_accept": 5, "readi": [5, 8, 9, 10, 11, 12, 17, 23, 27, 28, 29], "word": [5, 8], "written": [5, 12, 24, 28], "last": [5, 8, 10, 27, 28], "when": [5, 9, 15, 18, 21, 23, 24, 26, 27, 28, 29], "either": [5, 26, 27, 29], "transfer": [5, 9, 27, 28], "over": [5, 12, 27, 29], "shouldn": 5, "until": [5, 18, 28], "start": [5, 6, 8, 9, 18, 27], "icachelayout": [5, 8], "icacheparamet": [5, 8], "cacherefillerinterfac": 5, "creat": [5, 7, 15, 26, 27, 28, 29], "start_refil": 5, "accept_refil": 5, "deserialize_addr": 5, "raw_addr": 5, "dict": [5, 9, 26, 27, 28, 29], "str": [5, 8, 27, 28, 29], "amaranth": [5, 6, 8, 9, 21, 25, 26, 27, 28, 29], "hdl": [5, 6, 8, 27, 28, 29], "ast": [5, 6, 8, 27, 28, 29], "serialize_addr": 5, "addr": [5, 8, 28], "record": [5, 6, 9, 21, 26, 27, 28, 29], "icachebypass": 5, "wb_master": 5, "wishbonemast": [5, 8, 9], "haselabor": [5, 13, 27, 29], "whole": [5, 16, 18, 28], "simplewbcacherefil": 5, "instrdecompress": 5, "decompr_reg": 5, "rvc_reg": 5, "instr_mux": 5, "sel": 5, "list": [5, 6, 8, 9, 12, 13, 15, 17, 21, 27, 28, 29], "int": [5, 6, 7, 8, 9, 11, 12, 27, 28, 29], "enum": [5, 6, 8, 27, 28, 29], "valuecast": [5, 8, 27, 28, 29], "tupl": [5, 6, 8, 10, 11, 12, 27, 28, 29], "is_instr_compress": 5, "alucompon": [6, 8], "functionalcomponentparam": [6, 8, 11], "zba_en": 6, "fals": [6, 8, 26, 27, 28, 29], "zbb_enabl": 6, "get_modul": [6, 8, 11, 12], "funcunit": [6, 8, 11, 13], "get_optyp": [6, 8, 11, 12], "alufuncunit": 6, "alu_fn": 6, "alufn": 6, "object": [6, 8, 9, 26, 27], "divcompon": 6, "ipc": 6, "3": [6, 8, 12, 15, 27, 29], "div_fn": 6, "divfn": 6, "decodermanag": 6, "fn": 6, "intflag": [6, 8, 27], "div": [6, 8], "divu": [6, 8], "2": [6, 7, 8, 9, 12, 27, 28, 29], "rem": [6, 8], "remu": [6, 8], "8": [6, 7, 8, 9, 27], "__new__": [6, 8, 12, 27], "get_instruct": 6, "valid": [6, 8, 9, 10, 23], "implement": [6, 8, 9, 16, 17, 18, 22], "format": [6, 15, 26, 27, 28, 29], "option": [6, 8, 12, 15, 26, 27, 28, 29], "divunit": 6, "get_input": 6, "arg": [6, 26, 27, 28, 29], "exceptionfuncunit": 6, "unit_fn": 6, "exceptionunitfn": 6, "exceptionunitcompon": [6, 8], "respons": [6, 9, 10, 27, 28], "decode_fn": 6, "exec_fn": [6, 8], "op": [6, 8], "check_optyp": 6, "bool": [6, 8, 12, 27, 28, 29], "manag": [6, 8, 15, 17, 27, 28], "enumer": 6, "given": [6, 8, 15, 23, 26, 27, 28, 29], "get_decod": 6, "auto": 6, "pass": [6, 11, 12, 15, 17, 27, 28, 29], "contructor": 6, "get_funct": 6, "get_op_typ": 6, "jumpbranchfuncunit": 6, "jb_fn": 6, "jumpbranchfn": 6, "jumpcompon": [6, 8], "mulcompon": 6, "mul_unit_typ": 6, "multyp": 6, "dsp_width": [6, 7], "mul_fn": 6, "mulfn": 6, "hot": [6, 18, 29], "wire": 6, "5": [6, 8, 22], "differ": [6, 8, 9, 11, 16, 18, 21, 27, 28], "mul": [6, 8], "mulh": [6, 8], "mulhsu": [6, 8], "mulhu": [6, 8], "intenum": [6, 8, 12], "recursive_mul": 6, "fastest": 6, "multipli": [6, 7], "onli": [6, 12, 18, 26, 27, 28, 29], "costli": [6, 18], "term": 6, "resourc": [6, 18, 25, 26], "sequence_mul": 6, "singl": [6, 7, 8, 10, 11, 26, 27, 28, 29], "dsp": [6, 7], "balanc": 6, "between": [6, 18, 26, 27, 28], "cost": [6, 17, 26], "shift_mul": 6, "cheapest": 6, "russian": [6, 7], "peasant": [6, 7], "algorithm": [6, 7], "mulunit": 6, "unsign": [6, 7], "integ": [6, 8, 29], "standard": [6, 12, 18, 29], "funcunitlayout": [6, 8, 10, 11], "comput": [6, 7, 12, 18, 28], "mul_typ": 6, "shiftfuncunit": 6, "shift_unit_fn": 6, "shiftunitfn": 6, "shiftunitcompon": [6, 8], "clmultipli": 6, "carri": [6, 8, 25], "less": [6, 8], "product": [6, 28], "i1": [6, 7], "n": [6, 7, 8], "factor": 6, "i2": [6, 7], "reset": [6, 12, 17, 27], "new": [6, 8, 9, 17, 18, 27, 28, 29], "busi": 6, "while": [6, 27], "progress": 6, "bit_width": 6, "recursion_depth": 6, "width": [6, 7, 8, 9, 12, 28, 29], "depth": [6, 9, 28, 29], "recurs": [6, 7, 26, 29], "parallel": 6, "assum": [6, 11, 18, 28, 29], "power": [6, 29], "iterative_modul": 6, "recursive_modul": 6, "zbccompon": 6, "zbc_fn": 6, "zbcfn": 6, "clmul": [6, 8], "clmulh": [6, 8], "clmulr": [6, 8], "classmethod": [6, 27], "zbcunit": 6, "execut": [6, 8, 9, 10, 11, 17, 22, 24, 26, 27, 28], "zbsfunction": 6, "in1": 6, "in2": 6, "zbscompon": 6, "bclr": [6, 8], "bext": [6, 8], "binv": [6, 8], "bset": [6, 8], "zbsunit": 6, "zbs_fn": 6, "dspmulunit": 7, "clock": [7, 22, 25, 26, 27, 28], "design": [7, 18, 26, 27], "synthesi": [7, 17], "tool": [7, 15, 25], "o": [7, 18, 26, 27, 28], "same": [7, 8, 15, 26, 27, 28, 29], "number": [7, 8, 9, 11, 15, 18, 25, 27, 28, 29], "mulbaseunsign": 7, "unsignedmulunitlayout": [7, 8], "recursiveunsignedmul": 7, "see": [7, 21, 26], "fast": 7, "within": [7, 15], "sequentialunsignedmul": 7, "sequenti": [7, 9], "classic": [7, 18], "shiftunsignedmul": 7, "cheap": 7, "multi": 7, "coreconfigur": 8, "func_units_config": 8, "collect": [8, 11, 12, 16, 25, 27, 28, 29], "blockcomponentparam": [8, 11, 12], "reserv": [8, 12, 17, 18], "station": [8, 17], "exampl": [8, 12, 15, 17, 23, 25, 26, 27, 28, 29], "rsblockcompon": [8, 11], "rs_entri": [8, 11, 12], "lsublockcompon": 8, "compress": 8, "enabl": [8, 28], "embed": 8, "reduc": [8, 18, 27], "phys_regs_bit": 8, "physic": [8, 10, 18], "file": [8, 15, 18, 29], "rob_entries_bit": 8, "reorder": [8, 18, 28], "buffer": [8, 9, 18, 23, 28], "start_pc": 8, "initi": [8, 17], "program": [8, 18, 26], "icache_en": 8, "disabl": [8, 28], "bypass": 8, "directli": [8, 26, 27], "icache_wai": 8, "icache_sets_bit": 8, "log": [8, 18], "icache_block_size_bit": 8, "allow_partial_extens": 8, "allow": [8, 16, 18, 26, 27, 28, 29], "partial": 8, "_implied_extens": 8, "extenst": 8, "flag": 8, "specifi": [8, 9, 12, 24, 28], "intern": [8, 17, 26, 27, 29], "test": [8, 15, 21, 25, 27, 28, 29], "abc": [8, 27, 28, 29], "func_unit": [8, 11], "lsu": 8, "dummylsu": 8, "6": [8, 18], "7": 8, "true": [8, 9, 26, 27, 28, 29], "kwarg": [8, 9, 27, 29], "dependencykei": 8, "u": [8, 18], "dependencymanag": [8, 12], "concret": 8, "frozen": 8, "lock_on_get": 8, "default": [8, 9, 15, 26, 27, 28, 29], "ad": [8, 21, 25, 26, 27, 28, 29], "get_depend": 8, "empty_valid": 8, "without": [8, 10, 11, 18], "action": [8, 12, 27], "would": [8, 15, 18, 26], "caus": [8, 18, 28], "rais": [8, 18, 27, 29], "keyerror": [8, 27], "combin": [8, 11, 17, 21, 27, 28], "add_depend": 8, "them": [8, 18, 26, 27, 28, 29], "give": 8, "behavior": [8, 27], "track": 8, "across": 8, "add": [8, 26, 27, 28], "multpl": 8, "interpret": [8, 15, 28], "funcblock": [8, 10, 11, 12, 13], "get_rs_entry_count": [8, 11, 12], "optypes_support": 8, "iter": [8, 11, 12, 27, 28, 29], "dependentcach": 8, "cfg": 8, "addr_width": [8, 9], "length": [8, 18, 27, 29], "word_width": 8, "machin": [8, 12], "num_of_wai": 8, "num_of_sets_bit": 8, "block_size_bit": 8, "btypeinstr": 8, "riscvinstr": 8, "pack": 8, "ebreakinstr": 8, "itypeinstr": 8, "illegalinstr": 8, "jtypeinstr": 8, "rtypeinstr": 8, "stypeinstr": 8, "utypeinstr": 8, "exceptioncaus": 8, "breakpoint": 8, "environment_call_from_m": 8, "environment_call_from_": 8, "9": 8, "environment_call_from_u": 8, "illegal_instruct": 8, "instruction_access_fault": 8, "instruction_address_misalign": 8, "instruction_page_fault": 8, "load_access_fault": 8, "load_address_misalign": 8, "load_page_fault": 8, "store_access_fault": 8, "store_address_misalign": 8, "store_page_fault": 8, "avail": [8, 9, 10, 12, 15, 16, 25], "atom": [8, 23, 26], "b": 8, "512": 8, "manipul": 8, "256": 8, "d": [8, 26, 27], "doubl": [8, 12, 18], "precis": [8, 18], "float": 8, "point": [8, 18, 21], "64": [8, 9], "f": [8, 10, 15, 25], "98366": 8, "contain": [8, 15, 26, 27, 28, 29], "all": [8, 9, 12, 15, 17, 18, 21, 25, 26, 27, 28, 29], "basic": [8, 17], "full": [8, 15, 17, 18, 28, 29], "j": 8, "1024": 8, "dynam": [8, 18, 29], "languag": [8, 26], "l": [8, 15], "decim": 8, "m": [8, 12, 15, 18, 26, 27, 28, 29], "divis": 8, "16384": 8, "user": [8, 12, 18], "level": [8, 16, 18, 26], "interrupt": [8, 17], "p": [8, 15], "4096": 8, "simd": 8, "q": 8, "quad": 8, "2048": 8, "memori": [8, 9, 18, 28], "8192": 8, "vector": [8, 10, 17, 18], "xintmachinemod": 8, "8589934592": 8, "categor": 8, "privilieg": 8, "xintsupervisor": 8, "17179869184": 8, "supervisor": [8, 12], "zam": 8, "2097152": 8, "misalign": 8, "zba": 8, "268435456": 8, "extend": [8, 21, 27], "zbb": 8, "536870912": 8, "1073741824": 8, "2147483648": 8, "zdinx": 8, "33554432": 8, "zfh": 8, "4194304": 8, "half": 8, "zfhmin": 8, "8388608": 8, "minim": 8, "zfinx": 8, "16777216": 8, "zhinx": 8, "67108864": 8, "zicntr": 8, "524288": 8, "timer": [8, 12], "zicsr": 8, "32768": 8, "statu": [8, 12], "zifencei": 8, "65536": 8, "zihintntl": 8, "262144": 8, "non": [8, 23, 27, 28], "tempor": 8, "local": [8, 15], "hint": [8, 27], "zihintpaus": 8, "131072": 8, "paus": 8, "energi": 8, "zihpm": 8, "1048576": 8, "hardwar": [8, 17, 22, 26], "zmmul": 8, "134217728": 8, "ztso": 8, "4294967296": 8, "total": 8, "store": [8, 11, 18, 23, 24, 28, 29], "tso": 8, "dev_i": 8, "dev_o": 8, "mem_r": 8, "mem_w": 8, "clz": 8, "1536": 8, "cpop": 8, "1538": 8, "ctz": 8, "1537": 8, "ebreak": 8, "ecal": 8, "mret": 8, "770": 8, "orcb": 8, "647": 8, "rev8_32": 8, "1688": 8, "rev8_64": 8, "1720": 8, "sextb": 8, "1540": 8, "sexth": 8, "1541": 8, "sret": 8, "258": 8, "wfi": 8, "261": 8, "zexth": 8, "AND": 8, "andn": 8, "beq": 8, "bge": 8, "bgeu": 8, "blt": 8, "bltu": 8, "bne": 8, "csrrc": 8, "csrrci": 8, "csrr": 8, "csrrsi": 8, "csrrw": 8, "csrrwi": 8, "divuw": 8, "divw": 8, "fencei": 8, "h": [8, 18], "hu": 8, "jalr": 8, "max": [8, 25], "maxu": 8, "min": 8, "minu": 8, "mulw": 8, "OR": 8, "orn": 8, "priv": 8, "remuw": 8, "remw": 8, "rev8": 8, "rol": 8, "ror": 8, "sh1add": 8, "sh2add": 8, "sh3add": 8, "sll": 8, "slt": 8, "sltu": 8, "sr": 8, "sub": 8, "w": [8, 18], "xnor": 8, "xor": 8, "36": 8, "52": 8, "20": 8, "48": 8, "muldiv": 8, "sa": 8, "sfencevma": 8, "sl": 8, "gather": 8, "numer": 8, "val": [8, 29], "correspond": [8, 23, 27], "val_log": 8, "field": [8, 12, 23, 24, 26, 27, 28, 29], "relev": [8, 27], "nativ": 8, "reg_cnt": 8, "maximum": 8, "bitwis": 8, "isa_str": 8, "string": 8, "pleas": [8, 15, 21, 26], "refer": 8, "gcc": 8, "": [8, 9, 18, 26, 27, 28, 29], "arch": [8, 15], "detail": [8, 17], "instrtyp": 8, "auipc": 8, "branch": [8, 18, 25, 28], "24": 8, "jal": 8, "27": 8, "25": 8, "load": [8, 18], "load_fp": 8, "lui": 8, "misc_mem": 8, "op32": 8, "op_imm": 8, "op_imm_32": 8, "store_fp": 8, "system": [8, 26], "28": [8, 18], "a0": 8, "a1": 8, "a2": 8, "a3": 8, "a4": 8, "a5": 8, "a6": 8, "a7": 8, "17": 8, "fp": [8, 27], "gp": [8, 12], "ra": 8, "s0": 8, "s1": 8, "s10": 8, "26": 8, "s11": 8, "s2": 8, "18": 8, "s3": 8, "19": 8, "s4": 8, "s5": 8, "21": 8, "s6": 8, "22": 8, "s7": 8, "23": 8, "s8": 8, "s9": 8, "sp": 8, "t0": 8, "t1": [8, 26], "t2": [8, 26], "t3": 8, "t4": 8, "29": 8, "t5": 8, "30": [8, 18], "t6": 8, "tp": 8, "x1": 8, "x10": 8, "x11": 8, "x12": 8, "x13": 8, "x14": 8, "x15": 8, "x16": 8, "x17": 8, "x18": 8, "x19": 8, "x2": 8, "x20": 8, "x21": 8, "x22": 8, "x23": 8, "x24": 8, "x25": 8, "x26": 8, "x27": 8, "x28": 8, "x29": 8, "x3": 8, "x30": 8, "x31": 8, "x4": 8, "x5": 8, "x6": 8, "x7": 8, "x8": 8, "x9": 8, "zero": [8, 23, 28], "branchresolvedkei": 8, "unifierkei": [8, 11], "unifi": [8, 13], "alia": 8, "collector": [8, 28], "exceptionreportkei": 8, "simplekei": 8, "genericcsrregisterskei": 8, "genericcsrregist": [8, 12], "instructionprecommitkei": 8, "methodtryproduct": [8, 28], "wishbonedatakei": 8, "csrlayout": 8, "commonlayoutfield": 8, "commonli": 8, "layoutlistfield": 8, "piec": 8, "end": [8, 11, 18], "exec_fn_layout": 8, "layoutlist": 8, "op_typ": 8, "reg_id": 8, "id": [8, 10, 23, 24], "reg_val": 8, "some": [8, 12, 18, 21, 25, 26, 27, 28], "regs_l": 8, "logic": [8, 18, 24, 25, 26], "manual": [8, 25, 26], "thei": [8, 9, 12, 15, 18, 22, 26, 27, 28], "regs_p": 8, "rl_dst": 8, "destin": 8, "operand": [8, 18, 23, 24], "rl_s1": 8, "rl_s2": 8, "rob_id": 8, "entri": [8, 10, 11, 18, 22, 23, 24, 28, 29], "rp_dst": 8, "rp_s1": 8, "rp_s2": 8, "s1_val": 8, "s2_val": 8, "side_fx": 8, "side": [8, 9, 12, 18, 23, 24], "effect": [8, 12, 18, 23, 24, 27, 28], "fetcher": 8, "access_fault": 8, "fail": [8, 18], "produc": 8, "lsulayout": 8, "ratlayout": [8, 10], "tabl": [8, 17], "old_rp_dst": 8, "previous": [8, 9], "rrat": [8, 12], "rflayout": [8, 10], "assign": [8, 12, 21, 26, 27, 29], "roblayout": [8, 10], "done": [8, 18, 26, 27, 28], "yet": [8, 27], "latest": [8, 28], "rob_data": 8, "earliest": 8, "rsinterfacelayout": 8, "rs_entries_bit": 8, "data_layout": [8, 10, 28], "shapelik": [8, 27, 28, 29], "rslayout": [8, 10], "ready_list": 8, "bitmask": 8, "run": [8, 15, 25, 26, 27, 28], "schedulerlayout": 8, "regs_l_rob_in": 8, "befor": [8, 9, 15, 21, 22, 26, 28], "alloc": [8, 10, 22, 23, 24], "regs_p_alloc_out": 8, "rs_entry_id": 8, "rs_select": 8, "confus": 8, "address_gener": 8, "arithmet": 8, "bit_manipul": 8, "compar": [8, 17], "csr_imm": [8, 12], "csr_reg": [8, 12], "div_rem": 8, "33": 8, "single_bit_manipul": 8, "unary_bit_manipulation_1": 8, "unary_bit_manipulation_2": 8, "unary_bit_manipulation_3": 8, "unary_bit_manipulation_4": 8, "unary_bit_manipulation_5": 8, "unknown": [8, 15], "optypes_required_by_extens": 8, "resolve_impl": 8, "ignore_unsupport": 8, "pipelinedwishbonemast": 9, "master": [9, 25], "wb_param": 9, "wishboneparamet": 9, "max_req": 9, "limit": [9, 26, 28], "pend": 9, "wb": 9, "wishbonelayout": 9, "sent": [9, 11], "requestlayout": 9, "argument": [9, 10, 15, 17, 24, 27, 28, 29], "complet": [9, 11, 18], "state": [9, 17, 18, 26, 27, 28], "resultlayout": 9, "requests_finish": 9, "generate_method_layout": 9, "wishbonearbit": 9, "arbit": 9, "slave": 9, "assert": 9, "cyc": 9, "grant": [9, 26, 27, 28], "round": [9, 27, 29], "robin": [9, 27], "slave_wb": 9, "intefac": 9, "boolean": [9, 28], "whether": [9, 27, 29], "otherwis": 9, "wb_layout": 9, "wbmaster": 9, "being": [9, 15, 28, 29], "becom": 9, "generate_layout": 9, "wishbonememoryslav": 9, "underneath": 9, "keyword": [9, 26, 27], "underli": 9, "re": [9, 18, 21, 26, 27], "infer": [9, 27], "data_width": 9, "wishbonemux": 9, "muxer": 9, "master_wb": 9, "ssel_tga": 9, "corespond": 9, "tga": 9, "so": [9, 11, 18, 26, 27, 28], "stb": 9, "note": [9, 12, 28, 29], "stare": 9, "finish": [9, 11], "stall": [9, 12, 18], "clear": [9, 23, 24, 28, 29], "delai": [9, 26], "deassert": 9, "dat_r": 9, "dat_w": 9, "adr": 9, "singal": 9, "granular": [9, 28], "smallest": 9, "port": [9, 28], "capabl": 9, "prepar": [10, 15, 18, 27], "insert": [10, 11, 12, 13, 17, 18, 22, 23], "In": [10, 15, 16, 17, 24, 25, 26, 27, 29], "renam": [10, 22], "stuck": 10, "get_instr": 10, "get_free_reg": 10, "rat_renam": 10, "rob_put": 10, "rf_read1": 10, "rf_read2": 10, "reservation_st": 10, "decoded_instr": 10, "current": [10, 12, 18, 27], "free": [10, 17, 18, 24], "rat_rename_in": 10, "rat_rename_out": 10, "rf_read_out": 10, "rf_read_in": 10, "wakeupselect": 10, "wakeup": [10, 24], "firstli": 10, "get_readi": 10, "binari": 10, "where": [10, 18, 23, 24, 26, 27, 28], "th": [10, 28], "posit": [10, 23, 24], "row": [10, 17], "taken": 10, "take_row": 10, "get_ready_list_out": 10, "take_out": 10, "push": 10, "down": [10, 29], "resultannounc": 11, "mark": [11, 17, 18, 27], "also": [11, 15, 26, 28], "get_result": [11, 12, 13, 28], "serial": [11, 28], "more": [11, 15, 17, 18, 25], "than": [11, 18], "manytooneconnecttran": [11, 28], "rob_mark_don": 11, "rs_updat": 11, "rf_write": 11, "funcblocksunifi": 11, "extra_methods_requir": 11, "get_extra_method": 11, "item": [11, 29], "rob_peek": 11, "rob_retir": 11, "r_rat_commit": 11, "free_rf_put": 11, "rf_free": 11, "precommit": [11, 15], "exception_cause_get": 11, "frat_renam": 11, "rsfuncblock": 11, "With": 11, "csrblockcompon": 12, "csrlistkei": 12, "listkei": 12, "csrregist": 12, "behaviour": 12, "automat": [12, 15, 29], "csrunit": 12, "bodi": [12, 26, 27, 28], "csr_val": 12, "els": [12, 18, 26, 27], "_fu_read": 12, "_fu_writ": 12, "other": [12, 17, 26, 27, 28], "ignor": 12, "prioriti": [12, 26, 27, 28, 29], "csr_number": 12, "ro_bit": 12, "mask": [12, 28], "those": [12, 18, 27], "upper": 12, "0b11": 12, "discard": 12, "regitst": 12, "unitl": 12, "place": [12, 18, 23, 26, 27, 28], "put": [12, 23, 28], "receiv": [12, 26, 27, 28], "fetch_continu": 12, "resum": 12, "privilegelevel": 12, "csr_access_privileg": 12, "csr_addr": 12, "csraddress": 12, "3072": 12, "cycleh": 12, "3200": 12, "instret": 12, "3074": 12, "instreth": 12, "3202": 12, "mcaus": 12, "834": 12, "3073": 12, "timeh": 12, "3201": 12, "doublecountercsr": 12, "group": 12, "At": 12, "overflow": [12, 28], "low_addr": 12, "high_addr": 12, "repres": [12, 27], "lower": [12, 29], "part": [12, 18, 22, 26, 27, 28], "higher": 12, "synthetis": 12, "exceptioncauseregist": 12, "rob_get_indic": 12, "should_update_priorii": 12, "tmodul": [12, 26, 27, 28], "current_caus": 12, "new_caus": 12, "frat": 12, "registerfil": 12, "reorderbuff": 12, "ready_for": 12, "target": [13, 28], "transactron": [13, 17, 26], "below": 15, "instal": [15, 25], "python": [15, 26, 27, 29], "pip": 15, "virtual": 15, "python3": 15, "venv": 15, "project": [15, 16, 18, 25], "directori": [15, 16], "activ": [15, 28], "bin": 15, "librari": [15, 17, 28], "pip3": 15, "dev": 15, "txt": 15, "riscv64": 15, "elf": 15, "binutil": 15, "your": [15, 21], "favourit": 15, "On": [15, 28], "debian": 15, "distro": 15, "hook": [15, 27], "pre": 15, "linter": 15, "ci": [15, 25], "intend": [15, 27], "By": [15, 27, 28], "test_transact": 15, "One": [15, 18, 26, 28, 29], "even": [15, 18, 26, 27, 28], "testschedul": 15, "Or": [15, 26], "test_singl": 15, "search": 15, "name": [15, 25, 26, 27, 28, 29], "match": [15, 23, 24, 29], "queri": 15, "thank": 15, "uniqu": 15, "just": [15, 26], "help": [15, 18, 25], "find": [15, 18], "parameter": 15, "waveform": 15, "vcd": 15, "gtkw": [15, 29], "gtkwave": [15, 29], "__traces__": 15, "debug": [15, 29], "driven": 15, "verbos": [15, 25], "runner": 15, "print": 15, "check": [15, 18, 21, 23, 24, 27, 29], "code": [15, 16, 18, 21, 26, 27, 28, 29], "subcommand": 15, "filenam": 15, "main": [15, 18, 22], "reformat": 15, "black": 15, "check_format": 15, "verifi": 15, "flake8": 15, "check_typ": 15, "pyright": 15, "confront": 15, "messag": 15, "you": [15, 21, 23, 25], "mai": [15, 25], "diff": 15, "displai": 15, "chang": [15, 23, 26, 28], "appli": [15, 18, 21, 27], "chose": 15, "locat": [15, 16, 22], "visual": 15, "architectur": [15, 18], "appropri": [15, 23, 28], "prune": [15, 27], "remov": [15, 18], "disconnect": 15, "node": 15, "elk": [15, 27], "eclips": 15, "kernel": [15, 18], "dot": [15, 27], "graphviz": 15, "mermaid": [15, 27], "document": [15, 17], "sphinx": 15, "html": [15, 16], "build": [15, 25], "coreblock": [16, 21, 25], "go": [16, 18, 21, 27], "processor": [16, 17, 22], "microarchitectur": 16, "focu": 16, "flexibl": [16, 22], "easili": [16, 28], "experi": 16, "doc": 16, "descript": [16, 17], "overview": [16, 17, 18], "high": 16, "found": 16, "version": 16, "page": [16, 18], "api": [16, 17], "kuznia": 16, "rdzeni": 16, "github": 16, "io": 16, "introduct": 17, "assumpt": [17, 18], "made": [17, 18, 26], "develop": 17, "environ": 17, "up": [17, 24, 29], "script": [17, 25], "run_test": 17, "py": [17, 25], "lint": 17, "sh": 17, "core_graph": 17, "build_doc": 17, "framework": [17, 23], "usag": 17, "convent": 17, "definit": [17, 27], "advanc": 17, "concept": 17, "special": 17, "domain": [17, 21, 27], "conflict": [17, 27], "nest": [17, 28], "schema": 17, "structur": [17, 18, 23, 26, 29], "proposit": [17, 18], "slot": 17, "substitut": 17, "clean": 17, "extern": [17, 26, 27], "problem": [17, 18], "checklist": 17, "benchmark": 17, "map": [17, 18, 27, 28, 29], "summari": 17, "paper": 17, "about": 17, "old": 17, "softwar": 17, "tlb": 17, "analysi": 17, "strategi": 17, "igpu": 17, "specul": 17, "gpu": 17, "effici": 17, "journal": 18, "articl": 18, "look": 18, "choic": 18, "primari": 18, "relat": [18, 27], "determin": [18, 29], "procedur": 18, "chosen": 18, "basi": 18, "improv": [18, 26], "pretti": 18, "1993": 18, "2001": 18, "much": 18, "research": 18, "cpu": 18, "consid": [18, 26, 28], "solv": 18, "instead": [18, 21, 26, 27, 28], "try": [18, 21, 26], "due": [18, 27], "characterist": 18, "easi": [18, 21, 26], "our": [18, 22], "decid": [18, 22, 26], "what": 18, "peopl": 18, "probabl": 18, "lot": 18, "worth": 18, "walker": 18, "cragon": 18, "concurr": [18, 27], "ieee": 18, "vol": 18, "june": 18, "1995": 18, "moudgil": 18, "vassiliadi": 18, "micro": 18, "pp": 18, "58": 18, "67": 18, "februari": 18, "1996": 18, "These": [18, 25, 26], "present": [18, 26, 28, 29], "survei": 18, "topic": 18, "cdc": 18, "6600": 18, "jump": 18, "handler": 18, "ibm360": 18, "stop": [18, 28], "crai": 18, "similar": [18, 26, 28, 29], "here": [18, 23], "bigger": 18, "torng": 18, "martin": 18, "dai": 18, "probe": 18, "veri": [18, 26], "idea": [18, 26], "author": 18, "window": 18, "iw": 18, "dispatch": [18, 22, 23, 24], "didn": 18, "context": [18, 27, 28], "copi": [18, 27], "restor": 18, "restart": 18, "few": 18, "encod": 18, "big": 18, "overhead": 18, "origin": [18, 27, 28], "unfeas": 18, "becaus": [18, 26, 27, 28], "job": 18, "addition": 18, "But": 18, "mayb": [18, 26], "possibl": [18, 26, 28, 29], "cooper": 18, "smaller": 18, "interest": 18, "propos": 18, "nrp": 18, "No": [18, 28], "itself": 18, "don": [18, 21, 23, 26, 27], "wast": 18, "rememb": [18, 26, 27], "how": [18, 23, 25], "mani": [18, 25, 26, 28], "element": [18, 28], "left": [18, 26, 27], "middl": [18, 22], "aamer": 18, "jaleel": 18, "bruce": 18, "jacob": 18, "cours": 18, "switch": [18, 23, 26, 27, 28, 29], "penalti": 18, "alpha": 18, "mip": 18, "concentr": 18, "properti": [18, 27], "short": 18, "inlin": 18, "observ": 18, "import": [18, 26], "enough": 18, "live": 18, "lock": [18, 26, 28], "known": 18, "fly": 18, "swap": 18, "nop": 18, "reexecut": 18, "indic": [18, 24, 27], "privileg": 18, "correct": [18, 23, 24], "contrast": 18, "tendenc": 18, "longer": 18, "hard": 18, "risk": [18, 26, 28], "linux": [18, 25], "purpos": [18, 27], "addit": [18, 26], "hw": 18, "bore": 18, "treat": [18, 22], "mansur": 18, "samadzadeh": 18, "loai": 18, "garalnabi": 18, "checkpoint": 18, "repair": 18, "histori": 18, "futur": [18, 22, 23], "jaikrishnan": 18, "menon": 18, "marc": 18, "de": 18, "kruijf": 18, "karthikeyan": 18, "sankaralingam": 18, "2012": 18, "To": [18, 25], "low": 18, "boundari": 18, "safe": [18, 26, 29], "rewritten": 18, "recompil": 18, "runtim": 18, "region": 18, "subregion": 18, "begin": 18, "small": 18, "overrid": 18, "barrier": 18, "warp": 18, "wrong": 18, "split": [18, 22, 28], "prevent": 18, "ivan": 18, "tanas": 18, "isaac": 18, "gelado": 18, "jorda": 18, "eduard": 18, "ayguad": 18, "nacho": 18, "navarro": 18, "2017": 18, "analys": 18, "problemat": 18, "successfulli": 18, "kill": 18, "modif": 18, "usual": [18, 26], "repli": 18, "modifi": [18, 28], "claim": 18, "doesn": [18, 21, 26, 29], "replai": 18, "queue": [18, 26, 28, 29], "marker": 18, "jerom": 18, "hampton": 18, "2008": 18, "mention": 18, "alli": 18, "bailei": 18, "ab04": 18, "ag": 18, "younger": 18, "repeat": 18, "commun": [18, 23, 26], "canon": 18, "eventu": 18, "aren": [18, 26, 28], "someth": [21, 26], "puzzl": 21, "why": 21, "through": 21, "sure": 21, "yield": 21, "testbenchio": 21, "notabl": 21, "settl": 21, "unexpect": 21, "right": [21, 26, 27], "eq": [21, 26, 27], "statement": [21, 26, 27, 29], "loop": [21, 26], "especi": 21, "simul": [21, 28], "hang": 21, "spot": 21, "yourself": [21, 25, 26], "fix": 21, "mistak": 21, "Its": [22, 26], "task": [22, 27], "rss": 22, "phase": 22, "choos": 22, "potenti": 22, "merg": 22, "optim": 22, "todo": 22, "want": [23, 27], "feel": 23, "anyth": 23, "id_out": [23, 24], "id_rob": [23, 24], "id_rs1": [23, 24], "val_rs1": [23, 24], "id_rs2": [23, 24], "val_rs2": [23, 24], "fill": 23, "id_rsx": 23, "val_rsx": 23, "both": [23, 26, 27, 28, 29], "releas": 23, "comparison": 23, "null": [23, 24], "woken": 24, "invalid": 24, "src1": [24, 28], "src2": [24, 28], "inst_readi": 24, "synthes": 25, "circuit": [25, 26, 27], "consum": 25, "grow": 25, "yosi": 25, "prjtrelli": 25, "nextpnr": 25, "ecp5": 25, "compil": [25, 26], "git": 25, "repositori": 25, "docker": 25, "imag": 25, "vuush": 25, "synth": 25, "amaranthsynthecp5": 25, "dockerfil": 25, "command": 25, "platform": [25, 26, 27], "amd64": 25, "parse_benchmark_info": 25, "pars": 25, "extract": [25, 27], "frequenc": 25, "cell": 25, "ram": 25, "dff": 25, "dedic": 25, "subpag": 25, "modular": 26, "inspir": 26, "bluespec": 26, "wiki": 26, "entrieti": 26, "doe": 26, "link": 26, "indirectli": [26, 27], "coordin": 26, "avoid": 26, "caller": [26, 27, 28], "direct": [26, 27, 28, 29], "back": 26, "simplest": 26, "myth": 26, "def": [26, 27], "elabor": 26, "self": 26, "condit": [26, 27, 28], "includ": [26, 27, 28, 29], "comb": [26, 27], "sig1": 26, "expr1": 26, "sync": [26, 27], "sig2": 26, "expr2": 26, "arg_expr": 26, "analog": 26, "multiplex": 26, "onc": [26, 27, 28], "typic": [26, 27, 28], "declar": 26, "myotherth": 26, "my_method": 26, "input_layout": 26, "output_layout": 26, "def_method": [26, 27], "_": [26, 27], "other_method": 26, "ret_expr": 26, "techniqu": 26, "abov": 26, "conveni": [26, 27], "syntax": [26, 27], "particular": 26, "unnam": 26, "could": 26, "around": 26, "sometim": 26, "might": [26, 27], "altern": [26, 27, 28], "best": 26, "question": 26, "ask": 26, "thing": [26, 29], "doubt": 26, "prefer": 26, "noth": 26, "Such": 26, "adaptertran": [26, 28], "though": 26, "cleaner": 26, "suppos": 26, "foo": 26, "bar": 26, "cleanest": 26, "recommend": 26, "foo_expr": 26, "bar_expr": 26, "final": 26, "rec": 26, "layout2": 26, "foobar": 26, "baz": 26, "42": 26, "method2": [26, 28], "baz_expr": 26, "method3": 26, "express": 26, "expr": 26, "mechan": [26, 28], "certain": 26, "occas": 26, "facilit": 26, "ones": 26, "connecttran": [26, 28], "togeth": [26, 27], "plain": [26, 27, 28], "testbench": [26, 28], "own": [26, 27], "variant": 26, "role": 26, "omit": [26, 27, 28], "unneed": 26, "av_comb": [26, 27], "top_comb": [26, 27], "avoidedif": [26, 27], "guard": [26, 27, 28], "therefor": 26, "induc": 26, "often": 26, "belong": 26, "move": [26, 28], "top": 26, "caveat": 26, "normal": 26, "cannot": [26, 27, 28], "exist": 26, "schedule_befor": 26, "first_t_or_m": 26, "other_t_or_m": 26, "lift": 26, "first_m": 26, "other_t": 26, "situat": [26, 27], "mutual": [26, 28], "exclus": [26, 27, 28], "similarli": 26, "add_conflict": [26, 27], "undefin": [26, 27], "other_m": 26, "come": 26, "increas": [26, 28], "featur": 26, "consider": 26, "parent": 26, "convers": 26, "impli": 26, "transactionbas": 27, "serv": 27, "simultena": 27, "transactionmanag": 27, "rest": 27, "must": 27, "combination": 27, "data_out": [27, 28], "data_in": [27, 28], "_rec": [27, 28, 29], "layoutlik": [27, 28, 29], "nonexclus": 27, "single_cal": [27, 28], "variabl": [27, 29], "happen": 27, "thrown": 27, "const": 27, "d1": 27, "d0": 27, "validate_argu": 27, "callabl": [27, 28], "combinationi": 27, "valuelik": 27, "my_sum_method": 27, "arg1": 27, "arg2": 27, "sum": 27, "view": [27, 28, 29], "signalbundl": [27, 28, 29], "static": 27, "construct": [27, 28], "blueprint": 27, "freshli": 27, "proxi": 27, "priorit": 27, "modulelik": [27, 28, 29], "amount": 27, "useless": 27, "multplex": 27, "unguard": 27, "path": [27, 28], "synchron": [27, 28], "cond": 27, "pattern": 27, "elif": 27, "fsm": 27, "noreturn": 27, "regularli": 27, "met": 27, "explicit": 27, "implicit": 27, "aris": 27, "pair": [27, 28], "transactioncontext": 27, "stack": 27, "care": 27, "never": 27, "cc_schedul": 27, "methodmap": [27, 28], "dsl": 27, "eager_deterministic_cc_schedul": 27, "add_transact": 27, "visual_graph": 27, "fragment": 27, "transactionmodul": 27, "wrapper": 27, "wrap": 27, "transaction_context": 27, "decor": 27, "eleg": 27, "dictionari": 27, "whose": 27, "method_map": 27, "gr": 27, "cc": 27, "porder": 27, "eager": 27, "subsystem": 27, "isn": 27, "fair": 27, "lowest": 27, "highest": 27, "arbitr": 27, "agent": 27, "transactiongraph": 27, "vertic": 27, "edg": [27, 28], "priorityord": 27, "linear": 27, "consist": 27, "constraint": 27, "trivial_roundrobin_cc_schedul": 27, "mainli": 27, "IN": 27, "inout": 27, "owner": 27, "ownershipgraph": 27, "root": 27, "dump": 27, "liter": [27, 29], "dump_dot": 27, "indent": 27, "dump_elk": 27, "dump_mermaid": 27, "get_hier_nam": 27, "obj": 27, "hierarch": 27, "get_nam": 27, "insert_edg": 27, "fr": 27, "insert_nod": 27, "mermaid_direct": 27, "empti": [27, 28, 29], "subgraph": 27, "remember_field": 27, "owner_id": 27, "tracingenabl": 27, "tracingfrag": 27, "lose": 27, "too": 27, "difficult": 27, "exact": 27, "copyright": 27, "subfrag": 27, "ir": 27, "tracingfragmenttransform": 27, "fragmenttransform": 27, "on_frag": 27, "tracinginst": 27, "adapterbas": 28, "mock": 28, "en": 28, "ifac": 28, "clickin": 28, "click": 28, "interact": 28, "fpga": 28, "rise": 28, "btn": 28, "dat": 28, "retriev": 28, "clickout": 28, "led": 28, "flow": 28, "revers": 28, "possibli": 28, "rev_layout": 28, "vice": 28, "versa": 28, "compat": 28, "method1": 28, "respect": 28, "fulfil": 28, "fifo_typ": 28, "syncfifo": 28, "fifotyp": 28, "conform": 28, "further": 28, "equival": 28, "put_result": 28, "argumentstoresultszipp": 28, "zip": 28, "cut": 28, "critic": 28, "calle": 28, "asymmetri": 28, "correctli": 28, "rate": 28, "reach": 28, "capac": 28, "topologi": 28, "write_arg": 28, "args_layout": 28, "write_result": 28, "results_layout": 28, "client": 28, "somethig": 28, "server": 28, "deseri": 28, "proper": 28, "serialize_in": 28, "serialized_req_method": 28, "serialize_out": 28, "serialized_resp_method": 28, "port_count": 28, "len": 28, "resist": 28, "nonblock": 28, "overlap": 28, "catch": 28, "reason": 28, "influenc": 28, "cond1": 28, "cond2": 28, "memorybank": 28, "read_req": 28, "read_resp": 28, "elem_count": 28, "safe_writ": 28, "optimis": 28, "throughput": 28, "eg": 28, "x": 28, "later": 28, "cattran": 28, "concaten": 28, "third": 28, "dst": 28, "ident": 28, "method_list": 28, "connectandmaptran": 28, "behav": 28, "i_fun": 28, "recorddict": 28, "o_fun": 28, "methodfilt": 28, "filter": 28, "desir": 28, "use_condit": 28, "drawback": 28, "exponenti": 28, "complex": 28, "union": 28, "simultaneu": 28, "bidirect": 28, "i_transform": 28, "o_transform": 28, "unmodifi": 28, "methodproduct": 28, "arbitrari": 28, "tri": 28, "succeed": 28, "auto_debug_sign": 29, "arrai": 29, "basicfifo": 29, "reiniti": 29, "init": 29, "paramt": 29, "semaphor": 29, "max_count": 29, "assigntyp": 29, "rh": 29, "moduleconnector": 29, "anonym": 29, "onehotswitch": 29, "style": 29, "benefit": 29, "represent": 29, "sig": 29, "onehotcas": 29, "0b01": 29, "0b10": 29, "onehotswitchdynam": 29, "signifi": 29, "align_down_to_power_of_two": 29, "num": 29, "align_to_power_of_two": 29, "lh": 29, "assignarg": 29, "assignfield": 29, "lhs_strict": 29, "rhs_strict": 29, "structlayout": 29, "mismatch": 29, "accord": 29, "explicitli": 29, "shape": 29, "castabl": 29, "subrecord": 29, "valueerror": 29, "bits_from_int": 29, "count_leading_zero": 29, "count_trailing_zero": 29, "flatten_sign": 29, "flatten": 29, "make_hash": 29, "mod_incr": 29, "mod": 29, "popcount": 29, "silence_mustus": 29}, "objects": {"": [[4, 0, 0, "-", "coreblocks"], [27, 0, 0, "-", "transactron"]], "coreblocks": [[4, 0, 0, "-", "core"], [5, 0, 0, "-", "frontend"], [6, 0, 0, "-", "fu"], [8, 0, 0, "-", "params"], [9, 0, 0, "-", "peripherals"], [10, 0, 0, "-", "scheduler"], [11, 0, 0, "-", "stages"], [12, 0, 0, "-", "structs_common"], [13, 0, 0, "-", "utils"]], "coreblocks.core": [[4, 1, 1, "", "Core"]], "coreblocks.core.Core": [[4, 2, 1, "", "__init__"]], "coreblocks.frontend": [[5, 0, 0, "-", "decode"], [5, 0, 0, "-", "decoder"], [5, 0, 0, "-", "fetch"], [5, 0, 0, "-", "icache"], [5, 0, 0, "-", "rvc"]], "coreblocks.frontend.decode": [[5, 1, 1, "", "Decode"]], "coreblocks.frontend.decode.Decode": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.decoder": [[5, 1, 1, "", "InstrDecoder"]], "coreblocks.frontend.decoder.InstrDecoder": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.fetch": [[5, 1, 1, "", "Fetch"], [5, 1, 1, "", "UnalignedFetch"]], "coreblocks.frontend.fetch.Fetch": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.fetch.UnalignedFetch": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.icache": [[5, 1, 1, "", "ICache"], [5, 1, 1, "", "ICacheBypass"], [5, 1, 1, "", "ICacheInterface"], [5, 1, 1, "", "SimpleWBCacheRefiller"]], "coreblocks.frontend.icache.ICache": [[5, 2, 1, "", "__init__"], [5, 2, 1, "", "deserialize_addr"], [5, 2, 1, "", "serialize_addr"]], "coreblocks.frontend.icache.ICacheBypass": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.icache.ICacheInterface": [[5, 3, 1, "", "accept_res"], [5, 3, 1, "", "flush"], [5, 3, 1, "", "issue_req"]], "coreblocks.frontend.icache.SimpleWBCacheRefiller": [[5, 2, 1, "", "__init__"]], "coreblocks.frontend.rvc": [[5, 1, 1, "", "InstrDecompress"], [5, 4, 1, "", "is_instr_compressed"]], "coreblocks.frontend.rvc.InstrDecompress": [[5, 2, 1, "", "__init__"], [5, 2, 1, "", "decompr_reg"], [5, 2, 1, "", "instr_mux"]], "coreblocks.fu": [[6, 0, 0, "-", "alu"], [6, 0, 0, "-", "div_unit"], [6, 0, 0, "-", "exception"], [6, 0, 0, "-", "fu_decoder"], [6, 0, 0, "-", "jumpbranch"], [6, 0, 0, "-", "mul_unit"], [6, 0, 0, "-", "shift_unit"], [7, 0, 0, "-", "unsigned_multiplication"], [6, 0, 0, "-", "zbc"], [6, 0, 0, "-", "zbs"]], "coreblocks.fu.alu": [[6, 1, 1, "", "ALUComponent"], [6, 1, 1, "", "AluFuncUnit"]], "coreblocks.fu.alu.ALUComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.alu.AluFuncUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.div_unit": [[6, 1, 1, "", "DivComponent"], [6, 1, 1, "", "DivFn"], [6, 1, 1, "", "DivUnit"], [6, 4, 1, "", "get_input"]], "coreblocks.fu.div_unit.DivComponent": [[6, 2, 1, "", "__init__"], [6, 3, 1, "", "div_fn"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"], [6, 3, 1, "", "ipc"]], "coreblocks.fu.div_unit.DivFn": [[6, 1, 1, "", "Fn"], [6, 2, 1, "", "get_instructions"]], "coreblocks.fu.div_unit.DivFn.Fn": [[6, 3, 1, "", "DIV"], [6, 3, 1, "", "DIVU"], [6, 3, 1, "", "REM"], [6, 3, 1, "", "REMU"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.div_unit.DivUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.exception": [[6, 1, 1, "", "ExceptionFuncUnit"], [6, 1, 1, "", "ExceptionUnitComponent"]], "coreblocks.fu.exception.ExceptionFuncUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.exception.ExceptionUnitComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.fu_decoder": [[6, 1, 1, "", "Decoder"], [6, 1, 1, "", "DecoderManager"]], "coreblocks.fu.fu_decoder.Decoder": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.fu_decoder.DecoderManager": [[6, 3, 1, "", "Fn"], [6, 2, 1, "", "get_decoder"], [6, 2, 1, "", "get_function"], [6, 2, 1, "", "get_instructions"], [6, 2, 1, "", "get_op_types"]], "coreblocks.fu.jumpbranch": [[6, 1, 1, "", "JumpBranchFuncUnit"], [6, 1, 1, "", "JumpComponent"]], "coreblocks.fu.jumpbranch.JumpBranchFuncUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.jumpbranch.JumpComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.mul_unit": [[6, 1, 1, "", "MulComponent"], [6, 1, 1, "", "MulFn"], [6, 1, 1, "", "MulType"], [6, 1, 1, "", "MulUnit"]], "coreblocks.fu.mul_unit.MulComponent": [[6, 2, 1, "", "__init__"], [6, 3, 1, "", "dsp_width"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"], [6, 3, 1, "", "mul_fn"], [6, 3, 1, "", "mul_unit_type"]], "coreblocks.fu.mul_unit.MulFn": [[6, 1, 1, "", "Fn"], [6, 2, 1, "", "get_instructions"]], "coreblocks.fu.mul_unit.MulFn.Fn": [[6, 3, 1, "", "MUL"], [6, 3, 1, "", "MULH"], [6, 3, 1, "", "MULHSU"], [6, 3, 1, "", "MULHU"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.mul_unit.MulType": [[6, 3, 1, "", "RECURSIVE_MUL"], [6, 3, 1, "", "SEQUENCE_MUL"], [6, 3, 1, "", "SHIFT_MUL"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.mul_unit.MulUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.shift_unit": [[6, 1, 1, "", "ShiftFuncUnit"], [6, 1, 1, "", "ShiftUnitComponent"]], "coreblocks.fu.shift_unit.ShiftFuncUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.shift_unit.ShiftUnitComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.unsigned_multiplication": [[7, 0, 0, "-", "common"], [7, 0, 0, "-", "fast_recursive"], [7, 0, 0, "-", "sequence"], [7, 0, 0, "-", "shift"]], "coreblocks.fu.unsigned_multiplication.common": [[7, 1, 1, "", "DSPMulUnit"], [7, 1, 1, "", "MulBaseUnsigned"]], "coreblocks.fu.unsigned_multiplication.common.DSPMulUnit": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.common.MulBaseUnsigned": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.fast_recursive": [[7, 1, 1, "", "RecursiveUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.fast_recursive.RecursiveUnsignedMul": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.sequence": [[7, 1, 1, "", "SequentialUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.sequence.SequentialUnsignedMul": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.unsigned_multiplication.shift": [[7, 1, 1, "", "ShiftUnsignedMul"]], "coreblocks.fu.unsigned_multiplication.shift.ShiftUnsignedMul": [[7, 2, 1, "", "__init__"]], "coreblocks.fu.zbc": [[6, 1, 1, "", "ClMultiplier"], [6, 1, 1, "", "ZbcComponent"], [6, 1, 1, "", "ZbcFn"], [6, 1, 1, "", "ZbcUnit"]], "coreblocks.fu.zbc.ClMultiplier": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "iterative_module"], [6, 2, 1, "", "recursive_module"]], "coreblocks.fu.zbc.ZbcComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"], [6, 3, 1, "", "recursion_depth"], [6, 3, 1, "", "zbc_fn"]], "coreblocks.fu.zbc.ZbcFn": [[6, 1, 1, "", "Fn"], [6, 2, 1, "", "get_instructions"]], "coreblocks.fu.zbc.ZbcFn.Fn": [[6, 3, 1, "", "CLMUL"], [6, 3, 1, "", "CLMULH"], [6, 3, 1, "", "CLMULR"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.zbc.ZbcUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.zbs": [[6, 1, 1, "", "Zbs"], [6, 1, 1, "", "ZbsComponent"], [6, 1, 1, "", "ZbsFunction"], [6, 1, 1, "", "ZbsUnit"]], "coreblocks.fu.zbs.Zbs": [[6, 2, 1, "", "__init__"]], "coreblocks.fu.zbs.ZbsComponent": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "get_module"], [6, 2, 1, "", "get_optypes"]], "coreblocks.fu.zbs.ZbsFunction": [[6, 1, 1, "", "Fn"], [6, 2, 1, "", "get_instructions"]], "coreblocks.fu.zbs.ZbsFunction.Fn": [[6, 3, 1, "", "BCLR"], [6, 3, 1, "", "BEXT"], [6, 3, 1, "", "BINV"], [6, 3, 1, "", "BSET"], [6, 2, 1, "", "__new__"]], "coreblocks.fu.zbs.ZbsUnit": [[6, 2, 1, "", "__init__"]], "coreblocks.params": [[8, 0, 0, "-", "configurations"], [8, 0, 0, "-", "dependencies"], [8, 0, 0, "-", "fu_params"], [8, 0, 0, "-", "genparams"], [8, 0, 0, "-", "icache_params"], [8, 0, 0, "-", "instr"], [8, 0, 0, "-", "isa"], [8, 0, 0, "-", "keys"], [8, 0, 0, "-", "layouts"], [8, 0, 0, "-", "optypes"]], "coreblocks.params.configurations": [[8, 1, 1, "", "CoreConfiguration"]], "coreblocks.params.configurations.CoreConfiguration": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "allow_partial_extensions"], [8, 3, 1, "", "compressed"], [8, 3, 1, "", "embedded"], [8, 3, 1, "", "func_units_config"], [8, 3, 1, "", "icache_block_size_bits"], [8, 3, 1, "", "icache_enable"], [8, 3, 1, "", "icache_sets_bits"], [8, 3, 1, "", "icache_ways"], [8, 3, 1, "", "phys_regs_bits"], [8, 2, 1, "", "replace"], [8, 3, 1, "", "rob_entries_bits"], [8, 3, 1, "", "start_pc"], [8, 3, 1, "", "xlen"]], "coreblocks.params.dependencies": [[8, 1, 1, "", "DependencyKey"], [8, 1, 1, "", "DependencyManager"]], "coreblocks.params.dependencies.DependencyKey": [[8, 2, 1, "", "combine"], [8, 3, 1, "", "empty_valid"], [8, 3, 1, "", "lock_on_get"]], "coreblocks.params.dependencies.DependencyManager": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "add_dependency"], [8, 2, 1, "", "get_dependency"]], "coreblocks.params.fu_params": [[8, 1, 1, "", "BlockComponentParams"], [8, 1, 1, "", "FunctionalComponentParams"], [8, 4, 1, "", "optypes_supported"]], "coreblocks.params.fu_params.BlockComponentParams": [[8, 2, 1, "", "get_module"], [8, 2, 1, "", "get_optypes"], [8, 2, 1, "", "get_rs_entry_count"]], "coreblocks.params.fu_params.FunctionalComponentParams": [[8, 2, 1, "", "get_module"], [8, 2, 1, "", "get_optypes"]], "coreblocks.params.genparams": [[8, 1, 1, "", "GenParams"]], "coreblocks.params.genparams.GenParams": [[8, 2, 1, "", "__init__"]], "coreblocks.params.icache_params": [[8, 1, 1, "", "ICacheParameters"]], "coreblocks.params.icache_params.ICacheParameters": [[8, 2, 1, "", "__init__"]], "coreblocks.params.instr": [[8, 1, 1, "", "BTypeInstr"], [8, 1, 1, "", "EBreakInstr"], [8, 1, 1, "", "ITypeInstr"], [8, 1, 1, "", "IllegalInstr"], [8, 1, 1, "", "JTypeInstr"], [8, 1, 1, "", "RTypeInstr"], [8, 1, 1, "", "STypeInstr"], [8, 1, 1, "", "UTypeInstr"]], "coreblocks.params.instr.BTypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.EBreakInstr": [[8, 2, 1, "", "__init__"]], "coreblocks.params.instr.ITypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.IllegalInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.JTypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.RTypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.STypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.instr.UTypeInstr": [[8, 2, 1, "", "__init__"], [8, 2, 1, "", "pack"]], "coreblocks.params.isa": [[8, 1, 1, "", "ExceptionCause"], [8, 1, 1, "", "Extension"], [8, 1, 1, "", "FenceFm"], [8, 1, 1, "", "FenceTarget"], [8, 1, 1, "", "Funct12"], [8, 1, 1, "", "Funct3"], [8, 1, 1, "", "Funct7"], [8, 1, 1, "", "ISA"], [8, 1, 1, "", "InstrType"], [8, 1, 1, "", "Opcode"], [8, 1, 1, "", "Registers"]], "coreblocks.params.isa.ExceptionCause": [[8, 3, 1, "", "BREAKPOINT"], [8, 3, 1, "", "ENVIRONMENT_CALL_FROM_M"], [8, 3, 1, "", "ENVIRONMENT_CALL_FROM_S"], [8, 3, 1, "", "ENVIRONMENT_CALL_FROM_U"], [8, 3, 1, "", "ILLEGAL_INSTRUCTION"], [8, 3, 1, "", "INSTRUCTION_ACCESS_FAULT"], [8, 3, 1, "", "INSTRUCTION_ADDRESS_MISALIGNED"], [8, 3, 1, "", "INSTRUCTION_PAGE_FAULT"], [8, 3, 1, "", "LOAD_ACCESS_FAULT"], [8, 3, 1, "", "LOAD_ADDRESS_MISALIGNED"], [8, 3, 1, "", "LOAD_PAGE_FAULT"], [8, 3, 1, "", "STORE_ACCESS_FAULT"], [8, 3, 1, "", "STORE_ADDRESS_MISALIGNED"], [8, 3, 1, "", "STORE_PAGE_FAULT"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Extension": [[8, 3, 1, "", "A"], [8, 3, 1, "", "B"], [8, 3, 1, "", "C"], [8, 3, 1, "", "D"], [8, 3, 1, "", "E"], [8, 3, 1, "", "F"], [8, 3, 1, "", "G"], [8, 3, 1, "", "I"], [8, 3, 1, "", "J"], [8, 3, 1, "", "L"], [8, 3, 1, "", "M"], [8, 3, 1, "", "N"], [8, 3, 1, "", "P"], [8, 3, 1, "", "Q"], [8, 3, 1, "", "T"], [8, 3, 1, "", "V"], [8, 3, 1, "", "XINTMACHINEMODE"], [8, 3, 1, "", "XINTSUPERVISOR"], [8, 3, 1, "", "ZAM"], [8, 3, 1, "", "ZBA"], [8, 3, 1, "", "ZBB"], [8, 3, 1, "", "ZBC"], [8, 3, 1, "", "ZBS"], [8, 3, 1, "", "ZDINX"], [8, 3, 1, "", "ZFH"], [8, 3, 1, "", "ZFHMIN"], [8, 3, 1, "", "ZFINX"], [8, 3, 1, "", "ZHINX"], [8, 3, 1, "", "ZICNTR"], [8, 3, 1, "", "ZICSR"], [8, 3, 1, "", "ZIFENCEI"], [8, 3, 1, "", "ZIHINTNTL"], [8, 3, 1, "", "ZIHINTPAUSE"], [8, 3, 1, "", "ZIHPM"], [8, 3, 1, "", "ZMMUL"], [8, 3, 1, "", "ZTSO"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.FenceFm": [[8, 3, 1, "", "NONE"], [8, 3, 1, "", "TSO"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.FenceTarget": [[8, 3, 1, "", "DEV_I"], [8, 3, 1, "", "DEV_O"], [8, 3, 1, "", "MEM_R"], [8, 3, 1, "", "MEM_W"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct12": [[8, 3, 1, "", "CLZ"], [8, 3, 1, "", "CPOP"], [8, 3, 1, "", "CTZ"], [8, 3, 1, "", "EBREAK"], [8, 3, 1, "", "ECALL"], [8, 3, 1, "", "MRET"], [8, 3, 1, "", "ORCB"], [8, 3, 1, "", "REV8_32"], [8, 3, 1, "", "REV8_64"], [8, 3, 1, "", "SEXTB"], [8, 3, 1, "", "SEXTH"], [8, 3, 1, "", "SRET"], [8, 3, 1, "", "WFI"], [8, 3, 1, "", "ZEXTH"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct3": [[8, 3, 1, "", "ADD"], [8, 3, 1, "", "AND"], [8, 3, 1, "", "ANDN"], [8, 3, 1, "", "B"], [8, 3, 1, "", "BCLR"], [8, 3, 1, "", "BEQ"], [8, 3, 1, "", "BEXT"], [8, 3, 1, "", "BGE"], [8, 3, 1, "", "BGEU"], [8, 3, 1, "", "BINV"], [8, 3, 1, "", "BLT"], [8, 3, 1, "", "BLTU"], [8, 3, 1, "", "BNE"], [8, 3, 1, "", "BSET"], [8, 3, 1, "", "BU"], [8, 3, 1, "", "CLMUL"], [8, 3, 1, "", "CLMULH"], [8, 3, 1, "", "CLMULR"], [8, 3, 1, "", "CLZ"], [8, 3, 1, "", "CPOP"], [8, 3, 1, "", "CSRRC"], [8, 3, 1, "", "CSRRCI"], [8, 3, 1, "", "CSRRS"], [8, 3, 1, "", "CSRRSI"], [8, 3, 1, "", "CSRRW"], [8, 3, 1, "", "CSRRWI"], [8, 3, 1, "", "CTZ"], [8, 3, 1, "", "D"], [8, 3, 1, "", "DIV"], [8, 3, 1, "", "DIVU"], [8, 3, 1, "", "DIVUW"], [8, 3, 1, "", "DIVW"], [8, 3, 1, "", "FENCE"], [8, 3, 1, "", "FENCEI"], [8, 3, 1, "", "H"], [8, 3, 1, "", "HU"], [8, 3, 1, "", "JALR"], [8, 3, 1, "", "MAX"], [8, 3, 1, "", "MAXU"], [8, 3, 1, "", "MIN"], [8, 3, 1, "", "MINU"], [8, 3, 1, "", "MUL"], [8, 3, 1, "", "MULH"], [8, 3, 1, "", "MULHSU"], [8, 3, 1, "", "MULHU"], [8, 3, 1, "", "MULW"], [8, 3, 1, "", "OR"], [8, 3, 1, "", "ORCB"], [8, 3, 1, "", "ORN"], [8, 3, 1, "", "PRIV"], [8, 3, 1, "", "REM"], [8, 3, 1, "", "REMU"], [8, 3, 1, "", "REMUW"], [8, 3, 1, "", "REMW"], [8, 3, 1, "", "REV8"], [8, 3, 1, "", "ROL"], [8, 3, 1, "", "ROR"], [8, 3, 1, "", "SEXTB"], [8, 3, 1, "", "SEXTH"], [8, 3, 1, "", "SH1ADD"], [8, 3, 1, "", "SH2ADD"], [8, 3, 1, "", "SH3ADD"], [8, 3, 1, "", "SLL"], [8, 3, 1, "", "SLT"], [8, 3, 1, "", "SLTU"], [8, 3, 1, "", "SR"], [8, 3, 1, "", "SUB"], [8, 3, 1, "", "W"], [8, 3, 1, "", "XNOR"], [8, 3, 1, "", "XOR"], [8, 3, 1, "", "ZEXTH"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Funct7": [[8, 3, 1, "", "ADD"], [8, 3, 1, "", "AND"], [8, 3, 1, "", "ANDN"], [8, 3, 1, "", "BCLR"], [8, 3, 1, "", "BEXT"], [8, 3, 1, "", "BINV"], [8, 3, 1, "", "BSET"], [8, 3, 1, "", "CLMUL"], [8, 3, 1, "", "CLZ"], [8, 3, 1, "", "CPOP"], [8, 3, 1, "", "CTZ"], [8, 3, 1, "", "MAX"], [8, 3, 1, "", "MIN"], [8, 3, 1, "", "MULDIV"], [8, 3, 1, "", "OR"], [8, 3, 1, "", "ORCB"], [8, 3, 1, "", "ORN"], [8, 3, 1, "", "REV8"], [8, 3, 1, "", "ROL"], [8, 3, 1, "", "ROR"], [8, 3, 1, "", "SA"], [8, 3, 1, "", "SEXTB"], [8, 3, 1, "", "SEXTH"], [8, 3, 1, "", "SFENCEVMA"], [8, 3, 1, "", "SH1ADD"], [8, 3, 1, "", "SH2ADD"], [8, 3, 1, "", "SH3ADD"], [8, 3, 1, "", "SL"], [8, 3, 1, "", "SLT"], [8, 3, 1, "", "SUB"], [8, 3, 1, "", "XNOR"], [8, 3, 1, "", "XOR"], [8, 3, 1, "", "ZEXTH"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.ISA": [[8, 2, 1, "", "__init__"]], "coreblocks.params.isa.InstrType": [[8, 3, 1, "", "B"], [8, 3, 1, "", "I"], [8, 3, 1, "", "J"], [8, 3, 1, "", "R"], [8, 3, 1, "", "S"], [8, 3, 1, "", "U"]], "coreblocks.params.isa.Opcode": [[8, 3, 1, "", "AUIPC"], [8, 3, 1, "", "BRANCH"], [8, 3, 1, "", "JAL"], [8, 3, 1, "", "JALR"], [8, 3, 1, "", "LOAD"], [8, 3, 1, "", "LOAD_FP"], [8, 3, 1, "", "LUI"], [8, 3, 1, "", "MISC_MEM"], [8, 3, 1, "", "OP"], [8, 3, 1, "", "OP32"], [8, 3, 1, "", "OP_IMM"], [8, 3, 1, "", "OP_IMM_32"], [8, 3, 1, "", "STORE"], [8, 3, 1, "", "STORE_FP"], [8, 3, 1, "", "SYSTEM"], [8, 2, 1, "", "__new__"]], "coreblocks.params.isa.Registers": [[8, 3, 1, "", "A0"], [8, 3, 1, "", "A1"], [8, 3, 1, "", "A2"], [8, 3, 1, "", "A3"], [8, 3, 1, "", "A4"], [8, 3, 1, "", "A5"], [8, 3, 1, "", "A6"], [8, 3, 1, "", "A7"], [8, 3, 1, "", "FP"], [8, 3, 1, "", "GP"], [8, 3, 1, "", "RA"], [8, 3, 1, "", "S0"], [8, 3, 1, "", "S1"], [8, 3, 1, "", "S10"], [8, 3, 1, "", "S11"], [8, 3, 1, "", "S2"], [8, 3, 1, "", "S3"], [8, 3, 1, "", "S4"], [8, 3, 1, "", "S5"], [8, 3, 1, "", "S6"], [8, 3, 1, "", "S7"], [8, 3, 1, "", "S8"], [8, 3, 1, "", "S9"], [8, 3, 1, "", "SP"], [8, 3, 1, "", "T0"], [8, 3, 1, "", "T1"], [8, 3, 1, "", "T2"], [8, 3, 1, "", "T3"], [8, 3, 1, "", "T4"], [8, 3, 1, "", "T5"], [8, 3, 1, "", "T6"], [8, 3, 1, "", "TP"], [8, 3, 1, "", "X0"], [8, 3, 1, "", "X1"], [8, 3, 1, "", "X10"], [8, 3, 1, "", "X11"], [8, 3, 1, "", "X12"], [8, 3, 1, "", "X13"], [8, 3, 1, "", "X14"], [8, 3, 1, "", "X15"], [8, 3, 1, "", "X16"], [8, 3, 1, "", "X17"], [8, 3, 1, "", "X18"], [8, 3, 1, "", "X19"], [8, 3, 1, "", "X2"], [8, 3, 1, "", "X20"], [8, 3, 1, "", "X21"], [8, 3, 1, "", "X22"], [8, 3, 1, "", "X23"], [8, 3, 1, "", "X24"], [8, 3, 1, "", "X25"], [8, 3, 1, "", "X26"], [8, 3, 1, "", "X27"], [8, 3, 1, "", "X28"], [8, 3, 1, "", "X29"], [8, 3, 1, "", "X3"], [8, 3, 1, "", "X30"], [8, 3, 1, "", "X31"], [8, 3, 1, "", "X4"], [8, 3, 1, "", "X5"], [8, 3, 1, "", "X6"], [8, 3, 1, "", "X7"], [8, 3, 1, "", "X8"], [8, 3, 1, "", "X9"], [8, 3, 1, "", "ZERO"], [8, 2, 1, "", "__new__"]], "coreblocks.params.keys": [[8, 1, 1, "", "BranchResolvedKey"], [8, 1, 1, "", "ExceptionReportKey"], [8, 1, 1, "", "GenericCSRRegistersKey"], [8, 1, 1, "", "InstructionPrecommitKey"], [8, 1, 1, "", "WishboneDataKey"]], "coreblocks.params.keys.BranchResolvedKey": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "unifier"]], "coreblocks.params.keys.ExceptionReportKey": [[8, 2, 1, "", "__init__"]], "coreblocks.params.keys.GenericCSRRegistersKey": [[8, 2, 1, "", "__init__"]], "coreblocks.params.keys.InstructionPrecommitKey": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "unifier"]], "coreblocks.params.keys.WishboneDataKey": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts": [[8, 1, 1, "", "CSRLayouts"], [8, 1, 1, "", "CommonLayoutFields"], [8, 1, 1, "", "DecodeLayouts"], [8, 1, 1, "", "FetchLayouts"], [8, 1, 1, "", "FuncUnitLayouts"], [8, 1, 1, "", "ICacheLayouts"], [8, 1, 1, "", "LSULayouts"], [8, 1, 1, "", "RATLayouts"], [8, 1, 1, "", "RFLayouts"], [8, 1, 1, "", "ROBLayouts"], [8, 1, 1, "", "RSInterfaceLayouts"], [8, 1, 1, "", "RSLayouts"], [8, 1, 1, "", "SchedulerLayouts"], [8, 1, 1, "", "UnsignedMulUnitLayouts"]], "coreblocks.params.layouts.CSRLayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts.CommonLayoutFields": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "addr"], [8, 3, 1, "", "cause"], [8, 3, 1, "", "csr"], [8, 3, 1, "", "data"], [8, 3, 1, "", "error"], [8, 3, 1, "", "exception"], [8, 3, 1, "", "exec_fn"], [8, 3, 1, "", "exec_fn_layout"], [8, 3, 1, "", "funct3"], [8, 3, 1, "", "funct7"], [8, 3, 1, "", "imm"], [8, 3, 1, "", "instr"], [8, 3, 1, "", "op_type"], [8, 3, 1, "", "pc"], [8, 3, 1, "", "reg_id"], [8, 3, 1, "", "reg_val"], [8, 3, 1, "", "regs_l"], [8, 3, 1, "", "regs_p"], [8, 3, 1, "", "rl_dst"], [8, 3, 1, "", "rl_s1"], [8, 3, 1, "", "rl_s2"], [8, 3, 1, "", "rob_id"], [8, 3, 1, "", "rp_dst"], [8, 3, 1, "", "rp_s1"], [8, 3, 1, "", "rp_s2"], [8, 3, 1, "", "s1_val"], [8, 3, 1, "", "s2_val"], [8, 3, 1, "", "side_fx"]], "coreblocks.params.layouts.DecodeLayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts.FetchLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "access_fault"], [8, 3, 1, "", "rvc"]], "coreblocks.params.layouts.FuncUnitLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "result"]], "coreblocks.params.layouts.ICacheLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "error"]], "coreblocks.params.layouts.LSULayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RATLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "old_rp_dst"]], "coreblocks.params.layouts.RFLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "valid"]], "coreblocks.params.layouts.ROBLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "done"], [8, 3, 1, "", "end"], [8, 3, 1, "", "rob_data"], [8, 3, 1, "", "start"]], "coreblocks.params.layouts.RSInterfaceLayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RSLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "ready_list"]], "coreblocks.params.layouts.SchedulerLayouts": [[8, 2, 1, "", "__init__"], [8, 3, 1, "", "regs_l_rob_in"], [8, 3, 1, "", "regs_p_alloc_out"], [8, 3, 1, "", "rs_entry_id"], [8, 3, 1, "", "rs_selected"]], "coreblocks.params.layouts.UnsignedMulUnitLayouts": [[8, 2, 1, "", "__init__"]], "coreblocks.params.optypes": [[8, 1, 1, "", "OpType"], [8, 4, 1, "", "optypes_required_by_extensions"]], "coreblocks.params.optypes.OpType": [[8, 3, 1, "", "ADDRESS_GENERATION"], [8, 3, 1, "", "ARITHMETIC"], [8, 3, 1, "", "AUIPC"], [8, 3, 1, "", "BIT_MANIPULATION"], [8, 3, 1, "", "BRANCH"], [8, 3, 1, "", "CLMUL"], [8, 3, 1, "", "COMPARE"], [8, 3, 1, "", "CSR_IMM"], [8, 3, 1, "", "CSR_REG"], [8, 3, 1, "", "DIV_REM"], [8, 3, 1, "", "EBREAK"], [8, 3, 1, "", "ECALL"], [8, 3, 1, "", "EXCEPTION"], [8, 3, 1, "", "FENCE"], [8, 3, 1, "", "FENCEI"], [8, 3, 1, "", "JAL"], [8, 3, 1, "", "JALR"], [8, 3, 1, "", "LOAD"], [8, 3, 1, "", "LOGIC"], [8, 3, 1, "", "MRET"], [8, 3, 1, "", "MUL"], [8, 3, 1, "", "SFENCEVMA"], [8, 3, 1, "", "SHIFT"], [8, 3, 1, "", "SINGLE_BIT_MANIPULATION"], [8, 3, 1, "", "SRET"], [8, 3, 1, "", "STORE"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_1"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_2"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_3"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_4"], [8, 3, 1, "", "UNARY_BIT_MANIPULATION_5"], [8, 3, 1, "", "UNKNOWN"], [8, 3, 1, "", "WFI"], [8, 2, 1, "", "__new__"]], "coreblocks.peripherals": [[9, 0, 0, "-", "wishbone"]], "coreblocks.peripherals.wishbone": [[9, 1, 1, "", "PipelinedWishboneMaster"], [9, 1, 1, "", "WishboneArbiter"], [9, 1, 1, "", "WishboneBus"], [9, 1, 1, "", "WishboneLayout"], [9, 1, 1, "", "WishboneMaster"], [9, 1, 1, "", "WishboneMemorySlave"], [9, 1, 1, "", "WishboneMuxer"], [9, 1, 1, "", "WishboneParameters"]], "coreblocks.peripherals.wishbone.PipelinedWishboneMaster": [[9, 2, 1, "", "__init__"], [9, 2, 1, "", "generate_method_layouts"]], "coreblocks.peripherals.wishbone.WishboneArbiter": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneBus": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneLayout": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMaster": [[9, 2, 1, "", "__init__"], [9, 2, 1, "", "generate_layouts"]], "coreblocks.peripherals.wishbone.WishboneMemorySlave": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneMuxer": [[9, 2, 1, "", "__init__"]], "coreblocks.peripherals.wishbone.WishboneParameters": [[9, 2, 1, "", "__init__"]], "coreblocks.scheduler": [[10, 0, 0, "-", "scheduler"], [10, 0, 0, "-", "wakeup_select"]], "coreblocks.scheduler.scheduler": [[10, 1, 1, "", "Scheduler"]], "coreblocks.scheduler.scheduler.Scheduler": [[10, 2, 1, "", "__init__"]], "coreblocks.scheduler.wakeup_select": [[10, 1, 1, "", "WakeupSelect"]], "coreblocks.scheduler.wakeup_select.WakeupSelect": [[10, 2, 1, "", "__init__"]], "coreblocks.stages": [[11, 0, 0, "-", "backend"], [11, 0, 0, "-", "func_blocks_unifier"], [11, 0, 0, "-", "retirement"], [11, 0, 0, "-", "rs_func_block"]], "coreblocks.stages.backend": [[11, 1, 1, "", "ResultAnnouncement"]], "coreblocks.stages.backend.ResultAnnouncement": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "debug_signals"]], "coreblocks.stages.func_blocks_unifier": [[11, 1, 1, "", "FuncBlocksUnifier"]], "coreblocks.stages.func_blocks_unifier.FuncBlocksUnifier": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "get_extra_method"]], "coreblocks.stages.retirement": [[11, 1, 1, "", "Retirement"]], "coreblocks.stages.retirement.Retirement": [[11, 2, 1, "", "__init__"]], "coreblocks.stages.rs_func_block": [[11, 1, 1, "", "RSBlockComponent"], [11, 1, 1, "", "RSFuncBlock"]], "coreblocks.stages.rs_func_block.RSBlockComponent": [[11, 2, 1, "", "__init__"], [11, 3, 1, "", "func_units"], [11, 2, 1, "", "get_module"], [11, 2, 1, "", "get_optypes"], [11, 2, 1, "", "get_rs_entry_count"], [11, 3, 1, "", "rs_entries"]], "coreblocks.stages.rs_func_block.RSFuncBlock": [[11, 2, 1, "", "__init__"]], "coreblocks.structs_common": [[12, 0, 0, "-", "csr"], [12, 0, 0, "-", "csr_generic"], [12, 0, 0, "-", "exception"], [12, 0, 0, "-", "rat"], [12, 0, 0, "-", "rf"], [12, 0, 0, "-", "rob"], [12, 0, 0, "-", "rs"]], "coreblocks.structs_common.csr": [[12, 1, 1, "", "CSRBlockComponent"], [12, 1, 1, "", "CSRListKey"], [12, 1, 1, "", "CSRRegister"], [12, 1, 1, "", "CSRUnit"], [12, 1, 1, "", "PrivilegeLevel"], [12, 4, 1, "", "csr_access_privilege"]], "coreblocks.structs_common.csr.CSRBlockComponent": [[12, 2, 1, "", "get_module"], [12, 2, 1, "", "get_optypes"], [12, 2, 1, "", "get_rs_entry_count"]], "coreblocks.structs_common.csr.CSRListKey": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.CSRRegister": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.CSRUnit": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr.PrivilegeLevel": [[12, 3, 1, "", "MACHINE"], [12, 3, 1, "", "SUPERVISOR"], [12, 3, 1, "", "USER"], [12, 2, 1, "", "__new__"]], "coreblocks.structs_common.csr_generic": [[12, 1, 1, "", "CSRAddress"], [12, 1, 1, "", "DoubleCounterCSR"], [12, 1, 1, "", "GenericCSRRegisters"]], "coreblocks.structs_common.csr_generic.CSRAddress": [[12, 3, 1, "", "CYCLE"], [12, 3, 1, "", "CYCLEH"], [12, 3, 1, "", "INSTRET"], [12, 3, 1, "", "INSTRETH"], [12, 3, 1, "", "MCAUSE"], [12, 3, 1, "", "TIME"], [12, 3, 1, "", "TIMEH"], [12, 2, 1, "", "__new__"]], "coreblocks.structs_common.csr_generic.DoubleCounterCSR": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.csr_generic.GenericCSRRegisters": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.exception": [[12, 1, 1, "", "ExceptionCauseRegister"], [12, 4, 1, "", "should_update_prioriy"]], "coreblocks.structs_common.exception.ExceptionCauseRegister": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rat": [[12, 1, 1, "", "FRAT"], [12, 1, 1, "", "RRAT"]], "coreblocks.structs_common.rat.FRAT": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rat.RRAT": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rf": [[12, 1, 1, "", "RegisterFile"]], "coreblocks.structs_common.rf.RegisterFile": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rob": [[12, 1, 1, "", "ReorderBuffer"]], "coreblocks.structs_common.rob.ReorderBuffer": [[12, 2, 1, "", "__init__"]], "coreblocks.structs_common.rs": [[12, 1, 1, "", "RS"]], "coreblocks.structs_common.rs.RS": [[12, 2, 1, "", "__init__"]], "coreblocks.utils": [[13, 0, 0, "-", "protocols"]], "coreblocks.utils.protocols": [[13, 1, 1, "", "FuncBlock"], [13, 1, 1, "", "FuncUnit"], [13, 1, 1, "", "Unifier"]], "coreblocks.utils.protocols.FuncBlock": [[13, 3, 1, "", "get_result"], [13, 3, 1, "", "insert"], [13, 3, 1, "", "select"], [13, 3, 1, "", "update"]], "coreblocks.utils.protocols.FuncUnit": [[13, 3, 1, "", "accept"], [13, 3, 1, "", "issue"]], "coreblocks.utils.protocols.Unifier": [[13, 2, 1, "", "__init__"], [13, 3, 1, "", "method"]], "transactron": [[27, 1, 1, "", "Method"], [27, 1, 1, "", "TModule"], [27, 1, 1, "", "Transaction"], [27, 1, 1, "", "TransactionContext"], [27, 1, 1, "", "TransactionManager"], [27, 1, 1, "", "TransactionModule"], [27, 0, 0, "-", "core"], [27, 4, 1, "", "def_method"], [27, 0, 0, "-", "graph"], [28, 0, 0, "-", "lib"], [27, 0, 0, "-", "tracing"], [29, 0, 0, "-", "utils"]], "transactron.Method": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "body"], [27, 2, 1, "", "debug_signals"], [27, 2, 1, "", "like"], [27, 2, 1, "", "proxy"]], "transactron.TModule": [[27, 2, 1, "", "AvoidedIf"], [27, 2, 1, "", "Case"], [27, 2, 1, "", "Default"], [27, 2, 1, "", "Elif"], [27, 2, 1, "", "Else"], [27, 2, 1, "", "FSM"], [27, 2, 1, "", "If"], [27, 2, 1, "", "State"], [27, 2, 1, "", "Switch"], [27, 2, 1, "", "__init__"], [27, 5, 1, "", "next"]], "transactron.Transaction": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "body"], [27, 2, 1, "", "debug_signals"]], "transactron.TransactionContext": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "get"], [27, 3, 1, "", "stack"]], "transactron.TransactionManager": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "add_transaction"], [27, 2, 1, "", "debug_signals"], [27, 2, 1, "", "visual_graph"]], "transactron.TransactionModule": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "transaction_context"]], "transactron.core": [[27, 1, 1, "", "Method"], [27, 1, 1, "", "Priority"], [27, 1, 1, "", "TModule"], [27, 1, 1, "", "Transaction"], [27, 1, 1, "", "TransactionContext"], [27, 1, 1, "", "TransactionManager"], [27, 1, 1, "", "TransactionModule"], [27, 4, 1, "", "def_method"], [27, 4, 1, "", "eager_deterministic_cc_scheduler"], [27, 4, 1, "", "trivial_roundrobin_cc_scheduler"]], "transactron.core.Method": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "body"], [27, 2, 1, "", "debug_signals"], [27, 2, 1, "", "like"], [27, 2, 1, "", "proxy"]], "transactron.core.Priority": [[27, 3, 1, "", "LEFT"], [27, 3, 1, "", "RIGHT"], [27, 3, 1, "", "UNDEFINED"]], "transactron.core.TModule": [[27, 2, 1, "", "AvoidedIf"], [27, 2, 1, "", "Case"], [27, 2, 1, "", "Default"], [27, 2, 1, "", "Elif"], [27, 2, 1, "", "Else"], [27, 2, 1, "", "FSM"], [27, 2, 1, "", "If"], [27, 2, 1, "", "State"], [27, 2, 1, "", "Switch"], [27, 2, 1, "", "__init__"], [27, 5, 1, "", "next"]], "transactron.core.Transaction": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "body"], [27, 2, 1, "", "debug_signals"]], "transactron.core.TransactionContext": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "get"], [27, 3, 1, "", "stack"]], "transactron.core.TransactionManager": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "add_transaction"], [27, 2, 1, "", "debug_signals"], [27, 2, 1, "", "visual_graph"]], "transactron.core.TransactionModule": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "transaction_context"]], "transactron.graph": [[27, 1, 1, "", "Direction"], [27, 1, 1, "", "Owned"], [27, 1, 1, "", "OwnershipGraph"]], "transactron.graph.Direction": [[27, 3, 1, "", "IN"], [27, 3, 1, "", "INOUT"], [27, 3, 1, "", "NONE"], [27, 3, 1, "", "OUT"], [27, 2, 1, "", "__new__"]], "transactron.graph.Owned": [[27, 2, 1, "", "__init__"], [27, 3, 1, "", "name"], [27, 3, 1, "", "owner"]], "transactron.graph.OwnershipGraph": [[27, 2, 1, "", "__init__"], [27, 2, 1, "", "dump"], [27, 2, 1, "", "dump_dot"], [27, 2, 1, "", "dump_elk"], [27, 2, 1, "", "dump_mermaid"], [27, 2, 1, "", "get_hier_name"], [27, 2, 1, "", "get_name"], [27, 2, 1, "", "insert_edge"], [27, 2, 1, "", "insert_node"], [27, 3, 1, "", "mermaid_direction"], [27, 2, 1, "", "prune"], [27, 2, 1, "", "remember"], [27, 2, 1, "", "remember_field"]], "transactron.lib": [[28, 0, 0, "-", "adapters"], [28, 0, 0, "-", "buttons"], [28, 0, 0, "-", "connectors"], [28, 0, 0, "-", "reqres"], [28, 0, 0, "-", "simultaneous"], [28, 0, 0, "-", "storage"], [28, 0, 0, "-", "transformers"]], "transactron.lib.adapters": [[28, 1, 1, "", "Adapter"], [28, 1, 1, "", "AdapterBase"], [28, 1, 1, "", "AdapterTrans"]], "transactron.lib.adapters.Adapter": [[28, 2, 1, "", "__init__"]], "transactron.lib.adapters.AdapterBase": [[28, 2, 1, "", "__init__"], [28, 3, 1, "", "data_in"], [28, 3, 1, "", "data_out"], [28, 2, 1, "", "debug_signals"]], "transactron.lib.adapters.AdapterTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.buttons": [[28, 1, 1, "", "ClickIn"], [28, 1, 1, "", "ClickOut"]], "transactron.lib.buttons.ClickIn": [[28, 2, 1, "", "__init__"]], "transactron.lib.buttons.ClickOut": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors": [[28, 1, 1, "", "Connect"], [28, 1, 1, "", "ConnectTrans"], [28, 1, 1, "", "FIFO"], [28, 1, 1, "", "Forwarder"], [28, 1, 1, "", "ManyToOneConnectTrans"]], "transactron.lib.connectors.Connect": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors.ConnectTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors.FIFO": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors.Forwarder": [[28, 2, 1, "", "__init__"]], "transactron.lib.connectors.ManyToOneConnectTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.reqres": [[28, 1, 1, "", "ArgumentsToResultsZipper"], [28, 1, 1, "", "Serializer"]], "transactron.lib.reqres.ArgumentsToResultsZipper": [[28, 2, 1, "", "__init__"]], "transactron.lib.reqres.Serializer": [[28, 2, 1, "", "__init__"]], "transactron.lib.simultaneous": [[28, 4, 1, "", "condition"]], "transactron.lib.storage": [[28, 1, 1, "", "MemoryBank"]], "transactron.lib.storage.MemoryBank": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers": [[28, 1, 1, "", "CatTrans"], [28, 1, 1, "", "Collector"], [28, 1, 1, "", "ConnectAndMapTrans"], [28, 1, 1, "", "MethodFilter"], [28, 1, 1, "", "MethodMap"], [28, 1, 1, "", "MethodProduct"], [28, 1, 1, "", "MethodTryProduct"], [28, 1, 1, "", "Transformer"]], "transactron.lib.transformers.CatTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.Collector": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.ConnectAndMapTrans": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodFilter": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodMap": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodProduct": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.MethodTryProduct": [[28, 2, 1, "", "__init__"]], "transactron.lib.transformers.Transformer": [[28, 3, 1, "", "method"], [28, 2, 1, "", "use"]], "transactron.tracing": [[27, 1, 1, "", "TracingEnabler"], [27, 1, 1, "", "TracingFragment"], [27, 1, 1, "", "TracingFragmentTransformer"], [27, 1, 1, "", "TracingInstance"]], "transactron.tracing.TracingFragment": [[27, 2, 1, "", "get"], [27, 2, 1, "", "prepare"], [27, 3, 1, "", "subfragments"]], "transactron.tracing.TracingFragmentTransformer": [[27, 2, 1, "", "on_fragment"]], "transactron.tracing.TracingInstance": [[27, 2, 1, "", "get"]], "transactron.utils": [[29, 0, 0, "-", "debug_signals"], [29, 0, 0, "-", "fifo"], [29, 0, 0, "-", "utils"]], "transactron.utils.debug_signals": [[29, 4, 1, "", "auto_debug_signals"]], "transactron.utils.fifo": [[29, 1, 1, "", "BasicFifo"], [29, 1, 1, "", "Semaphore"]], "transactron.utils.fifo.BasicFifo": [[29, 2, 1, "", "__init__"]], "transactron.utils.fifo.Semaphore": [[29, 2, 1, "", "__init__"]], "transactron.utils.utils": [[29, 1, 1, "", "AssignType"], [29, 1, 1, "", "ModuleConnector"], [29, 4, 1, "", "OneHotSwitch"], [29, 4, 1, "", "OneHotSwitchDynamic"], [29, 4, 1, "", "align_down_to_power_of_two"], [29, 4, 1, "", "align_to_power_of_two"], [29, 4, 1, "", "assign"], [29, 4, 1, "", "bits_from_int"], [29, 4, 1, "", "count_leading_zeros"], [29, 4, 1, "", "count_trailing_zeros"], [29, 4, 1, "", "flatten_signals"], [29, 4, 1, "", "make_hashable"], [29, 4, 1, "", "mod_incr"], [29, 4, 1, "", "popcount"], [29, 4, 1, "", "silence_mustuse"]], "transactron.utils.utils.AssignType": [[29, 3, 1, "", "ALL"], [29, 3, 1, "", "COMMON"], [29, 3, 1, "", "RHS"]], "transactron.utils.utils.ModuleConnector": [[29, 2, 1, "", "__init__"]]}, "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, 17, 19, 26], "transactron": [0, 20, 27, 28, 29], "list": 1, "assumpt": [1, 3], "made": 1, "dure": 1, "develop": [1, 15], "instruct": [3, 24], "cach": 3, "interfac": [3, 23, 24], "address": 3, "map": 3, "exampl": 3, "packag": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29], "subpackag": [4, 6, 27], "submodul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29], "core": [4, 27], "modul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29], "content": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 28, 29], "frontend": 5, "decod": 5, "fetch": 5, "icach": 5, "rvc": 5, "fu": [6, 7], "alu": 6, "div_unit": 6, "except": [6, 12, 18], "fu_decod": 6, "jumpbranch": 6, "mul_unit": 6, "shift_unit": 6, "zbc": 6, "zb": 6, "unsigned_multipl": 7, "common": 7, "fast_recurs": 7, "sequenc": 7, "shift": 7, "param": 8, "configur": 8, "depend": 8, "fu_param": 8, "genparam": 8, "icache_param": 8, "instr": 8, "isa": 8, "kei": 8, "layout": 8, "optyp": 8, "peripher": 9, "wishbon": 9, "schedul": [10, 22, 26], "wakeup_select": 10, "stage": 11, "backend": 11, "func_blocks_unifi": 11, "retir": 11, "rs_func_block": 11, "structs_common": 12, "csr": 12, "csr_gener": 12, "rat": 12, "rf": 12, "rob": 12, "r": 12, "util": [13, 29], "protocol": 13, "full": 14, "transact": [14, 26], "method": [14, 23, 24, 26], "graph": [14, 27], "environ": 15, "set": 15, "up": 15, "us": [15, 23, 24], "script": 15, "run_test": 15, "py": 15, "lint": 15, "sh": 15, "core_graph": 15, "build_doc": 15, "introduct": [16, 18, 26], "document": [16, 25, 26], "summari": 18, "paper": 18, "about": 18, "interrupt": 18, "handl": 18, "old": 18, "pc": 18, "out": 18, "order": [18, 26], "execut": 18, "processor": 18, "In": 18, "line": 18, "softwar": 18, "manag": 18, "tlb": 18, "hardwar": 18, "cost": 18, "analysi": 18, "process": 18, "strategi": 18, "igpu": 18, "support": 18, "specul": 18, "gpu": 18, "effici": 18, "other": 18, "problem": 21, "checklist": 21, "overview": [22, 24], "descript": 22, "schema": 22, "structur": 22, "more": 22, "detail": 22, "each": 22, "block": 22, "proposit": 23, "reserv": [23, 24], "station": [23, 24], "implement": [23, 26], "intern": 23, "data": 23, "actual": 23, "slot": [23, 24], "tabl": 23, "compar": [23, 24], "substitut": [23, 24], "read": [23, 24], "row": [23, 24], "clean": [23, 24], "get": [23, 24], "free": 23, "mark": [23, 24], "extern": [23, 24], "all": [23, 24], "reset": 24, "initi": 24, "state": 24, "insert": 24, "new": 24, "readi": [24, 26], "vector": 24, "signal": [24, 26], "synthesi": 25, "requir": 25, "usag": [25, 26], "benchmark": 25, "framework": 26, "basic": 26, "argument": 26, "pass": 26, "convent": 26, "definit": 26, "return": 26, "valu": 26, "The": 26, "librari": 26, "advanc": 26, "concept": 26, "special": 26, "combin": 26, "domain": 26, "conflict": 26, "nest": 26, "trace": 27, "lib": 28, "adapt": 28, "button": 28, "connector": 28, "reqr": 28, "simultan": 28, "storag": 28, "transform": 28, "debug_sign": 29, "fifo": 29}, "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 f78d5300d..cce8d92ba 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, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/shared-structs/rs.html b/shared-structs/rs.html index 071ebbe4a..7e6feb3db 100644 --- a/shared-structs/rs.html +++ b/shared-structs/rs.html @@ -222,7 +222,7 @@

External interface signals

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/synthesis/synthesis.html b/synthesis/synthesis.html index bcbf3e491..d07708323 100644 --- a/synthesis/synthesis.html +++ b/synthesis/synthesis.html @@ -151,7 +151,7 @@

Benchmarks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/transactions.html b/transactions.html index 35a1dc6cb..7c2d1afa2 100644 --- a/transactions.html +++ b/transactions.html @@ -409,7 +409,7 @@

Transaction and method nesting

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/transactron.html b/transactron.html index 698071f0b..9408a7bb5 100644 --- a/transactron.html +++ b/transactron.html @@ -1329,7 +1329,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/transactron.lib.html b/transactron.lib.html index 39b71ab82..6e3a7f2c8 100644 --- a/transactron.lib.html +++ b/transactron.lib.html @@ -732,9 +732,11 @@

Submodules
Attributes
@@ -745,7 +747,7 @@

Submodules
-__init__(target: Method, condition: Callable[[TModule, Record], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable], default: Optional[Union[Value, int, Enum, ValueCastable, Mapping[str, amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, RecordDict]]]] = None)
+__init__(target: Method, condition: Callable[[TModule, Record], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable], default: Optional[Union[Value, int, Enum, ValueCastable, Mapping[str, amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, RecordDict]]]] = None, use_condition: bool = False)
Parameters
@@ -757,6 +759,9 @@

Submodulesbool

Instead of m.If use simultaneus condition which allow to execute +this filter if the condition is False and target is not ready.

+

@@ -931,7 +936,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.

diff --git a/transactron.utils.html b/transactron.utils.html index 85f27a8d1..9d2ae00db 100644 --- a/transactron.utils.html +++ b/transactron.utils.html @@ -426,7 +426,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 17:08 2023-12-03. + Last updated on 18:50 2023-12-03.