From b909d2657e9d09d22e19d7476d38db68631aa545 Mon Sep 17 00:00:00 2001 From: tilk Date: Sun, 5 Nov 2023 20:30:28 +0000 Subject: [PATCH] Fix zbs and DecoderManager docstrings (#470) --- .doctrees/Current_graph.doctree | Bin 24025 -> 24016 bytes .doctrees/api.doctree | Bin 34264 -> 34264 bytes .doctrees/auto_graph.doctree | Bin 23258 -> 23249 bytes .doctrees/coreblocks.fu.doctree | Bin 244584 -> 257711 bytes .doctrees/environment.pickle | Bin 316802 -> 316802 bytes Assumptions.html | 2 +- Current_graph.html | 96 ++++++++-------- Development_environment.html | 2 +- Home.html | 2 +- Problem-checklist.html | 2 +- Transactions.html | 2 +- _sources/auto_graph.rst.txt | 94 ++++++++-------- api.html | 2 +- auto_graph.html | 96 ++++++++-------- components/icache.html | 2 +- coreblocks.frontend.html | 2 +- coreblocks.fu.html | 123 +++++++++++++++++---- coreblocks.fu.unsigned_multiplication.html | 2 +- coreblocks.html | 2 +- coreblocks.params.html | 2 +- coreblocks.peripherals.html | 2 +- coreblocks.scheduler.html | 2 +- coreblocks.stages.html | 2 +- coreblocks.structs_common.html | 2 +- coreblocks.utils.html | 2 +- genindex.html | 2 +- index.html | 2 +- miscellany/exceptionsSummary.html | 2 +- modules-coreblocks.html | 2 +- modules-transactron.html | 2 +- py-modindex.html | 2 +- scheduler/Overview.html | 2 +- search.html | 2 +- searchindex.js | 2 +- shared_structs/Implementation/RS_impl.html | 2 +- shared_structs/RS.html | 2 +- synthesis/Synthesis.html | 2 +- transactron.html | 2 +- transactron.lib.html | 2 +- 39 files changed, 275 insertions(+), 194 deletions(-) diff --git a/.doctrees/Current_graph.doctree b/.doctrees/Current_graph.doctree index c16c8125f56b5026a387f41986546e7f91858612..05d93c8d0b752183770f536d104bfe85b3139f5d 100644 GIT binary patch delta 600 zcmXw#PiPZC6vmnDCY!dK4eBPFO}m;jjZN51lWY^TrUu(kOd8W}gn(4hoLVd*Irg|0 z!BesQwC94SfPa~b+Jj!a6%2S1Y0+q*w|XjwD9@aB8-oAGYdd%fdnf_1` zIGh}$Q{&GFPO&99OKU4^51AOvX8Q@2axoXSa$Zd4;%F5{(8=wBn#bHWQx2m?X4Ho( z#pBj8Q)lFtbEEWm@eGF#7jF|2=SwzTmy(Zrr9RFaz`KI7Q5L|>ER!5oW;WSL$|;hg zdijti6R2N~;%!BQQIXKBR1vA1#EZ&ze6Ggvip9g~DE?F_89+=@Va<84HkUxO7N_Cb zY9H(KVE!t>^@fJu3)8IXL?D7iD}vs_5Z0|E-dJbx)iNM8>MmPtlpLiW8(#4*p{C2q delta 592 zcmXYrO=uHQ6or{|nwi*{1Z0v)nog58Y0a37O~!^=Qv*q<3rRR3nb_hS zk8e^0t)6Z?mvj~yl&5fa%7ag`!}zxB#W{I~_3re0;CScJu-r)a!faWavd>WYx?e}iZ<5=7i$iZHiS2-dR>0W30tGdTWmQLKM8q}KK(x1l zf#5H^3mcF^#-_U2E7K^eVr%m8(D1)5FLS#d$dNH5chxB0|Mya;MAbkT^ zO?|<4V~Ft=hK?WV5H`nq$i#sLhnr#ymsK7cBN38LdpMlQ#MmukRA;k;c$R5XQxdmK z_9t6rR75rRZ=90T*_zH+oHTP07ni}>k@Gl|cQ_Mo@(Ip-(#dyGx?Tukrzk8I=g=we zxKIQ&{3+_3N%YB09*;|VQ9tIx#j-@zi<2b_LCPAXulQiaamhN0-xi^hn#YUK%5f4X zU+*Fd)e{_=b{IR;1y^PdY)i#VO~d-MhJ{*!+F#d(X>He1w0i6c>s+z(yGq{MZs{*F C7|?3~ diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index 4a1bf2615405c6b946d1fdbfa43047d815c1c0ea..42611b4bc12f1796d00efd04a0ef43a5ca85f29b 100644 GIT binary patch delta 1812 zcma)*e@t6d6vz8Ikih7qBb0TlTedJQj!m7(D50fgtu3rbJ76dqKP;uvK1*MDKcJIM zhS|)TmEd;X5{=?C+2WQsfm9Ps)Mz4!&S@l*1k@Q_^bccVh-@16hj{M0^TMD0^F815 zdFP#b?|JvlpV7~s(NEpk_sDu#3?-ycSQdqZnlXk2G13zk!p};3BstUGh0!Wg;rcpBQu>o}Oh`x| z*vy8))_aR<#BAGcGPo5{#HQVSVkj9^Gr6%uZzKhKs~&n_?cS0hG1QNHD_C7h&E(Vz z{Sh!%l@;B;=1_a$u^uR@E`^n3 z#3Rz~HRn|`8~>xL!+{I-YR(4>_F8;%+F>^M_569@(@?h8AZj zyc66HeXi31GFAQ}5i(JJnh2RD|1l9VN&ZVBWQzPe5i&vkSCnWc|0f0|lOqdZNjre-w9B>8Uv9&Y&4{zmD6g^h}}N^!&lOvezFk;V`-7UBTp*uLzUu zQoWIc+ykW~Sp4lA?!MB~0@oUw(OI5Yr`A zbFOpA9vpi(=|`PR22fX$^{Dj&9@MdcAnK0;4jlJYsT^G5CUos$00(?Ul(+`4NaIi@ z?u1!sD`tyQ6RJ~=pk9(Y?jzSDQvw&-Okh!(5hj%vP?wYxYJ4z(`u$)ds&&YVDhzd@ zemxXJwWaD&M^gdR+0^Y3?QR||(CJ=O`C}O96+KSD2?Dg6I!eJw22N3Mnt?P083x8E zc!`0t6sQcGFVKyUbzf%W6Zoq?|?_=bVmf`B&oZyA}R jCG!j{Q1Al-H!1jufuAY(MFVhlxa)u2>um9{nf!kN#27Y6 delta 1813 zcma)*eQXnD9LIaj5FMMix9%m5g@BItOMF{lk9@+4K(+lllAIBMdHfOCp?3sf&by@Ct;hw>+KG{ohF4bk270qhrd`f?-_o@oubvaySatjMGlG*^RBeu zXVt={j&Oi3xNv5QG&DAHZRA8_Dd$8bcN$C0g3ADY&=PYvKo%Pd%~~-L%_XF;sgyJ~ zmBW<&rZTdxzKWb}vT?m+zNs15ti3eXV-`-sW*(EO3Qizpq}QH9X24&u=Ws6C6Q(^J z^!S1JVTEajg=}aJ!74babk&f#W-A;Dt8w=hvejWFkGB*P!QqBgrX7QvpR8|L^kP23 zc@)e>m_@-{gsUi+iEteS^AIv9n1%2gNH`!YfvH+nLJBGR5#1{El4j@MaGFV1Iq7Mg zfYVgFD^IyJ7)-j}h2vDaXF%_||KObI8*N1#6!&(nKyh!^6Hug=+w;)Y>@G$t_w;dO zzptBoy{D6`^yZP8=N7^9NyXkJcnf3gN;2ozNRD}T0KjeMy%X?i)$T6xzHbah$lT9= z&-v3Oov@!jUE7t7*3eyrHr%rXP4jO@`(mFR?1R1rES}w8gBE^4Ld*1*p)Cgr(H0zLe3HGP+VmQwmo5DOzNP(C>=`ay}{@;+&`ALy&AJ?g5>SdqG#??V#-= zZqUgQAL!2`c5+F1inPcjTnFisy%6A(tUzSt$_dcRN-OAnWiO~B!Gm5%^gn`MUn?T- z`7NYe?F1NCUjtoMG3#hj1YJn(0kw|q1eHbyK))T0fZE2|K_|w%pf|_<95=4s!EBT1 zbzL|NMsMH|3SLEET*L_qjxunJf;SjQQJ^s}Nx_>8oTNZ!;B>ZW9QS>Tk+*5f83e|) ze}{sz44k9jJObl)xIn>01jb)6MZqNoE>keWz$^tHf{oKTA5n6JwR}v$Ck%W_!DkG7 zPQf(><|z1*fv+gI!N4~Ze8<4eY_Adg4~*QREg1&pDY(PHT?!T%_=SRB4M0vF8u(v# LI$dyh?y-LXx0*nZ diff --git a/.doctrees/auto_graph.doctree b/.doctrees/auto_graph.doctree index be71f3acfd9483e88c9730c95784d4c44ba46552..8f62837d785891f79ac85f84e27607f965f9a18a 100644 GIT binary patch delta 716 zcmYjONoW&c6lT)Nv`Hq5(`+`GX4=#xYde#OZ5Bx&W;tZh3X01~P=o}6pa`YXf)_6> z_Om%Q0Vxzjp$rkc)Pf7xgKaMgYEV!FX|di!3)PuPwH|)n<9qM>-uK@Bwn?lv335U` z`{E9{LX;L)!z4!HG#1r;s8S@R)mEI3>tRxlffLNAG8$~DLwHa5;GjZSpu#9nqo@Y; zqPg=jiTgShA886zop+a@#TQ))&*?J~&cI9G{wEaCU&Dspp$uxU8npBVe9us5N|-V% zs1*kcbrON@OW0(Rc*=Mr2Rh7kpMc#gsQGjKCr2^Ky2Rt=0)Z7v0817ccKa|$>k*W# zK1F*iNaCoJbAla>fK$QbMe0r(pRGToejiqCQDupe{i_OP$A3gASBRP}xdG1{F@&6Z z^_{=gOw6mq;<#>K}x*9BvwJ?+g%dzvi9 z2_}q_CImDZRH8bu7TG2+6T3nP*p5vQTI^F@1eEF5JyY zWK3o_lrp6FE_b6t#cS~@zhA86hY9qSSS%Nkl93Bp8+wW?<_iv-Djvpo@gQ!c7(6QW SV7-`E@M!6n9K~8GrTqh`74$9u delta 717 zcmZ8dOK1~87-rMWwn;Xz=GC-G%=V#ave_iNZIINY7+TV7Ax(VY15u>-#D*LcN=3|3 z4;Y75iZ*Ol87w$NJaq6l+a}en z1lAct!5N^=Jx-Z8y6C>vE0P&y506jI-;}@D5~t6|yT0g9aIc8mby3mKL=B&~6Nq{0 zSj59!^oaj^YGuzJ3nHSQ2IYe${0jOhNl@BxLHvl>(E3%Z7z$9VBDu7`p<4`IhJ6%# z9_BC?_7brE@y(GX_@kW^`x)`0qIBSR^gT|<^;tpYpvvvFxpq$$nt*iy)Y4za>j^a@ zL21Tmwi%MafU!*`ZK`jXVPs4uj$%1c(kVu))j4c}B=rmGz=6>t2lv;TGBcBGAjDG2 zMe6;{V~heZHAU)`RDe;mrBszAfF&*9PkI#Z(pG#^EjTmu3Rg2-7|(QK2U!m?8ev7% z0enz9wKwW`17pOqY%Au5E!spj$e=av#-ovxPB!9trUh*|FK&!@u{GCCgcG?9q)z8T Tq%P#L6zR?P*SdB-KWO|15%cXn diff --git a/.doctrees/coreblocks.fu.doctree b/.doctrees/coreblocks.fu.doctree index e2a9b4002b5537fcd63c55036a8f7fe8088ccdde..75be64dea3cccb64d26b138379edb4be6bfe6298 100644 GIT binary patch delta 40949 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 TVX?RWDNW}K25;*P{)zoR`f-I4 delta 35333 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 K51ceI#s34zo;j`n diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index f90d487db265ac1d3d576e47e6a53db87c85194f..1348fdfbeecf97581c4ad4e69f0a5ca800531d65 100644 GIT binary patch delta 27367 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 diff --git a/Assumptions.html b/Assumptions.html index 5a2044731..dedde64f8 100644 --- a/Assumptions.html +++ b/Assumptions.html @@ -104,7 +104,7 @@

List of assumptions made during development

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/Current_graph.html b/Current_graph.html index 723773610..696d30cfd 100644 --- a/Current_graph.html +++ b/Current_graph.html @@ -105,16 +105,16 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/Development_environment.html b/Development_environment.html index c2652bc32..234aed7b7 100644 --- a/Development_environment.html +++ b/Development_environment.html @@ -178,7 +178,7 @@

build_docs.sh

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/Home.html b/Home.html index 6cb22ffe7..07cfc2e48 100644 --- a/Home.html +++ b/Home.html @@ -129,7 +129,7 @@

Documentation

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/Problem-checklist.html b/Problem-checklist.html index 3c459f8cb..adb9970f4 100644 --- a/Problem-checklist.html +++ b/Problem-checklist.html @@ -105,7 +105,7 @@

Problem checklist

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/Transactions.html b/Transactions.html index d539ccbd6..244224ae3 100644 --- a/Transactions.html +++ b/Transactions.html @@ -409,7 +409,7 @@

Transaction and method nesting

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/_sources/auto_graph.rst.txt b/_sources/auto_graph.rst.txt index a75639e9a..036294770 100644 --- a/_sources/auto_graph.rst.txt +++ b/_sources/auto_graph.rst.txt @@ -22,16 +22,16 @@ BasicFifo_read["read"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] + SimpleWBCacheRefiller_start_refill["start_refill"] SimpleWBCacheRefiller_accept_refill["accept_refill"] SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] - SimpleWBCacheRefiller_start_refill["start_refill"] end subgraph ICache["icache ICache"] + ICache_issue_req["issue_req"] ICache_ICache["ICache"] + ICache_accept_res["accept_res"] ICache_ICache1["ICache"] ICache_ICache2["ICache"] - ICache_accept_res["accept_res"] - ICache_issue_req["issue_req"] subgraph FIFO1["req_fifo FIFO"] FIFO1_write["write"] FIFO1_read["read"] @@ -59,19 +59,19 @@ subgraph RegisterFile["RF RegisterFile"] RegisterFile_write["write"] RegisterFile_read1["read1"] - RegisterFile_read2["read2"] RegisterFile_free["free"] + RegisterFile_read2["read2"] end subgraph ReorderBuffer["ROB ReorderBuffer"] + ReorderBuffer_put["put"] + ReorderBuffer_get_indices["get_indices"] ReorderBuffer_mark_done["mark_done"] ReorderBuffer_peek["peek"] ReorderBuffer_retire["retire"] - ReorderBuffer_put["put"] - ReorderBuffer_get_indices["get_indices"] end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] - ExceptionCauseRegister_report["report"] ExceptionCauseRegister_get["get"] + ExceptionCauseRegister_report["report"] end subgraph FuncBlocksUnifier["func_blocks_unifier FuncBlocksUnifier"] subgraph Collector["result_collector Collector"] @@ -93,14 +93,14 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_insert["insert"] - RSFuncBlock_select["select"] RSFuncBlock_update["update"] RSFuncBlock_get_result["get_result"] + RSFuncBlock_select["select"] + RSFuncBlock_insert["insert"] subgraph RS["rs RS"] RS_RS["RS"] - RS_RS1["RS"] RS_update["update"] + RS_RS1["RS"] RS_RS2["RS"] RS_RS3["RS"] RS_take["take"] @@ -108,19 +108,19 @@ RS_select["select"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO2["fifo FIFO"] - FIFO2_read["read"] FIFO2_write["write"] + FIFO2_read["read"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_accept["accept"] ShiftFuncUnit_issue["issue"] + ShiftFuncUnit_accept["accept"] subgraph FIFO3["fifo FIFO"] FIFO3_read["read"] FIFO3_write["write"] @@ -134,12 +134,12 @@ JumpBranchFuncUnit_accept["accept"] JumpBranchFuncUnit_issue["issue"] 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"] @@ -203,15 +203,15 @@ CSRRegister_read["read"] end subgraph CSRRegister1["register_high CSRRegister"] - CSRRegister1_write["write"] CSRRegister1_read["read"] + CSRRegister1_write["write"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister2["register_low CSRRegister"] - CSRRegister2_read["read"] CSRRegister2_write["write"] + CSRRegister2_read["read"] end subgraph CSRRegister3["register_high CSRRegister"] CSRRegister3_read["read"] @@ -223,23 +223,23 @@ end end subgraph FIFO7["fifo_decode FIFO"] - FIFO7_write["write"] FIFO7_read["read"] + FIFO7_write["write"] end subgraph Decode["decode Decode"] Decode_Decode["Decode"] end subgraph Scheduler["scheduler Scheduler"] subgraph FIFO8["alloc_rename_buf FIFO"] - FIFO8_write["write"] FIFO8_read["read"] + FIFO8_write["write"] end subgraph RegAllocation["reg_alloc RegAllocation"] RegAllocation_RegAllocation["RegAllocation"] end subgraph FIFO9["rename_out_buf FIFO"] - FIFO9_write["write"] FIFO9_read["read"] + FIFO9_write["write"] end subgraph Renaming["renaming Renaming"] Renaming_Renaming["Renaming"] @@ -281,8 +281,8 @@ CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] - CSRRegister6_read["read"] CSRRegister6_write["write"] + CSRRegister6_read["read"] end end end @@ -300,12 +300,12 @@ end end Core_InitFreeRFFifo --> BasicFifo_write - Retirement_Retirement1 --> BasicFifo_write + Retirement_Retirement --> BasicFifo_write SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request - ICache_ICache --> Forwarder_write + ICache_ICache2 --> Forwarder_write ICache_ICache1 --> SimpleWBCacheRefiller_start_refill - SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 - WishboneMaster_result --> ICache_ICache2 + SimpleWBCacheRefiller_accept_refill --> ICache_ICache + WishboneMaster_result --> ICache_ICache Fetch_Fetch --> ICache_issue_req Fetch_Fetch --> FIFO1_write Fetch_Fetch --> BasicFifo1_write @@ -326,15 +326,15 @@ FIFO9_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation --> FIFO10_write - FIFO10_read --> RSSelection_RSSelection1 - RSSelection_RSSelection1 --> Forwarder3_write + FIFO10_read --> RSSelection_RSSelection2 + RSSelection_RSSelection2 --> Forwarder3_write Forwarder3_read --> RSSelection_RSSelection - Forwarder3_read --> RSSelection_RSSelection2 + Forwarder3_read --> RSSelection_RSSelection1 RSFuncBlock_select --> RSSelection_RSSelection RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO11_write - RSSelection_RSSelection2 --> FIFO11_write - RSSelection_RSSelection2 <--> LSUDummy_select + RSSelection_RSSelection1 --> FIFO11_write + RSSelection_RSSelection1 <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -360,19 +360,19 @@ RS_take --> WakeupSelect3_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO2_write - RS_RS1 --> WakeupSelect1_WakeupSelect + RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO3_write - RS_RS3 --> WakeupSelect2_WakeupSelect + RS_RS1 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect --> ExceptionCauseRegister_report WakeupSelect3_WakeupSelect --> ExceptionCauseRegister_report - LSUDummyInternals_LSUDummyInternals1 --> ExceptionCauseRegister_report LSUDummyInternals_LSUDummyInternals --> ExceptionCauseRegister_report + LSUDummyInternals_LSUDummyInternals1 --> ExceptionCauseRegister_report ReorderBuffer_get_indices --> WakeupSelect2_WakeupSelect ReorderBuffer_get_indices --> WakeupSelect3_WakeupSelect - ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals1 ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals + ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals1 WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write RS_RS --> WakeupSelect3_WakeupSelect @@ -391,25 +391,25 @@ ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans LSUDummyInternals_LSUDummyInternals2 --> WishboneMaster1_request - WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals + WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals1 ConnectTrans_ConnectTrans --> Forwarder1_write ConnectTrans1_ConnectTrans --> Forwarder1_write RSFuncBlock_get_result --> ConnectTrans_ConnectTrans Collector1_method --> ConnectTrans_ConnectTrans Forwarder2_read --> ConnectTrans_ConnectTrans LSUDummy_get_result --> ConnectTrans1_ConnectTrans - ReorderBuffer_peek --> Retirement_Retirement - Retirement_Retirement --> LSUDummy_precommit - ReorderBuffer_retire --> Retirement_Retirement1 - ExceptionCauseRegister_get --> Retirement_Retirement1 - Retirement_Retirement1 --> CSRRegister4_write - Retirement_Retirement1 --> RRAT_commit - Retirement_Retirement1 --> RegisterFile_free - Retirement_Retirement1 <--> DoubleCounterCSR2_increment - CSRRegister5_read --> Retirement_Retirement1 - Retirement_Retirement1 --> CSRRegister5_write - CSRRegister6_read --> Retirement_Retirement1 - Retirement_Retirement1 --> CSRRegister6_write + 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 GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister_write diff --git a/api.html b/api.html index 1b2e4ec93..956d83903 100644 --- a/api.html +++ b/api.html @@ -235,7 +235,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/auto_graph.html b/auto_graph.html index 205606384..94d964204 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -101,16 +101,16 @@ BasicFifo_read["read"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] + SimpleWBCacheRefiller_start_refill["start_refill"] SimpleWBCacheRefiller_accept_refill["accept_refill"] SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] - SimpleWBCacheRefiller_start_refill["start_refill"] end subgraph ICache["icache ICache"] + ICache_issue_req["issue_req"] ICache_ICache["ICache"] + ICache_accept_res["accept_res"] ICache_ICache1["ICache"] ICache_ICache2["ICache"] - ICache_accept_res["accept_res"] - ICache_issue_req["issue_req"] subgraph FIFO1["req_fifo FIFO"] FIFO1_write["write"] FIFO1_read["read"] @@ -138,19 +138,19 @@ subgraph RegisterFile["RF RegisterFile"] RegisterFile_write["write"] RegisterFile_read1["read1"] - RegisterFile_read2["read2"] RegisterFile_free["free"] + RegisterFile_read2["read2"] end subgraph ReorderBuffer["ROB ReorderBuffer"] + ReorderBuffer_put["put"] + ReorderBuffer_get_indices["get_indices"] ReorderBuffer_mark_done["mark_done"] ReorderBuffer_peek["peek"] ReorderBuffer_retire["retire"] - ReorderBuffer_put["put"] - ReorderBuffer_get_indices["get_indices"] end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] - ExceptionCauseRegister_report["report"] ExceptionCauseRegister_get["get"] + ExceptionCauseRegister_report["report"] end subgraph FuncBlocksUnifier["func_blocks_unifier FuncBlocksUnifier"] subgraph Collector["result_collector Collector"] @@ -172,14 +172,14 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_insert["insert"] - RSFuncBlock_select["select"] RSFuncBlock_update["update"] RSFuncBlock_get_result["get_result"] + RSFuncBlock_select["select"] + RSFuncBlock_insert["insert"] subgraph RS["rs RS"] RS_RS["RS"] - RS_RS1["RS"] RS_update["update"] + RS_RS1["RS"] RS_RS2["RS"] RS_RS3["RS"] RS_take["take"] @@ -187,19 +187,19 @@ RS_select["select"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO2["fifo FIFO"] - FIFO2_read["read"] FIFO2_write["write"] + FIFO2_read["read"] end end subgraph WakeupSelect["wakeup_select_0 WakeupSelect"] WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_accept["accept"] ShiftFuncUnit_issue["issue"] + ShiftFuncUnit_accept["accept"] subgraph FIFO3["fifo FIFO"] FIFO3_read["read"] FIFO3_write["write"] @@ -213,12 +213,12 @@ JumpBranchFuncUnit_accept["accept"] JumpBranchFuncUnit_issue["issue"] 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"] @@ -282,15 +282,15 @@ CSRRegister_read["read"] end subgraph CSRRegister1["register_high CSRRegister"] - CSRRegister1_write["write"] CSRRegister1_read["read"] + CSRRegister1_write["write"] end end subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister2["register_low CSRRegister"] - CSRRegister2_read["read"] CSRRegister2_write["write"] + CSRRegister2_read["read"] end subgraph CSRRegister3["register_high CSRRegister"] CSRRegister3_read["read"] @@ -302,23 +302,23 @@ end end subgraph FIFO7["fifo_decode FIFO"] - FIFO7_write["write"] FIFO7_read["read"] + FIFO7_write["write"] end subgraph Decode["decode Decode"] Decode_Decode["Decode"] end subgraph Scheduler["scheduler Scheduler"] subgraph FIFO8["alloc_rename_buf FIFO"] - FIFO8_write["write"] FIFO8_read["read"] + FIFO8_write["write"] end subgraph RegAllocation["reg_alloc RegAllocation"] RegAllocation_RegAllocation["RegAllocation"] end subgraph FIFO9["rename_out_buf FIFO"] - FIFO9_write["write"] FIFO9_read["read"] + FIFO9_write["write"] end subgraph Renaming["renaming Renaming"] Renaming_Renaming["Renaming"] @@ -360,8 +360,8 @@ CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] - CSRRegister6_read["read"] CSRRegister6_write["write"] + CSRRegister6_read["read"] end end end @@ -379,12 +379,12 @@ end end Core_InitFreeRFFifo --> BasicFifo_write -Retirement_Retirement1 --> BasicFifo_write +Retirement_Retirement --> BasicFifo_write SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request -ICache_ICache --> Forwarder_write +ICache_ICache2 --> Forwarder_write ICache_ICache1 --> SimpleWBCacheRefiller_start_refill -SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 -WishboneMaster_result --> ICache_ICache2 +SimpleWBCacheRefiller_accept_refill --> ICache_ICache +WishboneMaster_result --> ICache_ICache Fetch_Fetch --> ICache_issue_req Fetch_Fetch --> FIFO1_write Fetch_Fetch --> BasicFifo1_write @@ -405,15 +405,15 @@ FIFO9_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation --> FIFO10_write -FIFO10_read --> RSSelection_RSSelection1 -RSSelection_RSSelection1 --> Forwarder3_write +FIFO10_read --> RSSelection_RSSelection2 +RSSelection_RSSelection2 --> Forwarder3_write Forwarder3_read --> RSSelection_RSSelection -Forwarder3_read --> RSSelection_RSSelection2 +Forwarder3_read --> RSSelection_RSSelection1 RSFuncBlock_select --> RSSelection_RSSelection RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO11_write -RSSelection_RSSelection2 --> FIFO11_write -RSSelection_RSSelection2 <--> LSUDummy_select +RSSelection_RSSelection1 --> FIFO11_write +RSSelection_RSSelection1 <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -439,19 +439,19 @@ RS_take --> WakeupSelect3_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO2_write -RS_RS1 --> WakeupSelect1_WakeupSelect +RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO3_write -RS_RS3 --> WakeupSelect2_WakeupSelect +RS_RS1 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect --> ExceptionCauseRegister_report WakeupSelect3_WakeupSelect --> ExceptionCauseRegister_report -LSUDummyInternals_LSUDummyInternals1 --> ExceptionCauseRegister_report LSUDummyInternals_LSUDummyInternals --> ExceptionCauseRegister_report +LSUDummyInternals_LSUDummyInternals1 --> ExceptionCauseRegister_report ReorderBuffer_get_indices --> WakeupSelect2_WakeupSelect ReorderBuffer_get_indices --> WakeupSelect3_WakeupSelect -ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals1 ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals +ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals1 WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write RS_RS --> WakeupSelect3_WakeupSelect @@ -470,25 +470,25 @@ ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans LSUDummyInternals_LSUDummyInternals2 --> WishboneMaster1_request -WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals +WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals1 ConnectTrans_ConnectTrans --> Forwarder1_write ConnectTrans1_ConnectTrans --> Forwarder1_write RSFuncBlock_get_result --> ConnectTrans_ConnectTrans Collector1_method --> ConnectTrans_ConnectTrans Forwarder2_read --> ConnectTrans_ConnectTrans LSUDummy_get_result --> ConnectTrans1_ConnectTrans -ReorderBuffer_peek --> Retirement_Retirement -Retirement_Retirement --> LSUDummy_precommit -ReorderBuffer_retire --> Retirement_Retirement1 -ExceptionCauseRegister_get --> Retirement_Retirement1 -Retirement_Retirement1 --> CSRRegister4_write -Retirement_Retirement1 --> RRAT_commit -Retirement_Retirement1 --> RegisterFile_free -Retirement_Retirement1 <--> DoubleCounterCSR2_increment -CSRRegister5_read --> Retirement_Retirement1 -Retirement_Retirement1 --> CSRRegister5_write -CSRRegister6_read --> Retirement_Retirement1 -Retirement_Retirement1 --> CSRRegister6_write +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 GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister_write @@ -509,7 +509,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/components/icache.html b/components/icache.html index ec868c72f..0eae81dc6 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

Address mapping example

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index dd03d89ce..e1972c057 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -399,7 +399,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.fu.html b/coreblocks.fu.html index bc4946181..0f2c7f968 100644 --- a/coreblocks.fu.html +++ b/coreblocks.fu.html @@ -209,7 +209,17 @@

Submodules
get_instructions() Sequence[tuple]
-
+

Method providing list of valid instruction.

+
+
Returns
+
+
returnSequence[tuple]

List of implemented instructions, each following format: +(IntFlag, OpType, Funct3 (optional), Funct7 (optional))

+
+
+
+
+
@@ -295,37 +305,71 @@

Submodules
Fn: Type[IntFlag]
-

Method providing list of valid instruction.

+

Enumeration of instructions implemented in given functional unit.

+
+ +
+
+get_decoder(gen_params: GenParams) Decoder
+

Method returning auto generated instruction decoder.

-
Returns
+
Parameters
-
returnSequence[tuple]

List of implemented instructions, each following format: -(IntFlag, OpType, Funct3 (optional), Funct7 (optional))

+
gen_params: GenParams

Generation parameters passed to a decoder contructor.

+
+
+
+
Returns
+
+
returnset[OpType]

List of OpTypes.

-
-
-get_decoder(gen_params: GenParams) Decoder
-
-
get_function() Value
-
+

Method returning Signal Object for decoder, called function in FU blocks

+
+
Returns
+
+
returnValue

Signal object.

+
+
+
+
+
get_instructions() Sequence[tuple]
-
+

Method providing list of valid instruction.

+
+
Returns
+
+
returnSequence[tuple]

List of implemented instructions, each following format: +(IntFlag, OpType, Funct3 (optional), Funct7 (optional))

+
+
+
+
+
get_op_types() set[coreblocks.params.optypes.OpType]
-
+

Method returning op types from listed instructions.

+
+
Returns
+
+
returnset[OpType]

List of OpTypes.

+
+
+
+
+
@@ -442,7 +486,17 @@

Submodules
get_instructions() Sequence[tuple]
-
+

Method providing list of valid instruction.

+
+
Returns
+
+
returnSequence[tuple]

List of implemented instructions, each following format: +(IntFlag, OpType, Funct3 (optional), Funct7 (optional))

+
+
+
+
+
@@ -657,7 +711,17 @@

Submodules
classmethod get_instructions() Sequence[tuple]
-
+

Method providing list of valid instruction.

+
+
Returns
+
+
returnSequence[tuple]

List of implemented instructions, each following format: +(IntFlag, OpType, Funct3 (optional), Funct7 (optional))

+
+
+
+
+
@@ -700,16 +764,23 @@

Submodules
__init__(gen_params: ~coreblocks.params.genparams.GenParams, function=<coreblocks.fu.zbs.ZbsFunction object>)
-
+
+
Parameters
+
+
gen_paramsGenParams

Core generation parameters.

+
+
functionZbsFunction

Decoder manager to decode instruction.

+
+
+
+
+
@@ -773,7 +844,17 @@

Submodules
get_instructions() Sequence[tuple]
-
+

Method providing list of valid instruction.

+
+
Returns
+
+
returnSequence[tuple]

List of implemented instructions, each following format: +(IntFlag, OpType, Funct3 (optional), Funct7 (optional))

+
+
+
+
+
@@ -817,7 +898,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.fu.unsigned_multiplication.html b/coreblocks.fu.unsigned_multiplication.html index 8f7ce8708..316062944 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 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.html b/coreblocks.html index 824bb16ed..e7ad40961 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -218,7 +218,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.params.html b/coreblocks.params.html index 6e7c8637d..7d901abe2 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -2404,7 +2404,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index 89e4d6a7a..e0ad24e3e 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -348,7 +348,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.scheduler.html b/coreblocks.scheduler.html index d540a21ba..4bba256bb 100644 --- a/coreblocks.scheduler.html +++ b/coreblocks.scheduler.html @@ -191,7 +191,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.stages.html b/coreblocks.stages.html index 539a9a26a..5f9779210 100644 --- a/coreblocks.stages.html +++ b/coreblocks.stages.html @@ -266,7 +266,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.structs_common.html b/coreblocks.structs_common.html index d2c8c04c1..7d6b9f564 100644 --- a/coreblocks.structs_common.html +++ b/coreblocks.structs_common.html @@ -454,7 +454,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/coreblocks.utils.html b/coreblocks.utils.html index d71f1fd28..2ae781e8c 100644 --- a/coreblocks.utils.html +++ b/coreblocks.utils.html @@ -478,7 +478,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/genindex.html b/genindex.html index e9a662495..29bfee28a 100644 --- a/genindex.html +++ b/genindex.html @@ -2776,7 +2776,7 @@

Z

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/index.html b/index.html index 0b3ead185..8b11085f4 100644 --- a/index.html +++ b/index.html @@ -221,7 +221,7 @@

Coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/miscellany/exceptionsSummary.html b/miscellany/exceptionsSummary.html index fbc78bf78..c28168774 100644 --- a/miscellany/exceptionsSummary.html +++ b/miscellany/exceptionsSummary.html @@ -271,7 +271,7 @@

Summary

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/modules-coreblocks.html b/modules-coreblocks.html index f1c7d1824..83a5a7872 100644 --- a/modules-coreblocks.html +++ b/modules-coreblocks.html @@ -187,7 +187,7 @@

coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/modules-transactron.html b/modules-transactron.html index 7aad88c22..8d0802ffd 100644 --- a/modules-transactron.html +++ b/modules-transactron.html @@ -118,7 +118,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/py-modindex.html b/py-modindex.html index 69dc1ea20..4c05770c9 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -453,7 +453,7 @@

Python Module Index

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/scheduler/Overview.html b/scheduler/Overview.html index 050be183a..0ba2808ec 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 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/search.html b/search.html index 8fa387869..c15c7b4d2 100644 --- a/search.html +++ b/search.html @@ -101,7 +101,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/searchindex.js b/searchindex.js index 8dfb5d64d..1346c2596 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"], "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"], "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"], "terms": {"rf": [0, 6, 9, 16, 20, 21, 24, 25], "ha": [0, 2, 4, 5, 10, 15, 17, 18, 20, 24, 27], "data": [0, 10, 13, 14, 17, 18, 19, 25, 27, 28], "forward": [0, 5, 27, 28], "from": [0, 2, 3, 4, 5, 10, 13, 14, 15, 16, 17, 18, 20, 24, 25, 26, 27, 28], "tomasulo": 0, "announc": [0, 16, 17], "bu": [0, 13, 14], "read": [0, 4, 5, 13, 14, 17, 18, 19, 28], "x0": [0, 13], "rf0": 0, "return": [0, 8, 11, 13, 14, 18, 19, 20, 27, 28], "0": [0, 10, 11, 13, 15, 17, 24, 25, 27], "write": [0, 5, 10, 17, 18, 20, 25, 28], "i": [0, 2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24, 25, 26, 27, 28], "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, 15, 16, 20, 21, 23, 24, 25], "after": [0, 5, 8, 10, 14, 20, 23, 28], "get": [0, 2, 10, 11, 12, 13, 15, 16, 18, 19, 27, 28], "output": [0, 2, 10, 14, 16, 17, 20, 24, 25, 26, 27, 28], "commit": [0, 2, 17, 20, 26], "updat": [0, 16, 17, 18], "rat": [0, 6, 9, 15, 20, 21], "In": [2, 3, 5, 15, 18, 19, 25, 26, 27], "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, 15, 18, 24, 26], "step": [2, 5, 10, 15, 20], "below": 2, "instal": [2, 26], "python": [2, 5, 18, 27], "3": [2, 11, 13, 17, 18, 27], "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, 18, 27, 28], "creat": [2, 5, 10, 12, 18, 27, 28], "virtual": 2, "python3": 2, "m": [2, 5, 13, 17, 18, 20, 27, 28], "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, 18, 20, 26, 27, 28], "bin": 2, "all": [2, 4, 5, 13, 14, 17, 18, 19, 20, 26, 27, 28], "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], "distro": 2, "call": [2, 4, 5, 10, 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, 18, 20, 24, 25, 26, 27, 28], "automat": [2, 17, 18], "run": [2, 5, 26, 27, 28], "linter": 2, "befor": [2, 4, 5, 13, 14, 23, 28], "The": [2, 3, 8, 10, 11, 13, 14, 16, 18, 19, 20, 23, 24, 25, 27, 28], "contain": [2, 5, 13, 18, 27, 28], "number": [2, 12, 13, 14, 16, 18, 20, 26, 27, 28], "which": [2, 3, 5, 8, 10, 11, 15, 16, 18, 20, 23, 24, 25, 27, 28], "ar": [2, 3, 4, 5, 8, 13, 14, 16, 17, 18, 20, 23, 24, 25, 26, 27, 28], "ci": [2, 26], "also": [2, 5, 16, 28], "intend": [2, 27], "local": [2, 13], "thei": [2, 5, 14, 17, 20, 23, 27, 28], "unit": [2, 8, 10, 11, 12, 13, 14, 15, 16, 17, 23], "test": [2, 4, 13, 18, 26, 27, 28], "By": [2, 27, 28], "default": [2, 5, 13, 14, 18, 27, 28], "everi": [2, 10, 11, 14, 27, 28], "avail": [2, 3, 13, 14, 15, 17, 26], "specif": [2, 8, 13, 20], "file": [2, 13, 18, 20], "can": [2, 3, 5, 8, 13, 14, 16, 17, 18, 20, 23, 24, 26, 27, 28], "test_transact": 2, "an": [2, 3, 4, 5, 8, 10, 15, 16, 18, 20, 24, 27, 28], "exampl": [2, 5, 13, 17, 18, 19, 24, 26, 27, 28], "One": [2, 5, 18, 20, 28], "even": [2, 5, 20, 27, 28], "class": [2, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 28], "testschedul": 2, "Or": [2, 5], "method": [2, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 27, 28], "test_singl": 2, "argument": [2, 14, 15, 18, 19, 25, 27, 28], "actual": [2, 5, 10, 19], "search": 2, "within": [2, 12], "full": [2, 13, 18, 19, 20, 28], "name": [2, 5, 18, 26, 27, 28], "match": [2, 18, 24, 25], "queri": 2, "thank": 2, "given": [2, 5, 18, 24, 27, 28], "uniqu": 2, "just": [2, 5], "l": [2, 13], "list": [2, 4, 10, 11, 13, 14, 17, 18, 19, 27, 28], "help": [2, 20, 26], "e": [2, 4, 5, 10, 13, 18, 20, 28], "g": [2, 4, 5, 10, 13, 18, 20], "find": [2, 20], "parameter": 2, "t": [2, 4, 5, 10, 13, 18, 20, 24, 26, 27, 28], "trace": [2, 6, 22], "waveform": 2, "vcd": 2, "format": [2, 5, 11, 18, 27, 28], "gtkw": [2, 18], "gtkwave": [2, 18], "tool": [2, 12, 26], "__traces__": 2, "debug": [2, 18], "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, 18, 28], "check": [2, 4, 18, 20, 24, 25], "code": [2, 3, 4, 5, 18, 20, 27, 28], "type": [2, 10, 11, 13], "should": [2, 3, 5, 8, 10, 13, 14, 15, 16, 18, 20, 23, 24, 25, 27, 28], "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, 18, 27, 28], "when": [2, 4, 5, 10, 14, 18, 20, 24, 25, 27, 28], "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, 14, 16, 18, 20, 23, 24, 25, 27, 28], "support": [2, 10, 13, 15, 19, 27, 28], "need": [2, 5, 10, 14, 20, 24, 26, 27], "pass": [2, 16, 17, 18, 19, 27, 28], "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, 18, 21, 27, 28], "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, 18, 20, 27, 28], "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, 18, 26, 27, 28], "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, 18, 20, 24, 27, 28], "someth": [4, 5], "doesn": [4, 5, 18, 20], "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, 18, 20], "point": [4, 13, 20], "case": [4, 5, 8, 14, 15, 16, 18, 20, 27, 28], "sure": 4, "us": [4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 27, 28], "yield": 4, "function": [4, 5, 10, 11, 13, 15, 16, 18, 20, 26, 27, 28], "testbenchio": 4, "notabl": 4, "except": [4, 6, 9, 13, 16, 18, 19, 21, 27], "settl": 4, "instead": [4, 5, 20, 27], "signal": [4, 10, 11, 14, 18, 19, 27, 28], "unexpect": 4, "valu": [4, 10, 11, 13, 14, 15, 16, 17, 18, 19, 24, 25, 27, 28], "try": [4, 5, 20], "ad": [4, 5, 13, 18, 26, 27, 28], "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, 16, 17, 18, 20, 27, 28], "record": [4, 5, 10, 11, 14, 18, 27, 28], "assign": [4, 5, 17, 18, 27], "util": [4, 5, 6, 9, 15, 16, 21, 27, 28], "amaranth": [4, 5, 10, 11, 13, 14, 18, 26, 27, 28], "statement": [4, 5, 18, 27], "some": [4, 5, 17, 20, 26, 27, 28], "domain": [4, 19, 27], "have": [4, 5, 8, 13, 14, 16, 17, 18, 20, 26, 27], "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, 18, 26, 27, 28], "singl": [5, 11, 12, 13, 15, 16, 18, 27, 28], "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, 18, 27], "execut": [5, 11, 13, 14, 15, 16, 19, 23, 25, 27, 28], "its": [5, 10, 15, 16, 17, 18, 20, 27, 28], "entrieti": 5, "onli": [5, 11, 17, 18, 20, 27, 28], "doe": 5, "anoth": [5, 8, 10, 27, 28], "defin": [5, 10, 17, 18, 27, 28], "depend": [5, 6, 9, 17, 18, 21, 27], "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, 18, 20, 27, 28], "access": [5, 8, 13, 17, 20], "coordin": 5, "system": [5, 13], "avoid": 5, "commun": [5, 20, 24], "caller": [5, 27, 28], "both": [5, 18, 24, 27, 28], "direct": [5, 18, 27, 28], "back": 5, "structur": [5, 18, 19, 20, 24], "simplest": 5, "part": [5, 17, 20, 23, 27, 28], "elaborat": [5, 9, 10, 11, 12, 14, 15, 16, 17, 18, 27, 28], "block": [5, 8, 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, 18, 27, 28], "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, 18, 20, 28], "arg_expr": 5, "analog": 5, "": [5, 13, 14, 18, 20, 27, 28], "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], "o": [5, 12, 20, 27, 28], "paramet": [5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 28], "my_method": 5, "input_layout": 5, "output_layout": 5, "def_method": [5, 27], "_": [5, 27], "arg": [5, 11, 18, 27, 28], "other_method": 5, "ret_expr": 5, "techniqu": 5, "present": [5, 18, 20, 28], "abov": 5, "conveni": [5, 27], "syntax": [5, 27], "particular": 5, "unnam": 5, "usual": [5, 20], "For": [5, 8, 13, 18, 24, 25, 26], "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, 18], "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, 18, 20, 24, 25, 27, 28], "foo": 5, "1": [5, 10, 11, 12, 13, 15, 17, 18, 20, 24, 25, 27, 28], "bar": 5, "32": [5, 8, 11, 12, 13, 20], "cleanest": 5, "recommend": 5, "field": [5, 13, 16, 17, 18, 24, 25, 27, 28], "keyword": [5, 14, 27], "foo_expr": 5, "bar_expr": 5, "dict": [5, 10, 14, 18, 27, 28], "final": 5, "rec": 5, "recurs": [5, 11, 12, 18], "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, 18, 20, 24, 25, 28], "express": 5, "expr": 5, "similar": [5, 18, 20, 28], "mechan": [5, 28], "intern": [5, 13, 18, 19, 27], "risk": [5, 20], "introduc": [5, 8, 20], "certain": 5, "occas": 5, "possibl": [5, 18, 20, 28], "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, 9, 16, 20, 21, 28], "queue": [5, 18, 20, 28], "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], "omit": [5, 27, 28], "unneed": 5, "done": [5, 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, 18, 27, 28], "avoidedif": [5, 27], "guard": [5, 27, 28], "grant": [5, 14, 27, 28], "therefor": 5, "induc": 5, "often": 5, "safe": [5, 18, 20], "switch": [5, 18, 20, 24, 27, 28], "etc": [5, 10], "logic": [5, 13, 20, 25, 26], "belong": 5, "aren": [5, 20, 28], "were": [5, 10, 20], "manual": [5, 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, 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, 18, 27, 28], "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, 18, 20, 28], "delai": [5, 14], "featur": 5, "consider": 5, "parent": 5, "convers": 5, "true": [5, 13, 14, 18, 27, 28], "limit": [5, 14, 28], "impli": 5, "subpackag": [6, 21, 22], "frontend": [6, 9, 21, 23], "submodul": [6, 21, 22], "decod": [6, 9, 11, 15, 21], "fetch": [6, 8, 9, 13, 16, 17, 20, 21], "icach": [6, 9, 21], "rvc": [6, 9, 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, 18, 21], "optyp": [6, 9, 10, 11, 15, 16, 17, 21], "peripher": [6, 9, 21], "wishbon": [6, 9, 21], "schedul": [6, 9, 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], "debug_sign": [6, 9, 16, 21, 27, 28], "protocol": [6, 9, 10, 15, 16, 21, 27], "lib": [6, 18, 22, 27], "button": [6, 22, 27], "connector": [6, 22, 27], "reqr": [6, 22, 27], "storag": [6, 22, 27], "transform": [6, 22, 27], "expos": [8, 18, 28], "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, 18], "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, 28], "inform": [8, 15, 26, 27], "regard": 8, "error": [8, 10, 14, 18, 27], "mean": [8, 15, 25, 27, 28], "dure": [8, 19, 23], "line": [8, 10, 13, 19], "refil": [8, 10], "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, 16, 20, 24, 25], "index": [8, 18, 27], "offset": 8, "unsigned_multipl": [9, 11], "common": [9, 11, 18, 28], "fast_recurs": [9, 11], "sequenc": [9, 11, 15, 18, 27, 28], "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, 18, 27, 28], "transact": [10, 13, 14, 17, 18, 19, 24, 27, 28], "instanti": 10, "instrdecod": 10, "manner": [10, 14], "get_raw": 10, "push_decod": 10, "none": [10, 11, 13, 16, 17, 18, 27, 28], "instanc": [10, 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, 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, 18, 27, 28], "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, 15, 24, 25, 28], "rs2_v": 10, "imm": [10, 13], "xlen": [10, 11, 13, 17], "immedi": [10, 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, 15, 24], "kind": [10, 11, 13, 15], "illeg": 10, "success": [10, 14], "fit": 10, "pc": [10, 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, 14, 15, 16, 17, 18, 19, 24, 27, 28], "word": [10, 13], "written": [10, 17, 25, 28], "last": [10, 15, 27, 28], "transfer": [10, 14, 27, 28], "over": [10, 17, 18, 27], "shouldn": 10, "until": [10, 20, 28], "start": [10, 11, 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, 18, 27, 28], "hdl": [10, 11, 13, 18, 27, 28], "ast": [10, 11, 13, 18, 27, 28], "serialize_addr": 10, "addr": [10, 28], "icachebypass": 10, "wb_master": 10, "wishbonemast": [10, 13, 14], "haselabor": [10, 18, 27], "simplewbcacherefil": 10, "instrdecompress": 10, "decompr_reg": 10, "rvc_reg": 10, "instr_mux": 10, "sel": 10, "int": [10, 11, 12, 13, 14, 16, 17, 18, 27, 28], "enum": [10, 11, 13, 18, 27, 28], "valuecast": [10, 13, 18, 27, 28], "tupl": [10, 11, 15, 16, 17, 18, 27, 28], "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, 18, 27, 28], "rem": [11, 13], "remu": [11, 13], "8": [11, 12, 13, 14, 27], "__new__": [11, 13, 17, 27], "get_instruct": 11, "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, "op": [11, 13], "check_optyp": 11, "bool": [11, 13, 17, 18, 27, 28], "valid": [11, 13, 14, 15, 24], "get_decod": 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, 18, 20], "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, 18], "standard": [11, 17, 18, 20], "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, 18, 19, 20, 27, 28], "busi": 11, "while": [11, 27], "progress": 11, "bit_width": 11, "recursion_depth": 11, "width": [11, 12, 13, 14, 17, 18, 28], "depth": [11, 14, 18, 28], "parallel": 11, "assum": [11, 16, 18, 20, 28], "power": [11, 18], "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, 18, 27, 28], "func_unit": [13, 16], "lsu": 13, "dummylsu": 13, "6": [13, 20], "7": 13, "kwarg": [13, 14, 18, 27], "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, 18, 20, 27], "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, 18, 27, 28], "dependentcach": 13, "cfg": 13, "addr_width": [13, 14], "length": [13, 18, 20, 27], "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, 18, 20], "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, 18, 20, 24, 25, 28], "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, "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, "commonlayout": 13, "lsulayout": 13, "ratlayout": [13, 15], "rflayout": [13, 15], "roblayout": [13, 15], "rsinterfacelayout": 13, "rs_entries_bit": 13, "rslayout": [13, 15], "schedulerlayout": 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, 18, 27], "robin": [14, 27], "slave_wb": 14, "intefac": 14, "boolean": [14, 28], "whether": [14, 18], "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, 18, 28], "stare": 14, "finish": [14, 16], "stall": [14, 17, 20], "clear": [14, 18, 24, 25, 28], "previous": 14, "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], "alloc": [15, 23, 24, 25], "renam": [15, 23], "entri": [15, 16, 18, 20, 23, 24, 25, 28], "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, "id": [15, 24, 25], "current": [15, 17, 20, 27], "free": [15, 19, 20, 25], "rat_rename_in": 15, "rat_rename_out": 15, "data_layout": [15, 28], "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, 18], "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_write_v": 16, "rf_write_v": 16, "end": [16, 20], "rob_id": 16, "reg_id": 16, "reg_val": 16, "funcblocksunifi": 16, "extra_methods_requir": 16, "get_extra_method": 16, "item": [16, 18], "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], "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, 18], "higher": 17, "synthetis": 17, "exceptioncauseregist": 17, "rob_get_indic": 17, "should_update_priorii": 17, "current_caus": 17, "new_caus": 17, "frat": 17, "rrat": 17, "registerfil": 17, "reorderbuff": 17, "ready_for": 17, "auto_debug_sign": 18, "_rec": [18, 27, 28], "view": [18, 27, 28], "signalbundl": [18, 27, 28], "map": [18, 19, 20, 27, 28], "arrai": 18, "basicfifo": 18, "empti": [18, 27, 28], "reiniti": 18, "init": 18, "shapelik": [18, 27, 28], "layoutlik": [18, 27, 28], "paramt": 18, "semaphor": 18, "max_count": 18, "target": [18, 28], "assigntyp": 18, "rh": 18, "moduleconnector": 18, "anonym": 18, "onehotswitch": 18, "modulelik": [18, 27], "style": 18, "benefit": 18, "represent": 18, "sig": 18, "onehotcas": 18, "0b01": 18, "0b10": 18, "onehotswitchdynam": 18, "liter": [18, 27], "variabl": [18, 27], "signifi": 18, "align_down_to_power_of_two": 18, "num": 18, "align_to_power_of_two": 18, "up": [18, 19, 25], "lh": 18, "assignarg": 18, "assignfield": 18, "lhs_strict": 18, "rhs_strict": 18, "structlayout": 18, "mismatch": 18, "accord": 18, "explicitli": 18, "shape": 18, "castabl": 18, "determin": [18, 20], "subrecord": 18, "valueerror": 18, "bits_from_int": 18, "count_leading_zero": 18, "count_trailing_zero": 18, "flatten_sign": 18, "flatten": 18, "popcount": 18, "silence_mustus": 18, "introduct": 19, "assumpt": [19, 20], "develop": 19, "environ": 19, "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, "tabl": 19, "substitut": 19, "clean": 19, "problem": [19, 20], "checklist": 19, "benchmark": 19, "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], "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, "fail": 20, "repli": 20, "modifi": [20, 28], "claim": 20, "operand": [20, 24, 25], "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], "nonexclus": 27, "single_cal": 27, "happen": 27, "thrown": 27, "const": 27, "d1": 27, "d0": 27, "combinationi": 27, "my_sum_method": 27, "arg1": 27, "arg2": 27, "sum": 27, "static": 27, "construct": [27, 28], "blueprint": 27, "freshli": 27, "proxi": 27, "priorit": 27, "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, "callabl": [27, 28], "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, "dump_dot": 27, "indent": 27, "dump_elk": 27, "dump_mermaid": 27, "get_hier_nam": 27, "obj": 27, "hierarch": 27, "yet": 27, "get_nam": 27, "insert_edg": 27, "fr": 27, "insert_nod": 27, "mermaid_direct": 27, "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, "latest": 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}, "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, "", "CommonLayouts"], [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.CommonLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.DecodeLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.FetchLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.FuncUnitLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.ICacheLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.LSULayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RATLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RFLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.ROBLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RSInterfaceLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RSLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.SchedulerLayouts": [[13, 2, 1, "", "__init__"]], "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, "-", "debug_signals"], [18, 0, 0, "-", "fifo"], [18, 0, 0, "-", "protocols"], [18, 0, 0, "-", "utils"]], "coreblocks.utils.debug_signals": [[18, 4, 1, "", "auto_debug_signals"]], "coreblocks.utils.fifo": [[18, 1, 1, "", "BasicFifo"], [18, 1, 1, "", "Semaphore"]], "coreblocks.utils.fifo.BasicFifo": [[18, 2, 1, "", "__init__"]], "coreblocks.utils.fifo.Semaphore": [[18, 2, 1, "", "__init__"]], "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"]], "coreblocks.utils.utils": [[18, 1, 1, "", "AssignType"], [18, 1, 1, "", "ModuleConnector"], [18, 4, 1, "", "OneHotSwitch"], [18, 4, 1, "", "OneHotSwitchDynamic"], [18, 4, 1, "", "align_down_to_power_of_two"], [18, 4, 1, "", "align_to_power_of_two"], [18, 4, 1, "", "assign"], [18, 4, 1, "", "bits_from_int"], [18, 4, 1, "", "count_leading_zeros"], [18, 4, 1, "", "count_trailing_zeros"], [18, 4, 1, "", "flatten_signals"], [18, 4, 1, "", "popcount"], [18, 4, 1, "", "silence_mustuse"]], "coreblocks.utils.utils.AssignType": [[18, 3, 1, "", "ALL"], [18, 3, 1, "", "COMMON"], [18, 3, 1, "", "RHS"]], "coreblocks.utils.utils.ModuleConnector": [[18, 2, 1, "", "__init__"]], "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"]], "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"]]}, "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], "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], "subpackag": [9, 11, 27], "submodul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 28], "core": [9, 27], "modul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 28], "content": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 28], "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, "debug_sign": 18, "fifo": 18, "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}, "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"], "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"], "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"], "terms": {"rf": [0, 6, 9, 16, 20, 21, 24, 25], "ha": [0, 2, 4, 5, 10, 15, 17, 18, 20, 24, 27], "data": [0, 10, 13, 14, 17, 18, 19, 25, 27, 28], "forward": [0, 5, 27, 28], "from": [0, 2, 3, 4, 5, 10, 11, 13, 14, 15, 16, 17, 18, 20, 24, 25, 26, 27, 28], "tomasulo": 0, "announc": [0, 16, 17], "bu": [0, 13, 14], "read": [0, 4, 5, 13, 14, 17, 18, 19, 28], "x0": [0, 13], "rf0": 0, "return": [0, 8, 11, 13, 14, 18, 19, 20, 27, 28], "0": [0, 10, 11, 13, 15, 17, 24, 25, 27], "write": [0, 5, 10, 17, 18, 20, 25, 28], "i": [0, 2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24, 25, 26, 27, 28], "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, 15, 16, 20, 21, 23, 24, 25], "after": [0, 5, 8, 10, 14, 20, 23, 28], "get": [0, 2, 10, 11, 12, 13, 15, 16, 18, 19, 27, 28], "output": [0, 2, 10, 14, 16, 17, 20, 24, 25, 26, 27, 28], "commit": [0, 2, 17, 20, 26], "updat": [0, 16, 17, 18], "rat": [0, 6, 9, 15, 20, 21], "In": [2, 3, 5, 15, 18, 19, 25, 26, 27], "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, 15, 18, 24, 26], "step": [2, 5, 10, 15, 20], "below": 2, "instal": [2, 26], "python": [2, 5, 18, 27], "3": [2, 11, 13, 17, 18, 27], "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, 18, 27, 28], "creat": [2, 5, 10, 12, 18, 27, 28], "virtual": 2, "python3": 2, "m": [2, 5, 13, 17, 18, 20, 27, 28], "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, 18, 20, 26, 27, 28], "bin": 2, "all": [2, 4, 5, 13, 14, 17, 18, 19, 20, 26, 27, 28], "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], "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, 18, 20, 24, 25, 26, 27, 28], "automat": [2, 17, 18], "run": [2, 5, 26, 27, 28], "linter": 2, "befor": [2, 4, 5, 13, 14, 23, 28], "The": [2, 3, 8, 10, 11, 13, 14, 16, 18, 19, 20, 23, 24, 25, 27, 28], "contain": [2, 5, 13, 18, 27, 28], "number": [2, 12, 13, 14, 16, 18, 20, 26, 27, 28], "which": [2, 3, 5, 8, 10, 11, 15, 16, 18, 20, 23, 24, 25, 27, 28], "ar": [2, 3, 4, 5, 8, 13, 14, 16, 17, 18, 20, 23, 24, 25, 26, 27, 28], "ci": [2, 26], "also": [2, 5, 16, 28], "intend": [2, 27], "local": [2, 13], "thei": [2, 5, 14, 17, 20, 23, 27, 28], "unit": [2, 8, 10, 11, 12, 13, 14, 15, 16, 17, 23], "test": [2, 4, 13, 18, 26, 27, 28], "By": [2, 27, 28], "default": [2, 5, 13, 14, 18, 27, 28], "everi": [2, 10, 11, 14, 27, 28], "avail": [2, 3, 13, 14, 15, 17, 26], "specif": [2, 8, 13, 20], "file": [2, 13, 18, 20], "can": [2, 3, 5, 8, 13, 14, 16, 17, 18, 20, 23, 24, 26, 27, 28], "test_transact": 2, "an": [2, 3, 4, 5, 8, 10, 15, 16, 18, 20, 24, 27, 28], "exampl": [2, 5, 13, 17, 18, 19, 24, 26, 27, 28], "One": [2, 5, 18, 20, 28], "even": [2, 5, 20, 27, 28], "class": [2, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 28], "testschedul": 2, "Or": [2, 5], "method": [2, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 27, 28], "test_singl": 2, "argument": [2, 14, 15, 18, 19, 25, 27, 28], "actual": [2, 5, 10, 19], "search": 2, "within": [2, 12], "full": [2, 13, 18, 19, 20, 28], "name": [2, 5, 18, 26, 27, 28], "match": [2, 18, 24, 25], "queri": 2, "thank": 2, "given": [2, 5, 11, 18, 24, 27, 28], "uniqu": 2, "just": [2, 5], "l": [2, 13], "list": [2, 4, 10, 11, 13, 14, 17, 18, 19, 27, 28], "help": [2, 20, 26], "e": [2, 4, 5, 10, 13, 18, 20, 28], "g": [2, 4, 5, 10, 13, 18, 20], "find": [2, 20], "parameter": 2, "t": [2, 4, 5, 10, 13, 18, 20, 24, 26, 27, 28], "trace": [2, 6, 22], "waveform": 2, "vcd": 2, "format": [2, 5, 11, 18, 27, 28], "gtkw": [2, 18], "gtkwave": [2, 18], "tool": [2, 12, 26], "__traces__": 2, "debug": [2, 18], "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, 18, 28], "check": [2, 4, 18, 20, 24, 25], "code": [2, 3, 4, 5, 18, 20, 27, 28], "type": [2, 10, 11, 13], "should": [2, 3, 5, 8, 10, 13, 14, 15, 16, 18, 20, 23, 24, 25, 27, 28], "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, 18, 27, 28], "when": [2, 4, 5, 10, 14, 18, 20, 24, 25, 27, 28], "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, 14, 16, 18, 20, 23, 24, 25, 27, 28], "support": [2, 10, 13, 15, 19, 27, 28], "need": [2, 5, 10, 14, 20, 24, 26, 27], "pass": [2, 11, 16, 17, 18, 19, 27, 28], "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, 18, 21, 27, 28], "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, 18, 20, 27, 28], "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, 18, 26, 27, 28], "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, 18, 20, 24, 27, 28], "someth": [4, 5], "doesn": [4, 5, 18, 20], "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, 18, 20], "point": [4, 13, 20], "case": [4, 5, 8, 14, 15, 16, 18, 20, 27, 28], "sure": 4, "us": [4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 27, 28], "yield": 4, "function": [4, 5, 10, 11, 13, 15, 16, 18, 20, 26, 27, 28], "testbenchio": 4, "notabl": 4, "except": [4, 6, 9, 13, 16, 18, 19, 21, 27], "settl": 4, "instead": [4, 5, 20, 27], "signal": [4, 10, 11, 14, 18, 19, 27, 28], "unexpect": 4, "valu": [4, 10, 11, 13, 14, 15, 16, 17, 18, 19, 24, 25, 27, 28], "try": [4, 5, 20], "ad": [4, 5, 13, 18, 26, 27, 28], "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, 16, 17, 18, 20, 27, 28], "record": [4, 5, 10, 11, 14, 18, 27, 28], "assign": [4, 5, 17, 18, 27], "util": [4, 5, 6, 9, 15, 16, 21, 27, 28], "amaranth": [4, 5, 10, 11, 13, 14, 18, 26, 27, 28], "statement": [4, 5, 18, 27], "some": [4, 5, 17, 20, 26, 27, 28], "domain": [4, 19, 27], "have": [4, 5, 8, 13, 14, 16, 17, 18, 20, 26, 27], "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, 18, 26, 27, 28], "singl": [5, 11, 12, 13, 15, 16, 18, 27, 28], "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, 18, 27], "execut": [5, 11, 13, 14, 15, 16, 19, 23, 25, 27, 28], "its": [5, 10, 15, 16, 17, 18, 20, 27, 28], "entrieti": 5, "onli": [5, 11, 17, 18, 20, 27, 28], "doe": 5, "anoth": [5, 8, 10, 27, 28], "defin": [5, 10, 17, 18, 27, 28], "depend": [5, 6, 9, 17, 18, 21, 27], "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, 18, 20, 27, 28], "access": [5, 8, 13, 17, 20], "coordin": 5, "system": [5, 13], "avoid": 5, "commun": [5, 20, 24], "caller": [5, 27, 28], "both": [5, 18, 24, 27, 28], "direct": [5, 18, 27, 28], "back": 5, "structur": [5, 18, 19, 20, 24], "simplest": 5, "part": [5, 17, 20, 23, 27, 28], "elaborat": [5, 9, 10, 11, 12, 14, 15, 16, 17, 18, 27, 28], "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, 18, 27, 28], "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, 18, 20, 28], "arg_expr": 5, "analog": 5, "": [5, 13, 14, 18, 20, 27, 28], "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], "o": [5, 12, 20, 27, 28], "paramet": [5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 28], "my_method": 5, "input_layout": 5, "output_layout": 5, "def_method": [5, 27], "_": [5, 27], "arg": [5, 11, 18, 27, 28], "other_method": 5, "ret_expr": 5, "techniqu": 5, "present": [5, 18, 20, 28], "abov": 5, "conveni": [5, 27], "syntax": [5, 27], "particular": 5, "unnam": 5, "usual": [5, 20], "For": [5, 8, 13, 18, 24, 25, 26], "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, 18], "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, 18, 20, 24, 25, 27, 28], "foo": 5, "1": [5, 10, 11, 12, 13, 15, 17, 18, 20, 24, 25, 27, 28], "bar": 5, "32": [5, 8, 11, 12, 13, 20], "cleanest": 5, "recommend": 5, "field": [5, 13, 16, 17, 18, 24, 25, 27, 28], "keyword": [5, 14, 27], "foo_expr": 5, "bar_expr": 5, "dict": [5, 10, 14, 18, 27, 28], "final": 5, "rec": 5, "recurs": [5, 11, 12, 18], "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, 18, 20, 24, 25, 28], "express": 5, "expr": 5, "similar": [5, 18, 20, 28], "mechan": [5, 28], "intern": [5, 13, 18, 19, 27], "risk": [5, 20], "introduc": [5, 8, 20], "certain": 5, "occas": 5, "possibl": [5, 18, 20, 28], "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, 9, 16, 20, 21, 28], "queue": [5, 18, 20, 28], "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], "omit": [5, 27, 28], "unneed": 5, "done": [5, 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, 18, 27, 28], "avoidedif": [5, 27], "guard": [5, 27, 28], "grant": [5, 14, 27, 28], "therefor": 5, "induc": 5, "often": 5, "safe": [5, 18, 20], "switch": [5, 18, 20, 24, 27, 28], "etc": [5, 10], "logic": [5, 13, 20, 25, 26], "belong": 5, "aren": [5, 20, 28], "were": [5, 10, 20], "manual": [5, 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, 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, 18, 27, 28], "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, 18, 20, 28], "delai": [5, 14], "featur": 5, "consider": 5, "parent": 5, "convers": 5, "true": [5, 13, 14, 18, 27, 28], "limit": [5, 14, 28], "impli": 5, "subpackag": [6, 21, 22], "frontend": [6, 9, 21, 23], "submodul": [6, 21, 22], "decod": [6, 9, 11, 15, 21], "fetch": [6, 8, 9, 13, 16, 17, 20, 21], "icach": [6, 9, 21], "rvc": [6, 9, 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, 18, 21], "optyp": [6, 9, 10, 11, 15, 16, 17, 21], "peripher": [6, 9, 21], "wishbon": [6, 9, 21], "schedul": [6, 9, 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], "debug_sign": [6, 9, 16, 21, 27, 28], "protocol": [6, 9, 10, 15, 16, 21, 27], "lib": [6, 18, 22, 27], "button": [6, 22, 27], "connector": [6, 22, 27], "reqr": [6, 22, 27], "storag": [6, 22, 27], "transform": [6, 22, 27], "expos": [8, 18, 28], "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, 18], "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, 28], "inform": [8, 15, 26, 27], "regard": 8, "error": [8, 10, 14, 18, 27], "mean": [8, 15, 25, 27, 28], "dure": [8, 19, 23], "line": [8, 10, 13, 19], "refil": [8, 10], "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, 16, 20, 24, 25], "index": [8, 18, 27], "offset": 8, "unsigned_multipl": [9, 11], "common": [9, 11, 18, 28], "fast_recurs": [9, 11], "sequenc": [9, 11, 15, 18, 27, 28], "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, 18, 27, 28], "transact": [10, 13, 14, 17, 18, 19, 24, 27, 28], "instanti": 10, "instrdecod": 10, "manner": [10, 14], "get_raw": 10, "push_decod": 10, "none": [10, 11, 13, 16, 17, 18, 27, 28], "instanc": [10, 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, 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, 18, 27, 28], "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, 15, 24, 25, 28], "rs2_v": 10, "imm": [10, 13], "xlen": [10, 11, 13, 17], "immedi": [10, 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, 15, 24], "kind": [10, 11, 13, 15], "illeg": 10, "success": [10, 14], "fit": 10, "pc": [10, 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, 14, 15, 16, 17, 18, 19, 24, 27, 28], "word": [10, 13], "written": [10, 17, 25, 28], "last": [10, 15, 27, 28], "transfer": [10, 14, 27, 28], "over": [10, 17, 18, 27], "shouldn": 10, "until": [10, 20, 28], "start": [10, 11, 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, 18, 27, 28], "hdl": [10, 11, 13, 18, 27, 28], "ast": [10, 11, 13, 18, 27, 28], "serialize_addr": 10, "addr": [10, 28], "icachebypass": 10, "wb_master": 10, "wishbonemast": [10, 13, 14], "haselabor": [10, 18, 27], "simplewbcacherefil": 10, "instrdecompress": 10, "decompr_reg": 10, "rvc_reg": 10, "instr_mux": 10, "sel": 10, "int": [10, 11, 12, 13, 14, 16, 17, 18, 27, 28], "enum": [10, 11, 13, 18, 27, 28], "valuecast": [10, 13, 18, 27, 28], "tupl": [10, 11, 15, 16, 17, 18, 27, 28], "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, 18, 27, 28], "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, "op": [11, 13], "check_optyp": 11, "bool": [11, 13, 17, 18, 27, 28], "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, 18, 20], "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, 18], "standard": [11, 17, 18, 20], "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, 18, 19, 20, 27, 28], "busi": 11, "while": [11, 27], "progress": 11, "bit_width": 11, "recursion_depth": 11, "width": [11, 12, 13, 14, 17, 18, 28], "depth": [11, 14, 18, 28], "parallel": 11, "assum": [11, 16, 18, 20, 28], "power": [11, 18], "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, 18, 27, 28], "func_unit": [13, 16], "lsu": 13, "dummylsu": 13, "6": [13, 20], "7": 13, "kwarg": [13, 14, 18, 27], "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, 18, 20, 27], "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, 18, 27, 28], "dependentcach": 13, "cfg": 13, "addr_width": [13, 14], "length": [13, 18, 20, 27], "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, 18, 20], "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, 18, 20, 24, 25, 28], "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, "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, "commonlayout": 13, "lsulayout": 13, "ratlayout": [13, 15], "rflayout": [13, 15], "roblayout": [13, 15], "rsinterfacelayout": 13, "rs_entries_bit": 13, "rslayout": [13, 15], "schedulerlayout": 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, 18, 27], "robin": [14, 27], "slave_wb": 14, "intefac": 14, "boolean": [14, 28], "whether": [14, 18], "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, 18, 28], "stare": 14, "finish": [14, 16], "stall": [14, 17, 20], "clear": [14, 18, 24, 25, 28], "previous": 14, "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], "alloc": [15, 23, 24, 25], "renam": [15, 23], "entri": [15, 16, 18, 20, 23, 24, 25, 28], "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, "id": [15, 24, 25], "current": [15, 17, 20, 27], "free": [15, 19, 20, 25], "rat_rename_in": 15, "rat_rename_out": 15, "data_layout": [15, 28], "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, 18], "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_write_v": 16, "rf_write_v": 16, "end": [16, 20], "rob_id": 16, "reg_id": 16, "reg_val": 16, "funcblocksunifi": 16, "extra_methods_requir": 16, "get_extra_method": 16, "item": [16, 18], "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], "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, 18], "higher": 17, "synthetis": 17, "exceptioncauseregist": 17, "rob_get_indic": 17, "should_update_priorii": 17, "current_caus": 17, "new_caus": 17, "frat": 17, "rrat": 17, "registerfil": 17, "reorderbuff": 17, "ready_for": 17, "auto_debug_sign": 18, "_rec": [18, 27, 28], "view": [18, 27, 28], "signalbundl": [18, 27, 28], "map": [18, 19, 20, 27, 28], "arrai": 18, "basicfifo": 18, "empti": [18, 27, 28], "reiniti": 18, "init": 18, "shapelik": [18, 27, 28], "layoutlik": [18, 27, 28], "paramt": 18, "semaphor": 18, "max_count": 18, "target": [18, 28], "assigntyp": 18, "rh": 18, "moduleconnector": 18, "anonym": 18, "onehotswitch": 18, "modulelik": [18, 27], "style": 18, "benefit": 18, "represent": 18, "sig": 18, "onehotcas": 18, "0b01": 18, "0b10": 18, "onehotswitchdynam": 18, "liter": [18, 27], "variabl": [18, 27], "signifi": 18, "align_down_to_power_of_two": 18, "num": 18, "align_to_power_of_two": 18, "up": [18, 19, 25], "lh": 18, "assignarg": 18, "assignfield": 18, "lhs_strict": 18, "rhs_strict": 18, "structlayout": 18, "mismatch": 18, "accord": 18, "explicitli": 18, "shape": 18, "castabl": 18, "determin": [18, 20], "subrecord": 18, "valueerror": 18, "bits_from_int": 18, "count_leading_zero": 18, "count_trailing_zero": 18, "flatten_sign": 18, "flatten": 18, "popcount": 18, "silence_mustus": 18, "introduct": 19, "assumpt": [19, 20], "develop": 19, "environ": 19, "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, "tabl": 19, "substitut": 19, "clean": 19, "problem": [19, 20], "checklist": 19, "benchmark": 19, "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], "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, "fail": 20, "repli": 20, "modifi": [20, 28], "claim": 20, "operand": [20, 24, 25], "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], "nonexclus": 27, "single_cal": 27, "happen": 27, "thrown": 27, "const": 27, "d1": 27, "d0": 27, "combinationi": 27, "my_sum_method": 27, "arg1": 27, "arg2": 27, "sum": 27, "static": 27, "construct": [27, 28], "blueprint": 27, "freshli": 27, "proxi": 27, "priorit": 27, "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, "callabl": [27, 28], "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, "dump_dot": 27, "indent": 27, "dump_elk": 27, "dump_mermaid": 27, "get_hier_nam": 27, "obj": 27, "hierarch": 27, "yet": 27, "get_nam": 27, "insert_edg": 27, "fr": 27, "insert_nod": 27, "mermaid_direct": 27, "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, "latest": 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}, "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, "", "CommonLayouts"], [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.CommonLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.DecodeLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.FetchLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.FuncUnitLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.ICacheLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.LSULayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RATLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RFLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.ROBLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RSInterfaceLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.RSLayouts": [[13, 2, 1, "", "__init__"]], "coreblocks.params.layouts.SchedulerLayouts": [[13, 2, 1, "", "__init__"]], "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, "-", "debug_signals"], [18, 0, 0, "-", "fifo"], [18, 0, 0, "-", "protocols"], [18, 0, 0, "-", "utils"]], "coreblocks.utils.debug_signals": [[18, 4, 1, "", "auto_debug_signals"]], "coreblocks.utils.fifo": [[18, 1, 1, "", "BasicFifo"], [18, 1, 1, "", "Semaphore"]], "coreblocks.utils.fifo.BasicFifo": [[18, 2, 1, "", "__init__"]], "coreblocks.utils.fifo.Semaphore": [[18, 2, 1, "", "__init__"]], "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"]], "coreblocks.utils.utils": [[18, 1, 1, "", "AssignType"], [18, 1, 1, "", "ModuleConnector"], [18, 4, 1, "", "OneHotSwitch"], [18, 4, 1, "", "OneHotSwitchDynamic"], [18, 4, 1, "", "align_down_to_power_of_two"], [18, 4, 1, "", "align_to_power_of_two"], [18, 4, 1, "", "assign"], [18, 4, 1, "", "bits_from_int"], [18, 4, 1, "", "count_leading_zeros"], [18, 4, 1, "", "count_trailing_zeros"], [18, 4, 1, "", "flatten_signals"], [18, 4, 1, "", "popcount"], [18, 4, 1, "", "silence_mustuse"]], "coreblocks.utils.utils.AssignType": [[18, 3, 1, "", "ALL"], [18, 3, 1, "", "COMMON"], [18, 3, 1, "", "RHS"]], "coreblocks.utils.utils.ModuleConnector": [[18, 2, 1, "", "__init__"]], "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"]], "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"]]}, "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], "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], "subpackag": [9, 11, 27], "submodul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 28], "core": [9, 27], "modul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 28], "content": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 28], "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, "debug_sign": 18, "fifo": 18, "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}, "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 2351c7b8b..6b5293984 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 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/shared_structs/RS.html b/shared_structs/RS.html index 19a8e685a..3c62386a2 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 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/synthesis/Synthesis.html b/synthesis/Synthesis.html index 62639f05c..2463d2082 100644 --- a/synthesis/Synthesis.html +++ b/synthesis/Synthesis.html @@ -151,7 +151,7 @@

Benchmarks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/transactron.html b/transactron.html index 046789da3..75d7582b8 100644 --- a/transactron.html +++ b/transactron.html @@ -1297,7 +1297,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.

diff --git a/transactron.lib.html b/transactron.lib.html index b7dd1ff67..3cb89388b 100644 --- a/transactron.lib.html +++ b/transactron.lib.html @@ -895,7 +895,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 16:15 2023-11-02. + Last updated on 20:30 2023-11-05.