From 741df1857628242a6ed6811ef7d56868945b5c71 Mon Sep 17 00:00:00 2001 From: tilk Date: Sun, 24 Mar 2024 21:22:32 +0000 Subject: [PATCH] Remove riscvmodel dependency (#627) --- .doctrees/api.doctree | Bin 21253 -> 21253 bytes .doctrees/auto_graph.doctree | Bin 44181 -> 44170 bytes .doctrees/coreblocks.params.doctree | Bin 265757 -> 294694 bytes .doctrees/current-graph.doctree | Bin 45402 -> 45391 bytes .doctrees/environment.pickle | Bin 503922 -> 505265 bytes _sources/auto_graph.rst.txt | 306 ++++++++--------- api.html | 2 +- assumptions.html | 2 +- auto_graph.html | 308 +++++++++--------- components/icache.html | 2 +- coreblocks.backend.html | 2 +- coreblocks.cache.html | 2 +- coreblocks.core_structs.html | 2 +- coreblocks.frontend.decoder.html | 2 +- coreblocks.frontend.fetch.html | 2 +- coreblocks.frontend.html | 2 +- coreblocks.func_blocks.fu.html | 2 +- ...unc_blocks.fu.unsigned_multiplication.html | 2 +- coreblocks.func_blocks.html | 2 +- coreblocks.func_blocks.interface.html | 2 +- coreblocks.func_blocks.lsu.html | 2 +- coreblocks.html | 2 +- coreblocks.params.html | 37 ++- coreblocks.peripherals.html | 2 +- coreblocks.priv.csr.html | 2 +- coreblocks.priv.html | 2 +- coreblocks.priv.traps.html | 2 +- coreblocks.scheduler.html | 2 +- current-graph.html | 308 +++++++++--------- development-environment.html | 2 +- genindex.html | 22 +- home.html | 2 +- index.html | 2 +- miscellany/exceptions-summary.html | 2 +- modules-coreblocks.html | 2 +- modules-transactron.html | 2 +- objects.inv | Bin 10491 -> 10520 bytes problem-checklist.html | 2 +- py-modindex.html | 2 +- scheduler/overview.html | 2 +- search.html | 2 +- searchindex.js | 2 +- shared-structs/implementation/rs-impl.html | 2 +- shared-structs/rs.html | 2 +- synthesis/synthesis.html | 2 +- transactions.html | 2 +- transactron.core.html | 2 +- transactron.html | 2 +- transactron.lib.html | 2 +- transactron.testing.html | 2 +- transactron.utils.amaranth_ext.html | 2 +- transactron.utils.html | 2 +- 52 files changed, 556 insertions(+), 507 deletions(-) diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index 19112a7e04844d1d4bae2f034ad9ce8ca3009eb3..bc67edd998ea397f2445c31876ac0b1dc5a58ed1 100644 GIT binary patch delta 499 zcmY+By-EW?6om<>VB%jAG%hL{f(k-bvB+j+!56T#)G#|4vqN@gmYLbr#-Aou+uiLf z#3qGRz|!7Fu(cI@09$7hqOlw9J@cJ&@9p(-y?$=+-hfYQV`)(d#3aH>aAx|{g{swn zL33rRIN694^<|pmQKWdQBT(q2@aRkMAqTPuEFZj zI=nS^;lo}%FeWJx!>utf(hlQv*?fvfMOg>Fnp^N~SLX^y$|wlcF!`yqeVhLyrAbL@ z=gd;<^O%U3lFMPX-^3vjD9~$J{QG5wg2rhwy<^1S5H*>e+9v&>ff^(d!z>`y+ PHigE*iDSInI`=C-W3IqM delta 532 zcmY*V%Sr<=6s7oB_-;o=EF$;-b%8lBKg5|f$n0n(K#gPWUg5JV6` z`~v?$Kfpgw+?!F9xI5f??m6e4%bUvOP37UG4KfNVlW^Nz2~0Iph--v1C3rK>DAO2zNEASdG!+lhTx1G)H zs#K!KNZP;&!2?FM6BwhsPfovENu}UURJSNbj$zFNY{Y92bb_r3lxO1LCuXv57QM&( zx(;)=itF&{eD~rdc#p!MrkzwjXGFC`K~zD>$>VtgeajWJ-GhY7|pzSm$1m@qpSH)JJ1QlKr_csPzm7y*nC$r6E+ zN+eqdBmR;WLPDV3x~XZKG*@c=SQkZVm1gVGuqx}6J({FlJ84@UlR9mvmAc=(7~@Fx zAHL`MeCK@UJLh+P_USvKpWG28g(RmZPA2`9Qk=Z?A(km8PE(a(l>)Pp6cmW2@R`Vj zbE1l{ipJeSIkLr1p|{n9mUIQ0#YLD&-#|Wjd^mSsTu#9wDMVVO1cr1uGRS)*fSZ-5 zMEH};gqfryEX!#8T(%L*9gW;pd6^h*B(DJq1e47?0G+ZAgJA_eQtH8YCAg^6z!g+r zihMU_>p`m+bgK-cnjF7+=O-qg|D;oaL*^f&1}*W8I42N0C`Rh@k!CIbK_)*CoTahoyjPRDh(4F16REiq55rD_LzlAHjj$< zX-s))2-bk7JuWCb1;V!28|qN&t;SMAIYzxKh8kGBMl9o1;&#I>qEL$#C(W&Rk4kZ+ ziL3>=ABLt42sIgm70KA1$t7)X5#dG)nUq(COU-gjwbY`x-Hdz93<_IEk+y>jCW5`x z+9y>0PFor#cYKVGcABEtshu@=Zl`rM@7b;R^q3r_?G@;IwkwkJIl9}w7mYWz+l1H$ z?IB#~Sm){QuyM;BzY*huPX1EK@lt0o-^%4(ZBoqjR-t)Diq76TVkM~UPr(h}#;}jZ z?|YZ<$Y+JCSB*oyB7P}(nU39`pwVB2T|ZuxGvWUOruMA2RM;(Cy|7)ueZA-JBI7eV z+dQKK0|&Z#d_MnBu*)~NZ#Uan5OrglCkLthR=m)gg2#L9xOIlc<9Ql0d#eo5sJ@Yr zQNNIDkIlVVuOqnwMRDR{YY5qB@u+dDFLP5gI7Sf@!y4=6zUp^~sdAJKUZGgrAFL%$ z_mBp+2Q%OuYNBXR`!u*PR7l>^Wompel!5;Z@THQPJ5t$Oo4MAvWakV{3)ocDqI}@hN{4Yi5Dq5XA4z| z@Zd-W{!*EO?ID$57mqZ-e49kEV04AH6Nc#PNDOTGHXK$BRij;;CwkAD41lro|( z6h2|Sr5H9N4lihcb8%7o8mhVs!%$n{M{=&WVEub9K-$CQngxy-mILr{+@6OrOyv zNF-9@A}m5L>v7=xmPE8mq|djfT*&8)aY-0#o=ZfZ z2w@T(ik&}lv@fVJ^hzbz^J-j+*u|4Z?$gE3s0129FZaZq4MSsz)<89zogi^|#(`6d gYT=*b)~gPVdG#HNs3S``&oB7f@Vxou(!DDkC0B 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 delta 27761 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 MirrUc>(S!>04F;cU;qFB diff --git a/.doctrees/current-graph.doctree b/.doctrees/current-graph.doctree index 421bb7c314b252e80acd0a8753a9ee57fc654688..acc70ebf54f66afd20ac540281166d39a5105599 100644 GIT binary patch delta 2786 zcmZ`)X;52L7@e1m zN^@K)ZGl*q(H}~EF5_4gm$BB3j$>U~f6zLP<2KfrI*!`0-n>8vGvP>qAh$B$QA(!t|jD!08Gfb@cW|@Y?AA^B#S&5vjY-H$@l5iIvkW+F)vT&uxY&j zZ-jVCEt{5jhKF1QgN;dAe3MiZ@qU-08kZD?1$*&$Ua@G;g~Q59bSjPPtnwp1-qmE` zMU4WZ8Y9YtG_YO4wyhs}S#{oBTa&BcC7v!hvSg;7g5q=~cIK6D2}cu{9YkFEkXogJ5SW0+1i z5$gLdd7mMuW>=2vrxT>bZkAGh7pMN$U$Y~qT3+CSwl9*tyv{ut1_x7{F0f8 zW0}bq%-p#MK%aFJaZk>ImcX4AuE4sRhATIoy`1$Sg-gcpF6WK$c+QxOnhllgnw+=! zxZBi`Mg>3i%c@bQUQt+RD*kDZ!@}(}G_Co*?ft z_B5iFjkzi*>nIFT&@fAc@2$%T;|xs^B@_1BYKZv+HmT?@9;!?8B9d{X=4Fzvl*WZU zJYQz#GHm64^Uz)u-a}tiyvSzfs`gOWZx2g_M*C*FnVqrUEQF`F64eedzOD7(-?cXQ z9eMb#b`_kCLQK`#V6H7B(%ju(XB>$XYMc(tt`h~E>*1;+gPbnJj8jU&G^BNv1X_o) z&KewWW`xG)<+^H|sjq;cz6gKTGq_sEz}UcWCFvT(Xs*ANnAG6Bon{9c_KQ&F3XjuN zqcY$kvrncb;8L&;yIeffH-#&^x;Y-wrZsqWTOM|8vEo#dALGqtPBet6o4Z1LzjI3> zL|ebWrk3zjhahE3CBE5e4yU!$qxFy&FKjEuPc80n%J-Pxc3VVgdRrk!^===AX-8OQ zetRYB+HsDLy4LVjt7(lxN-H;5>~QN=5mG$mm?L9;siT^#LY(o+P~Vw@VGoVXo*;TU z&6w>_;kqY_o6?ZcS3AGLx!vXXZo$xv-4`J3TB_;P?Rg=C!^IMIsOv|benZn%hu`ZR zbhov)dwPBD_MYwzW@knujE|kG@rc)qiybobdTnStNuzg?MxwVoJ;Lhh@ArGSTw8SR zMrSI?^=8H3Meo67G8GS;pUzU{^&QT8T}fwxmsU; zZ*7mi+vn+XySuvE`ylokvB4)N@;iNLIz}JjI2)XeHut@KT|Uop9r#Lc&X<8-eXEh< z%ZA0Tl}0nL-Cw>uFy(g>VF|VwxK+PzBYt=|iG6V2A-*Eg^`)c4{Aj*15|3*8a$qUJhRdUQs#qD;5V9~ja!ejr z#pWOUl8+l>wdi>|6}KHRl5!q8Qi1=*MC^M<_!Mz&7}sFt5fuRz-pKkCiGMJ@nZ)MD z^=#?U!$Q)M`N!0vBJSAGmZ@R?di)x1$@Y>v2Eh}_C_ABy1=<$D1(WfCAi2;dWFh`i zMNwjUP(d{m(=k!oBC130bV;oJ7~GiFV)&#gHuykqD%?RDpPkfbBK?fsoy;Hf3CXzU zK+JL&*e5$GP7;wUIxOxLtvsUW^1f83<+wCO{B!m!ykbXC{L-l ee~!jyOW2ubUZaRPGLn;Ix=)jzi_Yh+N&W}62>`VK delta 2521 zcma)7dr(_d8lRgN$%P~|4+xMz5<(~hLUMzY^4hjQY^j#C6xvd4$_5H(K_m&^v8F3uD#n+5hXVh`(_?qo%>vqq*2@urI>>u~L z=X}rK?|k1qclL_t!z&`mfb^;QvywV7qeH#;Z8S^V&`VZfK&^m5uEM0`F|pFWEgF7O=JEzaRGs*>Pk{~UOd-grPK8*Vi;0X(98|k-rNM#; zvji`x%{&BROnzAeyVip{H73ky+zYtx)mGsH?L2Nr43ZBsIvFB5J9g^I$OYYNVw^YF zF`T8wpkcXi5VKh-+%UX>AJTFuCplhC%N-4@#7?IKP3dktpUzX2V<0LT=<7@s__r}ju+5lyaU!!4Jr60+o#_IX>A^>t zhcTIDqj+@a$g;=qT*hT{j!<;UoJUWo4qnT{kXUojZIR&(%L>77)iMPsw^lJA+1oLe zor*o#ls)Y%HNb3J4cI8CSReehD0){r3*YiY@|o=dgHP;ym1vuvw&!8h9c82<_Z2Z( z9lP*t{ylI75^>3~4Lb@p!dc)V&lS`#C~!Jpb|zttD?_XEHoW7^6R;j}7SaPU(kwZc zEl(mfMJE}gyQ9X>T}zE4ZkC}L3h^jcML{cx#&b=CiV}yADuKS^Q$1gjz#zgoC`|>< zt>A}MNx0IVMQAI}i*YQOk07(<`xy*X@~NWS)>k^nnacH2OjdKaucipURx5CQO&Ka{ zINVm<1zF7sykAX`M!x}arY4!eiBmGndH)2pw-#^JmSLt=iqmCw-1Kh6%(M(gy(_7X z#b$3FKQHHQufpNAZse`?;QHFT1XN$$z8ZH?-7ECrXXo8Ymh4&gs0`;Pr6}{I3r^$p zx>27=7?Dw*mJIrQBGffRX??db5vqm?yuZnTots=Z)euJ0=5`^Dx20?@;%lGZk_=hn zd+;_DE|`*<$}rcM6Af!xi@Ys&FWA0riiLfSF`~v z7A3n1h3Vw6zOd_Gc)h&}huTZ&2Oh=P)Uh8=|Jeba)-Q)xeB6=4QyVB&kp9juMd%r0 z4V?duhQ^w3SJ$5H*3Mus+~yD5*WJqbv8*N)^}DsUmO!AbCnRWHalT8`^UgG*4w+r0 zIJ3K%KIwS5Yn4#N9T&M+#r=m>;(g<)2+msaP^;E9u+d}21eYs?&&&gA?^k+e}x1HiL?JdCM-XnCC z+@FU)e?H?O!~Iqk4TGojQGAJ1J?(Y7<)uZzBq7= zL10LOtAl;`Xi!7KLx;q&=<&jQOb7MBWw`oRE#EC#n>m=Zu;b!(Y4d(b@tq;e!5_s8 zhZ92vBn>-coVkLpZ}#a&eG)VdTk+uVO2$pj4a*tocKGo^N`*?Kj7-w~OCuYF_Uuc= z)e$*yJn@)RRLp`I(Nlu6e_OVI^XRmdULhOwakUpm63mqA78d#V^8e4WIC{7+UUZ9? z-&o>e*oj-!p_U~lhSd?%{OJcGcC;MVFSU0@%$Pi0nDU2I>HMD3;y=d?OJi0?a%t|(0PwHa3{xOcO=pR&Q`;D=cbd?77xFe?Nj1&ti z4$+k!!AL%@VdHq8jR@}S;$4EMDh)4Ea(r%1z;$tg$EC+J(`SEAd3@SPyPJsJC)UKD zd|Vx7DitmG9cvT4YBKQiL4j@&!>9uLrnIqr23$`{kvW-2#!p^m<{iksDY1xb IKmC*9e`_3?Hvj+t diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index d870bb378d889ee6728bff85c70db7a4ebad39c7..d61ad87eaed82d49f22d24e7cf2f1c4a20f4f0f6 100644 GIT binary patch delta 58454 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

$6buwFgaJ34-cSK43Wf<7u3&_K zQ3Ck>8!cq47D*K_Ucm$b6BSGnFj>L<0;VXKDj-e4bOGrKW-!3t&7G-amK4cSFk8Sp z1@i@j6)Y66NWo(B-D`BW&n@$!m~Cwlxw6F#E4FwD8o{H<2p;)G@Hi}jM@11lz=_}? zLj({0A$Xt;v0Q>je6YnsI|v@oK=9ZEqLjbMA*&>~caJUZYa_U=MsN#_;Pw&0Z6JbM zKEw+WD_P44Jmle-QG{?dz(Ln|zdCgiP( b@#y>;6L^%~%P{vIpo5|7hb|tViiH0FBSk%f delta 57760 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 BasicFifo2_write @@ -528,40 +528,40 @@ SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer1 SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request - ICache_ICache1 <--> HwCounter4__incr + ICache_ICache3 <--> HwCounter4__incr ICache_ICache2 <--> HwCounter3__incr ICache_ICache2 <--> HwCounter2__incr ICache_ICache2 <--> HwCounter1__incr ICache_ICache2 --> Forwarder3_write - ICache_ICache --> SimpleCommonBusCacheRefiller_start_refill + ICache_ICache1 --> SimpleCommonBusCacheRefiller_start_refill + ICache_ICache1 --> Forwarder2_write ICache_ICache --> Forwarder2_write - ICache_ICache3 --> Forwarder2_write - SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache3 - WishboneMasterAdapter_get_read_response --> ICache_ICache3 - Serializer_Serializer --> ICache_ICache3 - BasicFifo_read --> ICache_ICache3 - WishboneMaster_result --> ICache_ICache3 - Forwarder_read --> ICache_ICache3 - Fetch_Fetch --> ICache_issue_req - Fetch_Fetch <--> HwCounter__incr - Fetch_Fetch <--> LatencyMeasurer__start - Fetch_Fetch --> FIFO1_write - Fetch_Fetch --> FIFO2_write - Fetch_Fetch --> BasicFifo3_write - BasicFifo3_read --> Fetch_Fetch1 - ICache_accept_res --> Fetch_Fetch1 - FIFO2_read --> Fetch_Fetch1 - Fetch_Fetch1 <--> LatencyMeasurer__stop - FIFO1_read --> Fetch_Fetch1 - Fetch_Fetch1 --> HwExpHistogram__add - Forwarder3_read --> Fetch_Fetch1 - Fetch_Fetch1 --> MethodProduct_method + SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache + WishboneMasterAdapter_get_read_response --> ICache_ICache + Serializer_Serializer --> ICache_ICache + BasicFifo_read --> ICache_ICache + WishboneMaster_result --> ICache_ICache + Forwarder_read --> ICache_ICache + Fetch_Fetch1 --> ICache_issue_req + Fetch_Fetch1 <--> HwCounter__incr + Fetch_Fetch1 <--> LatencyMeasurer__start + Fetch_Fetch1 --> FIFO1_write + Fetch_Fetch1 --> FIFO2_write + Fetch_Fetch1 --> BasicFifo3_write + BasicFifo3_read --> Fetch_Fetch + ICache_accept_res --> Fetch_Fetch + FIFO2_read --> Fetch_Fetch + Fetch_Fetch <--> LatencyMeasurer__stop + FIFO1_read --> Fetch_Fetch + Fetch_Fetch --> HwExpHistogram__add + Forwarder3_read --> Fetch_Fetch + Fetch_Fetch --> MethodProduct_method AdapterTrans_AdapterTrans_method --> MethodProduct_method - Fetch_Fetch1 --> FIFO_write + Fetch_Fetch --> FIFO_write AdapterTrans_AdapterTrans_method --> FIFO_write - Fetch_Fetch1 --> MethodMap_method + Fetch_Fetch --> MethodMap_method AdapterTrans_AdapterTrans_method --> MethodMap_method - Fetch_Fetch1 <--> CoreInstructionCounter_increment + Fetch_Fetch <--> CoreInstructionCounter_increment AdapterTrans_AdapterTrans_method <--> CoreInstructionCounter_increment FIFO_read --> DecodeStage_DecodeStage DecodeStage_DecodeStage <--> HwCounter8__incr @@ -579,17 +579,17 @@ ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO3_write ROBAllocation_ROBAllocation --> FIFO12_write - FIFO12_read --> RSSelection_RSSelection1 - RSSelection_RSSelection1 --> Forwarder8_write + FIFO12_read --> RSSelection_RSSelection3 + RSSelection_RSSelection3 --> Forwarder8_write Forwarder8_read --> RSSelection_RSSelection - Forwarder8_read --> RSSelection_RSSelection3 + Forwarder8_read --> RSSelection_RSSelection1 Forwarder8_read --> RSSelection_RSSelection2 RSFuncBlock_select --> RSSelection_RSSelection RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO13_write - RSSelection_RSSelection3 --> FIFO13_write + RSSelection_RSSelection1 --> FIFO13_write RSSelection_RSSelection2 --> FIFO13_write - RSSelection_RSSelection3 <--> LSUDummy_select + RSSelection_RSSelection1 <--> LSUDummy_select RSSelection_RSSelection2 <--> CSRUnit_select FIFO13_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion @@ -606,7 +606,7 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume - Retirement_Retirement4 --> Fetch_resume + Retirement_Retirement3 --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done @@ -616,7 +616,7 @@ ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update ResultAnnouncement_ResultAnnouncement --> CSRUnit_update - RS_RS2 --> WakeupSelect_WakeupSelect + RS_RS --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect @@ -624,10 +624,10 @@ RS_take --> WakeupSelect4_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO4_write - RS_RS --> WakeupSelect1_WakeupSelect + RS_RS4 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO5_write - RS_RS4 --> WakeupSelect2_WakeupSelect + RS_RS2 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect <--> HwCounter5__incr WakeupSelect2_WakeupSelect <--> HwCounter6__incr @@ -639,10 +639,10 @@ ConnectTrans3_ConnectTrans --> BasicFifo4_write WakeupSelect2_WakeupSelect --> FIFO7_write WakeupSelect2_WakeupSelect --> FIFO6_write - RS_RS1 --> WakeupSelect3_WakeupSelect + RS_RS3 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO8_write - RS_RS3 --> WakeupSelect4_WakeupSelect + RS_RS1 --> WakeupSelect4_WakeupSelect WakeupSelect4_WakeupSelect --> PrivilegedFuncUnit_issue ConnectTrans4_ConnectTrans --> Forwarder5_write ConnectTrans5_ConnectTrans --> Forwarder5_write @@ -661,11 +661,11 @@ CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo5_write LSUDummy_LSUDummy1 --> Forwarder6_write - TransactionManager_accept_cond0_LSUDummy --> Forwarder6_write - TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write - TransactionManager_issue_cond2_LSUDummy --> Forwarder6_write + TransactionManager_LSUDummy_issue_cond1 --> Forwarder6_write + TransactionManager_LSUDummy_accept_cond1 --> Forwarder6_write + TransactionManager_LSUDummy_issue_cond2 --> Forwarder6_write + TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write TransactionManager_issue_cond0_LSUDummy --> Forwarder6_write - TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -687,21 +687,21 @@ LSUDummy_get_result --> ConnectTrans2_ConnectTrans Forwarder6_read --> ConnectTrans2_ConnectTrans CSRUnit_get_result --> ConnectTrans3_ConnectTrans - MethodTryProduct_MethodTryProduct2 --> PrivilegedFuncUnit_precommit - MethodTryProduct_MethodTryProduct2 <--> InterruptController_mret - MethodTryProduct_MethodTryProduct --> LSUDummy_precommit - MethodTryProduct_MethodTryProduct1 --> CSRUnit_precommit + MethodTryProduct_MethodTryProduct --> PrivilegedFuncUnit_precommit + MethodTryProduct_MethodTryProduct <--> InterruptController_mret + MethodTryProduct_MethodTryProduct1 --> LSUDummy_precommit + MethodTryProduct_MethodTryProduct2 --> CSRUnit_precommit ConnectTrans9_ConnectTrans --> Forwarder7_write ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo5_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans - ReorderBuffer_peek --> Retirement_Retirement2 - ReorderBuffer_peek --> Retirement_Retirement3 + ReorderBuffer_peek --> Retirement_Retirement4 + ReorderBuffer_peek --> Retirement_Retirement1 ReorderBuffer_peek --> Retirement_Retirement ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond1 ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond0 - Retirement_Retirement2 --> MethodTryProduct_method - ExceptionCauseRegister_get --> Retirement_Retirement3 + Retirement_Retirement4 --> MethodTryProduct_method + ExceptionCauseRegister_get --> Retirement_Retirement1 ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond1 ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond0 Retirement_Retirement <--> ReorderBuffer_retire @@ -724,8 +724,8 @@ Retirement_Retirement --> RegisterFile_free TransactionManager_Retirement_Retirement_cond1 --> RegisterFile_free TransactionManager_Retirement_Retirement_cond0 --> RegisterFile_free - CSRRegister1_read --> Retirement_Retirement4 - Retirement_Retirement4 <--> ExceptionCauseRegister_clear + CSRRegister1_read --> Retirement_Retirement3 + Retirement_Retirement3 <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -737,41 +737,35 @@ CSRRegister6_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans1_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt - TransactionManager_accept_cond0_LSUDummy <--> LSURequester_accept_cond0 - WishboneMasterAdapter1_get_write_response --> TransactionManager_accept_cond0_LSUDummy - Serializer1_Serializer1 --> TransactionManager_accept_cond0_LSUDummy - BasicFifo1_read --> TransactionManager_accept_cond0_LSUDummy - BasicFifo1_read --> TransactionManager_accept_cond1_LSUDummy - WishboneMaster1_result --> TransactionManager_accept_cond0_LSUDummy - WishboneMaster1_result --> TransactionManager_accept_cond1_LSUDummy - Forwarder1_read --> TransactionManager_accept_cond0_LSUDummy - Forwarder1_read --> TransactionManager_accept_cond1_LSUDummy - TransactionManager_accept_cond0_LSUDummy <--> LSUDummy_LSUDummy2 - TransactionManager_accept_cond1_LSUDummy <--> LSUDummy_LSUDummy2 - LSURequester_accept --> TransactionManager_accept_cond0_LSUDummy - LSURequester_accept --> TransactionManager_accept_cond1_LSUDummy - TransactionManager_issue_cond1_LSUDummy <--> LSURequester_issue_cond1 - TransactionManager_issue_cond1_LSUDummy --> WishboneMasterAdapter1_request_read - TransactionManager_issue_cond1_LSUDummy --> Serializer1_Serializer3 - TransactionManager_issue_cond1_LSUDummy --> BasicFifo1_write - TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write - TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request - TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request - TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy - TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy + TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy + TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy - TransactionManager_issue_cond1_LSUDummy --> LSURequester_issue - TransactionManager_issue_cond2_LSUDummy --> LSURequester_issue + TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue + TransactionManager_LSUDummy_issue_cond2 --> LSURequester_issue TransactionManager_issue_cond0_LSUDummy --> LSURequester_issue - TransactionManager_issue_cond2_LSUDummy <--> LSURequester_issue_cond2 - TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 - TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write - TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer2 - TransactionManager_accept_cond1_LSUDummy <--> LSURequester_accept_cond1 - WishboneMasterAdapter1_get_read_response --> TransactionManager_accept_cond1_LSUDummy - Serializer1_Serializer --> TransactionManager_accept_cond1_LSUDummy - TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement1 - TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement1 + TransactionManager_LSUDummy_issue_cond1 <--> LSURequester_issue_cond1 + TransactionManager_LSUDummy_issue_cond1 --> WishboneMasterAdapter1_request_read + TransactionManager_LSUDummy_issue_cond1 --> Serializer1_Serializer + TransactionManager_LSUDummy_issue_cond1 --> BasicFifo1_write + TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write + TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request + TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request + TransactionManager_LSUDummy_accept_cond1 <--> LSUDummy_LSUDummy2 + TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy2 + LSURequester_accept --> TransactionManager_LSUDummy_accept_cond1 + LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 + TransactionManager_LSUDummy_accept_cond1 <--> LSURequester_accept_cond1 + WishboneMasterAdapter1_get_read_response --> TransactionManager_LSUDummy_accept_cond1 + Serializer1_Serializer2 --> TransactionManager_LSUDummy_accept_cond1 + BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond1 + BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 + WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond1 + WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 + Forwarder1_read --> TransactionManager_LSUDummy_accept_cond1 + Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 + TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 + TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement2 + TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement2 TransactionManager_Retirement_Retirement_cond1 --> CSRRegister_write TransactionManager_Retirement_Retirement_cond0 --> CSRRegister_write TransactionManager_Retirement_Retirement_cond1 --> CSRRegister2_write @@ -779,6 +773,9 @@ TransactionManager_Retirement_Retirement_cond1 <--> InterruptController_entry TransactionManager_Retirement_Retirement_cond0 <--> InterruptController_entry TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement_cond1 + TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 + WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 + Serializer1_Serializer1 --> TransactionManager_LSUDummy_accept_cond0 TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement_cond0 TransactionManager_Retirement_Retirement_cond0 --> RRAT_commit TransactionManager_Retirement_Retirement_cond0 <--> DoubleCounterCSR2_increment @@ -787,3 +784,6 @@ CSRRegister8_read --> TransactionManager_Retirement_Retirement_cond0 TransactionManager_Retirement_Retirement_cond0 --> CSRRegister8_write TransactionManager_Retirement_Retirement_cond0 <--> HwCounter9__incr + TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 + TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write + TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer3 diff --git a/api.html b/api.html index 1253a360c..02e172adc 100644 --- a/api.html +++ b/api.html @@ -259,7 +259,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/assumptions.html b/assumptions.html index 0cecb73f5..6b09ae243 100644 --- a/assumptions.html +++ b/assumptions.html @@ -104,7 +104,7 @@

List of assumptions made during development

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/auto_graph.html b/auto_graph.html index 6a7c82749..b6fd7b590 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -83,15 +83,15 @@ subgraph TransactionModule["TransactionModule"] subgraph CoreTestElaboratable["elaboratable CoreTestElaboratable"] subgraph Core["core Core"] - Core_InitFreeRFFifo["InitFreeRFFifo"] Core_DiscardBranchVerify["DiscardBranchVerify"] + Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] WishboneMaster_WishboneMaster["WishboneMaster"] - WishboneMaster_result["result"] WishboneMaster_request["request"] + WishboneMaster_result["result"] subgraph Forwarder["result Forwarder"] - Forwarder_write["write"] Forwarder_read["read"] + Forwarder_write["write"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] @@ -99,8 +99,8 @@ WishboneMaster1_request["request"] WishboneMaster1_result["result"] subgraph Forwarder1["result Forwarder"] - Forwarder1_read["read"] Forwarder1_write["write"] + Forwarder1_read["read"] end end subgraph WishboneMasterAdapter["bus_master_instr_adapter WishboneMasterAdapter"] @@ -110,8 +110,8 @@ Serializer_Serializer["Serializer"] Serializer_Serializer1["Serializer"] subgraph BasicFifo["pending_requests BasicFifo"] - BasicFifo_write["write"] BasicFifo_read["read"] + BasicFifo_write["write"] end end end @@ -126,18 +126,18 @@ Serializer1_Serializer2["Serializer"] Serializer1_Serializer3["Serializer"] subgraph BasicFifo1["pending_requests BasicFifo"] - BasicFifo1_write["write"] BasicFifo1_read["read"] + BasicFifo1_write["write"] end end end subgraph CoreInstructionCounter["core_counter CoreInstructionCounter"] - CoreInstructionCounter_increment["increment"] CoreInstructionCounter_decrement["decrement"] + CoreInstructionCounter_increment["increment"] end subgraph FIFO["fifo_fetch FIFO"] - FIFO_read["read"] FIFO_write["write"] + FIFO_read["read"] end subgraph MethodMap["core_counter_increment_discard_map MethodMap"] MethodMap_method["method"] @@ -151,16 +151,16 @@ end subgraph SimpleCommonBusCacheRefiller["icache_refiller SimpleCommonBusCacheRefiller"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] - SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] SimpleCommonBusCacheRefiller_start_refill["start_refill"] + SimpleCommonBusCacheRefiller_accept_refill["accept_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_accept_res["accept_res"] + ICache_ICache["ICache"] ICache_ICache1["ICache"] ICache_ICache2["ICache"] ICache_issue_req["issue_req"] @@ -181,19 +181,19 @@ HwCounter4__incr["_incr"] end subgraph LatencyMeasurer["req_latency LatencyMeasurer"] - LatencyMeasurer__start["_start"] LatencyMeasurer__stop["_stop"] + LatencyMeasurer__start["_start"] subgraph HwExpHistogram["histogram HwExpHistogram"] HwExpHistogram__add["_add"] end subgraph FIFO1["fifo FIFO"] - FIFO1_write["write"] FIFO1_read["read"] + FIFO1_write["write"] end end subgraph FIFO2["req_fifo FIFO"] - FIFO2_read["read"] FIFO2_write["write"] + FIFO2_read["read"] end subgraph Forwarder3["res_fwd Forwarder"] Forwarder3_write["write"] @@ -204,50 +204,50 @@ FRAT_rename["rename"] end subgraph RRAT["RRAT RRAT"] - RRAT_commit["commit"] RRAT_peek["peek"] + RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] + RegisterFile_read2["read2"] RegisterFile_read1["read1"] - RegisterFile_free["free"] RegisterFile_write["write"] - RegisterFile_read2["read2"] + RegisterFile_free["free"] end subgraph ReorderBuffer["ROB ReorderBuffer"] ReorderBuffer_put["put"] - ReorderBuffer_get_indices["get_indices"] - ReorderBuffer_mark_done["mark_done"] ReorderBuffer_retire["retire"] + ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_get_indices["get_indices"] ReorderBuffer_peek["peek"] subgraph LatencyMeasurer1["perf_rob_wait_time LatencyMeasurer"] - LatencyMeasurer1__stop["_stop"] LatencyMeasurer1__start["_start"] + LatencyMeasurer1__stop["_stop"] subgraph HwExpHistogram1["histogram HwExpHistogram"] HwExpHistogram1__add["_add"] end subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end end subgraph Fetch["fetch Fetch"] Fetch_Fetch["Fetch"] Fetch_Fetch1["Fetch"] - Fetch_resume["resume"] Fetch_stall_exception["stall_exception"] + Fetch_resume["resume"] subgraph BasicFifo3["fetch_target_queue BasicFifo"] BasicFifo3_read["read"] BasicFifo3_write["write"] end end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] + ExceptionCauseRegister_clear["clear"] ExceptionCauseRegister_get["get"] ExceptionCauseRegister_report["report"] - ExceptionCauseRegister_clear["clear"] subgraph BasicFifo4["fu_report_fifo BasicFifo"] - BasicFifo4_read["read"] BasicFifo4_write["write"] + BasicFifo4_read["read"] end subgraph ConnectTrans["report_connector ConnectTrans"] ConnectTrans_ConnectTrans["ConnectTrans"] @@ -257,8 +257,8 @@ subgraph Collector["result_collector Collector"] Collector_method["method"] subgraph Forwarder4["forwarder Forwarder"] - Forwarder4_read["read"] Forwarder4_write["write"] + Forwarder4_read["read"] end subgraph ManyToOneConnectTrans["connect ManyToOneConnectTrans"] subgraph ConnectTrans1["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -276,15 +276,15 @@ MethodProduct1_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_get_result["get_result"] - RSFuncBlock_select["select"] RSFuncBlock_insert["insert"] RSFuncBlock_update["update"] + RSFuncBlock_get_result["get_result"] + RSFuncBlock_select["select"] subgraph RS["rs RS"] RS_update["update"] + RS_select["select"] RS_RS["RS"] RS_RS1["RS"] - RS_select["select"] RS_take["take"] RS_RS2["RS"] RS_RS3["RS"] @@ -292,11 +292,11 @@ RS_insert["insert"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO4["fifo FIFO"] - FIFO4_read["read"] FIFO4_write["write"] + FIFO4_read["read"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] @@ -306,16 +306,16 @@ ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] subgraph FIFO5["fifo FIFO"] - FIFO5_read["read"] FIFO5_write["write"] + FIFO5_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_accept["accept"] JumpBranchFuncUnit_issue["issue"] + JumpBranchFuncUnit_accept["accept"] subgraph FIFO6["fifo_branch_resolved FIFO"] FIFO6_read["read"] FIFO6_write["write"] @@ -330,16 +330,16 @@ HwCounter7__incr["_incr"] end subgraph FIFO7["fifo_res FIFO"] - FIFO7_write["write"] FIFO7_read["read"] + FIFO7_write["write"] end end subgraph WakeupSelect2["wakeup_select_2 WakeupSelect"] WakeupSelect2_WakeupSelect["WakeupSelect"] end subgraph ExceptionFuncUnit["func_unit_3 ExceptionFuncUnit"] - ExceptionFuncUnit_issue["issue"] ExceptionFuncUnit_accept["accept"] + ExceptionFuncUnit_issue["issue"] subgraph FIFO8["fifo FIFO"] FIFO8_read["read"] FIFO8_write["write"] @@ -353,8 +353,8 @@ PrivilegedFuncUnit_precommit["precommit"] PrivilegedFuncUnit_issue["issue"] subgraph BasicFifo5["fetch_resume_fifo BasicFifo"] - BasicFifo5_read["read"] BasicFifo5_write["write"] + BasicFifo5_read["read"] end end subgraph WakeupSelect4["wakeup_select_4 WakeupSelect"] @@ -363,8 +363,8 @@ subgraph Collector1["collector Collector"] Collector1_method["method"] subgraph Forwarder5["forwarder Forwarder"] - Forwarder5_write["write"] Forwarder5_read["read"] + Forwarder5_write["write"] end subgraph ManyToOneConnectTrans1["connect ManyToOneConnectTrans"] subgraph ConnectTrans4["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -386,36 +386,36 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_insert["insert"] - LSUDummy_precommit["precommit"] LSUDummy_get_result["get_result"] - LSUDummy_update["update"] LSUDummy_LSUDummy["LSUDummy"] LSUDummy_LSUDummy1["LSUDummy"] - LSUDummy_LSUDummy2["LSUDummy"] + LSUDummy_insert["insert"] LSUDummy_select["select"] + LSUDummy_LSUDummy2["LSUDummy"] + LSUDummy_update["update"] + LSUDummy_precommit["precommit"] subgraph Forwarder6["forwarder Forwarder"] Forwarder6_write["write"] Forwarder6_read["read"] end subgraph LSURequester["requester LSURequester"] - LSURequester_accept["accept"] - LSURequester_accept_cond0["accept_cond0"] LSURequester_issue_cond2["issue_cond2"] - LSURequester_issue["issue"] - LSURequester_accept_cond1["accept_cond1"] - LSURequester_issue_cond0["issue_cond0"] + LSURequester_accept_cond0["accept_cond0"] LSURequester_issue_cond1["issue_cond1"] + LSURequester_issue_cond0["issue_cond0"] + LSURequester_accept["accept"] + LSURequester_accept_cond1["accept_cond1"] + LSURequester_issue["issue"] end end subgraph CSRUnit["rs_block_2 CSRUnit"] - CSRUnit_select["select"] - CSRUnit_CSRUnit["CSRUnit"] - CSRUnit_update["update"] - CSRUnit_precommit["precommit"] CSRUnit_get_result["get_result"] + CSRUnit_CSRUnit["CSRUnit"] CSRUnit_insert["insert"] + CSRUnit_select["select"] CSRUnit_fetch_resume["fetch_resume"] + CSRUnit_update["update"] + CSRUnit_precommit["precommit"] end subgraph MethodTryProduct["InstructionPrecommitKey_unifier MethodTryProduct"] MethodTryProduct_MethodTryProduct["MethodTryProduct"] @@ -444,8 +444,8 @@ end subgraph InterruptController["interrupt_controller InterruptController"] InterruptController_report_interrupt["report_interrupt"] - InterruptController_entry["entry"] InterruptController_mret["mret"] + InterruptController_entry["entry"] end subgraph GenericCSRRegisters["csr_generic GenericCSRRegisters"] GenericCSRRegisters_GenericCSRRegisters["GenericCSRRegisters"] @@ -456,41 +456,41 @@ CSRRegister_write["write"] end subgraph CSRRegister1["mtvec CSRRegister"] - CSRRegister1__fu_read["_fu_read"] - CSRRegister1_read["read"] CSRRegister1__fu_write["_fu_write"] + CSRRegister1_read["read"] + CSRRegister1__fu_read["_fu_read"] end subgraph CSRRegister2["mepc CSRRegister"] CSRRegister2_read["read"] + CSRRegister2__fu_read["_fu_read"] CSRRegister2_write["write"] CSRRegister2__fu_write["_fu_write"] - CSRRegister2__fu_read["_fu_read"] end end subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] DoubleCounterCSR_increment["increment"] subgraph CSRRegister3["register_low CSRRegister"] - CSRRegister3__fu_read["_fu_read"] - CSRRegister3_write["write"] CSRRegister3_read["read"] + CSRRegister3_write["write"] + CSRRegister3__fu_read["_fu_read"] end subgraph CSRRegister4["register_high CSRRegister"] + CSRRegister4__fu_read["_fu_read"] CSRRegister4_read["read"] CSRRegister4_write["write"] - CSRRegister4__fu_read["_fu_read"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5__fu_read["_fu_read"] CSRRegister5_read["read"] CSRRegister5_write["write"] + CSRRegister5__fu_read["_fu_read"] end subgraph CSRRegister6["register_high CSRRegister"] CSRRegister6_write["write"] - CSRRegister6__fu_read["_fu_read"] CSRRegister6_read["read"] + CSRRegister6__fu_read["_fu_read"] end end end @@ -513,8 +513,8 @@ RegAllocation_RegAllocation["RegAllocation"] end subgraph FIFO11["rename_out_buf FIFO"] - FIFO11_write["write"] FIFO11_read["read"] + FIFO11_write["write"] end subgraph Renaming["renaming Renaming"] Renaming_Renaming["Renaming"] @@ -548,25 +548,25 @@ ConnectTrans11_ConnectTrans["ConnectTrans"] end subgraph Retirement["retirement Retirement"] - Retirement_Retirement_cond1["Retirement_cond1"] Retirement_Retirement["Retirement"] + Retirement_Retirement_cond1["Retirement_cond1"] + Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement1["Retirement"] Retirement_Retirement2["Retirement"] Retirement_Retirement3["Retirement"] - Retirement_Retirement4["Retirement"] - Retirement_Retirement_cond0["Retirement_cond0"] Retirement_core_state["core_state"] + Retirement_Retirement4["Retirement"] subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister7["register_low CSRRegister"] - CSRRegister7__fu_read["_fu_read"] CSRRegister7_write["write"] + CSRRegister7__fu_read["_fu_read"] CSRRegister7_read["read"] end subgraph CSRRegister8["register_high CSRRegister"] CSRRegister8_read["read"] - CSRRegister8_write["write"] CSRRegister8__fu_read["_fu_read"] + CSRRegister8_write["write"] end end subgraph HwCounter9["perf_instr_ret HwCounter"] @@ -586,13 +586,13 @@ end end subgraph TransactionManager["transactionManager TransactionManager"] - TransactionManager_issue_cond2_LSUDummy["issue_cond2_LSUDummy"] - TransactionManager_accept_cond0_LSUDummy["accept_cond0_LSUDummy"] - TransactionManager_issue_cond0_LSUDummy["issue_cond0_LSUDummy"] + TransactionManager_LSUDummy_accept_cond1["LSUDummy_accept_cond1"] TransactionManager_Retirement_Retirement_cond1["Retirement_Retirement_cond1"] + TransactionManager_issue_cond0_LSUDummy["issue_cond0_LSUDummy"] + TransactionManager_LSUDummy_issue_cond2["LSUDummy_issue_cond2"] TransactionManager_Retirement_Retirement_cond0["Retirement_Retirement_cond0"] - TransactionManager_issue_cond1_LSUDummy["issue_cond1_LSUDummy"] - TransactionManager_accept_cond1_LSUDummy["accept_cond1_LSUDummy"] + TransactionManager_LSUDummy_issue_cond1["LSUDummy_issue_cond1"] + TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] end end Core_InitFreeRFFifo --> BasicFifo2_write @@ -607,40 +607,40 @@ SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer1 SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request -ICache_ICache1 <--> HwCounter4__incr +ICache_ICache3 <--> HwCounter4__incr ICache_ICache2 <--> HwCounter3__incr ICache_ICache2 <--> HwCounter2__incr ICache_ICache2 <--> HwCounter1__incr ICache_ICache2 --> Forwarder3_write -ICache_ICache --> SimpleCommonBusCacheRefiller_start_refill +ICache_ICache1 --> SimpleCommonBusCacheRefiller_start_refill +ICache_ICache1 --> Forwarder2_write ICache_ICache --> Forwarder2_write -ICache_ICache3 --> Forwarder2_write -SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache3 -WishboneMasterAdapter_get_read_response --> ICache_ICache3 -Serializer_Serializer --> ICache_ICache3 -BasicFifo_read --> ICache_ICache3 -WishboneMaster_result --> ICache_ICache3 -Forwarder_read --> ICache_ICache3 -Fetch_Fetch --> ICache_issue_req -Fetch_Fetch <--> HwCounter__incr -Fetch_Fetch <--> LatencyMeasurer__start -Fetch_Fetch --> FIFO1_write -Fetch_Fetch --> FIFO2_write -Fetch_Fetch --> BasicFifo3_write -BasicFifo3_read --> Fetch_Fetch1 -ICache_accept_res --> Fetch_Fetch1 -FIFO2_read --> Fetch_Fetch1 -Fetch_Fetch1 <--> LatencyMeasurer__stop -FIFO1_read --> Fetch_Fetch1 -Fetch_Fetch1 --> HwExpHistogram__add -Forwarder3_read --> Fetch_Fetch1 -Fetch_Fetch1 --> MethodProduct_method +SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache +WishboneMasterAdapter_get_read_response --> ICache_ICache +Serializer_Serializer --> ICache_ICache +BasicFifo_read --> ICache_ICache +WishboneMaster_result --> ICache_ICache +Forwarder_read --> ICache_ICache +Fetch_Fetch1 --> ICache_issue_req +Fetch_Fetch1 <--> HwCounter__incr +Fetch_Fetch1 <--> LatencyMeasurer__start +Fetch_Fetch1 --> FIFO1_write +Fetch_Fetch1 --> FIFO2_write +Fetch_Fetch1 --> BasicFifo3_write +BasicFifo3_read --> Fetch_Fetch +ICache_accept_res --> Fetch_Fetch +FIFO2_read --> Fetch_Fetch +Fetch_Fetch <--> LatencyMeasurer__stop +FIFO1_read --> Fetch_Fetch +Fetch_Fetch --> HwExpHistogram__add +Forwarder3_read --> Fetch_Fetch +Fetch_Fetch --> MethodProduct_method AdapterTrans_AdapterTrans_method --> MethodProduct_method -Fetch_Fetch1 --> FIFO_write +Fetch_Fetch --> FIFO_write AdapterTrans_AdapterTrans_method --> FIFO_write -Fetch_Fetch1 --> MethodMap_method +Fetch_Fetch --> MethodMap_method AdapterTrans_AdapterTrans_method --> MethodMap_method -Fetch_Fetch1 <--> CoreInstructionCounter_increment +Fetch_Fetch <--> CoreInstructionCounter_increment AdapterTrans_AdapterTrans_method <--> CoreInstructionCounter_increment FIFO_read --> DecodeStage_DecodeStage DecodeStage_DecodeStage <--> HwCounter8__incr @@ -658,17 +658,17 @@ ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO3_write ROBAllocation_ROBAllocation --> FIFO12_write -FIFO12_read --> RSSelection_RSSelection1 -RSSelection_RSSelection1 --> Forwarder8_write +FIFO12_read --> RSSelection_RSSelection3 +RSSelection_RSSelection3 --> Forwarder8_write Forwarder8_read --> RSSelection_RSSelection -Forwarder8_read --> RSSelection_RSSelection3 +Forwarder8_read --> RSSelection_RSSelection1 Forwarder8_read --> RSSelection_RSSelection2 RSFuncBlock_select --> RSSelection_RSSelection RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO13_write -RSSelection_RSSelection3 --> FIFO13_write +RSSelection_RSSelection1 --> FIFO13_write RSSelection_RSSelection2 --> FIFO13_write -RSSelection_RSSelection3 <--> LSUDummy_select +RSSelection_RSSelection1 <--> LSUDummy_select RSSelection_RSSelection2 <--> CSRUnit_select FIFO13_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion @@ -685,7 +685,7 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume -Retirement_Retirement4 --> Fetch_resume +Retirement_Retirement3 --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done @@ -695,7 +695,7 @@ ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update ResultAnnouncement_ResultAnnouncement --> CSRUnit_update -RS_RS2 --> WakeupSelect_WakeupSelect +RS_RS --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect @@ -703,10 +703,10 @@ RS_take --> WakeupSelect4_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO4_write -RS_RS --> WakeupSelect1_WakeupSelect +RS_RS4 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO5_write -RS_RS4 --> WakeupSelect2_WakeupSelect +RS_RS2 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect <--> HwCounter5__incr WakeupSelect2_WakeupSelect <--> HwCounter6__incr @@ -718,10 +718,10 @@ ConnectTrans3_ConnectTrans --> BasicFifo4_write WakeupSelect2_WakeupSelect --> FIFO7_write WakeupSelect2_WakeupSelect --> FIFO6_write -RS_RS1 --> WakeupSelect3_WakeupSelect +RS_RS3 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO8_write -RS_RS3 --> WakeupSelect4_WakeupSelect +RS_RS1 --> WakeupSelect4_WakeupSelect WakeupSelect4_WakeupSelect --> PrivilegedFuncUnit_issue ConnectTrans4_ConnectTrans --> Forwarder5_write ConnectTrans5_ConnectTrans --> Forwarder5_write @@ -740,11 +740,11 @@ CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo5_write LSUDummy_LSUDummy1 --> Forwarder6_write -TransactionManager_accept_cond0_LSUDummy --> Forwarder6_write -TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write -TransactionManager_issue_cond2_LSUDummy --> Forwarder6_write +TransactionManager_LSUDummy_issue_cond1 --> Forwarder6_write +TransactionManager_LSUDummy_accept_cond1 --> Forwarder6_write +TransactionManager_LSUDummy_issue_cond2 --> Forwarder6_write +TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write TransactionManager_issue_cond0_LSUDummy --> Forwarder6_write -TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -766,21 +766,21 @@ LSUDummy_get_result --> ConnectTrans2_ConnectTrans Forwarder6_read --> ConnectTrans2_ConnectTrans CSRUnit_get_result --> ConnectTrans3_ConnectTrans -MethodTryProduct_MethodTryProduct2 --> PrivilegedFuncUnit_precommit -MethodTryProduct_MethodTryProduct2 <--> InterruptController_mret -MethodTryProduct_MethodTryProduct --> LSUDummy_precommit -MethodTryProduct_MethodTryProduct1 --> CSRUnit_precommit +MethodTryProduct_MethodTryProduct --> PrivilegedFuncUnit_precommit +MethodTryProduct_MethodTryProduct <--> InterruptController_mret +MethodTryProduct_MethodTryProduct1 --> LSUDummy_precommit +MethodTryProduct_MethodTryProduct2 --> CSRUnit_precommit ConnectTrans9_ConnectTrans --> Forwarder7_write ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo5_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans -ReorderBuffer_peek --> Retirement_Retirement2 -ReorderBuffer_peek --> Retirement_Retirement3 +ReorderBuffer_peek --> Retirement_Retirement4 +ReorderBuffer_peek --> Retirement_Retirement1 ReorderBuffer_peek --> Retirement_Retirement ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond1 ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond0 -Retirement_Retirement2 --> MethodTryProduct_method -ExceptionCauseRegister_get --> Retirement_Retirement3 +Retirement_Retirement4 --> MethodTryProduct_method +ExceptionCauseRegister_get --> Retirement_Retirement1 ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond1 ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond0 Retirement_Retirement <--> ReorderBuffer_retire @@ -803,8 +803,8 @@ Retirement_Retirement --> RegisterFile_free TransactionManager_Retirement_Retirement_cond1 --> RegisterFile_free TransactionManager_Retirement_Retirement_cond0 --> RegisterFile_free -CSRRegister1_read --> Retirement_Retirement4 -Retirement_Retirement4 <--> ExceptionCauseRegister_clear +CSRRegister1_read --> Retirement_Retirement3 +Retirement_Retirement3 <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -816,41 +816,35 @@ CSRRegister6_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans1_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt -TransactionManager_accept_cond0_LSUDummy <--> LSURequester_accept_cond0 -WishboneMasterAdapter1_get_write_response --> TransactionManager_accept_cond0_LSUDummy -Serializer1_Serializer1 --> TransactionManager_accept_cond0_LSUDummy -BasicFifo1_read --> TransactionManager_accept_cond0_LSUDummy -BasicFifo1_read --> TransactionManager_accept_cond1_LSUDummy -WishboneMaster1_result --> TransactionManager_accept_cond0_LSUDummy -WishboneMaster1_result --> TransactionManager_accept_cond1_LSUDummy -Forwarder1_read --> TransactionManager_accept_cond0_LSUDummy -Forwarder1_read --> TransactionManager_accept_cond1_LSUDummy -TransactionManager_accept_cond0_LSUDummy <--> LSUDummy_LSUDummy2 -TransactionManager_accept_cond1_LSUDummy <--> LSUDummy_LSUDummy2 -LSURequester_accept --> TransactionManager_accept_cond0_LSUDummy -LSURequester_accept --> TransactionManager_accept_cond1_LSUDummy -TransactionManager_issue_cond1_LSUDummy <--> LSURequester_issue_cond1 -TransactionManager_issue_cond1_LSUDummy --> WishboneMasterAdapter1_request_read -TransactionManager_issue_cond1_LSUDummy --> Serializer1_Serializer3 -TransactionManager_issue_cond1_LSUDummy --> BasicFifo1_write -TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write -TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request -TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request -TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy -TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy +TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy +TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy -TransactionManager_issue_cond1_LSUDummy --> LSURequester_issue -TransactionManager_issue_cond2_LSUDummy --> LSURequester_issue +TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue +TransactionManager_LSUDummy_issue_cond2 --> LSURequester_issue TransactionManager_issue_cond0_LSUDummy --> LSURequester_issue -TransactionManager_issue_cond2_LSUDummy <--> LSURequester_issue_cond2 -TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 -TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write -TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer2 -TransactionManager_accept_cond1_LSUDummy <--> LSURequester_accept_cond1 -WishboneMasterAdapter1_get_read_response --> TransactionManager_accept_cond1_LSUDummy -Serializer1_Serializer --> TransactionManager_accept_cond1_LSUDummy -TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement1 -TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement1 +TransactionManager_LSUDummy_issue_cond1 <--> LSURequester_issue_cond1 +TransactionManager_LSUDummy_issue_cond1 --> WishboneMasterAdapter1_request_read +TransactionManager_LSUDummy_issue_cond1 --> Serializer1_Serializer +TransactionManager_LSUDummy_issue_cond1 --> BasicFifo1_write +TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write +TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request +TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request +TransactionManager_LSUDummy_accept_cond1 <--> LSUDummy_LSUDummy2 +TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy2 +LSURequester_accept --> TransactionManager_LSUDummy_accept_cond1 +LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 +TransactionManager_LSUDummy_accept_cond1 <--> LSURequester_accept_cond1 +WishboneMasterAdapter1_get_read_response --> TransactionManager_LSUDummy_accept_cond1 +Serializer1_Serializer2 --> TransactionManager_LSUDummy_accept_cond1 +BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond1 +BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 +WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond1 +WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 +Forwarder1_read --> TransactionManager_LSUDummy_accept_cond1 +Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 +TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 +TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement2 +TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement2 TransactionManager_Retirement_Retirement_cond1 --> CSRRegister_write TransactionManager_Retirement_Retirement_cond0 --> CSRRegister_write TransactionManager_Retirement_Retirement_cond1 --> CSRRegister2_write @@ -858,6 +852,9 @@ TransactionManager_Retirement_Retirement_cond1 <--> InterruptController_entry TransactionManager_Retirement_Retirement_cond0 <--> InterruptController_entry TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement_cond1 +TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 +WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 +Serializer1_Serializer1 --> TransactionManager_LSUDummy_accept_cond0 TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement_cond0 TransactionManager_Retirement_Retirement_cond0 --> RRAT_commit TransactionManager_Retirement_Retirement_cond0 <--> DoubleCounterCSR2_increment @@ -866,6 +863,9 @@ CSRRegister8_read --> TransactionManager_Retirement_Retirement_cond0 TransactionManager_Retirement_Retirement_cond0 --> CSRRegister8_write TransactionManager_Retirement_Retirement_cond0 <--> HwCounter9__incr +TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 +TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write +TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer3 @@ -876,7 +876,7 @@

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/components/icache.html b/components/icache.html index aa05823bc..78e774ac4 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

Address mapping example

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.backend.html b/coreblocks.backend.html index 24991ac0e..8ca620e2a 100644 --- a/coreblocks.backend.html +++ b/coreblocks.backend.html @@ -165,7 +165,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.cache.html b/coreblocks.cache.html index e2de09b93..5e0ad8827 100644 --- a/coreblocks.cache.html +++ b/coreblocks.cache.html @@ -241,7 +241,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.core_structs.html b/coreblocks.core_structs.html index 0d465d639..5faee2cdd 100644 --- a/coreblocks.core_structs.html +++ b/coreblocks.core_structs.html @@ -157,7 +157,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.frontend.decoder.html b/coreblocks.frontend.decoder.html index 99a89bada..3635b343a 100644 --- a/coreblocks.frontend.decoder.html +++ b/coreblocks.frontend.decoder.html @@ -1721,7 +1721,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.frontend.fetch.html b/coreblocks.frontend.fetch.html index d910ad1e6..3bd653edc 100644 --- a/coreblocks.frontend.fetch.html +++ b/coreblocks.frontend.fetch.html @@ -161,7 +161,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index 5d8f76344..63eb31300 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -125,7 +125,7 @@

Subpackages

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.func_blocks.fu.html b/coreblocks.func_blocks.fu.html index 2b0a043fe..dbec25617 100644 --- a/coreblocks.func_blocks.fu.html +++ b/coreblocks.func_blocks.fu.html @@ -867,7 +867,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.func_blocks.fu.unsigned_multiplication.html b/coreblocks.func_blocks.fu.unsigned_multiplication.html index 4c6b81ed3..2a566cce9 100644 --- a/coreblocks.func_blocks.fu.unsigned_multiplication.html +++ b/coreblocks.func_blocks.fu.unsigned_multiplication.html @@ -238,7 +238,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.func_blocks.html b/coreblocks.func_blocks.html index 42bdee983..5f1f0f611 100644 --- a/coreblocks.func_blocks.html +++ b/coreblocks.func_blocks.html @@ -148,7 +148,7 @@

Subpackages

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.func_blocks.interface.html b/coreblocks.func_blocks.interface.html index 948a43281..4191a28ce 100644 --- a/coreblocks.func_blocks.interface.html +++ b/coreblocks.func_blocks.interface.html @@ -169,7 +169,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.func_blocks.lsu.html b/coreblocks.func_blocks.lsu.html index 715ca2b02..223142a7a 100644 --- a/coreblocks.func_blocks.lsu.html +++ b/coreblocks.func_blocks.lsu.html @@ -248,7 +248,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.html b/coreblocks.html index 7dfd22868..2d7ee919c 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -255,7 +255,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.params.html b/coreblocks.params.html index 18033bef4..364719de0 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -317,6 +317,11 @@

Submodules__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
+
+
+static encode(opcode: int, imm: int, funct3: int, rs1: int, rs2: int)
+
+
pack() Value
@@ -344,6 +349,11 @@

Submodules__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

+
+
+static encode(opcode: int, rd: int, funct3: int, rs1: int, imm: int)
+
+
pack() Value
@@ -360,6 +370,11 @@

Submodules__init__()

+
+
+static encode(opcode: int, rd: int, imm: int)
+
+
pack() Value
@@ -376,6 +391,11 @@

Submodules__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

+
+
+static encode(opcode: int, rd: int, imm: int)
+
+
pack() Value
@@ -392,6 +412,11 @@

Submodules__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct7: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

+
+
+static encode(opcode: int, rd: int, funct3: int, rs1: int, rs2: int, funct7: int)
+
+
pack() Value
@@ -408,6 +433,11 @@

Submodules__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

+
+
+static encode(opcode: int, imm: int, funct3: int, rs1: int, rs2: int)
+
+
pack() Value
@@ -424,6 +454,11 @@

Submodules__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)

+
+
+static encode(opcode: int, rd: int, imm: int)
+
+
pack() Value
@@ -719,7 +754,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index 42234c558..745fe25e8 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -746,7 +746,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.priv.csr.html b/coreblocks.priv.csr.html index d9c11b7c8..13b086ef7 100644 --- a/coreblocks.priv.csr.html +++ b/coreblocks.priv.csr.html @@ -327,7 +327,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.priv.html b/coreblocks.priv.html index 07e3b1106..63b60be71 100644 --- a/coreblocks.priv.html +++ b/coreblocks.priv.html @@ -123,7 +123,7 @@

Subpackages

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/coreblocks.priv.traps.html b/coreblocks.priv.traps.html index a169e7c37..391b14c5e 100644 --- a/coreblocks.priv.traps.html +++ b/coreblocks.priv.traps.html @@ -171,7 +171,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

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

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/current-graph.html b/current-graph.html index 8086e9ded..2dc845472 100644 --- a/current-graph.html +++ b/current-graph.html @@ -89,15 +89,15 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/development-environment.html b/development-environment.html index 8e3376640..34d604de8 100644 --- a/development-environment.html +++ b/development-environment.html @@ -209,7 +209,7 @@

tprof.py

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 23:12 2024-03-21. + Last updated on 21:22 2024-03-24.

diff --git a/genindex.html b/genindex.html index cf70764ac..1fc6bba36 100644 --- a/genindex.html +++ b/genindex.html @@ -1516,16 +1516,30 @@

E

  • (transactron.utils.dependencies.ListKey attribute)
  • - - +