From 58eaab4d026b59644821b1939c8181c8aed7ca13 Mon Sep 17 00:00:00 2001 From: tilk Date: Sat, 18 Nov 2023 16:29:40 +0000 Subject: [PATCH] retirement: Disable side effects on exception (proposed corrections) (#512) Co-authored-by: Arusekk --- .doctrees/Current_graph.doctree | Bin 25301 -> 25673 bytes .doctrees/api.doctree | Bin 34284 -> 34284 bytes .doctrees/auto_graph.doctree | Bin 24534 -> 24906 bytes .doctrees/coreblocks.params.doctree | Bin 781891 -> 783601 bytes .doctrees/coreblocks.stages.doctree | Bin 73355 -> 74096 bytes .doctrees/environment.pickle | Bin 330593 -> 330814 bytes Assumptions.html | 2 +- Current_graph.html | 172 +++++++++++---------- Development_environment.html | 2 +- Home.html | 2 +- Problem-checklist.html | 2 +- Transactions.html | 2 +- _sources/auto_graph.rst.txt | 170 ++++++++++---------- api.html | 2 +- auto_graph.html | 172 +++++++++++---------- components/icache.html | 2 +- coreblocks.frontend.html | 2 +- coreblocks.fu.html | 2 +- coreblocks.fu.unsigned_multiplication.html | 2 +- coreblocks.html | 2 +- coreblocks.params.html | 8 +- coreblocks.peripherals.html | 2 +- coreblocks.scheduler.html | 2 +- coreblocks.stages.html | 4 +- coreblocks.structs_common.html | 2 +- coreblocks.utils.html | 2 +- genindex.html | 4 +- index.html | 2 +- miscellany/exceptionsSummary.html | 2 +- modules-coreblocks.html | 2 +- modules-transactron.html | 2 +- objects.inv | Bin 8105 -> 8112 bytes 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 +- transactron.html | 2 +- transactron.lib.html | 2 +- transactron.utils.html | 2 +- 42 files changed, 310 insertions(+), 278 deletions(-) diff --git a/.doctrees/Current_graph.doctree b/.doctrees/Current_graph.doctree index d4522afc7f35f8900e68a39fcf03e10cdb18b9f4..8bac6b47f731ffefd2a1ede06bcd3e57b5243416 100644 GIT binary patch delta 1231 zcmYjQZA_b06wd7@ZwsZCk5c+V-xk`^mQwn5g;KgAEi0Q)U@c`MBV)uBf-a7A7`GqB zCh8AOn6XbZCX2uy{j+S5-58=FG5%N_^CO^{amE-lGbVn;VPfKzsrP;P&>#2Yo^zh( zIp^Mc?(G|7{U%Wt)vv`*uc$Q&#rkntp@=9juWBmkRQOxXp-<(&oTi$s25?FPzEt(& zC3P4>Y(JvzLWA0gc3y`{t_&N@@6zm2TX$*OSkT%ewc}d1tg^11#ph)q@MX)p%oJYa z_6ugYru~9kRC^k zA_9+b_{G>L;W?vEt{k^>wEdBX1dmra_s-|5@-Q7Iy;`MI!eI{MhuVWUX7*sfT#k2Y zJt&$F;I6p^t93bvv%(;Tx)EHe^WY>~jEkUU7`Lo`T(Oj+Xz{V0D(F4S9RfA)!W{6y0O)m!nkb*XA6{Ef+U3%TMUA*&;Hrw!v>$G zZwOj~Z|y!T*n4DLts{)0!?RcAh{G@A{&W-w3Va*>QI}!5+0SH4N)A`6YAELnt8l>^ zMcmWDRvE5&rZMjkk@AYT?hW9qmqWGJ!{p@`rhj;A2@bWor5g8rky1|#MNI{Lw>7GO zE8r}NmH4f#MZT1|Ko)-m+*0VnfSU^KJVB0=A<^K@z0C#mSPve?)z0@(;Oppp*4xMB}5)^i z=DnP>GkYb;Gy738jE6}Fggz@`eFBz}HS~O6H^CR9)wq11^I6V~>> z&g^2phjo0j|F)7Y4p;~Y;imxs6X|k17%*Ua@Ca51O*EZWDbSrZ;o4B8l%&rNzpY@3 z%^4rFy@@LJe>t4VnDA+)9v@^37|v+$LZ%x(W?Ep(`Vr5%hz?s>3wS|`-;I5xAfM6q$F1DIja-y& delta 1154 zcmYjPUu;@c7|#VRaG?bXjz0s+p8@p(x4=a#MT_g8v~`6dv{3DmO)axC(N)}L^kG9| zvKP&k{^sJ0iM;6^YFdvoF4iR`Zn1L@ZOoQT_t4b%VALhn#0MKQ&%NyyAI^8q_dDPB z`+ev8&dPVp&8rOCV&A*|+!Cu+C?@NqQ;}BSgvy7#eJt*=TI5v$%&8xu%MDIxz%A7< zF0etA==l)a4>y}a+@*t&(_)qSkE!qH3Ojk5IHPf+rBPu@!^=D?nj`4W?ZR2@aa_?_ zA!?I590i=_?&oV!<$@2iZ*xgp(4}G4oyPaN89bxkLu=&FtM{Y5+b-pkkMysraM$EQ z+sb0y)QOAZdc0*4kvAn_GYRHNL^)G{_D}uP1L&VZUS%PH2qEw=8DU)VyJwO8=7ou?{lT(*aC$2KV?BjFgwb!P+%jt;aO0xhYN z{OP#OK3vPyA<@dzsaB-kihM!9u7n( z>AaG|f@K%sf+-a~<+W(>y>Nv^dVU#ShIt(2Ih3fMnh{WaZ-6EFCKyrBuwh>>5=w!8jNoPwm}e zNO7N$!Ks`YU*$NwNdIpum%@RZ0pI2><7D24=^+jm^A>!aPcaE>=Kb!3t}t2{PaJGE zo}KXuLe^Vo9D9EDpllO}4S5YT;(rjC9?CPgR#;PrI<$sujEJS-mnfNM=_3I-~RRhjfcjI35VJg-$Ay7Lp5u#FWOuWfZXRU6fwyRdaR4s+A zNhdZ$GnQ*s{7?(w#D25#aI=Bcx()x-it_zTJuB@UxoV}-c;U#a#~RH?apvhf!PEx| L<{Igpc5?p##yg3; diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index aa53f08900ebfb37fd6cdcfd6513aa6b268d244c..fe195eb4a566280e84ed64e84e924db2d7083103 100644 GIT binary patch delta 1840 zcma)*ZA@EL7{_~?vSth>6ABC&#tgEJFbFZQR(dJ4DA*RdQAC-%tdy(mUFj|N1v+6v zTwLs^Z##F3n{g8pG@8t?RZV8H8C{;FtgZ zKEL~%=bZDLbC#yfOVj4LKkBP;J(?^FadqHnIh2U#>HJ}7NQ()|c2y3=l~7ofrMRBX zipGb8Bw4m^CJ#Dn*0iNf8WwbNWd~o88z`)dODkxBEvh1?CVw~=;=K6Q>oU}XbdXk zEBoSVL{OqiO>pH)PZyEzr6O{`UY36^TTe}3RFFrb!WikcR~8knDwPoAXd)uWp_oF} zI|^+Zlt@Sxh6WT>*21b%(;3tweVI1LJ6yltVluThFLXOjJaqZC$g`;7+MF0mXJKVt>C|omSmg`&QF$|jgWYXFUc{B$6!G|lcvF}r}&LzFQ3bK zj9>1%zXAX%IIoeg$n#L4v~k}WY(XTCRCyZ7LgQ90NX#w)#ztJbxd6H78d!sSg@iLZ zgJitvg#b2CoJGNr;#m}IocIX}Hck8j1sf(VpkM*D`tr%z)+GRc zw&nrISRdVRhi9t179_R49u9WW)Dk3%{!aL+ZNG^MBkMYD!tPe4T5vr;jtA<2;4+p2 zQ_v(FGq8!?+1PQoG)==*EZI5fE+ zF$g-A@PS@T1VHmg+CY0pT0mz;c7pyk!b4N%m2%Q07sJ=E9DqiimlbGRt@1MHyy6D6 zs2#>tN^c~4x=M(wJ_7KZ+DoC0{G%3>E5MFw7?;8g~WP;iuiW7(!jocA~*CuqtW2#kkvl7blq-lAX@f$@Oerr=!! z#yfhCg3}DVPr(@m&QkCp*d!hE5hdqX%EuI(XW#+_^9+1S!6gPRQ}7uBpHuK917A__ uH3Q#d2aLvl%g9xlvcSMK3ch1tk%Au?_=$q+1|YNJ{r~I2XSPgSTKg|cBr-7o delta 1837 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 diff --git a/.doctrees/coreblocks.params.doctree b/.doctrees/coreblocks.params.doctree index b69a8967ad0fb5404b9035e1156d6c94ba0188f0..1cd611f6fb581c14f90e87a5a1cdd8d731270f12 100644 GIT binary patch delta 22558 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%0AY5)`@ z2vn)f*^3saCw)Oh-QaPf7qK!UE4Gjow`xB)vL5jevIa~MvWEYLY|kz)WaY2GBzE~L z#;w8?#a^XHu~%(-)woe4!=e^8AhmcE`Wh@udO{tTMZxQW*We&#FqbCA!?y_>B>N0( z6(pgE3{r z5`<=j&C(_d%`!&Q-CCOjTWgbBbH?P1pPb`S)}-@SQ|dq{~y7B7CPj z_$VT#@3p6iAMS-|;w1}OeUuvXCQK7$G^;K^RqO%PMMtyh0#xW5pt{bU($kf&BngOS zVD&aHaH*A+Bo}NoZFmdji2l(Y1hp1|TAx-FHzq@aVhqz|*M%O0 zjPah!gBI^Iqdg|J;XT-oe9-27b~IX-b!xqXsH8exXx(vyT3O)N$u--DGyvpVd;1X@ zsi_K61hUEoNp~+c;K3tvwHpqb-8a&{@-+S0)AVbrX|8pyIOGGPm`|Y7DzAKC=$bf3 z0^+k}@e@?9GOmhCEVZ^j0U@iWCP>0BAo+!>r$02lgo_$m--W3S{BDltx+mPiguHOP zU5)t^tGX%eJ;;LF;xLJuaKOmX24PN8Nw1t#_1gj1w;A9e&m6STJnkUF#MDdvgs&xlh|gH z5XCX-(L+W*t-^~2xD(18WUl22?43vx`6I#{Uj~PFDC{h zm30uT@(Y#@UOb1Z?QY>XzKGH2>UrnYT9~TMFoHu`ML76L6}OCrwzKM}d7m2z|4Ezf zgNuMzUe7>>#C}04{I-=3$Lx5g$#@4Q(!u{_(5U`72|;o&$AY?{h4$ z&U>GHnPRkh;%j3goXf`@HV%uq+<*JgSeZ>eACn1V{1(rcou7zzx09!pb~Wcz4m@If zBgD?wO4t7wCmexA$Uf&U zQ$}yAY%ntL!6{?0%|PxMcjd3&F@~x$^BvtPPo6R24G+19^G16ovX~$L#B8?H<{#1dv5A@3x1f4 zAB℞sZaLHs`}9wg_{ZA?Zwp^DPw2C zX9^~M!elz(I|mcLoiP32GO&r?2AD77121!%@8b1pyuxfwgG+HHUc)uvV}Uj%UI#UI z;^TF-w$^Ch$q6@*OuV0FK8FvyBE`0ti>5gbAC}MscuB8%BN?p)MvW#;|(z?~)YSA4+6P8)M7 z?k%juJqz;)K5*p^OJaE7QrUbLAGo44d*K?XA3k2d2QFG*Y7Y;b@|#cM1Lw)6A5MaB z25BzC2hP6C3;4k4ia8S^oC#9~FfM#xB!y6ca4-;=bMRql3cim`uQyWMJ~gW(FDOIZ Seb`9%14WIlJXmjZ*Zvm>rwWn) diff --git a/.doctrees/coreblocks.stages.doctree b/.doctrees/coreblocks.stages.doctree index 6ec00035e1d170d63316ef079399a968bf856b76..71d04648a45846b4f9c87c872a50957a9cbfd831 100644 GIT binary patch delta 5492 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 delta 5259 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 hmList of assumptions made during development

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/Current_graph.html b/Current_graph.html index 85ed5b2cf..ec7d9c1c9 100644 --- a/Current_graph.html +++ b/Current_graph.html @@ -93,17 +93,17 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/Development_environment.html b/Development_environment.html index 93d8a9121..e6748d516 100644 --- a/Development_environment.html +++ b/Development_environment.html @@ -178,7 +178,7 @@

build_docs.sh

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/Home.html b/Home.html index a5d9d9dbd..55edc941d 100644 --- a/Home.html +++ b/Home.html @@ -129,7 +129,7 @@

Documentation

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/Problem-checklist.html b/Problem-checklist.html index 990f11377..00634fa99 100644 --- a/Problem-checklist.html +++ b/Problem-checklist.html @@ -105,7 +105,7 @@

Problem checklist

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/Transactions.html b/Transactions.html index d25784cc2..3a9af673d 100644 --- a/Transactions.html +++ b/Transactions.html @@ -409,7 +409,7 @@

Transaction and method nesting

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/_sources/auto_graph.rst.txt b/_sources/auto_graph.rst.txt index aecda268e..0ea466f8a 100644 --- a/_sources/auto_graph.rst.txt +++ b/_sources/auto_graph.rst.txt @@ -10,17 +10,17 @@ WishboneMaster_WishboneMaster["WishboneMaster"] WishboneMaster_request["request"] subgraph Forwarder["result Forwarder"] - Forwarder_read["read"] Forwarder_write["write"] + Forwarder_read["read"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] - WishboneMaster1_result["result"] - WishboneMaster1_request["request"] WishboneMaster1_WishboneMaster["WishboneMaster"] + WishboneMaster1_request["request"] + WishboneMaster1_result["result"] subgraph Forwarder1["result Forwarder"] - Forwarder1_read["read"] Forwarder1_write["write"] + Forwarder1_read["read"] end end subgraph FIFO["fifo_fetch FIFO"] @@ -28,27 +28,27 @@ FIFO_read["read"] end subgraph BasicFifo["free_rf_fifo BasicFifo"] - BasicFifo_read["read"] BasicFifo_write["write"] + BasicFifo_read["read"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] + SimpleWBCacheRefiller_accept_refill["accept_refill"] SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] SimpleWBCacheRefiller_start_refill["start_refill"] - SimpleWBCacheRefiller_accept_refill["accept_refill"] subgraph Forwarder2["address_fwd Forwarder"] - Forwarder2_read["read"] Forwarder2_write["write"] + Forwarder2_read["read"] end end subgraph ICache["icache ICache"] - ICache_issue_req["issue_req"] ICache_ICache["ICache"] ICache_ICache1["ICache"] ICache_accept_res["accept_res"] + ICache_issue_req["issue_req"] ICache_ICache2["ICache"] subgraph FIFO1["req_fifo FIFO"] - FIFO1_write["write"] FIFO1_read["read"] + FIFO1_write["write"] end subgraph Forwarder3["res_fwd Forwarder"] Forwarder3_write["write"] @@ -77,11 +77,11 @@ RegisterFile_read2["read2"] end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_peek["peek"] - ReorderBuffer_get_indices["get_indices"] - ReorderBuffer_retire["retire"] ReorderBuffer_put["put"] + ReorderBuffer_retire["retire"] + ReorderBuffer_get_indices["get_indices"] ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_peek["peek"] end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] ExceptionCauseRegister_get["get"] @@ -91,8 +91,8 @@ subgraph Collector["result_collector Collector"] Collector_method["method"] subgraph Forwarder4["forwarder Forwarder"] - Forwarder4_write["write"] Forwarder4_read["read"] + Forwarder4_write["write"] end subgraph ManyToOneConnectTrans["connect ManyToOneConnectTrans"] subgraph ConnectTrans["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -107,23 +107,23 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_insert["insert"] - RSFuncBlock_get_result["get_result"] RSFuncBlock_select["select"] + RSFuncBlock_get_result["get_result"] RSFuncBlock_update["update"] + RSFuncBlock_insert["insert"] subgraph RS["rs RS"] - RS_select["select"] RS_RS["RS"] + RS_take["take"] + RS_insert["insert"] + RS_select["select"] RS_RS1["RS"] RS_RS2["RS"] - RS_update["update"] RS_RS3["RS"] - RS_take["take"] - RS_insert["insert"] + RS_update["update"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO2["fifo FIFO"] FIFO2_write["write"] FIFO2_read["read"] @@ -133,38 +133,38 @@ WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_accept["accept"] ShiftFuncUnit_issue["issue"] + ShiftFuncUnit_accept["accept"] subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_accept["accept"] - JumpBranchFuncUnit_branch_result["branch_result"] JumpBranchFuncUnit_issue["issue"] + JumpBranchFuncUnit_branch_result["branch_result"] + JumpBranchFuncUnit_accept["accept"] subgraph FIFO4["fifo_res FIFO"] - FIFO4_read["read"] FIFO4_write["write"] + FIFO4_read["read"] end subgraph FIFO5["fifo_branch FIFO"] - FIFO5_read["read"] FIFO5_write["write"] + FIFO5_read["read"] end end subgraph WakeupSelect2["wakeup_select_2 WakeupSelect"] WakeupSelect2_WakeupSelect["WakeupSelect"] end subgraph ExceptionFuncUnit["func_unit_3 ExceptionFuncUnit"] - ExceptionFuncUnit_accept["accept"] ExceptionFuncUnit_issue["issue"] + ExceptionFuncUnit_accept["accept"] subgraph FIFO6["fifo FIFO"] - FIFO6_write["write"] FIFO6_read["read"] + FIFO6_write["write"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] @@ -173,8 +173,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 ConnectTrans2["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -193,21 +193,21 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] + LSUDummy_get_result["get_result"] LSUDummy_LSUDummy["LSUDummy"] - LSUDummy_update["update"] LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_LSUDummy2["LSUDummy"] - LSUDummy_select["select"] + LSUDummy_update["update"] LSUDummy_insert["insert"] - LSUDummy_get_result["get_result"] LSUDummy_precommit["precommit"] + LSUDummy_select["select"] subgraph Forwarder6["forwarder Forwarder"] Forwarder6_write["write"] Forwarder6_read["read"] end subgraph LSURequesterWB["requester LSURequesterWB"] - LSURequesterWB_accept["accept"] LSURequesterWB_issue["issue"] + LSURequesterWB_accept["accept"] end end end @@ -219,23 +219,23 @@ subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] DoubleCounterCSR_increment["increment"] subgraph CSRRegister["register_low CSRRegister"] - CSRRegister_write["write"] CSRRegister_read["read"] + 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"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister2["register_low CSRRegister"] - CSRRegister2_write["write"] CSRRegister2_read["read"] + CSRRegister2_write["write"] end subgraph CSRRegister3["register_high CSRRegister"] - CSRRegister3_read["read"] CSRRegister3_write["write"] + CSRRegister3_read["read"] end end subgraph CSRRegister4["mcause CSRRegister"] @@ -243,8 +243,8 @@ end end subgraph FIFO7["fifo_decode FIFO"] - FIFO7_read["read"] FIFO7_write["write"] + FIFO7_read["read"] end subgraph Decode["decode Decode"] Decode_Decode["Decode"] @@ -265,23 +265,23 @@ Renaming_Renaming["Renaming"] end subgraph FIFO10["reg_alloc_out_buf FIFO"] - FIFO10_write["write"] FIFO10_read["read"] + FIFO10_write["write"] end subgraph ROBAllocation["rob_alloc ROBAllocation"] 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_read["read"] Forwarder7_write["write"] + Forwarder7_read["read"] end end subgraph RSInsertion["rs_insertion RSInsertion"] @@ -294,17 +294,22 @@ subgraph Retirement["retirement Retirement"] Retirement_Retirement["Retirement"] Retirement_Retirement1["Retirement"] + Retirement_Retirement2["Retirement"] subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5_read["read"] CSRRegister5_write["write"] + CSRRegister5_read["read"] end subgraph CSRRegister6["register_high CSRRegister"] CSRRegister6_read["read"] CSRRegister6_write["write"] end end + subgraph Forwarder8["frat_fix Forwarder"] + Forwarder8_write["write"] + Forwarder8_read["read"] + end end end subgraph TestbenchIO["io_in TestbenchIO"] @@ -320,26 +325,26 @@ end end Core_InitFreeRFFifo --> BasicFifo_write - Retirement_Retirement --> BasicFifo_write + Retirement_Retirement2 --> BasicFifo_write WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write Forwarder2_read --> SimpleWBCacheRefiller_SimpleWBCacheRefiller SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request - ICache_ICache1 --> Forwarder3_write - ICache_ICache --> SimpleWBCacheRefiller_start_refill - ICache_ICache --> Forwarder2_write + ICache_ICache --> Forwarder3_write + ICache_ICache1 --> SimpleWBCacheRefiller_start_refill + ICache_ICache1 --> Forwarder2_write ICache_ICache2 --> Forwarder2_write SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 WishboneMaster_result --> ICache_ICache2 Forwarder_read --> ICache_ICache2 - Fetch_Fetch --> ICache_issue_req - Fetch_Fetch --> FIFO1_write - Fetch_Fetch --> BasicFifo1_write - BasicFifo1_read --> Fetch_Fetch1 - ICache_accept_res --> Fetch_Fetch1 - FIFO1_read --> Fetch_Fetch1 - Forwarder3_read --> Fetch_Fetch1 - Fetch_Fetch1 --> FIFO_write + Fetch_Fetch1 --> ICache_issue_req + Fetch_Fetch1 --> FIFO1_write + Fetch_Fetch1 --> BasicFifo1_write + BasicFifo1_read --> Fetch_Fetch + ICache_accept_res --> Fetch_Fetch + FIFO1_read --> Fetch_Fetch + Forwarder3_read --> Fetch_Fetch + Fetch_Fetch --> FIFO_write AdapterTrans_AdapterTrans_write --> FIFO_write FIFO_read --> Decode_Decode Decode_Decode --> FIFO7_write @@ -348,19 +353,20 @@ RegAllocation_RegAllocation --> FIFO8_write FIFO8_read --> Renaming_Renaming Renaming_Renaming --> 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_RSSelection2 - RSSelection_RSSelection2 --> Forwarder7_write + FIFO10_read --> RSSelection_RSSelection1 + RSSelection_RSSelection1 --> Forwarder7_write Forwarder7_read --> RSSelection_RSSelection - Forwarder7_read --> RSSelection_RSSelection1 + Forwarder7_read --> RSSelection_RSSelection2 RSFuncBlock_select --> RSSelection_RSSelection RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO11_write - RSSelection_RSSelection1 --> FIFO11_write - RSSelection_RSSelection1 <--> LSUDummy_select + RSSelection_RSSelection2 --> FIFO11_write + RSSelection_RSSelection2 <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -379,17 +385,17 @@ ResultAnnouncement_ResultAnnouncement --> RSFuncBlock_update ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update - RS_RS3 --> WakeupSelect_WakeupSelect + RS_RS --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect RS_take --> WakeupSelect3_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO2_write - RS_RS2 --> WakeupSelect1_WakeupSelect + RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO3_write - RS_RS1 --> WakeupSelect2_WakeupSelect + RS_RS2 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect --> ExceptionCauseRegister_report WakeupSelect3_WakeupSelect --> ExceptionCauseRegister_report @@ -399,7 +405,7 @@ ReorderBuffer_get_indices --> ConnectTrans1_ConnectTrans WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write - RS_RS --> WakeupSelect3_WakeupSelect + RS_RS1 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO6_write ConnectTrans2_ConnectTrans --> Forwarder5_write @@ -414,14 +420,14 @@ FIFO4_read --> ConnectTrans4_ConnectTrans ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans - LSUDummy_LSUDummy2 --> LSURequesterWB_issue - LSUDummy_LSUDummy2 --> WishboneMaster1_request + LSUDummy_LSUDummy1 --> LSURequesterWB_issue + LSUDummy_LSUDummy1 --> WishboneMaster1_request + LSUDummy_LSUDummy1 --> Forwarder6_write LSUDummy_LSUDummy2 --> Forwarder6_write LSUDummy_LSUDummy --> Forwarder6_write - LSUDummy_LSUDummy1 --> Forwarder6_write - LSURequesterWB_accept --> LSUDummy_LSUDummy1 - WishboneMaster1_result --> LSUDummy_LSUDummy1 - Forwarder1_read --> LSUDummy_LSUDummy1 + LSURequesterWB_accept --> LSUDummy_LSUDummy + WishboneMaster1_result --> LSUDummy_LSUDummy + Forwarder1_read --> LSUDummy_LSUDummy ConnectTrans_ConnectTrans --> Forwarder4_write ConnectTrans1_ConnectTrans --> Forwarder4_write RSFuncBlock_get_result --> ConnectTrans_ConnectTrans @@ -429,18 +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_Retirement - ExceptionCauseRegister_get --> Retirement_Retirement - Retirement_Retirement --> CSRRegister4_write - Retirement_Retirement --> RRAT_commit - Retirement_Retirement --> RegisterFile_free - Retirement_Retirement <--> DoubleCounterCSR2_increment - CSRRegister5_read --> Retirement_Retirement - Retirement_Retirement --> CSRRegister5_write - CSRRegister6_read --> Retirement_Retirement - Retirement_Retirement --> CSRRegister6_write + ReorderBuffer_peek --> Retirement_Retirement + Retirement_Retirement --> 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_Retirement1 GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister_write diff --git a/api.html b/api.html index f88988779..9eba4deb6 100644 --- a/api.html +++ b/api.html @@ -240,7 +240,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/auto_graph.html b/auto_graph.html index 738090c41..0217fbcdb 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -89,17 +89,17 @@ WishboneMaster_WishboneMaster["WishboneMaster"] WishboneMaster_request["request"] subgraph Forwarder["result Forwarder"] - Forwarder_read["read"] Forwarder_write["write"] + Forwarder_read["read"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] - WishboneMaster1_result["result"] - WishboneMaster1_request["request"] WishboneMaster1_WishboneMaster["WishboneMaster"] + WishboneMaster1_request["request"] + WishboneMaster1_result["result"] subgraph Forwarder1["result Forwarder"] - Forwarder1_read["read"] Forwarder1_write["write"] + Forwarder1_read["read"] end end subgraph FIFO["fifo_fetch FIFO"] @@ -107,27 +107,27 @@ FIFO_read["read"] end subgraph BasicFifo["free_rf_fifo BasicFifo"] - BasicFifo_read["read"] BasicFifo_write["write"] + BasicFifo_read["read"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] + SimpleWBCacheRefiller_accept_refill["accept_refill"] SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] SimpleWBCacheRefiller_start_refill["start_refill"] - SimpleWBCacheRefiller_accept_refill["accept_refill"] subgraph Forwarder2["address_fwd Forwarder"] - Forwarder2_read["read"] Forwarder2_write["write"] + Forwarder2_read["read"] end end subgraph ICache["icache ICache"] - ICache_issue_req["issue_req"] ICache_ICache["ICache"] ICache_ICache1["ICache"] ICache_accept_res["accept_res"] + ICache_issue_req["issue_req"] ICache_ICache2["ICache"] subgraph FIFO1["req_fifo FIFO"] - FIFO1_write["write"] FIFO1_read["read"] + FIFO1_write["write"] end subgraph Forwarder3["res_fwd Forwarder"] Forwarder3_write["write"] @@ -156,11 +156,11 @@ RegisterFile_read2["read2"] end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_peek["peek"] - ReorderBuffer_get_indices["get_indices"] - ReorderBuffer_retire["retire"] ReorderBuffer_put["put"] + ReorderBuffer_retire["retire"] + ReorderBuffer_get_indices["get_indices"] ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_peek["peek"] end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] ExceptionCauseRegister_get["get"] @@ -170,8 +170,8 @@ subgraph Collector["result_collector Collector"] Collector_method["method"] subgraph Forwarder4["forwarder Forwarder"] - Forwarder4_write["write"] Forwarder4_read["read"] + Forwarder4_write["write"] end subgraph ManyToOneConnectTrans["connect ManyToOneConnectTrans"] subgraph ConnectTrans["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -186,23 +186,23 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_insert["insert"] - RSFuncBlock_get_result["get_result"] RSFuncBlock_select["select"] + RSFuncBlock_get_result["get_result"] RSFuncBlock_update["update"] + RSFuncBlock_insert["insert"] subgraph RS["rs RS"] - RS_select["select"] RS_RS["RS"] + RS_take["take"] + RS_insert["insert"] + RS_select["select"] RS_RS1["RS"] RS_RS2["RS"] - RS_update["update"] RS_RS3["RS"] - RS_take["take"] - RS_insert["insert"] + RS_update["update"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO2["fifo FIFO"] FIFO2_write["write"] FIFO2_read["read"] @@ -212,38 +212,38 @@ WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_accept["accept"] ShiftFuncUnit_issue["issue"] + ShiftFuncUnit_accept["accept"] subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_accept["accept"] - JumpBranchFuncUnit_branch_result["branch_result"] JumpBranchFuncUnit_issue["issue"] + JumpBranchFuncUnit_branch_result["branch_result"] + JumpBranchFuncUnit_accept["accept"] subgraph FIFO4["fifo_res FIFO"] - FIFO4_read["read"] FIFO4_write["write"] + FIFO4_read["read"] end subgraph FIFO5["fifo_branch FIFO"] - FIFO5_read["read"] FIFO5_write["write"] + FIFO5_read["read"] end end subgraph WakeupSelect2["wakeup_select_2 WakeupSelect"] WakeupSelect2_WakeupSelect["WakeupSelect"] end subgraph ExceptionFuncUnit["func_unit_3 ExceptionFuncUnit"] - ExceptionFuncUnit_accept["accept"] ExceptionFuncUnit_issue["issue"] + ExceptionFuncUnit_accept["accept"] subgraph FIFO6["fifo FIFO"] - FIFO6_write["write"] FIFO6_read["read"] + FIFO6_write["write"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] @@ -252,8 +252,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 ConnectTrans2["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -272,21 +272,21 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] + LSUDummy_get_result["get_result"] LSUDummy_LSUDummy["LSUDummy"] - LSUDummy_update["update"] LSUDummy_LSUDummy1["LSUDummy"] LSUDummy_LSUDummy2["LSUDummy"] - LSUDummy_select["select"] + LSUDummy_update["update"] LSUDummy_insert["insert"] - LSUDummy_get_result["get_result"] LSUDummy_precommit["precommit"] + LSUDummy_select["select"] subgraph Forwarder6["forwarder Forwarder"] Forwarder6_write["write"] Forwarder6_read["read"] end subgraph LSURequesterWB["requester LSURequesterWB"] - LSURequesterWB_accept["accept"] LSURequesterWB_issue["issue"] + LSURequesterWB_accept["accept"] end end end @@ -298,23 +298,23 @@ subgraph DoubleCounterCSR["csr_cycle DoubleCounterCSR"] DoubleCounterCSR_increment["increment"] subgraph CSRRegister["register_low CSRRegister"] - CSRRegister_write["write"] CSRRegister_read["read"] + 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"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister2["register_low CSRRegister"] - CSRRegister2_write["write"] CSRRegister2_read["read"] + CSRRegister2_write["write"] end subgraph CSRRegister3["register_high CSRRegister"] - CSRRegister3_read["read"] CSRRegister3_write["write"] + CSRRegister3_read["read"] end end subgraph CSRRegister4["mcause CSRRegister"] @@ -322,8 +322,8 @@ end end subgraph FIFO7["fifo_decode FIFO"] - FIFO7_read["read"] FIFO7_write["write"] + FIFO7_read["read"] end subgraph Decode["decode Decode"] Decode_Decode["Decode"] @@ -344,23 +344,23 @@ Renaming_Renaming["Renaming"] end subgraph FIFO10["reg_alloc_out_buf FIFO"] - FIFO10_write["write"] FIFO10_read["read"] + FIFO10_write["write"] end subgraph ROBAllocation["rob_alloc ROBAllocation"] 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_read["read"] Forwarder7_write["write"] + Forwarder7_read["read"] end end subgraph RSInsertion["rs_insertion RSInsertion"] @@ -373,17 +373,22 @@ subgraph Retirement["retirement Retirement"] Retirement_Retirement["Retirement"] Retirement_Retirement1["Retirement"] + Retirement_Retirement2["Retirement"] subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5_read["read"] CSRRegister5_write["write"] + CSRRegister5_read["read"] end subgraph CSRRegister6["register_high CSRRegister"] CSRRegister6_read["read"] CSRRegister6_write["write"] end end + subgraph Forwarder8["frat_fix Forwarder"] + Forwarder8_write["write"] + Forwarder8_read["read"] + end end end subgraph TestbenchIO["io_in TestbenchIO"] @@ -399,26 +404,26 @@ end end Core_InitFreeRFFifo --> BasicFifo_write -Retirement_Retirement --> BasicFifo_write +Retirement_Retirement2 --> BasicFifo_write WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write Forwarder2_read --> SimpleWBCacheRefiller_SimpleWBCacheRefiller SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request -ICache_ICache1 --> Forwarder3_write -ICache_ICache --> SimpleWBCacheRefiller_start_refill -ICache_ICache --> Forwarder2_write +ICache_ICache --> Forwarder3_write +ICache_ICache1 --> SimpleWBCacheRefiller_start_refill +ICache_ICache1 --> Forwarder2_write ICache_ICache2 --> Forwarder2_write SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 WishboneMaster_result --> ICache_ICache2 Forwarder_read --> ICache_ICache2 -Fetch_Fetch --> ICache_issue_req -Fetch_Fetch --> FIFO1_write -Fetch_Fetch --> BasicFifo1_write -BasicFifo1_read --> Fetch_Fetch1 -ICache_accept_res --> Fetch_Fetch1 -FIFO1_read --> Fetch_Fetch1 -Forwarder3_read --> Fetch_Fetch1 -Fetch_Fetch1 --> FIFO_write +Fetch_Fetch1 --> ICache_issue_req +Fetch_Fetch1 --> FIFO1_write +Fetch_Fetch1 --> BasicFifo1_write +BasicFifo1_read --> Fetch_Fetch +ICache_accept_res --> Fetch_Fetch +FIFO1_read --> Fetch_Fetch +Forwarder3_read --> Fetch_Fetch +Fetch_Fetch --> FIFO_write AdapterTrans_AdapterTrans_write --> FIFO_write FIFO_read --> Decode_Decode Decode_Decode --> FIFO7_write @@ -427,19 +432,20 @@ RegAllocation_RegAllocation --> FIFO8_write FIFO8_read --> Renaming_Renaming Renaming_Renaming --> 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_RSSelection2 -RSSelection_RSSelection2 --> Forwarder7_write +FIFO10_read --> RSSelection_RSSelection1 +RSSelection_RSSelection1 --> Forwarder7_write Forwarder7_read --> RSSelection_RSSelection -Forwarder7_read --> RSSelection_RSSelection1 +Forwarder7_read --> RSSelection_RSSelection2 RSFuncBlock_select --> RSSelection_RSSelection RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO11_write -RSSelection_RSSelection1 --> FIFO11_write -RSSelection_RSSelection1 <--> LSUDummy_select +RSSelection_RSSelection2 --> FIFO11_write +RSSelection_RSSelection2 <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -458,17 +464,17 @@ ResultAnnouncement_ResultAnnouncement --> RSFuncBlock_update ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update -RS_RS3 --> WakeupSelect_WakeupSelect +RS_RS --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect RS_take --> WakeupSelect3_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO2_write -RS_RS2 --> WakeupSelect1_WakeupSelect +RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO3_write -RS_RS1 --> WakeupSelect2_WakeupSelect +RS_RS2 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect --> ExceptionCauseRegister_report WakeupSelect3_WakeupSelect --> ExceptionCauseRegister_report @@ -478,7 +484,7 @@ ReorderBuffer_get_indices --> ConnectTrans1_ConnectTrans WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write -RS_RS --> WakeupSelect3_WakeupSelect +RS_RS1 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO6_write ConnectTrans2_ConnectTrans --> Forwarder5_write @@ -493,14 +499,14 @@ FIFO4_read --> ConnectTrans4_ConnectTrans ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans -LSUDummy_LSUDummy2 --> LSURequesterWB_issue -LSUDummy_LSUDummy2 --> WishboneMaster1_request +LSUDummy_LSUDummy1 --> LSURequesterWB_issue +LSUDummy_LSUDummy1 --> WishboneMaster1_request +LSUDummy_LSUDummy1 --> Forwarder6_write LSUDummy_LSUDummy2 --> Forwarder6_write LSUDummy_LSUDummy --> Forwarder6_write -LSUDummy_LSUDummy1 --> Forwarder6_write -LSURequesterWB_accept --> LSUDummy_LSUDummy1 -WishboneMaster1_result --> LSUDummy_LSUDummy1 -Forwarder1_read --> LSUDummy_LSUDummy1 +LSURequesterWB_accept --> LSUDummy_LSUDummy +WishboneMaster1_result --> LSUDummy_LSUDummy +Forwarder1_read --> LSUDummy_LSUDummy ConnectTrans_ConnectTrans --> Forwarder4_write ConnectTrans1_ConnectTrans --> Forwarder4_write RSFuncBlock_get_result --> ConnectTrans_ConnectTrans @@ -508,18 +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_Retirement -ExceptionCauseRegister_get --> Retirement_Retirement -Retirement_Retirement --> CSRRegister4_write -Retirement_Retirement --> RRAT_commit -Retirement_Retirement --> RegisterFile_free -Retirement_Retirement <--> DoubleCounterCSR2_increment -CSRRegister5_read --> Retirement_Retirement -Retirement_Retirement --> CSRRegister5_write -CSRRegister6_read --> Retirement_Retirement -Retirement_Retirement --> CSRRegister6_write +ReorderBuffer_peek --> Retirement_Retirement +Retirement_Retirement --> 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_Retirement1 GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister_write @@ -540,7 +548,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/components/icache.html b/components/icache.html index 8b7fb8bf2..e6977c93b 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

Address mapping example

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index a8930f203..19a73560f 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -399,7 +399,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.fu.html b/coreblocks.fu.html index 46e9f46e5..513fbf620 100644 --- a/coreblocks.fu.html +++ b/coreblocks.fu.html @@ -898,7 +898,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.fu.unsigned_multiplication.html b/coreblocks.fu.unsigned_multiplication.html index 3d925ac0d..f71a529ca 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 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.html b/coreblocks.html index 1c3d2100f..63790a66b 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -215,7 +215,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.params.html b/coreblocks.params.html index f5c0994c8..d33075bdb 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -2230,6 +2230,12 @@

Submodules +
+side_fx: LayoutListField
+

Side effects are enabled.

+
+
@@ -2669,7 +2675,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index f9eed6161..ba963b77e 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -348,7 +348,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.scheduler.html b/coreblocks.scheduler.html index c066d1503..1ab935832 100644 --- a/coreblocks.scheduler.html +++ b/coreblocks.scheduler.html @@ -191,7 +191,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.stages.html b/coreblocks.stages.html index 4ef5fdc2b..e50a2733d 100644 --- a/coreblocks.stages.html +++ b/coreblocks.stages.html @@ -161,7 +161,7 @@

SubmodulesElaboratable

-__init__(gen_params: GenParams, *, rob_peek: Method, rob_retire: Method, r_rat_commit: Method, free_rf_put: Method, rf_free: Method, precommit: Method, exception_cause_get: Method)
+__init__(gen_params: GenParams, *, rob_peek: Method, rob_retire: Method, r_rat_commit: Method, free_rf_put: Method, rf_free: Method, precommit: Method, exception_cause_get: Method, frat_rename: Method)

@@ -263,7 +263,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.structs_common.html b/coreblocks.structs_common.html index c5fb0308c..5d4677f28 100644 --- a/coreblocks.structs_common.html +++ b/coreblocks.structs_common.html @@ -454,7 +454,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/coreblocks.utils.html b/coreblocks.utils.html index 4de6e9019..04d770150 100644 --- a/coreblocks.utils.html +++ b/coreblocks.utils.html @@ -165,7 +165,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

diff --git a/genindex.html b/genindex.html index 8787bafa1..5a6120102 100644 --- a/genindex.html +++ b/genindex.html @@ -2333,6 +2333,8 @@

S

  • ShiftUnsignedMul (class in coreblocks.fu.unsigned_multiplication.shift)
  • should_update_prioriy() (in module coreblocks.structs_common.exception) +
  • +
  • side_fx (coreblocks.params.layouts.CommonLayoutFields attribute)
  • silence_mustuse() (in module transactron.utils.utils)
  • @@ -2873,7 +2875,7 @@

    Z

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/index.html b/index.html index 508ae06ae..14f55b5c5 100644 --- a/index.html +++ b/index.html @@ -221,7 +221,7 @@

    Coreblocks

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/miscellany/exceptionsSummary.html b/miscellany/exceptionsSummary.html index 89fd8006f..94f20b956 100644 --- a/miscellany/exceptionsSummary.html +++ b/miscellany/exceptionsSummary.html @@ -271,7 +271,7 @@

    Summary

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/modules-coreblocks.html b/modules-coreblocks.html index ba7ee005f..11472edc7 100644 --- a/modules-coreblocks.html +++ b/modules-coreblocks.html @@ -184,7 +184,7 @@

    coreblocks

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/modules-transactron.html b/modules-transactron.html index 1b4064e8b..27f7f4ad1 100644 --- a/modules-transactron.html +++ b/modules-transactron.html @@ -126,7 +126,7 @@

    transactron

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/objects.inv b/objects.inv index 1922d334f2b40b9bc27176c6665a06c50c1d882e..9123468a717a8baf845a641f291edae4f27bfcfb 100644 GIT binary patch delta 672 zcmV;R0$=^9Kd?Wre++*!D%~=PcKQXu-x0Qj2{kCM(17FIdlDMYC?m_Tk!+N8!yrMR zo%G1YRK5z`f5CK*Y`Z!8&^;`&RUR_97i6CVsK_QCEJTH%LIVb%%Ee7Omg)iJdVvD^ zy_@Y(_7$j6?2}#F)PUXX?jGj&{Rn>NOz|&b=giG5%;g+~^tly)nyy2@KFh>GhcO;o z!WKVD-1tlOlMD?af35HODDN+Uz#!Dn$*ft6CtA)Z;Yg>>nr_qN8fvMlt|j}7IjF&H zQV_Y6(mvg{A?Y!L-K^r z(bjkm*k)JwlNXmfY%7L&zmowD6#?p#7Y-$1eU%HG@UF>>m;S5yYjNTfEZ+Xwe*X{OsM3JO(GEqwQn(ply0V!`SkJuKSPh}g(Ryy1K*EVgr z)Fhzd`jic+?1}Af)I*{rnzZunHj|wW8UpV$lerEr0(X{^>JE4UUPF^)4}=rGFVKv5 zn{9htEvM?Pvz3(Tp(d024;>6cuALp&uU3a> zI;e}$bzFJSz^8-$UrP@Nc$vEPM-5y$w5Q}O|C4nPNF?KP@EUumWSl-TSJ&{ql2P1h z&@+N(m9zfPHajO5@1vQsH#w8x5IO<2vm6oL0s-EW`x7t%KmM~V6mJ0m-m{$*2nqyN Gi8a23>`qMp delta 686 zcmV;f0#W_2KdC>ke+)_kqu&v>#|SlQuF!x3(R&ga&nP3yu#s$(b;BS*pq=!{#?+1q z-G9OKUu-`(`w~4YvQ-{3xEExf1gOX+Ulc@zph5!%pvuL~3X{+b7A^hZ?jGj&{Rn>N zOz}@v=giG5%;g+~^tphVu0y~+%fvy4F&_NERwqi__*3(f6AdDNEx`IH?=OMCAk@&w zv{s8}Le41RNawbiZqwu%YAvd+CHu}esKISg5D=Rf={K~66&#$vdUA-lifrUKvl$C0 zLgkN=i#(7>Ir7F6I+s|*$k`{~9v15b9e0R+AMujDQ}&Om#a@|1sltcoE`YbnUR%x9 z%J#5?hX8O$?}8|5{*H`G;AXX*37&kqM5;UCqh1Zj-Qod>yi>kvqAydsKmxuha7h&Y zu)rno`+TuQ7jyB~d^Q0UBvJH$YaO>k@`Mk%)_4!tW>@%|6qh_~D~5Ri$0hVpxraKf zD(i>kLL0NkQNj5nek_w74kdp9lnb2jw#JN?{;T=q&&cwLsU6=ml706qo(IIw=h+sC z-WrH+dC$bx?e=*@k)(4nQA+ljZoV1;DQ_*0*cP2nWjnl9I@_JsHf_1oB%tE@lntru ziETjCL!u>`wDR^dlqiCw1THVVeDonptedzo(qLYtGq4lM$gij(mU zcmkk8lWPxzJOD4yjChxAdtEK3>aMeulG?P7G>)8y{m2l8|RU@3HtF;NIs&A#@ z)VQ>Qj#H?j*d7I+Q$cn@7n3UxBo1eNA!^jacCq`asGaXVlU)!U0u~TI zd#PlcJ~LO>@IsMM+-lG>f@hV(_|P^xCl@b_nX^|dljsmS0avpl5#9m;UXub8Fap2M UvosWM0RbShq!kDX1OnF*NEA0vk^lez diff --git a/py-modindex.html b/py-modindex.html index a6c9b989a..41bbc92a9 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -458,7 +458,7 @@

    Python Module Index

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/scheduler/Overview.html b/scheduler/Overview.html index dc95f0d97..a9255cc98 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 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/search.html b/search.html index 2ed20f44b..b56c31d3e 100644 --- a/search.html +++ b/search.html @@ -101,7 +101,7 @@

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

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

    diff --git a/shared_structs/RS.html b/shared_structs/RS.html index 2fc7326ae..0cc0dd657 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 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/synthesis/Synthesis.html b/synthesis/Synthesis.html index 9a3e42df2..1fd000787 100644 --- a/synthesis/Synthesis.html +++ b/synthesis/Synthesis.html @@ -151,7 +151,7 @@

    Benchmarks

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/transactron.html b/transactron.html index 7965d34dd..e8f00184c 100644 --- a/transactron.html +++ b/transactron.html @@ -1329,7 +1329,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/transactron.lib.html b/transactron.lib.html index e36bf7734..68eba5366 100644 --- a/transactron.lib.html +++ b/transactron.lib.html @@ -897,7 +897,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.

    diff --git a/transactron.utils.html b/transactron.utils.html index a4e3c3421..ddb2c1b22 100644 --- a/transactron.utils.html +++ b/transactron.utils.html @@ -420,7 +420,7 @@

    Submodules

    © Copyright Kuźnia Rdzeni, 2023. - Last updated on 09:27 2023-11-17. + Last updated on 16:29 2023-11-18.