diff --git a/.doctrees/Current_graph.doctree b/.doctrees/Current_graph.doctree index 6c5bf8558..193187e66 100644 Binary files a/.doctrees/Current_graph.doctree and b/.doctrees/Current_graph.doctree differ diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index 1d173a8e7..838778c1c 100644 Binary files a/.doctrees/api.doctree and b/.doctrees/api.doctree differ diff --git a/.doctrees/auto_graph.doctree b/.doctrees/auto_graph.doctree index f72af49eb..d69b90ac3 100644 Binary files a/.doctrees/auto_graph.doctree and b/.doctrees/auto_graph.doctree differ diff --git a/.doctrees/coreblocks.frontend.doctree b/.doctrees/coreblocks.frontend.doctree index 501102e71..d43bd5ab6 100644 Binary files a/.doctrees/coreblocks.frontend.doctree and b/.doctrees/coreblocks.frontend.doctree differ diff --git a/.doctrees/coreblocks.fu.doctree b/.doctrees/coreblocks.fu.doctree index ae91d1978..248727d10 100644 Binary files a/.doctrees/coreblocks.fu.doctree and b/.doctrees/coreblocks.fu.doctree differ diff --git a/.doctrees/coreblocks.peripherals.doctree b/.doctrees/coreblocks.peripherals.doctree index 0bd00359a..74f9ada44 100644 Binary files a/.doctrees/coreblocks.peripherals.doctree and b/.doctrees/coreblocks.peripherals.doctree differ diff --git a/.doctrees/coreblocks.transactions.doctree b/.doctrees/coreblocks.transactions.doctree index 7b6ea6eb5..c17899f42 100644 Binary files a/.doctrees/coreblocks.transactions.doctree and b/.doctrees/coreblocks.transactions.doctree differ diff --git a/.doctrees/coreblocks.utils.doctree b/.doctrees/coreblocks.utils.doctree index 80ced0598..aac72607f 100644 Binary files a/.doctrees/coreblocks.utils.doctree and b/.doctrees/coreblocks.utils.doctree differ diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index 56de417d2..f249ea029 100644 Binary files a/.doctrees/environment.pickle and b/.doctrees/environment.pickle differ diff --git a/Assumptions.html b/Assumptions.html index 5f00a3dca..b462d51dc 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 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/Current_graph.html b/Current_graph.html index cd79aec50..9fb03ab11 100644 --- a/Current_graph.html +++ b/Current_graph.html @@ -89,32 +89,32 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/Development_environment.html b/Development_environment.html index d39bda1f7..c8ce10596 100644 --- a/Development_environment.html +++ b/Development_environment.html @@ -178,7 +178,7 @@

build_docs.sh

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/Home.html b/Home.html index 2a953de01..ede4b8a52 100644 --- a/Home.html +++ b/Home.html @@ -129,7 +129,7 @@

Documentation

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/Problem-checklist.html b/Problem-checklist.html index 644d98160..67b4e4059 100644 --- a/Problem-checklist.html +++ b/Problem-checklist.html @@ -105,7 +105,7 @@

Problem checklist

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/Transactions.html b/Transactions.html index 9850caeae..ae8187cf3 100644 --- a/Transactions.html +++ b/Transactions.html @@ -267,7 +267,7 @@

Transaction and method nesting

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/_sources/auto_graph.rst.txt b/_sources/auto_graph.rst.txt index 39b5ca652..03440dc73 100644 --- a/_sources/auto_graph.rst.txt +++ b/_sources/auto_graph.rst.txt @@ -6,32 +6,32 @@ subgraph Core["core Core"] Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_result["result"] WishboneMaster_request["request"] + WishboneMaster_result["result"] end subgraph WishboneMaster1["wb_master_data WishboneMaster"] WishboneMaster1_result["result"] WishboneMaster1_request["request"] end subgraph FIFO["fifo_fetch FIFO"] - FIFO_read["read"] FIFO_write["write"] + FIFO_read["read"] end subgraph BasicFifo["free_rf_fifo BasicFifo"] BasicFifo_write["write"] BasicFifo_read["read"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] - SimpleWBCacheRefiller_start_refill["start_refill"] SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] SimpleWBCacheRefiller_accept_refill["accept_refill"] + SimpleWBCacheRefiller_start_refill["start_refill"] end subgraph ICache["icache ICache"] ICache_ICache["ICache"] - ICache_issue_req["issue_req"] - ICache_ICache1["ICache"] ICache_accept_res["accept_res"] + ICache_ICache1["ICache"] ICache_ICache2["ICache"] + ICache_issue_req["issue_req"] subgraph FIFO1["req_fifo FIFO"] FIFO1_write["write"] FIFO1_read["read"] @@ -42,12 +42,12 @@ end end subgraph Fetch["fetch Fetch"] - Fetch_Fetch["Fetch"] Fetch_verify_branch["verify_branch"] + Fetch_Fetch["Fetch"] Fetch_Fetch1["Fetch"] subgraph BasicFifo1["fetch_target_queue BasicFifo"] - BasicFifo1_read["read"] BasicFifo1_write["write"] + BasicFifo1_read["read"] end end subgraph FRAT["FRAT FRAT"] @@ -57,21 +57,21 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_read2["read2"] - RegisterFile_free["free"] RegisterFile_write["write"] RegisterFile_read1["read1"] + RegisterFile_free["free"] + RegisterFile_read2["read2"] end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_get_indices["get_indices"] ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_retire["retire"] ReorderBuffer_peek["peek"] + ReorderBuffer_get_indices["get_indices"] ReorderBuffer_put["put"] - ReorderBuffer_retire["retire"] 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,23 +93,23 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_get_result["get_result"] RSFuncBlock_update["update"] + RSFuncBlock_get_result["get_result"] RSFuncBlock_insert["insert"] RSFuncBlock_select["select"] subgraph RS["rs RS"] RS_RS["RS"] RS_RS1["RS"] RS_update["update"] - RS_insert["insert"] RS_select["select"] RS_RS2["RS"] + RS_insert["insert"] RS_take["take"] RS_RS3["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_accept["accept"] AluFuncUnit_issue["issue"] + AluFuncUnit_accept["accept"] subgraph FIFO2["fifo FIFO"] FIFO2_read["read"] FIFO2_write["write"] @@ -119,20 +119,20 @@ WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] + ShiftFuncUnit_issue["issue"] subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_accept["accept"] JumpBranchFuncUnit_branch_result["branch_result"] JumpBranchFuncUnit_issue["issue"] + JumpBranchFuncUnit_accept["accept"] subgraph FIFO4["fifo_res FIFO"] FIFO4_write["write"] FIFO4_read["read"] @@ -149,8 +149,8 @@ ExceptionFuncUnit_issue["issue"] ExceptionFuncUnit_accept["accept"] subgraph FIFO6["fifo FIFO"] - FIFO6_read["read"] FIFO6_write["write"] + FIFO6_read["read"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] @@ -179,11 +179,11 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_select["select"] - LSUDummy_insert["insert"] LSUDummy_update["update"] LSUDummy_get_result["get_result"] + LSUDummy_insert["insert"] LSUDummy_precommit["precommit"] + LSUDummy_select["select"] subgraph LSUDummyInternals["internal LSUDummyInternals"] LSUDummyInternals_LSUDummyInternals["LSUDummyInternals"] LSUDummyInternals_LSUDummyInternals1["LSUDummyInternals"] @@ -210,8 +210,8 @@ subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister2["register_low CSRRegister"] - CSRRegister2_write["write"] CSRRegister2_read["read"] + CSRRegister2_write["write"] end subgraph CSRRegister3["register_high CSRRegister"] CSRRegister3_write["write"] @@ -260,8 +260,8 @@ RSSelection_RSSelection1["RSSelection"] RSSelection_RSSelection2["RSSelection"] subgraph Forwarder3["forwarder Forwarder"] - Forwarder3_read["read"] Forwarder3_write["write"] + Forwarder3_read["read"] end end subgraph RSInsertion["rs_insertion RSInsertion"] @@ -277,12 +277,12 @@ subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5_write["write"] CSRRegister5_read["read"] + CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] - CSRRegister6_read["read"] CSRRegister6_write["write"] + CSRRegister6_read["read"] end end end @@ -300,20 +300,20 @@ end end Core_InitFreeRFFifo --> BasicFifo_write - Retirement_Retirement --> BasicFifo_write + Retirement_Retirement1 --> BasicFifo_write SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request - ICache_ICache2 --> Forwarder_write + ICache_ICache1 --> Forwarder_write ICache_ICache --> SimpleWBCacheRefiller_start_refill - SimpleWBCacheRefiller_accept_refill --> ICache_ICache1 - WishboneMaster_result --> ICache_ICache1 - Fetch_Fetch --> ICache_issue_req - Fetch_Fetch --> FIFO1_write - Fetch_Fetch --> BasicFifo1_write - BasicFifo1_read --> Fetch_Fetch1 - ICache_accept_res --> Fetch_Fetch1 - FIFO1_read --> Fetch_Fetch1 - Forwarder_read --> Fetch_Fetch1 - Fetch_Fetch1 --> FIFO_write + SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 + WishboneMaster_result --> ICache_ICache2 + Fetch_Fetch1 --> ICache_issue_req + Fetch_Fetch1 --> FIFO1_write + Fetch_Fetch1 --> BasicFifo1_write + BasicFifo1_read --> Fetch_Fetch + ICache_accept_res --> Fetch_Fetch + FIFO1_read --> Fetch_Fetch + Forwarder_read --> Fetch_Fetch + Fetch_Fetch --> FIFO_write AdapterTrans_AdapterTrans_write --> FIFO_write FIFO_read --> Decode_Decode Decode_Decode --> FIFO7_write @@ -326,15 +326,15 @@ FIFO9_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation --> FIFO10_write - FIFO10_read --> RSSelection_RSSelection - RSSelection_RSSelection --> Forwarder3_write - Forwarder3_read --> RSSelection_RSSelection2 + FIFO10_read --> RSSelection_RSSelection2 + RSSelection_RSSelection2 --> Forwarder3_write Forwarder3_read --> RSSelection_RSSelection1 - RSFuncBlock_select --> RSSelection_RSSelection2 - RS_select --> RSSelection_RSSelection2 - RSSelection_RSSelection2 --> FIFO11_write + Forwarder3_read --> RSSelection_RSSelection + RSFuncBlock_select --> RSSelection_RSSelection1 + RS_select --> RSSelection_RSSelection1 RSSelection_RSSelection1 --> FIFO11_write - RSSelection_RSSelection1 <--> LSUDummy_select + RSSelection_RSSelection --> FIFO11_write + RSSelection_RSSelection <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -367,12 +367,12 @@ WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect --> ExceptionCauseRegister_report WakeupSelect3_WakeupSelect --> ExceptionCauseRegister_report - LSUDummyInternals_LSUDummyInternals --> ExceptionCauseRegister_report LSUDummyInternals_LSUDummyInternals2 --> ExceptionCauseRegister_report + LSUDummyInternals_LSUDummyInternals1 --> ExceptionCauseRegister_report ReorderBuffer_get_indices --> WakeupSelect2_WakeupSelect ReorderBuffer_get_indices --> WakeupSelect3_WakeupSelect - ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals2 + ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals1 WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write RS_RS2 --> WakeupSelect3_WakeupSelect @@ -390,26 +390,26 @@ FIFO4_read --> ConnectTrans4_ConnectTrans ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans - LSUDummyInternals_LSUDummyInternals1 --> WishboneMaster1_request - WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals2 + LSUDummyInternals_LSUDummyInternals --> WishboneMaster1_request + 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_Retirement1 - Retirement_Retirement1 --> LSUDummy_precommit - ReorderBuffer_retire --> Retirement_Retirement - ExceptionCauseRegister_get --> Retirement_Retirement - Retirement_Retirement --> CSRRegister4_write - Retirement_Retirement --> RRAT_commit - Retirement_Retirement --> RegisterFile_free - Retirement_Retirement <--> DoubleCounterCSR2_increment - CSRRegister5_read --> Retirement_Retirement - Retirement_Retirement --> CSRRegister5_write - CSRRegister6_read --> Retirement_Retirement - Retirement_Retirement --> CSRRegister6_write + ReorderBuffer_peek --> Retirement_Retirement + Retirement_Retirement --> LSUDummy_precommit + ReorderBuffer_retire --> Retirement_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 GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister_write diff --git a/_static/pygments.css b/_static/pygments.css index 691aeb82d..0d49244ed 100644 --- a/_static/pygments.css +++ b/_static/pygments.css @@ -17,6 +17,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ diff --git a/api.html b/api.html index 2d0c1be63..f2f82f409 100644 --- a/api.html +++ b/api.html @@ -210,7 +210,7 @@

coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/auto_graph.html b/auto_graph.html index 182439cc2..e7d646573 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -85,32 +85,32 @@ subgraph Core["core Core"] Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_result["result"] WishboneMaster_request["request"] + WishboneMaster_result["result"] end subgraph WishboneMaster1["wb_master_data WishboneMaster"] WishboneMaster1_result["result"] WishboneMaster1_request["request"] end subgraph FIFO["fifo_fetch FIFO"] - FIFO_read["read"] FIFO_write["write"] + FIFO_read["read"] end subgraph BasicFifo["free_rf_fifo BasicFifo"] BasicFifo_write["write"] BasicFifo_read["read"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] - SimpleWBCacheRefiller_start_refill["start_refill"] SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] SimpleWBCacheRefiller_accept_refill["accept_refill"] + SimpleWBCacheRefiller_start_refill["start_refill"] end subgraph ICache["icache ICache"] ICache_ICache["ICache"] - ICache_issue_req["issue_req"] - ICache_ICache1["ICache"] ICache_accept_res["accept_res"] + ICache_ICache1["ICache"] ICache_ICache2["ICache"] + ICache_issue_req["issue_req"] subgraph FIFO1["req_fifo FIFO"] FIFO1_write["write"] FIFO1_read["read"] @@ -121,12 +121,12 @@ end end subgraph Fetch["fetch Fetch"] - Fetch_Fetch["Fetch"] Fetch_verify_branch["verify_branch"] + Fetch_Fetch["Fetch"] Fetch_Fetch1["Fetch"] subgraph BasicFifo1["fetch_target_queue BasicFifo"] - BasicFifo1_read["read"] BasicFifo1_write["write"] + BasicFifo1_read["read"] end end subgraph FRAT["FRAT FRAT"] @@ -136,21 +136,21 @@ RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_read2["read2"] - RegisterFile_free["free"] RegisterFile_write["write"] RegisterFile_read1["read1"] + RegisterFile_free["free"] + RegisterFile_read2["read2"] end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_get_indices["get_indices"] ReorderBuffer_mark_done["mark_done"] + ReorderBuffer_retire["retire"] ReorderBuffer_peek["peek"] + ReorderBuffer_get_indices["get_indices"] ReorderBuffer_put["put"] - ReorderBuffer_retire["retire"] 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,23 +172,23 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] - RSFuncBlock_get_result["get_result"] RSFuncBlock_update["update"] + RSFuncBlock_get_result["get_result"] RSFuncBlock_insert["insert"] RSFuncBlock_select["select"] subgraph RS["rs RS"] RS_RS["RS"] RS_RS1["RS"] RS_update["update"] - RS_insert["insert"] RS_select["select"] RS_RS2["RS"] + RS_insert["insert"] RS_take["take"] RS_RS3["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_accept["accept"] AluFuncUnit_issue["issue"] + AluFuncUnit_accept["accept"] subgraph FIFO2["fifo FIFO"] FIFO2_read["read"] FIFO2_write["write"] @@ -198,20 +198,20 @@ WakeupSelect_WakeupSelect["WakeupSelect"] end subgraph ShiftFuncUnit["func_unit_1 ShiftFuncUnit"] - ShiftFuncUnit_issue["issue"] ShiftFuncUnit_accept["accept"] + ShiftFuncUnit_issue["issue"] subgraph FIFO3["fifo FIFO"] - FIFO3_read["read"] FIFO3_write["write"] + FIFO3_read["read"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_accept["accept"] JumpBranchFuncUnit_branch_result["branch_result"] JumpBranchFuncUnit_issue["issue"] + JumpBranchFuncUnit_accept["accept"] subgraph FIFO4["fifo_res FIFO"] FIFO4_write["write"] FIFO4_read["read"] @@ -228,8 +228,8 @@ ExceptionFuncUnit_issue["issue"] ExceptionFuncUnit_accept["accept"] subgraph FIFO6["fifo FIFO"] - FIFO6_read["read"] FIFO6_write["write"] + FIFO6_read["read"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] @@ -258,11 +258,11 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_select["select"] - LSUDummy_insert["insert"] LSUDummy_update["update"] LSUDummy_get_result["get_result"] + LSUDummy_insert["insert"] LSUDummy_precommit["precommit"] + LSUDummy_select["select"] subgraph LSUDummyInternals["internal LSUDummyInternals"] LSUDummyInternals_LSUDummyInternals["LSUDummyInternals"] LSUDummyInternals_LSUDummyInternals1["LSUDummyInternals"] @@ -289,8 +289,8 @@ subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister2["register_low CSRRegister"] - CSRRegister2_write["write"] CSRRegister2_read["read"] + CSRRegister2_write["write"] end subgraph CSRRegister3["register_high CSRRegister"] CSRRegister3_write["write"] @@ -339,8 +339,8 @@ RSSelection_RSSelection1["RSSelection"] RSSelection_RSSelection2["RSSelection"] subgraph Forwarder3["forwarder Forwarder"] - Forwarder3_read["read"] Forwarder3_write["write"] + Forwarder3_read["read"] end end subgraph RSInsertion["rs_insertion RSInsertion"] @@ -356,12 +356,12 @@ subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister5["register_low CSRRegister"] - CSRRegister5_write["write"] CSRRegister5_read["read"] + CSRRegister5_write["write"] end subgraph CSRRegister6["register_high CSRRegister"] - CSRRegister6_read["read"] CSRRegister6_write["write"] + CSRRegister6_read["read"] end end end @@ -379,20 +379,20 @@ end end Core_InitFreeRFFifo --> BasicFifo_write -Retirement_Retirement --> BasicFifo_write +Retirement_Retirement1 --> BasicFifo_write SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request -ICache_ICache2 --> Forwarder_write +ICache_ICache1 --> Forwarder_write ICache_ICache --> SimpleWBCacheRefiller_start_refill -SimpleWBCacheRefiller_accept_refill --> ICache_ICache1 -WishboneMaster_result --> ICache_ICache1 -Fetch_Fetch --> ICache_issue_req -Fetch_Fetch --> FIFO1_write -Fetch_Fetch --> BasicFifo1_write -BasicFifo1_read --> Fetch_Fetch1 -ICache_accept_res --> Fetch_Fetch1 -FIFO1_read --> Fetch_Fetch1 -Forwarder_read --> Fetch_Fetch1 -Fetch_Fetch1 --> FIFO_write +SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 +WishboneMaster_result --> ICache_ICache2 +Fetch_Fetch1 --> ICache_issue_req +Fetch_Fetch1 --> FIFO1_write +Fetch_Fetch1 --> BasicFifo1_write +BasicFifo1_read --> Fetch_Fetch +ICache_accept_res --> Fetch_Fetch +FIFO1_read --> Fetch_Fetch +Forwarder_read --> Fetch_Fetch +Fetch_Fetch --> FIFO_write AdapterTrans_AdapterTrans_write --> FIFO_write FIFO_read --> Decode_Decode Decode_Decode --> FIFO7_write @@ -405,15 +405,15 @@ FIFO9_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation --> FIFO10_write -FIFO10_read --> RSSelection_RSSelection -RSSelection_RSSelection --> Forwarder3_write -Forwarder3_read --> RSSelection_RSSelection2 +FIFO10_read --> RSSelection_RSSelection2 +RSSelection_RSSelection2 --> Forwarder3_write Forwarder3_read --> RSSelection_RSSelection1 -RSFuncBlock_select --> RSSelection_RSSelection2 -RS_select --> RSSelection_RSSelection2 -RSSelection_RSSelection2 --> FIFO11_write +Forwarder3_read --> RSSelection_RSSelection +RSFuncBlock_select --> RSSelection_RSSelection1 +RS_select --> RSSelection_RSSelection1 RSSelection_RSSelection1 --> FIFO11_write -RSSelection_RSSelection1 <--> LSUDummy_select +RSSelection_RSSelection --> FIFO11_write +RSSelection_RSSelection <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -446,12 +446,12 @@ WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect --> ExceptionCauseRegister_report WakeupSelect3_WakeupSelect --> ExceptionCauseRegister_report -LSUDummyInternals_LSUDummyInternals --> ExceptionCauseRegister_report LSUDummyInternals_LSUDummyInternals2 --> ExceptionCauseRegister_report +LSUDummyInternals_LSUDummyInternals1 --> ExceptionCauseRegister_report ReorderBuffer_get_indices --> WakeupSelect2_WakeupSelect ReorderBuffer_get_indices --> WakeupSelect3_WakeupSelect -ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals2 +ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals1 WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write RS_RS2 --> WakeupSelect3_WakeupSelect @@ -469,26 +469,26 @@ FIFO4_read --> ConnectTrans4_ConnectTrans ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans -LSUDummyInternals_LSUDummyInternals1 --> WishboneMaster1_request -WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals2 +LSUDummyInternals_LSUDummyInternals --> WishboneMaster1_request +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_Retirement1 -Retirement_Retirement1 --> LSUDummy_precommit -ReorderBuffer_retire --> Retirement_Retirement -ExceptionCauseRegister_get --> Retirement_Retirement -Retirement_Retirement --> CSRRegister4_write -Retirement_Retirement --> RRAT_commit -Retirement_Retirement --> RegisterFile_free -Retirement_Retirement <--> DoubleCounterCSR2_increment -CSRRegister5_read --> Retirement_Retirement -Retirement_Retirement --> CSRRegister5_write -CSRRegister6_read --> Retirement_Retirement -Retirement_Retirement --> CSRRegister6_write +ReorderBuffer_peek --> Retirement_Retirement +Retirement_Retirement --> LSUDummy_precommit +ReorderBuffer_retire --> Retirement_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 GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister_write @@ -509,7 +509,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/components/icache.html b/components/icache.html index c1eeb94b9..57cecd39b 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

Address mapping example

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index 139293ef0..39d6a608a 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -404,7 +404,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.fu.html b/coreblocks.fu.html index 86b414bf5..7d6d970cd 100644 --- a/coreblocks.fu.html +++ b/coreblocks.fu.html @@ -796,7 +796,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.fu.unsigned_multiplication.html b/coreblocks.fu.unsigned_multiplication.html index 6c310a6ca..7d255d209 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 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.html b/coreblocks.html index dde81ad66..d2ce889c9 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -227,7 +227,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.params.html b/coreblocks.params.html index c924c9fb3..cbe252a1d 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -2363,7 +2363,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index 8c2d8e73f..d606957d9 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -348,7 +348,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

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

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.stages.html b/coreblocks.stages.html index 9c54fce21..a66f66802 100644 --- a/coreblocks.stages.html +++ b/coreblocks.stages.html @@ -266,7 +266,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.structs_common.html b/coreblocks.structs_common.html index cd1d84d93..7df6670ca 100644 --- a/coreblocks.structs_common.html +++ b/coreblocks.structs_common.html @@ -446,7 +446,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.transactions.html b/coreblocks.transactions.html index 737ce50e6..0ab41625a 100644 --- a/coreblocks.transactions.html +++ b/coreblocks.transactions.html @@ -1068,7 +1068,7 @@

Submodules
-__init__(layout: ~typing.Union[~amaranth.hdl.rec.Layout, ~typing.Sequence[~typing.Union[~typing.Tuple[str, ~typing.Union[~amaranth.hdl.ast.Shape, ~amaranth.hdl.ast.ShapeCastable, int, range, ~typing.Type[~enum.Enum], LayoutLike]], ~typing.Tuple[str, ~typing.Union[~amaranth.hdl.ast.Shape, ~amaranth.hdl.ast.ShapeCastable, int, range, ~typing.Type[~enum.Enum], LayoutLike], ~amaranth.hdl.rec.Direction]]]], depth: int, fifo_type=<class 'amaranth.lib.fifo.SyncFIFO'>)
+__init__(layout: ~typing.Union[~amaranth.hdl._rec.Layout, ~typing.Sequence[~typing.Union[~typing.Tuple[str, ~typing.Union[~amaranth.hdl.ast.Shape, ~amaranth.hdl.ast.ShapeCastable, int, range, ~typing.Type[~enum.Enum], LayoutLike]], ~typing.Tuple[str, ~typing.Union[~amaranth.hdl.ast.Shape, ~amaranth.hdl.ast.ShapeCastable, int, range, ~typing.Type[~enum.Enum], LayoutLike], ~amaranth.hdl._rec.Direction]]]], depth: int, fifo_type=<class 'amaranth.lib.fifo.SyncFIFO'>)
Parameters
@@ -1240,7 +1240,7 @@

SubmodulesElaboratable

-__init__(targets: list[coreblocks.transactions.core.Method], combiner: Optional[Tuple[Union[Layout, Sequence[Union[Tuple[str, Union[Shape, ShapeCastable, int, range, Type[Enum], LayoutLike]], Tuple[str, Union[Shape, ShapeCastable, int, range, Type[Enum], LayoutLike], Direction]]]], Callable[[TModule, list[amaranth.hdl.rec.Record]], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, RecordDict]]]] = None)
+__init__(targets: list[coreblocks.transactions.core.Method], combiner: Optional[Tuple[Union[Layout, Sequence[Union[Tuple[str, Union[Shape, ShapeCastable, int, range, Type[Enum], LayoutLike]], Tuple[str, Union[Shape, ShapeCastable, int, range, Type[Enum], LayoutLike], Direction]]]], Callable[[TModule, list[amaranth.hdl._rec.Record]], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable | collections.abc.Mapping[str, RecordDict]]]] = None)

Method product.

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

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/coreblocks.utils.html b/coreblocks.utils.html index 97cb2359f..a752df5ab 100644 --- a/coreblocks.utils.html +++ b/coreblocks.utils.html @@ -465,7 +465,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/genindex.html b/genindex.html index b8ff84cc2..f27d8399c 100644 --- a/genindex.html +++ b/genindex.html @@ -2661,7 +2661,7 @@

Z

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/index.html b/index.html index a7c6b3254..8574cd3c1 100644 --- a/index.html +++ b/index.html @@ -210,7 +210,7 @@

Coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/miscellany/exceptionsSummary.html b/miscellany/exceptionsSummary.html index 42aa2c983..374737f1f 100644 --- a/miscellany/exceptionsSummary.html +++ b/miscellany/exceptionsSummary.html @@ -271,7 +271,7 @@

Summary

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/modules.html b/modules.html index 592f99b7e..f1bae76a0 100644 --- a/modules.html +++ b/modules.html @@ -196,7 +196,7 @@

coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/py-modindex.html b/py-modindex.html index ca959b141..187adacff 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -413,7 +413,7 @@

Python Module Index

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/scheduler/Overview.html b/scheduler/Overview.html index 45f74fba1..3b7bb58d7 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 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/search.html b/search.html index b5e748fce..79979d3d3 100644 --- a/search.html +++ b/search.html @@ -101,7 +101,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/searchindex.js b/searchindex.js index f3ac96770..a99294609 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.transactions", "coreblocks.utils", "index", "miscellany/exceptionsSummary", "modules", "scheduler/Overview", "shared_structs/Implementation/RS_impl", "shared_structs/RS", "synthesis/Synthesis"], "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.transactions.rst", "coreblocks.utils.rst", "index.md", "miscellany/exceptionsSummary.md", "modules.rst", "scheduler/Overview.md", "shared_structs/Implementation/RS_impl.md", "shared_structs/RS.md", "synthesis/Synthesis.md"], "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.transactions package", "coreblocks.utils package", "Coreblocks", "Summary of papers about interrupts", "coreblocks", "Scheduler overview", "Proposition of Reservation Station implementation", "Reservation Station", "Synthesis"], "terms": {"rf": [0, 6, 9, 16, 21, 22, 24, 25], "ha": [0, 2, 4, 10, 15, 17, 18, 19, 21, 24], "data": [0, 10, 13, 14, 17, 18, 19, 20, 25], "forward": [0, 18], "from": [0, 2, 3, 4, 5, 10, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26], "tomasulo": 0, "announc": [0, 16, 17], "bu": [0, 13, 14], "read": [0, 4, 5, 13, 14, 17, 18, 19, 20], "x0": [0, 13], "rf0": 0, "return": [0, 5, 8, 11, 13, 14, 18, 19, 21], "0": [0, 10, 11, 13, 15, 17, 18, 24, 25], "write": [0, 5, 10, 17, 18, 19, 21, 25], "i": [0, 2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 24, 25, 26], "noop": 0, "separ": [0, 18, 23], "r": [0, 2, 6, 9, 13, 15, 16, 21, 22, 23, 24, 25], "each": [0, 10, 11, 13, 14, 17, 18, 20, 21, 24, 25, 26], "fu": [0, 6, 9, 13, 16, 17, 22, 24, 25], "writeback": 0, "stage": [0, 6, 9, 17, 22], "save": [0, 2, 13, 16, 18, 21, 24, 25, 26], "rob": [0, 6, 9, 15, 16, 21, 22, 23, 24, 25], "after": [0, 5, 8, 10, 14, 18, 21, 23], "get": [0, 2, 10, 11, 12, 13, 15, 16, 18, 19, 20], "output": [0, 2, 10, 14, 16, 17, 18, 21, 24, 25, 26], "commit": [0, 2, 17, 21, 26], "updat": [0, 16, 17, 19], "rat": [0, 6, 9, 15, 21, 22], "In": [2, 3, 5, 15, 18, 19, 20, 25, 26], "order": [2, 3, 5, 8, 13, 15, 18, 20, 26], "prepar": [2, 15, 18, 21], "pleas": [2, 4, 5, 13], "follow": [2, 5, 8, 11, 15, 19, 24, 26], "step": [2, 5, 10, 15, 21], "below": 2, "instal": [2, 26], "python": [2, 5, 18, 19], "3": [2, 11, 13, 17, 18, 19], "10": [2, 8, 13, 21], "interpret": [2, 13, 18], "pip": 2, "packag": [2, 6, 20, 22], "manag": [2, 11, 13, 18, 20], "option": [2, 5, 11, 13, 17, 18, 19], "creat": [2, 10, 12, 18, 19], "virtual": 2, "python3": 2, "m": [2, 5, 13, 17, 18, 19, 21], "venv": 2, "project": [2, 3, 21, 26], "directori": [2, 3], "activ": [2, 18], "gener": [2, 3, 4, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 26], "bin": 2, "all": [2, 4, 5, 13, 14, 17, 18, 19, 20, 21, 26], "requir": [2, 8, 17, 18, 20, 21], "librari": [2, 18, 20], "pip3": 2, "dev": 2, "txt": 2, "riscv64": 2, "unknown": [2, 13], "elf": 2, "binutil": 2, "your": [2, 4], "favourit": 2, "On": [2, 18], "debian": 2, "base": [2, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21], "distro": 2, "call": [2, 4, 5, 10, 15, 17, 18, 24], "arch": [2, 13], "precommit": [2, 16], "hook": [2, 18], "pre": 2, "thi": [2, 4, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26], "automat": [2, 17, 19], "run": [2, 5, 18, 26], "linter": 2, "befor": [2, 4, 13, 14, 18, 23], "The": [2, 3, 8, 10, 11, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25], "contain": [2, 5, 13, 18, 19], "number": [2, 12, 13, 14, 16, 18, 19, 21, 26], "which": [2, 3, 5, 8, 10, 11, 15, 16, 18, 19, 21, 23, 24, 25], "ar": [2, 3, 4, 5, 8, 13, 14, 16, 17, 18, 19, 21, 23, 24, 25, 26], "ci": [2, 26], "also": [2, 5, 16, 18], "intend": [2, 18], "local": [2, 13], "thei": [2, 5, 14, 17, 18, 21, 23], "unit": [2, 8, 10, 11, 12, 13, 14, 15, 16, 17, 23], "test": [2, 4, 13, 18, 19, 26], "By": [2, 18], "default": [2, 13, 14, 18, 19], "everi": [2, 10, 11, 14, 18], "avail": [2, 3, 13, 14, 15, 17, 26], "specif": [2, 8, 13, 21], "file": [2, 13, 19, 21], "can": [2, 3, 5, 8, 13, 14, 16, 17, 18, 19, 21, 23, 24, 26], "test_transact": 2, "an": [2, 3, 4, 5, 8, 10, 11, 13, 15, 16, 17, 18, 19, 21, 24], "exampl": [2, 5, 13, 17, 18, 19, 20, 24, 26], "One": [2, 18, 19, 21], "even": [2, 18, 21], "class": [2, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "testschedul": 2, "Or": [2, 5], "method": [2, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "test_singl": 2, "argument": [2, 5, 14, 15, 18, 19, 25], "actual": [2, 10, 20], "search": 2, "within": [2, 12], "full": [2, 13, 18, 19, 20, 21], "name": [2, 5, 18, 19, 26], "match": [2, 19, 24, 25], "queri": 2, "thank": 2, "given": [2, 5, 18, 19, 24], "uniqu": 2, "just": [2, 5], "l": [2, 13], "list": [2, 4, 10, 11, 13, 14, 17, 18, 19, 20], "help": [2, 21, 26], "e": [2, 4, 10, 13, 18, 19, 21], "g": [2, 4, 10, 13, 19, 21], "find": [2, 21], "parameter": 2, "t": [2, 4, 5, 10, 13, 18, 19, 21, 24, 26], "trace": [2, 6, 9, 22], "waveform": 2, "vcd": 2, "format": [2, 5, 11, 18, 19], "gtkw": [2, 19], "gtkwave": [2, 19], "tool": [2, 12, 26], "__traces__": 2, "debug": [2, 19], "driven": 2, "v": [2, 3, 8, 13, 21, 24], "verbos": [2, 26], "make": [2, 3, 4, 10, 11, 21], "runner": 2, "more": [2, 16, 20, 21, 26], "It": [2, 5, 10, 11, 12, 13, 15, 16, 18, 21, 23, 24], "print": 2, "being": [2, 14, 18, 19], "check": [2, 4, 19, 21, 24, 25], "code": [2, 3, 4, 5, 18, 19, 21], "type": [2, 10, 11, 13, 18, 19], "should": [2, 3, 5, 8, 10, 13, 14, 15, 16, 18, 19, 21, 23, 24, 25], "subcommand": 2, "filenam": 2, "main": [2, 21, 23], "reformat": 2, "black": 2, "check_format": 2, "verifi": 2, "flake8": 2, "check_typ": 2, "pyright": 2, "same": [2, 5, 12, 13, 18, 19], "when": [2, 4, 5, 10, 14, 18, 19, 21, 24, 25], "confront": 2, "would": [2, 13, 21], "messag": 2, "you": [2, 4, 24, 26], "mai": [2, 26], "diff": 2, "wai": [2, 5, 10, 11, 13, 18, 21], "displai": 2, "chang": [2, 5, 18, 24], "appli": [2, 4, 18, 21], "chose": 2, "locat": [2, 3, 23], "issu": [2, 8, 10, 11, 12, 15, 19], "visual": 2, "core": [2, 6, 10, 11, 12, 13, 15, 16, 17, 21, 22, 26], "architectur": [2, 21], "graph": [2, 6, 9, 20, 22, 26], "one": [2, 5, 8, 10, 11, 14, 16, 18, 19, 21, 23, 24, 25], "support": [2, 10, 13, 15, 18, 20], "need": [2, 5, 10, 14, 18, 21, 24, 26], "pass": [2, 5, 16, 17, 18, 19], "appropri": [2, 18, 24], "p": [2, 13], "prune": [2, 18], "remov": [2, 21], "disconnect": 2, "node": 2, "f": [2, 13, 15, 26], "select": [2, 10, 11, 14, 15, 16, 17, 19], "elk": [2, 18], "eclips": 2, "layout": [2, 4, 5, 6, 9, 10, 14, 15, 16, 18, 19, 22], "kernel": [2, 21], "dot": [2, 18], "graphviz": 2, "mermaid": [2, 18], "document": [2, 20], "sphinx": 2, "html": [2, 3], "build": [2, 26], "coreblock": [3, 4, 26], "go": [3, 4, 18, 21], "out": [3, 10, 11, 12, 14, 16, 18, 20], "processor": [3, 20, 23], "implement": [3, 11, 13, 14, 20, 21, 23], "risc": [3, 8, 13], "microarchitectur": 3, "focu": 3, "flexibl": [3, 23], "allow": [3, 13, 18, 19, 21], "easili": [3, 18], "experi": 3, "differ": [3, 4, 11, 13, 14, 16, 18, 21], "compon": [3, 10, 13, 18], "doc": 3, "collect": [3, 13, 16, 17, 18, 26], "descript": [3, 20], "whole": [3, 10, 18, 21], "overview": [3, 20, 21], "high": 3, "level": [3, 13, 21], "found": 3, "version": 3, "page": [3, 21], "api": [3, 20], "kuznia": 3, "rdzeni": 3, "github": 3, "io": 3, "If": [4, 5, 8, 10, 13, 14, 17, 18, 19, 21, 24], "someth": [4, 5], "doesn": [4, 5, 19, 21], "work": [4, 5, 10, 15, 18, 21], "re": [4, 5, 14, 18, 21], "puzzl": 4, "why": 4, "through": 4, "see": [4, 5, 12], "ani": [4, 8, 10, 13, 14, 15, 19, 21], "point": [4, 13, 21], "case": [4, 8, 14, 15, 16, 18, 19, 21], "sure": 4, "us": [4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 26], "yield": 4, "function": [4, 5, 10, 11, 13, 15, 16, 18, 19, 21, 26], "testbenchio": 4, "notabl": 4, "except": [4, 6, 9, 13, 16, 18, 19, 20, 22], "settl": 4, "instead": [4, 5, 18, 21], "signal": [4, 10, 11, 14, 18, 19, 20], "unexpect": 4, "valu": [4, 10, 11, 13, 14, 15, 16, 17, 18, 19, 24, 25], "try": [4, 5, 21], "ad": [4, 13, 18, 19, 26], "right": [4, 18], "don": [4, 18, 21, 24], "do": [4, 10, 13, 18, 21], "eq": [4, 5, 18], "two": [4, 5, 10, 16, 17, 18, 19, 21], "record": [4, 5, 10, 11, 14, 18, 19], "assign": [4, 5, 17, 18, 19], "util": [4, 5, 6, 9, 15, 16, 18, 22], "amaranth": [4, 5, 10, 13, 14, 18, 19, 26], "statement": [4, 5, 18, 19], "some": [4, 5, 17, 18, 21, 26], "domain": [4, 18], "have": [4, 8, 13, 14, 16, 17, 18, 19, 21, 26], "combin": [4, 13, 16, 18], "loop": 4, "especi": 4, "simul": [4, 18], "hang": 4, "extend": [4, 13, 18], "spot": 4, "yourself": [4, 5, 26], "easi": [4, 5, 21], "fix": 4, "mistak": 4, "modular": 5, "design": [5, 12, 18, 21], "inspir": 5, "bluespec": 5, "program": [5, 13, 21], "languag": [5, 13], "wiki": 5, "compil": [5, 26], "idea": [5, 21], "interfac": [5, 10, 12, 14, 15, 16, 17, 18, 20], "hardwar": [5, 13, 20, 23], "modul": [5, 6, 22], "A": [5, 10, 13, 18], "state": [5, 14, 18, 20, 21], "oper": [5, 8, 10, 11, 13, 18, 21], "perform": [5, 10, 11, 12, 13, 15, 17, 18, 19, 26], "singl": [5, 11, 12, 13, 15, 16, 18, 19], "clock": [5, 12, 18, 23, 26], "cycl": [5, 8, 11, 12, 14, 17, 18, 21, 23], "atom": [5, 13, 24], "either": [5, 10, 18, 19], "execut": [5, 11, 13, 14, 15, 16, 18, 20, 23, 25], "its": [5, 10, 15, 16, 17, 18, 19, 21], "entrieti": 5, "onli": [5, 11, 17, 18, 19, 21], "readi": [5, 10, 14, 15, 16, 17, 18, 19, 20, 24], "doe": 5, "conflict": [5, 18], "anoth": [5, 8, 10, 18], "schedul": [5, 6, 9, 18, 20, 21, 22], "defin": [5, 10, 17, 18, 19], "depend": [5, 6, 9, 17, 18, 19, 22], "other": [5, 17, 18, 20], "via": [5, 10, 18], "directli": [5, 13, 18], "link": 5, "indirectli": [5, 18], "multipl": [5, 8, 11, 12, 13, 14, 15, 16, 18], "them": [5, 13, 18, 19, 21], "access": [5, 8, 13, 17, 21], "coordin": 5, "system": [5, 13], "avoid": 5, "commun": [5, 21, 24], "caller": [5, 18], "both": [5, 18, 19, 24], "direct": [5, 18, 19], "back": 5, "structur": [5, 19, 20, 21, 24], "simplest": 5, "part": [5, 17, 18, 21, 23], "elaborat": [5, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19], "block": [5, 8, 12, 13, 14, 15, 16, 18, 20, 21], "myth": 5, "def": [5, 18], "elabor": 5, "self": 5, "platform": [5, 18, 26], "tmodul": [5, 17, 18], "bodi": [5, 17, 18], "condit": [5, 18], "includ": [5, 18, 19], "like": [5, 8, 10, 14, 18, 21], "d": [5, 13, 18], "comb": [5, 18], "sig1": 5, "expr1": 5, "sync": [5, 18], "sig2": 5, "expr2": 5, "result": [5, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21], "arg_expr": 5, "analog": 5, "": [5, 13, 14, 18, 19, 21], "multiplex": 5, "rememb": [5, 18, 21], "insid": [5, 10, 18], "alwai": [5, 8, 17, 18], "onc": [5, 18], "becaus": [5, 18, 21], "resourc": [5, 11, 21, 26], "request": [5, 8, 10, 11, 12, 13, 14, 18], "paramet": [5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 26], "bit": [5, 8, 10, 11, 12, 13, 14, 17, 18, 19, 21, 24, 25], "express": 5, "expr": 5, "As": [5, 8, 21], "typic": [5, 18], "declar": 5, "constructor": [5, 10, 18], "myotherth": 5, "__init__": [5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "o": [5, 12, 18, 21], "my_method": 5, "input_layout": 5, "output_layout": 5, "def_method": [5, 18], "_": [5, 18], "arg": [5, 10, 11, 18, 19], "other_method": 5, "ret_expr": 5, "techniqu": 5, "present": [5, 18, 19, 21], "abov": 5, "conveni": [5, 18], "syntax": [5, 18], "particular": 5, "unnam": 5, "usual": [5, 21], "For": [5, 8, 13, 19, 24, 25, 26], "could": 5, "around": 5, "entir": [5, 8], "sometim": 5, "might": [5, 18], "altern": [5, 18], "decid": [5, 21, 23], "best": 5, "import": [5, 21], "question": 5, "ask": 5, "independ": [5, 8, 18], "thing": [5, 19], "lock": [5, 18, 21], "so": [5, 14, 16, 18, 21], "mayb": [5, 21], "extern": [5, 18, 20], "doubt": 5, "prefer": 5, "noth": 5, "els": [5, 17, 18, 21], "Such": 5, "adaptertran": [5, 18], "facilit": 5, "provid": [5, 10, 11, 13, 15, 17, 18], "most": [5, 8, 18, 21], "ones": 5, "connecttran": [5, 18], "connect": [5, 10, 14, 16, 17, 18, 21], "togeth": [5, 18], "fifo": [5, 6, 9, 16, 18, 21, 22], "queue": [5, 18, 19, 21], "adapt": [5, 18], "plain": [5, 18], "These": [5, 21, 26], "veri": [5, 21], "testbench": [5, 18], "parent": 5, "convers": 5, "true": [5, 13, 14, 18, 19], "possibl": [5, 18, 19, 21], "limit": [5, 14, 18], "impli": 5, "consid": [5, 18, 21], "subpackag": [6, 22], "frontend": [6, 9, 22, 23], "submodul": [6, 22], "decod": [6, 9, 11, 15, 22], "fetch": [6, 8, 9, 13, 16, 17, 21, 22], "icach": [6, 9, 22], "rvc": [6, 9, 22], "content": [6, 22], "alu": [6, 9, 13, 22], "div_unit": [6, 9, 22], "fu_decod": [6, 9, 22], "jumpbranch": [6, 9, 13, 22], "mul_unit": [6, 9, 22], "shift_unit": [6, 9, 13, 22], "zbc": [6, 9, 13, 22], "zb": [6, 9, 13, 22], "param": [6, 9, 10, 11, 15, 16, 17, 22], "configur": [6, 9, 15, 22], "fu_param": [6, 9, 22], "genparam": [6, 9, 10, 11, 12, 15, 16, 17, 22], "icache_param": [6, 9, 22], "instr": [6, 9, 10, 22], "isa": [6, 9, 10, 17, 22], "kei": [6, 9, 17, 19, 22], "optyp": [6, 9, 10, 11, 15, 16, 17, 22], "peripher": [6, 9, 22], "wishbon": [6, 9, 22], "wakeup_select": [6, 9, 22], "backend": [6, 9, 22], "func_blocks_unifi": [6, 9, 22], "retir": [6, 9, 22], "rs_func_block": [6, 9, 22], "structs_common": [6, 9, 22], "csr": [6, 9, 10, 13, 22], "csr_gener": [6, 9, 22], "transact": [6, 9, 10, 13, 14, 17, 19, 20, 22, 24], "lib": [6, 9, 22], "debug_sign": [6, 9, 16, 18, 22], "protocol": [6, 9, 10, 15, 16, 22], "expos": [8, 18, 19], "three": [8, 10, 18, 21], "issue_req": [8, 10], "lookup": [8, 10], "accept_resp": 8, "flush": [8, 10, 21], "under": [8, 18], "4": [8, 11, 13, 18], "byte": [8, 13], "align": [8, 19], "c": [8, 13, 21], "extens": [8, 13], "introduc": [8, 21], "16": [8, 13, 18, 21], "relax": 8, "handl": [8, 11, 18, 20], "fulli": [8, 18], "pipelin": [8, 14, 15, 17, 18, 21, 24], "process": [8, 18, 20], "invok": [8, 10, 15, 16, 21, 24], "accept_r": [8, 10], "space": [8, 21], "simpli": 8, "latenc": [8, 18, 21], "least": 8, "miss": [8, 21], "occur": [8, 10], "arbitrarili": 8, "long": [8, 25], "ensur": 8, "refetch": 8, "howev": 8, "guarante": [8, 21], "alreadi": [8, 13, 16, 21], "been": 8, "still": [8, 18, 21, 25], "wait": [8, 14, 16, 18, 21, 24, 25], "accept": [8, 10, 11, 12, 17, 18, 19], "inform": [8, 15, 18, 26], "regard": 8, "error": [8, 10, 14, 18, 19], "mean": [8, 15, 18, 25], "dure": [8, 20, 23], "line": [8, 10, 13, 20], "refil": [8, 10], "subsequ": 8, "trigger": [8, 17], "32": [8, 11, 12, 13, 21], "128": [8, 13], "set": [8, 10, 11, 13, 15, 16, 17, 18, 20, 24], "size": [8, 13, 14, 18, 19, 21], "equal": 8, "31": [8, 13], "15": [8, 13], "14": [8, 13], "13": [8, 13], "12": [8, 13], "11": [8, 13], "09": 8, "08": 8, "07": 8, "06": 8, "05": 8, "04": 8, "03": 8, "02": 8, "01": 8, "00": 8, "tag": [8, 14, 16, 21, 24, 25], "index": [8, 18, 19], "offset": 8, "unsigned_multipl": [9, 11], "common": [9, 11, 18, 19], "fast_recurs": [9, 11], "sequenc": [9, 11, 15, 18, 19], "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, 19], "instanti": 10, "instrdecod": 10, "combinatori": 10, "manner": [10, 14], "get_raw": 10, "push_decod": 10, "none": [10, 11, 13, 16, 17, 18, 19], "instanc": [10, 13, 15, 16, 18], "raw": 10, "instruct": [10, 11, 13, 15, 16, 17, 20, 21, 23, 24], "previou": [10, 14, 21], "fetchlayout": [10, 13], "send": [10, 13, 15, 16], "next": [10, 15, 16, 17, 18, 21], "describ": [10, 15, 16, 18, 21], "decodelayout": [10, 13, 15], "elementari": 10, "opcod": [10, 13, 24, 25], "funct3": [10, 11, 13], "etc": 10, "attribut": [10, 11, 12, 13, 14, 16, 17, 18, 19], "gen": [10, 11, 12, 16], "ilen": [10, 13], "identifi": [10, 13, 24], "funct3_v": 10, "1": [10, 11, 12, 13, 15, 17, 18, 19, 21, 24, 25], "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, 20, 21], "regist": [10, 13, 15, 17, 21, 23], "rd_v": 10, "rs1": [10, 13], "hold": [10, 14, 17], "first": [10, 11, 15, 18, 21, 24, 25], "input": [10, 11, 16, 17, 18, 19, 21, 24, 25], "rs1_v": 10, "take": [10, 13, 14, 16, 18, 23, 24, 26], "form": [10, 13, 17, 18, 21], "rs2": [10, 13], "second": [10, 11, 15, 18, 24, 25], "rs2_v": 10, "imm": [10, 13], "xlen": [10, 11, 13, 17], "immedi": [10, 14], "were": [10, 21], "succ": 10, "fencetarget": [10, 13], "successor": 10, "fenc": [10, 13], "pred": 10, "predecessor": 10, "fm": 10, "fencefm": [10, 13], "mode": [10, 13, 21], "csr_alen": [10, 13], "control": [10, 13, 14, 17, 18], "sourc": [10, 15, 24], "kind": [10, 11, 13, 15], "illeg": 10, "wa": [10, 13, 17, 18, 21], "success": [10, 14], "fit": 10, "pc": [10, 17, 20], "increment": [10, 17], "ilen_byt": 10, "icacheinterfac": 10, "cont": 10, "cach": [10, 13, 20], "unalignedfetch": 10, "unalign": 10, "associ": [10, 13], "replac": [10, 12, 13, 24], "polici": 10, "pseudo": 10, "random": 10, "scheme": 10, "time": [10, 14, 17, 18, 21, 26], "trash": 10, "we": [10, 16, 21, 23, 24, 25, 26], "keep": [10, 18], "global": [10, 17, 21], "counter": [10, 13, 17], "abstract": [10, 12, 13], "awai": 10, "refiller_start": 10, "whenev": 10, "refiller_accept": 10, "word": [10, 13], "written": [10, 17, 18, 25], "last": [10, 15, 18], "transfer": [10, 14, 18], "over": [10, 17, 18, 19], "shouldn": 10, "until": [10, 18, 21], "start": [10, 11, 14, 18, 21], "icachelayout": [10, 13], "icacheparamet": [10, 13], "cacherefillerinterfac": 10, "start_refil": 10, "accept_refil": 10, "deserialize_addr": 10, "raw_addr": 10, "dict": [10, 14, 18, 19], "str": [10, 13, 18, 19], "hdl": [10, 13, 18], "ast": [10, 13, 18], "serialize_addr": 10, "addr": [10, 18], "icachebypass": 10, "wb_master": 10, "wishbonemast": [10, 13, 14], "haselabor": [10, 18, 19], "kwarg": [10, 13, 14, 18, 19], "simplewbcacherefil": 10, "instrdecompress": 10, "decompr_reg": 10, "rvc_reg": 10, "instr_mux": 10, "sel": 10, "int": [10, 11, 12, 13, 14, 16, 17, 18, 19], "enum": [10, 11, 13, 18, 19], "valuecast": [10, 13, 18, 19], "tupl": [10, 11, 15, 16, 17, 18, 19], "is_instr_compress": 10, "alucompon": [11, 13], "functionalcomponentparam": [11, 13, 16], "zba_en": 11, "fals": [11, 13, 18, 19], "zbb_enabl": 11, "get_modul": [11, 13, 16, 17], "funcunit": [11, 13, 16, 19], "get_optyp": [11, 13, 16, 17], "alufuncunit": 11, "alu_fn": 11, "alufn": 11, "object": [11, 13, 14, 18], "divcompon": 11, "ipc": 11, "div_fn": 11, "divfn": 11, "decodermanag": 11, "fn": 11, "intflag": [11, 13, 18], "enumer": [11, 13, 17, 18, 19], "div": [11, 13], "divu": [11, 13], "2": [11, 12, 13, 14, 17, 18, 19], "rem": [11, 13], "remu": [11, 13], "8": [11, 12, 13, 14, 18], "get_instruct": 11, "divunit": 11, "get_input": 11, "exceptionfuncunit": 11, "unit_fn": 11, "exceptionunitfn": 11, "exceptionunitcompon": [11, 13], "respons": [11, 14, 15, 18], "decode_fn": 11, "exec_fn": 11, "op": [11, 13], "check_optyp": 11, "bool": [11, 13, 17, 18, 19], "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, 19, 21], "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, 21], "term": 11, "sequence_mul": 11, "dsp": [11, 12], "balanc": 11, "between": [11, 18, 21], "cost": [11, 20], "shift_mul": 11, "cheapest": 11, "russian": [11, 12], "peasant": [11, 12], "algorithm": [11, 12], "mulunit": 11, "unsign": [11, 12], "integ": [11, 13, 19], "standard": [11, 17, 19, 21], "funcunitlayout": [11, 13, 15, 16], "comput": [11, 12, 17, 18, 21], "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, 18], "i1": [11, 12], "n": [11, 12, 13], "factor": 11, "i2": [11, 12], "reset": [11, 17, 18, 20], "new": [11, 13, 14, 18, 19, 20, 21], "busi": 11, "while": [11, 18], "progress": 11, "bit_width": 11, "recursion_depth": 11, "width": [11, 12, 13, 14, 17, 18, 19], "depth": [11, 14, 18, 19], "recurs": [11, 12, 19], "parallel": 11, "assum": [11, 16, 18, 19, 21], "power": [11, 19], "iterative_modul": 11, "recursive_modul": 11, "zbccompon": 11, "zbc_fn": 11, "zbcfn": 11, "clmul": [11, 13], "clmulh": [11, 13], "clmulr": [11, 13], "classmethod": [11, 18], "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, 20], "mulbaseunsign": 12, "unsignedmulunitlayout": [12, 13], "recursiveunsignedmul": 12, "fast": 12, "sequentialunsignedmul": 12, "sequenti": [12, 14], "classic": [12, 21], "shiftunsignedmul": 12, "cheap": 12, "multi": 12, "coreconfigur": 13, "func_units_config": 13, "blockcomponentparam": [13, 16, 17], "reserv": [13, 17, 20, 21], "station": [13, 20], "rsblockcompon": [13, 16], "rs_entri": [13, 16, 17], "lsublockcompon": 13, "compress": 13, "enabl": [13, 18], "embed": 13, "reduc": [13, 18, 21], "phys_regs_bit": 13, "physic": [13, 15, 21], "rob_entries_bit": 13, "reorder": [13, 18, 21], "buffer": [13, 14, 18, 21, 24], "start_pc": 13, "initi": [13, 20], "icache_en": 13, "disabl": [13, 18], "bypass": 13, "icache_wai": 13, "icache_sets_bit": 13, "log": [13, 21], "icache_block_size_bit": 13, "allow_partial_extens": 13, "partial": 13, "_implied_extens": 13, "extenst": 13, "flag": 13, "specifi": [13, 14, 17, 18, 25], "intern": [13, 18, 19, 20], "abc": [13, 18], "func_unit": [13, 16], "lsu": 13, "dummylsu": 13, "6": [13, 21], "7": 13, "dependencykei": 13, "u": [13, 21], "dependencymanag": [13, 17], "concret": 13, "frozen": 13, "lock_on_get": 13, "get_depend": 13, "empty_valid": 13, "without": [13, 15, 16, 21], "action": [13, 17, 18], "caus": [13, 18, 21], "rais": [13, 18, 19, 21], "keyerror": [13, 18], "add_depend": 13, "give": 13, "behavior": [13, 18], "track": 13, "across": 13, "add": [13, 18], "multpl": 13, "funcblock": [13, 15, 16, 17, 19], "get_rs_entry_count": [13, 16, 17], "optypes_support": 13, "iter": [13, 16, 17, 18, 19], "dependentcach": 13, "cfg": 13, "addr_width": [13, 14], "length": [13, 18, 19, 21], "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, 21], "precis": [13, 21], "float": 13, "64": [13, 14], "98366": 13, "basic": [13, 20], "j": 13, "1024": 13, "dynam": [13, 19, 21], "decim": 13, "divis": 13, "16384": 13, "user": [13, 17, 21], "interrupt": [13, 20], "4096": 13, "simd": 13, "q": 13, "quad": 13, "2048": 13, "memori": [13, 14, 18, 21], "8192": 13, "vector": [13, 15, 20, 21], "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, 18, 24], "tempor": 13, "hint": [13, 18], "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, 19, 21, 24, 25], "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, 21], "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, 21], "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, 18, 24], "val_log": 13, "field": [13, 16, 17, 18, 19, 24, 25], "relev": [13, 18], "nativ": 13, "reg_cnt": 13, "maximum": 13, "bitwis": 13, "isa_str": 13, "string": 13, "refer": 13, "gcc": 13, "detail": [13, 20], "instrtyp": 13, "auipc": 13, "branch": [13, 18, 21, 26], "24": 13, "jal": 13, "27": 13, "25": 13, "load": [13, 21], "load_fp": 13, "lui": 13, "misc_mem": 13, "op32": 13, "op_imm": 13, "op_imm_32": 13, "store_fp": 13, "28": [13, 21], "a0": 13, "a1": 13, "a2": 13, "a3": 13, "a4": 13, "a5": 13, "a6": 13, "a7": 13, "17": 13, "fp": [13, 18], "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, "t1": 13, "t2": 13, "t3": 13, "t4": 13, "29": 13, "t5": 13, "30": [13, 21], "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, 18, 24], "branchresolvedkei": 13, "unifierkei": [13, 16], "unifi": [13, 19], "alia": 13, "collector": [13, 18], "exceptionreportkei": 13, "simplekei": 13, "genericcsrregisterskei": 13, "genericcsrregist": [13, 17], "instructionprecommitkei": 13, "methodtryproduct": [13, 18], "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, 20], "csr_imm": [13, 17], "csr_reg": [13, 17], "div_rem": 13, "33": 13, "logic": [13, 21, 25, 26], "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, 21], "resultlayout": 14, "requests_finish": 14, "generate_method_layout": 14, "wishbonearbit": 14, "arbit": 14, "slave": 14, "assert": 14, "cyc": 14, "grant": [14, 18], "round": [14, 18, 19], "robin": [14, 18], "slave_wb": 14, "intefac": 14, "boolean": [14, 18], "whether": [14, 19], "side": [14, 17, 21, 24, 25], "otherwis": 14, "wb_layout": 14, "wbmaster": 14, "becom": 14, "generate_layout": 14, "wishbonememoryslav": 14, "underneath": 14, "keyword": [14, 18], "underli": 14, "infer": [14, 18], "data_width": 14, "wishbonemux": 14, "muxer": 14, "master_wb": 14, "ssel_tga": 14, "corespond": 14, "tga": 14, "stb": 14, "note": [14, 17, 18, 19], "stare": 14, "finish": [14, 16], "stall": [14, 17, 21], "clear": [14, 18, 19, 24, 25], "delai": 14, "previous": 14, "deassert": 14, "dat_r": 14, "dat_w": 14, "adr": 14, "singal": 14, "granular": [14, 18], "smallest": 14, "port": [14, 18], "capabl": 14, "insert": [15, 16, 17, 19, 20, 21, 23, 24], "alloc": [15, 23, 24, 25], "renam": [15, 23], "entri": [15, 16, 19, 21, 23, 24, 25], "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, 18, 21], "free": [15, 20, 21, 25], "rat_rename_in": 15, "rat_rename_out": 15, "data_layout": [15, 18], "rf_read_out": 15, "rf_read_in": 15, "wakeupselect": 15, "wakeup": [15, 25], "firstli": 15, "get_readi": 15, "binari": 15, "where": [15, 18, 21, 24, 25], "th": [15, 18], "posit": [15, 24, 25], "row": [15, 20], "taken": 15, "take_row": 15, "get_ready_list_out": 15, "take_out": 15, "push": 15, "down": 15, "resultannounc": 16, "mark": [16, 18, 20, 21], "get_result": [16, 17, 18, 19], "serial": [16, 18], "than": [16, 21], "manytooneconnecttran": [16, 18], "rob_mark_don": 16, "rs_write_v": 16, "rf_write_v": 16, "end": [16, 21], "rob_id": 16, "reg_id": 16, "reg_val": 16, "funcblocksunifi": 16, "extra_methods_requir": 16, "get_extra_method": 16, "item": [16, 19], "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, 18, 21, 24, 25], "_fu_read": 17, "_fu_writ": 17, "simultan": [17, 18], "ignor": 17, "prioriti": [17, 18, 19], "csr_number": 17, "ro_bit": 17, "mask": [17, 18], "those": [17, 21], "upper": 17, "0b11": 17, "discard": 17, "regitst": 17, "unitl": 17, "place": [17, 18, 21, 24], "put": [17, 18, 24], "receiv": [17, 18], "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, 18], "low_addr": 17, "high_addr": 17, "repres": [17, 18], "lower": [17, 19], "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, "transactionbas": 18, "serv": 18, "simultena": 18, "transactionmanag": 18, "rest": 18, "must": 18, "exclus": 18, "combination": 18, "data_out": 18, "data_in": 18, "union": [18, 19], "shape": [18, 19], "shapecast": [18, 19], "rang": [18, 19], "layoutlik": [18, 19], "nonexclus": 18, "single_cal": 18, "variabl": [18, 19], "situat": 18, "happen": 18, "cannot": 18, "thrown": 18, "const": 18, "d1": 18, "d0": 18, "context": [18, 21], "guard": 18, "av_comb": 18, "top_comb": 18, "indic": [18, 21, 25], "combinationi": 18, "my_sum_method": 18, "arg1": 18, "arg2": 18, "sum": 18, "view": [18, 19], "signalbundl": [18, 19], "map": [18, 19, 20, 21], "static": 18, "construct": 18, "blueprint": 18, "freshli": 18, "proxi": 18, "left": [18, 21], "priorit": 18, "undefin": 18, "modulelik": [18, 19], "avoidedif": 18, "amount": 18, "useless": 18, "multplex": 18, "due": [18, 21], "unguard": 18, "path": 18, "relat": [18, 21], "synchron": 18, "cond": 18, "pattern": 18, "elif": 18, "fsm": 18, "switch": [18, 19, 21, 24], "properti": [18, 21], "noreturn": 18, "task": [18, 23], "regularli": 18, "done": [18, 21], "met": 18, "concurr": [18, 21], "explicit": 18, "implicit": 18, "add_conflict": 18, "aris": 18, "pair": 18, "want": [18, 24], "omit": 18, "transactioncontext": 18, "stack": 18, "care": 18, "never": 18, "cc_schedul": 18, "callabl": 18, "methodmap": 18, "dsl": 18, "eager_deterministic_cc_schedul": 18, "add_transact": 18, "visual_graph": 18, "fragment": 18, "transactionmodul": 18, "wrapper": 18, "definit": 18, "wrap": 18, "transaction_context": 18, "decor": 18, "eleg": 18, "dictionari": 18, "whose": 18, "method_map": 18, "gr": 18, "cc": 18, "porder": 18, "eager": 18, "subsystem": 18, "isn": 18, "fair": 18, "lowest": 18, "highest": 18, "arbitr": 18, "agent": 18, "transactiongraph": 18, "vertic": 18, "edg": 18, "priorityord": 18, "linear": 18, "consist": 18, "constraint": 18, "trivial_roundrobin_cc_schedul": 18, "mainli": 18, "purpos": [18, 21], "extract": [18, 26], "IN": 18, "inout": 18, "own": 18, "owner": 18, "ownershipgraph": 18, "root": 18, "dump": 18, "liter": [18, 19], "dump_dot": 18, "indent": 18, "dump_elk": 18, "dump_mermaid": 18, "get_hier_nam": 18, "obj": 18, "hierarch": 18, "yet": 18, "get_nam": 18, "insert_edg": 18, "fr": 18, "insert_nod": 18, "mermaid_direct": 18, "empti": [18, 19], "subgraph": 18, "remember_field": 18, "owner_id": 18, "adapterbas": 18, "mock": 18, "en": 18, "ifac": 18, "cattran": 18, "concaten": 18, "third": 18, "src1": [18, 25], "src2": [18, 25], "dst": 18, "clickin": 18, "click": 18, "interact": 18, "fpga": 18, "button": 18, "rise": 18, "btn": 18, "dat": 18, "retriev": 18, "clickout": 18, "led": 18, "mani": [18, 21, 26], "ident": 18, "target": 18, "method_list": 18, "mechan": 18, "move": 18, "flow": 18, "revers": 18, "possibli": 18, "rev_layout": 18, "connectandtransformtran": 18, "transform": 18, "behav": 18, "modifi": [18, 21], "equival": 18, "methodtransform": 18, "method1": 18, "method2": 18, "i_fun": 18, "recorddict": 18, "o_fun": 18, "vice": 18, "versa": 18, "compat": 18, "respect": 18, "fulfil": 18, "rec": 18, "fifo_typ": 18, "syncfifo": 18, "fifotyp": 18, "conform": 18, "No": [18, 21], "further": 18, "put_result": 18, "memorybank": 18, "read_req": 18, "read_resp": 18, "elem_count": 18, "safe_writ": 18, "element": [18, 21], "split": [18, 21, 23], "optimis": 18, "increas": 18, "throughput": 18, "eg": 18, "x": 18, "later": 18, "methodfilt": 18, "filter": 18, "caveat": 18, "usag": [18, 20], "methodproduct": 18, "arbitrari": 18, "origin": [18, 21], "i_transform": 18, "o_transform": 18, "tri": 18, "succeed": 18, "client": 18, "somethig": 18, "server": 18, "deseri": 18, "proper": 18, "serialize_in": 18, "serialized_req_method": 18, "serialize_out": 18, "serialized_resp_method": 18, "port_count": 18, "len": 18, "resist": 18, "nonblock": 18, "nest": [18, 20], "similar": [18, 19, 21], "overlap": 18, "catch": 18, "reason": 18, "stop": [18, 21], "mutual": 18, "influenc": 18, "cond1": 18, "cond2": 18, "tracingenabl": 18, "tracingfrag": 18, "lose": 18, "too": 18, "difficult": 18, "exact": 18, "copi": [18, 21], "copyright": 18, "subfrag": 18, "ir": 18, "tracingfragmenttransform": 18, "fragmenttransform": 18, "on_frag": 18, "tracinginst": 18, "auto_debug_sign": 19, "arrai": 19, "basicfifo": 19, "reiniti": 19, "init": 19, "paramt": 19, "semaphor": 19, "max_count": 19, "assigntyp": 19, "rh": 19, "moduleconnector": 19, "anonym": 19, "onehotswitch": 19, "style": 19, "benefit": 19, "represent": 19, "sig": 19, "onehotcas": 19, "0b01": 19, "0b10": 19, "onehotswitchdynam": 19, "signifi": 19, "align_to_power_of_two": 19, "num": 19, "up": [19, 20, 25], "lh": 19, "assignarg": 19, "assignfield": 19, "lhs_strict": 19, "rhs_strict": 19, "safe": [19, 21], "structlayout": 19, "mismatch": 19, "accord": 19, "explicitli": 19, "castabl": 19, "determin": [19, 21], "subrecord": 19, "valueerror": 19, "bits_from_int": 19, "count_leading_zero": 19, "count_trailing_zero": 19, "flatten_sign": 19, "flatten": 19, "popcount": 19, "silence_mustus": 19, "introduct": 20, "assumpt": [20, 21], "made": [20, 21], "develop": 20, "environ": 20, "script": [20, 26], "run_test": 20, "py": [20, 26], "lint": 20, "sh": 20, "core_graph": 20, "build_doc": 20, "framework": [20, 24], "advanc": 20, "concept": 20, "schema": 20, "proposit": [20, 21], "slot": 20, "tabl": 20, "substitut": 20, "clean": 20, "problem": [20, 21], "checklist": 20, "benchmark": 20, "summari": 20, "paper": 20, "about": 20, "old": 20, "softwar": 20, "tlb": 20, "analysi": 20, "strategi": 20, "igpu": 20, "specul": 20, "gpu": 20, "effici": 20, "journal": 21, "articl": 21, "look": 21, "choic": 21, "primari": 21, "procedur": 21, "chosen": 21, "basi": 21, "improv": 21, "pretti": 21, "1993": 21, "2001": 21, "much": 21, "research": 21, "cpu": 21, "solv": 21, "characterist": 21, "our": [21, 23], "what": 21, "peopl": 21, "probabl": 21, "lot": 21, "worth": 21, "walker": 21, "cragon": 21, "ieee": 21, "vol": 21, "june": 21, "1995": 21, "moudgil": 21, "vassiliadi": 21, "micro": 21, "pp": 21, "58": 21, "67": 21, "februari": 21, "1996": 21, "survei": 21, "topic": 21, "cdc": 21, "6600": 21, "jump": 21, "handler": 21, "ibm360": 21, "crai": 21, "here": [21, 24], "bigger": 21, "torng": 21, "martin": 21, "dai": 21, "probe": 21, "author": 21, "window": 21, "iw": 21, "dispatch": [21, 23, 24, 25], "didn": 21, "restor": 21, "restart": 21, "few": 21, "encod": 21, "big": 21, "overhead": 21, "unfeas": 21, "job": 21, "addition": 21, "But": 21, "cooper": 21, "smaller": 21, "interest": 21, "propos": 21, "nrp": 21, "itself": 21, "wast": 21, "how": [21, 24, 26], "middl": [21, 23], "aamer": 21, "jaleel": 21, "bruce": 21, "jacob": 21, "cours": 21, "penalti": 21, "alpha": 21, "mip": 21, "concentr": 21, "short": 21, "inlin": 21, "observ": 21, "enough": 21, "live": 21, "known": 21, "fly": 21, "swap": 21, "nop": 21, "reexecut": 21, "privileg": 21, "correct": [21, 24, 25], "contrast": 21, "tendenc": 21, "longer": 21, "hard": 21, "risk": 21, "linux": [21, 26], "addit": 21, "hw": 21, "bore": 21, "treat": [21, 23], "mansur": 21, "samadzadeh": 21, "loai": 21, "garalnabi": 21, "checkpoint": 21, "repair": 21, "histori": 21, "futur": [21, 23, 24], "jaikrishnan": 21, "menon": 21, "marc": 21, "de": 21, "kruijf": 21, "karthikeyan": 21, "sankaralingam": 21, "2012": 21, "To": [21, 26], "low": 21, "boundari": 21, "rewritten": 21, "recompil": 21, "runtim": 21, "region": 21, "subregion": 21, "begin": 21, "small": 21, "overrid": 21, "barrier": 21, "warp": 21, "wrong": 21, "prevent": 21, "ivan": 21, "tanas": 21, "isaac": 21, "gelado": 21, "jorda": 21, "eduard": 21, "ayguad": 21, "nacho": 21, "navarro": 21, "2017": 21, "analys": 21, "problemat": 21, "successfulli": 21, "kill": 21, "modif": 21, "fail": 21, "repli": 21, "claim": 21, "operand": [21, 24, 25], "replai": 21, "marker": 21, "jerom": 21, "hampton": 21, "2008": 21, "mention": 21, "alli": 21, "bailei": 21, "ab04": 21, "ag": 21, "younger": 21, "repeat": 21, "canon": 21, "eventu": 21, "aren": 21, "Its": 23, "rss": 23, "phase": 23, "choos": 23, "potenti": 23, "merg": 23, "optim": 23, "todo": 23, "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, "inst_readi": 25, "synthes": 26, "circuit": 26, "consum": 26, "grow": 26, "yosi": 26, "prjtrelli": 26, "nextpnr": 26, "ecp5": 26, "manual": 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, "frequenc": 26, "cell": 26, "ram": 26, "dff": 26, "dedic": 26, "subpag": 26}, "objects": {"": [[9, 0, 0, "-", "coreblocks"]], "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, "-", "transactions"], [19, 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, 2, 1, "", "__init__"], [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"]], "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"]], "coreblocks.fu.mul_unit.MulType": [[11, 3, 1, "", "RECURSIVE_MUL"], [11, 3, 1, "", "SEQUENCE_MUL"], [11, 3, 1, "", "SHIFT_MUL"]], "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"]], "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"]], "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"]], "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"]], "coreblocks.params.isa.FenceFm": [[13, 3, 1, "", "NONE"], [13, 3, 1, "", "TSO"]], "coreblocks.params.isa.FenceTarget": [[13, 3, 1, "", "DEV_I"], [13, 3, 1, "", "DEV_O"], [13, 3, 1, "", "MEM_R"], [13, 3, 1, "", "MEM_W"]], "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"]], "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"]], "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"]], "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"]], "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"]], "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"]], "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"]], "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"]], "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.transactions": [[18, 1, 1, "", "Method"], [18, 1, 1, "", "TModule"], [18, 1, 1, "", "Transaction"], [18, 1, 1, "", "TransactionContext"], [18, 1, 1, "", "TransactionManager"], [18, 1, 1, "", "TransactionModule"], [18, 0, 0, "-", "core"], [18, 4, 1, "", "def_method"], [18, 0, 0, "-", "graph"], [18, 0, 0, "-", "lib"], [18, 0, 0, "-", "tracing"]], "coreblocks.transactions.Method": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "body"], [18, 2, 1, "", "debug_signals"], [18, 2, 1, "", "like"], [18, 2, 1, "", "proxy"]], "coreblocks.transactions.TModule": [[18, 2, 1, "", "AvoidedIf"], [18, 2, 1, "", "Case"], [18, 2, 1, "", "Default"], [18, 2, 1, "", "Elif"], [18, 2, 1, "", "Else"], [18, 2, 1, "", "FSM"], [18, 2, 1, "", "If"], [18, 2, 1, "", "State"], [18, 2, 1, "", "Switch"], [18, 2, 1, "", "__init__"], [18, 5, 1, "", "next"]], "coreblocks.transactions.Transaction": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "body"], [18, 2, 1, "", "debug_signals"]], "coreblocks.transactions.TransactionContext": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "get"], [18, 3, 1, "", "stack"]], "coreblocks.transactions.TransactionManager": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "add_transaction"], [18, 2, 1, "", "debug_signals"], [18, 2, 1, "", "visual_graph"]], "coreblocks.transactions.TransactionModule": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "transaction_context"]], "coreblocks.transactions.core": [[18, 1, 1, "", "Method"], [18, 1, 1, "", "Priority"], [18, 1, 1, "", "TModule"], [18, 1, 1, "", "Transaction"], [18, 1, 1, "", "TransactionContext"], [18, 1, 1, "", "TransactionManager"], [18, 1, 1, "", "TransactionModule"], [18, 4, 1, "", "def_method"], [18, 4, 1, "", "eager_deterministic_cc_scheduler"], [18, 4, 1, "", "trivial_roundrobin_cc_scheduler"]], "coreblocks.transactions.core.Method": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "body"], [18, 2, 1, "", "debug_signals"], [18, 2, 1, "", "like"], [18, 2, 1, "", "proxy"]], "coreblocks.transactions.core.Priority": [[18, 3, 1, "", "LEFT"], [18, 3, 1, "", "RIGHT"], [18, 3, 1, "", "UNDEFINED"]], "coreblocks.transactions.core.TModule": [[18, 2, 1, "", "AvoidedIf"], [18, 2, 1, "", "Case"], [18, 2, 1, "", "Default"], [18, 2, 1, "", "Elif"], [18, 2, 1, "", "Else"], [18, 2, 1, "", "FSM"], [18, 2, 1, "", "If"], [18, 2, 1, "", "State"], [18, 2, 1, "", "Switch"], [18, 2, 1, "", "__init__"], [18, 5, 1, "", "next"]], "coreblocks.transactions.core.Transaction": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "body"], [18, 2, 1, "", "debug_signals"]], "coreblocks.transactions.core.TransactionContext": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "get"], [18, 3, 1, "", "stack"]], "coreblocks.transactions.core.TransactionManager": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "add_transaction"], [18, 2, 1, "", "debug_signals"], [18, 2, 1, "", "visual_graph"]], "coreblocks.transactions.core.TransactionModule": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "transaction_context"]], "coreblocks.transactions.graph": [[18, 1, 1, "", "Direction"], [18, 1, 1, "", "Owned"], [18, 1, 1, "", "OwnershipGraph"]], "coreblocks.transactions.graph.Direction": [[18, 3, 1, "", "IN"], [18, 3, 1, "", "INOUT"], [18, 3, 1, "", "NONE"], [18, 3, 1, "", "OUT"]], "coreblocks.transactions.graph.Owned": [[18, 3, 1, "", "name"], [18, 3, 1, "", "owner"]], "coreblocks.transactions.graph.OwnershipGraph": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "dump"], [18, 2, 1, "", "dump_dot"], [18, 2, 1, "", "dump_elk"], [18, 2, 1, "", "dump_mermaid"], [18, 2, 1, "", "get_hier_name"], [18, 2, 1, "", "get_name"], [18, 2, 1, "", "insert_edge"], [18, 2, 1, "", "insert_node"], [18, 3, 1, "", "mermaid_direction"], [18, 2, 1, "", "prune"], [18, 2, 1, "", "remember"], [18, 2, 1, "", "remember_field"]], "coreblocks.transactions.lib": [[18, 1, 1, "", "Adapter"], [18, 1, 1, "", "AdapterTrans"], [18, 1, 1, "", "CatTrans"], [18, 1, 1, "", "ClickIn"], [18, 1, 1, "", "ClickOut"], [18, 1, 1, "", "Collector"], [18, 1, 1, "", "Connect"], [18, 1, 1, "", "ConnectAndTransformTrans"], [18, 1, 1, "", "ConnectTrans"], [18, 1, 1, "", "FIFO"], [18, 1, 1, "", "Forwarder"], [18, 1, 1, "", "ManyToOneConnectTrans"], [18, 1, 1, "", "MemoryBank"], [18, 1, 1, "", "MethodFilter"], [18, 1, 1, "", "MethodProduct"], [18, 1, 1, "", "MethodTransformer"], [18, 1, 1, "", "MethodTryProduct"], [18, 1, 1, "", "Serializer"], [18, 4, 1, "", "condition"]], "coreblocks.transactions.lib.Adapter": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.AdapterTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.CatTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ClickIn": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ClickOut": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.Collector": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.Connect": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ConnectAndTransformTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ConnectTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.FIFO": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.Forwarder": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ManyToOneConnectTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MemoryBank": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MethodFilter": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MethodProduct": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MethodTransformer": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MethodTryProduct": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.Serializer": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.tracing": [[18, 1, 1, "", "TracingEnabler"], [18, 1, 1, "", "TracingFragment"], [18, 1, 1, "", "TracingFragmentTransformer"], [18, 1, 1, "", "TracingInstance"]], "coreblocks.transactions.tracing.TracingFragment": [[18, 2, 1, "", "get"], [18, 2, 1, "", "prepare"], [18, 3, 1, "", "subfragments"]], "coreblocks.transactions.tracing.TracingFragmentTransformer": [[18, 2, 1, "", "on_fragment"]], "coreblocks.transactions.tracing.TracingInstance": [[18, 2, 1, "", "get"]], "coreblocks.utils": [[19, 0, 0, "-", "debug_signals"], [19, 0, 0, "-", "fifo"], [19, 0, 0, "-", "protocols"], [19, 0, 0, "-", "utils"]], "coreblocks.utils.debug_signals": [[19, 4, 1, "", "auto_debug_signals"]], "coreblocks.utils.fifo": [[19, 1, 1, "", "BasicFifo"], [19, 1, 1, "", "Semaphore"]], "coreblocks.utils.fifo.BasicFifo": [[19, 2, 1, "", "__init__"]], "coreblocks.utils.fifo.Semaphore": [[19, 2, 1, "", "__init__"]], "coreblocks.utils.protocols": [[19, 1, 1, "", "FuncBlock"], [19, 1, 1, "", "FuncUnit"], [19, 1, 1, "", "Unifier"]], "coreblocks.utils.protocols.FuncBlock": [[19, 2, 1, "", "__init__"], [19, 3, 1, "", "get_result"], [19, 3, 1, "", "insert"], [19, 3, 1, "", "select"], [19, 3, 1, "", "update"]], "coreblocks.utils.protocols.FuncUnit": [[19, 2, 1, "", "__init__"], [19, 3, 1, "", "accept"], [19, 3, 1, "", "issue"]], "coreblocks.utils.protocols.Unifier": [[19, 2, 1, "", "__init__"], [19, 3, 1, "", "method"]], "coreblocks.utils.utils": [[19, 1, 1, "", "AssignType"], [19, 1, 1, "", "ModuleConnector"], [19, 4, 1, "", "OneHotSwitch"], [19, 4, 1, "", "OneHotSwitchDynamic"], [19, 4, 1, "", "align_to_power_of_two"], [19, 4, 1, "", "assign"], [19, 4, 1, "", "bits_from_int"], [19, 4, 1, "", "count_leading_zeros"], [19, 4, 1, "", "count_trailing_zeros"], [19, 4, 1, "", "flatten_signals"], [19, 4, 1, "", "popcount"], [19, 4, 1, "", "silence_mustuse"]], "coreblocks.utils.utils.AssignType": [[19, 3, 1, "", "ALL"], [19, 3, 1, "", "COMMON"], [19, 3, 1, "", "RHS"]], "coreblocks.utils.utils.ModuleConnector": [[19, 2, 1, "", "__init__"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "titleterms": {"list": 0, "assumpt": [0, 8], "made": 0, "dure": 0, "develop": [0, 2], "full": 1, "transact": [1, 5, 18], "method": [1, 5, 24, 25], "graph": [1, 18], "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, 21], "document": [3, 5, 26], "problem": 4, "checklist": 4, "coreblock": [5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22], "framework": 5, "basic": 5, "usag": [5, 26], "implement": [5, 24], "The": 5, "librari": 5, "advanc": 5, "concept": 5, "nest": 5, "api": 6, "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, 19], "subpackag": [9, 11], "submodul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "core": [9, 18], "modul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "content": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "frontend": 10, "decod": 10, "fetch": 10, "icach": 10, "rvc": 10, "fu": [11, 12], "alu": 11, "div_unit": 11, "except": [11, 17, 21], "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, "schedul": [15, 23], "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, "lib": 18, "trace": 18, "util": 19, "debug_sign": 19, "fifo": 19, "protocol": 19, "summari": 21, "paper": 21, "about": 21, "interrupt": 21, "handl": 21, "old": 21, "pc": 21, "out": 21, "order": 21, "execut": 21, "processor": 21, "In": 21, "line": 21, "softwar": 21, "manag": 21, "tlb": 21, "hardwar": 21, "cost": 21, "analysi": 21, "process": 21, "strategi": 21, "igpu": 21, "support": 21, "specul": 21, "gpu": 21, "effici": 21, "other": 21, "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, "readi": 25, "vector": 25, "signal": 25, "synthesi": 26, "requir": 26, "benchmark": 26}, "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.transactions", "coreblocks.utils", "index", "miscellany/exceptionsSummary", "modules", "scheduler/Overview", "shared_structs/Implementation/RS_impl", "shared_structs/RS", "synthesis/Synthesis"], "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.transactions.rst", "coreblocks.utils.rst", "index.md", "miscellany/exceptionsSummary.md", "modules.rst", "scheduler/Overview.md", "shared_structs/Implementation/RS_impl.md", "shared_structs/RS.md", "synthesis/Synthesis.md"], "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.transactions package", "coreblocks.utils package", "Coreblocks", "Summary of papers about interrupts", "coreblocks", "Scheduler overview", "Proposition of Reservation Station implementation", "Reservation Station", "Synthesis"], "terms": {"rf": [0, 6, 9, 16, 21, 22, 24, 25], "ha": [0, 2, 4, 10, 15, 17, 18, 19, 21, 24], "data": [0, 10, 13, 14, 17, 18, 19, 20, 25], "forward": [0, 18], "from": [0, 2, 3, 4, 5, 10, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26], "tomasulo": 0, "announc": [0, 16, 17], "bu": [0, 13, 14], "read": [0, 4, 5, 13, 14, 17, 18, 19, 20], "x0": [0, 13], "rf0": 0, "return": [0, 5, 8, 11, 13, 14, 18, 19, 21], "0": [0, 10, 11, 13, 15, 17, 18, 24, 25], "write": [0, 5, 10, 17, 18, 19, 21, 25], "i": [0, 2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 24, 25, 26], "noop": 0, "separ": [0, 18, 23], "r": [0, 2, 6, 9, 13, 15, 16, 21, 22, 23, 24, 25], "each": [0, 10, 11, 13, 14, 17, 18, 20, 21, 24, 25, 26], "fu": [0, 6, 9, 13, 16, 17, 22, 24, 25], "writeback": 0, "stage": [0, 6, 9, 17, 22], "save": [0, 2, 13, 16, 18, 21, 24, 25, 26], "rob": [0, 6, 9, 15, 16, 21, 22, 23, 24, 25], "after": [0, 5, 8, 10, 14, 18, 21, 23], "get": [0, 2, 10, 11, 12, 13, 15, 16, 18, 19, 20], "output": [0, 2, 10, 14, 16, 17, 18, 21, 24, 25, 26], "commit": [0, 2, 17, 21, 26], "updat": [0, 16, 17, 19], "rat": [0, 6, 9, 15, 21, 22], "In": [2, 3, 5, 15, 18, 19, 20, 25, 26], "order": [2, 3, 5, 8, 13, 15, 18, 20, 26], "prepar": [2, 15, 18, 21], "pleas": [2, 4, 5, 13], "follow": [2, 5, 8, 11, 15, 19, 24, 26], "step": [2, 5, 10, 15, 21], "below": 2, "instal": [2, 26], "python": [2, 5, 18, 19], "3": [2, 11, 13, 17, 18, 19], "10": [2, 8, 13, 21], "interpret": [2, 13, 18], "pip": 2, "packag": [2, 6, 20, 22], "manag": [2, 11, 13, 18, 20], "option": [2, 5, 11, 13, 17, 18, 19], "creat": [2, 10, 12, 18, 19], "virtual": 2, "python3": 2, "m": [2, 5, 13, 17, 18, 19, 21], "venv": 2, "project": [2, 3, 21, 26], "directori": [2, 3], "activ": [2, 18], "gener": [2, 3, 4, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 26], "bin": 2, "all": [2, 4, 5, 13, 14, 17, 18, 19, 20, 21, 26], "requir": [2, 8, 17, 18, 20, 21], "librari": [2, 18, 20], "pip3": 2, "dev": 2, "txt": 2, "riscv64": 2, "unknown": [2, 13], "elf": 2, "binutil": 2, "your": [2, 4], "favourit": 2, "On": [2, 18], "debian": 2, "base": [2, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21], "distro": 2, "call": [2, 4, 5, 10, 15, 17, 18, 24], "arch": [2, 13], "precommit": [2, 16], "hook": [2, 18], "pre": 2, "thi": [2, 4, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26], "automat": [2, 17, 19], "run": [2, 5, 18, 26], "linter": 2, "befor": [2, 4, 13, 14, 18, 23], "The": [2, 3, 8, 10, 11, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25], "contain": [2, 5, 13, 18, 19], "number": [2, 12, 13, 14, 16, 18, 19, 21, 26], "which": [2, 3, 5, 8, 10, 11, 15, 16, 18, 19, 21, 23, 24, 25], "ar": [2, 3, 4, 5, 8, 13, 14, 16, 17, 18, 19, 21, 23, 24, 25, 26], "ci": [2, 26], "also": [2, 5, 16, 18], "intend": [2, 18], "local": [2, 13], "thei": [2, 5, 14, 17, 18, 21, 23], "unit": [2, 8, 10, 11, 12, 13, 14, 15, 16, 17, 23], "test": [2, 4, 13, 18, 19, 26], "By": [2, 18], "default": [2, 13, 14, 18, 19], "everi": [2, 10, 11, 14, 18], "avail": [2, 3, 13, 14, 15, 17, 26], "specif": [2, 8, 13, 21], "file": [2, 13, 19, 21], "can": [2, 3, 5, 8, 13, 14, 16, 17, 18, 19, 21, 23, 24, 26], "test_transact": 2, "an": [2, 3, 4, 5, 8, 10, 11, 13, 15, 16, 17, 18, 19, 21, 24], "exampl": [2, 5, 13, 17, 18, 19, 20, 24, 26], "One": [2, 18, 19, 21], "even": [2, 18, 21], "class": [2, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "testschedul": 2, "Or": [2, 5], "method": [2, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "test_singl": 2, "argument": [2, 5, 14, 15, 18, 19, 25], "actual": [2, 10, 20], "search": 2, "within": [2, 12], "full": [2, 13, 18, 19, 20, 21], "name": [2, 5, 18, 19, 26], "match": [2, 19, 24, 25], "queri": 2, "thank": 2, "given": [2, 5, 18, 19, 24], "uniqu": 2, "just": [2, 5], "l": [2, 13], "list": [2, 4, 10, 11, 13, 14, 17, 18, 19, 20], "help": [2, 21, 26], "e": [2, 4, 10, 13, 18, 19, 21], "g": [2, 4, 10, 13, 19, 21], "find": [2, 21], "parameter": 2, "t": [2, 4, 5, 10, 13, 18, 19, 21, 24, 26], "trace": [2, 6, 9, 22], "waveform": 2, "vcd": 2, "format": [2, 5, 11, 18, 19], "gtkw": [2, 19], "gtkwave": [2, 19], "tool": [2, 12, 26], "__traces__": 2, "debug": [2, 19], "driven": 2, "v": [2, 3, 8, 13, 21, 24], "verbos": [2, 26], "make": [2, 3, 4, 10, 11, 21], "runner": 2, "more": [2, 16, 20, 21, 26], "It": [2, 5, 10, 11, 12, 13, 15, 16, 18, 21, 23, 24], "print": 2, "being": [2, 14, 18, 19], "check": [2, 4, 19, 21, 24, 25], "code": [2, 3, 4, 5, 18, 19, 21], "type": [2, 10, 11, 13, 18, 19], "should": [2, 3, 5, 8, 10, 13, 14, 15, 16, 18, 19, 21, 23, 24, 25], "subcommand": 2, "filenam": 2, "main": [2, 21, 23], "reformat": 2, "black": 2, "check_format": 2, "verifi": 2, "flake8": 2, "check_typ": 2, "pyright": 2, "same": [2, 5, 12, 13, 18, 19], "when": [2, 4, 5, 10, 14, 18, 19, 21, 24, 25], "confront": 2, "would": [2, 13, 21], "messag": 2, "you": [2, 4, 24, 26], "mai": [2, 26], "diff": 2, "wai": [2, 5, 10, 11, 13, 18, 21], "displai": 2, "chang": [2, 5, 18, 24], "appli": [2, 4, 18, 21], "chose": 2, "locat": [2, 3, 23], "issu": [2, 8, 10, 11, 12, 15, 19], "visual": 2, "core": [2, 6, 10, 11, 12, 13, 15, 16, 17, 21, 22, 26], "architectur": [2, 21], "graph": [2, 6, 9, 20, 22, 26], "one": [2, 5, 8, 10, 11, 14, 16, 18, 19, 21, 23, 24, 25], "support": [2, 10, 13, 15, 18, 20], "need": [2, 5, 10, 14, 18, 21, 24, 26], "pass": [2, 5, 16, 17, 18, 19], "appropri": [2, 18, 24], "p": [2, 13], "prune": [2, 18], "remov": [2, 21], "disconnect": 2, "node": 2, "f": [2, 13, 15, 26], "select": [2, 10, 11, 14, 15, 16, 17, 19], "elk": [2, 18], "eclips": 2, "layout": [2, 4, 5, 6, 9, 10, 14, 15, 16, 18, 19, 22], "kernel": [2, 21], "dot": [2, 18], "graphviz": 2, "mermaid": [2, 18], "document": [2, 20], "sphinx": 2, "html": [2, 3], "build": [2, 26], "coreblock": [3, 4, 26], "go": [3, 4, 18, 21], "out": [3, 10, 11, 12, 14, 16, 18, 20], "processor": [3, 20, 23], "implement": [3, 11, 13, 14, 20, 21, 23], "risc": [3, 8, 13], "microarchitectur": 3, "focu": 3, "flexibl": [3, 23], "allow": [3, 13, 18, 19, 21], "easili": [3, 18], "experi": 3, "differ": [3, 4, 11, 13, 14, 16, 18, 21], "compon": [3, 10, 13, 18], "doc": 3, "collect": [3, 13, 16, 17, 18, 26], "descript": [3, 20], "whole": [3, 10, 18, 21], "overview": [3, 20, 21], "high": 3, "level": [3, 13, 21], "found": 3, "version": 3, "page": [3, 21], "api": [3, 20], "kuznia": 3, "rdzeni": 3, "github": 3, "io": 3, "If": [4, 5, 8, 10, 13, 14, 17, 18, 19, 21, 24], "someth": [4, 5], "doesn": [4, 5, 19, 21], "work": [4, 5, 10, 15, 18, 21], "re": [4, 5, 14, 18, 21], "puzzl": 4, "why": 4, "through": 4, "see": [4, 5, 12], "ani": [4, 8, 10, 13, 14, 15, 19, 21], "point": [4, 13, 21], "case": [4, 8, 14, 15, 16, 18, 19, 21], "sure": 4, "us": [4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 26], "yield": 4, "function": [4, 5, 10, 11, 13, 15, 16, 18, 19, 21, 26], "testbenchio": 4, "notabl": 4, "except": [4, 6, 9, 13, 16, 18, 19, 20, 22], "settl": 4, "instead": [4, 5, 18, 21], "signal": [4, 10, 11, 14, 18, 19, 20], "unexpect": 4, "valu": [4, 10, 11, 13, 14, 15, 16, 17, 18, 19, 24, 25], "try": [4, 5, 21], "ad": [4, 13, 18, 19, 26], "right": [4, 18], "don": [4, 18, 21, 24], "do": [4, 10, 13, 18, 21], "eq": [4, 5, 18], "two": [4, 5, 10, 16, 17, 18, 19, 21], "record": [4, 5, 10, 11, 14, 18, 19], "assign": [4, 5, 17, 18, 19], "util": [4, 5, 6, 9, 15, 16, 18, 22], "amaranth": [4, 5, 10, 13, 14, 18, 19, 26], "statement": [4, 5, 18, 19], "some": [4, 5, 17, 18, 21, 26], "domain": [4, 18], "have": [4, 8, 13, 14, 16, 17, 18, 19, 21, 26], "combin": [4, 13, 16, 18], "loop": 4, "especi": 4, "simul": [4, 18], "hang": 4, "extend": [4, 13, 18], "spot": 4, "yourself": [4, 5, 26], "easi": [4, 5, 21], "fix": 4, "mistak": 4, "modular": 5, "design": [5, 12, 18, 21], "inspir": 5, "bluespec": 5, "program": [5, 13, 21], "languag": [5, 13], "wiki": 5, "compil": [5, 26], "idea": [5, 21], "interfac": [5, 10, 12, 14, 15, 16, 17, 18, 20], "hardwar": [5, 13, 20, 23], "modul": [5, 6, 22], "A": [5, 10, 13, 18], "state": [5, 14, 18, 20, 21], "oper": [5, 8, 10, 11, 13, 18, 21], "perform": [5, 10, 11, 12, 13, 15, 17, 18, 19, 26], "singl": [5, 11, 12, 13, 15, 16, 18, 19], "clock": [5, 12, 18, 23, 26], "cycl": [5, 8, 11, 12, 14, 17, 18, 21, 23], "atom": [5, 13, 24], "either": [5, 10, 18, 19], "execut": [5, 11, 13, 14, 15, 16, 18, 20, 23, 25], "its": [5, 10, 15, 16, 17, 18, 19, 21], "entrieti": 5, "onli": [5, 11, 17, 18, 19, 21], "readi": [5, 10, 14, 15, 16, 17, 18, 19, 20, 24], "doe": 5, "conflict": [5, 18], "anoth": [5, 8, 10, 18], "schedul": [5, 6, 9, 18, 20, 21, 22], "defin": [5, 10, 17, 18, 19], "depend": [5, 6, 9, 17, 18, 19, 22], "other": [5, 17, 18, 20], "via": [5, 10, 18], "directli": [5, 13, 18], "link": 5, "indirectli": [5, 18], "multipl": [5, 8, 11, 12, 13, 14, 15, 16, 18], "them": [5, 13, 18, 19, 21], "access": [5, 8, 13, 17, 21], "coordin": 5, "system": [5, 13], "avoid": 5, "commun": [5, 21, 24], "caller": [5, 18], "both": [5, 18, 19, 24], "direct": [5, 18, 19], "back": 5, "structur": [5, 19, 20, 21, 24], "simplest": 5, "part": [5, 17, 18, 21, 23], "elaborat": [5, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19], "block": [5, 8, 12, 13, 14, 15, 16, 18, 20, 21], "myth": 5, "def": [5, 18], "elabor": 5, "self": 5, "platform": [5, 18, 26], "tmodul": [5, 17, 18], "bodi": [5, 17, 18], "condit": [5, 18], "includ": [5, 18, 19], "like": [5, 8, 10, 14, 18, 21], "d": [5, 13, 18], "comb": [5, 18], "sig1": 5, "expr1": 5, "sync": [5, 18], "sig2": 5, "expr2": 5, "result": [5, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21], "arg_expr": 5, "analog": 5, "": [5, 13, 14, 18, 19, 21], "multiplex": 5, "rememb": [5, 18, 21], "insid": [5, 10, 18], "alwai": [5, 8, 17, 18], "onc": [5, 18], "becaus": [5, 18, 21], "resourc": [5, 11, 21, 26], "request": [5, 8, 10, 11, 12, 13, 14, 18], "paramet": [5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 26], "bit": [5, 8, 10, 11, 12, 13, 14, 17, 18, 19, 21, 24, 25], "express": 5, "expr": 5, "As": [5, 8, 21], "typic": [5, 18], "declar": 5, "constructor": [5, 10, 18], "myotherth": 5, "__init__": [5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "o": [5, 12, 18, 21], "my_method": 5, "input_layout": 5, "output_layout": 5, "def_method": [5, 18], "_": [5, 18], "arg": [5, 10, 11, 18, 19], "other_method": 5, "ret_expr": 5, "techniqu": 5, "present": [5, 18, 19, 21], "abov": 5, "conveni": [5, 18], "syntax": [5, 18], "particular": 5, "unnam": 5, "usual": [5, 21], "For": [5, 8, 13, 19, 24, 25, 26], "could": 5, "around": 5, "entir": [5, 8], "sometim": 5, "might": [5, 18], "altern": [5, 18], "decid": [5, 21, 23], "best": 5, "import": [5, 21], "question": 5, "ask": 5, "independ": [5, 8, 18], "thing": [5, 19], "lock": [5, 18, 21], "so": [5, 14, 16, 18, 21], "mayb": [5, 21], "extern": [5, 18, 20], "doubt": 5, "prefer": 5, "noth": 5, "els": [5, 17, 18, 21], "Such": 5, "adaptertran": [5, 18], "facilit": 5, "provid": [5, 10, 11, 13, 15, 17, 18], "most": [5, 8, 18, 21], "ones": 5, "connecttran": [5, 18], "connect": [5, 10, 14, 16, 17, 18, 21], "togeth": [5, 18], "fifo": [5, 6, 9, 16, 18, 21, 22], "queue": [5, 18, 19, 21], "adapt": [5, 18], "plain": [5, 18], "These": [5, 21, 26], "veri": [5, 21], "testbench": [5, 18], "parent": 5, "convers": 5, "true": [5, 13, 14, 18, 19], "possibl": [5, 18, 19, 21], "limit": [5, 14, 18], "impli": 5, "consid": [5, 18, 21], "subpackag": [6, 22], "frontend": [6, 9, 22, 23], "submodul": [6, 22], "decod": [6, 9, 11, 15, 22], "fetch": [6, 8, 9, 13, 16, 17, 21, 22], "icach": [6, 9, 22], "rvc": [6, 9, 22], "content": [6, 22], "alu": [6, 9, 13, 22], "div_unit": [6, 9, 22], "fu_decod": [6, 9, 22], "jumpbranch": [6, 9, 13, 22], "mul_unit": [6, 9, 22], "shift_unit": [6, 9, 13, 22], "zbc": [6, 9, 13, 22], "zb": [6, 9, 13, 22], "param": [6, 9, 10, 11, 15, 16, 17, 22], "configur": [6, 9, 15, 22], "fu_param": [6, 9, 22], "genparam": [6, 9, 10, 11, 12, 15, 16, 17, 22], "icache_param": [6, 9, 22], "instr": [6, 9, 10, 22], "isa": [6, 9, 10, 17, 22], "kei": [6, 9, 17, 19, 22], "optyp": [6, 9, 10, 11, 15, 16, 17, 22], "peripher": [6, 9, 22], "wishbon": [6, 9, 22], "wakeup_select": [6, 9, 22], "backend": [6, 9, 22], "func_blocks_unifi": [6, 9, 22], "retir": [6, 9, 22], "rs_func_block": [6, 9, 22], "structs_common": [6, 9, 22], "csr": [6, 9, 10, 13, 22], "csr_gener": [6, 9, 22], "transact": [6, 9, 10, 13, 14, 17, 19, 20, 22, 24], "lib": [6, 9, 22], "debug_sign": [6, 9, 16, 18, 22], "protocol": [6, 9, 10, 15, 16, 22], "expos": [8, 18, 19], "three": [8, 10, 18, 21], "issue_req": [8, 10], "lookup": [8, 10], "accept_resp": 8, "flush": [8, 10, 21], "under": [8, 18], "4": [8, 11, 13, 18], "byte": [8, 13], "align": [8, 19], "c": [8, 13, 21], "extens": [8, 13], "introduc": [8, 21], "16": [8, 13, 18, 21], "relax": 8, "handl": [8, 11, 18, 20], "fulli": [8, 18], "pipelin": [8, 14, 15, 17, 18, 21, 24], "process": [8, 18, 20], "invok": [8, 10, 15, 16, 21, 24], "accept_r": [8, 10], "space": [8, 21], "simpli": 8, "latenc": [8, 18, 21], "least": 8, "miss": [8, 21], "occur": [8, 10], "arbitrarili": 8, "long": [8, 25], "ensur": 8, "refetch": 8, "howev": 8, "guarante": [8, 21], "alreadi": [8, 13, 16, 21], "been": 8, "still": [8, 18, 21, 25], "wait": [8, 14, 16, 18, 21, 24, 25], "accept": [8, 10, 11, 12, 17, 18, 19], "inform": [8, 15, 18, 26], "regard": 8, "error": [8, 10, 14, 18, 19], "mean": [8, 15, 18, 25], "dure": [8, 20, 23], "line": [8, 10, 13, 20], "refil": [8, 10], "subsequ": 8, "trigger": [8, 17], "32": [8, 11, 12, 13, 21], "128": [8, 13], "set": [8, 10, 11, 13, 15, 16, 17, 18, 20, 24], "size": [8, 13, 14, 18, 19, 21], "equal": 8, "31": [8, 13], "15": [8, 13], "14": [8, 13], "13": [8, 13], "12": [8, 13], "11": [8, 13], "09": 8, "08": 8, "07": 8, "06": 8, "05": 8, "04": 8, "03": 8, "02": 8, "01": 8, "00": 8, "tag": [8, 14, 16, 21, 24, 25], "index": [8, 18, 19], "offset": 8, "unsigned_multipl": [9, 11], "common": [9, 11, 18, 19], "fast_recurs": [9, 11], "sequenc": [9, 11, 15, 18, 19], "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, 19], "instanti": 10, "instrdecod": 10, "combinatori": 10, "manner": [10, 14], "get_raw": 10, "push_decod": 10, "none": [10, 11, 13, 16, 17, 18, 19], "instanc": [10, 13, 15, 16, 18], "raw": 10, "instruct": [10, 11, 13, 15, 16, 17, 20, 21, 23, 24], "previou": [10, 14, 21], "fetchlayout": [10, 13], "send": [10, 13, 15, 16], "next": [10, 15, 16, 17, 18, 21], "describ": [10, 15, 16, 18, 21], "decodelayout": [10, 13, 15], "elementari": 10, "opcod": [10, 13, 24, 25], "funct3": [10, 11, 13], "etc": 10, "attribut": [10, 11, 12, 13, 14, 16, 17, 18, 19], "gen": [10, 11, 12, 16], "ilen": [10, 13], "identifi": [10, 13, 24], "funct3_v": 10, "1": [10, 11, 12, 13, 15, 17, 18, 19, 21, 24, 25], "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, 20, 21], "regist": [10, 13, 15, 17, 21, 23], "rd_v": 10, "rs1": [10, 13], "hold": [10, 14, 17], "first": [10, 11, 15, 18, 21, 24, 25], "input": [10, 11, 16, 17, 18, 19, 21, 24, 25], "rs1_v": 10, "take": [10, 13, 14, 16, 18, 23, 24, 26], "form": [10, 13, 17, 18, 21], "rs2": [10, 13], "second": [10, 11, 15, 18, 24, 25], "rs2_v": 10, "imm": [10, 13], "xlen": [10, 11, 13, 17], "immedi": [10, 14], "were": [10, 21], "succ": 10, "fencetarget": [10, 13], "successor": 10, "fenc": [10, 13], "pred": 10, "predecessor": 10, "fm": 10, "fencefm": [10, 13], "mode": [10, 13, 21], "csr_alen": [10, 13], "control": [10, 13, 14, 17, 18], "sourc": [10, 15, 24], "kind": [10, 11, 13, 15], "illeg": 10, "wa": [10, 13, 17, 18, 21], "success": [10, 14], "fit": 10, "pc": [10, 17, 20], "increment": [10, 17], "ilen_byt": 10, "icacheinterfac": 10, "cont": 10, "cach": [10, 13, 20], "unalignedfetch": 10, "unalign": 10, "associ": [10, 13], "replac": [10, 12, 13, 24], "polici": 10, "pseudo": 10, "random": 10, "scheme": 10, "time": [10, 14, 17, 18, 21, 26], "trash": 10, "we": [10, 16, 21, 23, 24, 25, 26], "keep": [10, 18], "global": [10, 17, 21], "counter": [10, 13, 17], "abstract": [10, 12, 13], "awai": 10, "refiller_start": 10, "whenev": 10, "refiller_accept": 10, "word": [10, 13], "written": [10, 17, 18, 25], "last": [10, 15, 18], "transfer": [10, 14, 18], "over": [10, 17, 18, 19], "shouldn": 10, "until": [10, 18, 21], "start": [10, 11, 14, 18, 21], "icachelayout": [10, 13], "icacheparamet": [10, 13], "cacherefillerinterfac": 10, "start_refil": 10, "accept_refil": 10, "deserialize_addr": 10, "raw_addr": 10, "dict": [10, 14, 18, 19], "str": [10, 13, 18, 19], "hdl": [10, 13, 18], "ast": [10, 13, 18], "serialize_addr": 10, "addr": [10, 18], "icachebypass": 10, "wb_master": 10, "wishbonemast": [10, 13, 14], "haselabor": [10, 18, 19], "kwarg": [10, 13, 14, 18, 19], "simplewbcacherefil": 10, "instrdecompress": 10, "decompr_reg": 10, "rvc_reg": 10, "instr_mux": 10, "sel": 10, "int": [10, 11, 12, 13, 14, 16, 17, 18, 19], "enum": [10, 11, 13, 18, 19], "valuecast": [10, 13, 18, 19], "tupl": [10, 11, 15, 16, 17, 18, 19], "is_instr_compress": 10, "alucompon": [11, 13], "functionalcomponentparam": [11, 13, 16], "zba_en": 11, "fals": [11, 13, 18, 19], "zbb_enabl": 11, "get_modul": [11, 13, 16, 17], "funcunit": [11, 13, 16, 19], "get_optyp": [11, 13, 16, 17], "alufuncunit": 11, "alu_fn": 11, "alufn": 11, "object": [11, 13, 14, 18], "divcompon": 11, "ipc": 11, "div_fn": 11, "divfn": 11, "decodermanag": 11, "fn": 11, "intflag": [11, 13, 18], "enumer": [11, 13, 17, 18, 19], "div": [11, 13], "divu": [11, 13], "2": [11, 12, 13, 14, 17, 18, 19], "rem": [11, 13], "remu": [11, 13], "8": [11, 12, 13, 14, 18], "get_instruct": 11, "divunit": 11, "get_input": 11, "exceptionfuncunit": 11, "unit_fn": 11, "exceptionunitfn": 11, "exceptionunitcompon": [11, 13], "respons": [11, 14, 15, 18], "decode_fn": 11, "exec_fn": 11, "op": [11, 13], "check_optyp": 11, "bool": [11, 13, 17, 18, 19], "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, 19, 21], "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, 21], "term": 11, "sequence_mul": 11, "dsp": [11, 12], "balanc": 11, "between": [11, 18, 21], "cost": [11, 20], "shift_mul": 11, "cheapest": 11, "russian": [11, 12], "peasant": [11, 12], "algorithm": [11, 12], "mulunit": 11, "unsign": [11, 12], "integ": [11, 13, 19], "standard": [11, 17, 19, 21], "funcunitlayout": [11, 13, 15, 16], "comput": [11, 12, 17, 18, 21], "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, 18], "i1": [11, 12], "n": [11, 12, 13], "factor": 11, "i2": [11, 12], "reset": [11, 17, 18, 20], "new": [11, 13, 14, 18, 19, 20, 21], "busi": 11, "while": [11, 18], "progress": 11, "bit_width": 11, "recursion_depth": 11, "width": [11, 12, 13, 14, 17, 18, 19], "depth": [11, 14, 18, 19], "recurs": [11, 12, 19], "parallel": 11, "assum": [11, 16, 18, 19, 21], "power": [11, 19], "iterative_modul": 11, "recursive_modul": 11, "zbccompon": 11, "zbc_fn": 11, "zbcfn": 11, "clmul": [11, 13], "clmulh": [11, 13], "clmulr": [11, 13], "classmethod": [11, 18], "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, 20], "mulbaseunsign": 12, "unsignedmulunitlayout": [12, 13], "recursiveunsignedmul": 12, "fast": 12, "sequentialunsignedmul": 12, "sequenti": [12, 14], "classic": [12, 21], "shiftunsignedmul": 12, "cheap": 12, "multi": 12, "coreconfigur": 13, "func_units_config": 13, "blockcomponentparam": [13, 16, 17], "reserv": [13, 17, 20, 21], "station": [13, 20], "rsblockcompon": [13, 16], "rs_entri": [13, 16, 17], "lsublockcompon": 13, "compress": 13, "enabl": [13, 18], "embed": 13, "reduc": [13, 18, 21], "phys_regs_bit": 13, "physic": [13, 15, 21], "rob_entries_bit": 13, "reorder": [13, 18, 21], "buffer": [13, 14, 18, 21, 24], "start_pc": 13, "initi": [13, 20], "icache_en": 13, "disabl": [13, 18], "bypass": 13, "icache_wai": 13, "icache_sets_bit": 13, "log": [13, 21], "icache_block_size_bit": 13, "allow_partial_extens": 13, "partial": 13, "_implied_extens": 13, "extenst": 13, "flag": 13, "specifi": [13, 14, 17, 18, 25], "intern": [13, 18, 19, 20], "abc": [13, 18], "func_unit": [13, 16], "lsu": 13, "dummylsu": 13, "6": [13, 21], "7": 13, "dependencykei": 13, "u": [13, 21], "dependencymanag": [13, 17], "concret": 13, "frozen": 13, "lock_on_get": 13, "get_depend": 13, "empty_valid": 13, "without": [13, 15, 16, 21], "action": [13, 17, 18], "caus": [13, 18, 21], "rais": [13, 18, 19, 21], "keyerror": [13, 18], "add_depend": 13, "give": 13, "behavior": [13, 18], "track": 13, "across": 13, "add": [13, 18], "multpl": 13, "funcblock": [13, 15, 16, 17, 19], "get_rs_entry_count": [13, 16, 17], "optypes_support": 13, "iter": [13, 16, 17, 18, 19], "dependentcach": 13, "cfg": 13, "addr_width": [13, 14], "length": [13, 18, 19, 21], "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, 21], "precis": [13, 21], "float": 13, "64": [13, 14], "98366": 13, "basic": [13, 20], "j": 13, "1024": 13, "dynam": [13, 19, 21], "decim": 13, "divis": 13, "16384": 13, "user": [13, 17, 21], "interrupt": [13, 20], "4096": 13, "simd": 13, "q": 13, "quad": 13, "2048": 13, "memori": [13, 14, 18, 21], "8192": 13, "vector": [13, 15, 20, 21], "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, 18, 24], "tempor": 13, "hint": [13, 18], "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, 19, 21, 24, 25], "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, 21], "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, 21], "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, 18, 24], "val_log": 13, "field": [13, 16, 17, 18, 19, 24, 25], "relev": [13, 18], "nativ": 13, "reg_cnt": 13, "maximum": 13, "bitwis": 13, "isa_str": 13, "string": 13, "refer": 13, "gcc": 13, "detail": [13, 20], "instrtyp": 13, "auipc": 13, "branch": [13, 18, 21, 26], "24": 13, "jal": 13, "27": 13, "25": 13, "load": [13, 21], "load_fp": 13, "lui": 13, "misc_mem": 13, "op32": 13, "op_imm": 13, "op_imm_32": 13, "store_fp": 13, "28": [13, 21], "a0": 13, "a1": 13, "a2": 13, "a3": 13, "a4": 13, "a5": 13, "a6": 13, "a7": 13, "17": 13, "fp": [13, 18], "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, "t1": 13, "t2": 13, "t3": 13, "t4": 13, "29": 13, "t5": 13, "30": [13, 21], "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, 18, 24], "branchresolvedkei": 13, "unifierkei": [13, 16], "unifi": [13, 19], "alia": 13, "collector": [13, 18], "exceptionreportkei": 13, "simplekei": 13, "genericcsrregisterskei": 13, "genericcsrregist": [13, 17], "instructionprecommitkei": 13, "methodtryproduct": [13, 18], "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, 20], "csr_imm": [13, 17], "csr_reg": [13, 17], "div_rem": 13, "33": 13, "logic": [13, 21, 25, 26], "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, 21], "resultlayout": 14, "requests_finish": 14, "generate_method_layout": 14, "wishbonearbit": 14, "arbit": 14, "slave": 14, "assert": 14, "cyc": 14, "grant": [14, 18], "round": [14, 18, 19], "robin": [14, 18], "slave_wb": 14, "intefac": 14, "boolean": [14, 18], "whether": [14, 19], "side": [14, 17, 21, 24, 25], "otherwis": 14, "wb_layout": 14, "wbmaster": 14, "becom": 14, "generate_layout": 14, "wishbonememoryslav": 14, "underneath": 14, "keyword": [14, 18], "underli": 14, "infer": [14, 18], "data_width": 14, "wishbonemux": 14, "muxer": 14, "master_wb": 14, "ssel_tga": 14, "corespond": 14, "tga": 14, "stb": 14, "note": [14, 17, 18, 19], "stare": 14, "finish": [14, 16], "stall": [14, 17, 21], "clear": [14, 18, 19, 24, 25], "delai": 14, "previous": 14, "deassert": 14, "dat_r": 14, "dat_w": 14, "adr": 14, "singal": 14, "granular": [14, 18], "smallest": 14, "port": [14, 18], "capabl": 14, "insert": [15, 16, 17, 19, 20, 21, 23, 24], "alloc": [15, 23, 24, 25], "renam": [15, 23], "entri": [15, 16, 19, 21, 23, 24, 25], "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, 18, 21], "free": [15, 20, 21, 25], "rat_rename_in": 15, "rat_rename_out": 15, "data_layout": [15, 18], "rf_read_out": 15, "rf_read_in": 15, "wakeupselect": 15, "wakeup": [15, 25], "firstli": 15, "get_readi": 15, "binari": 15, "where": [15, 18, 21, 24, 25], "th": [15, 18], "posit": [15, 24, 25], "row": [15, 20], "taken": 15, "take_row": 15, "get_ready_list_out": 15, "take_out": 15, "push": 15, "down": 15, "resultannounc": 16, "mark": [16, 18, 20, 21], "get_result": [16, 17, 18, 19], "serial": [16, 18], "than": [16, 21], "manytooneconnecttran": [16, 18], "rob_mark_don": 16, "rs_write_v": 16, "rf_write_v": 16, "end": [16, 21], "rob_id": 16, "reg_id": 16, "reg_val": 16, "funcblocksunifi": 16, "extra_methods_requir": 16, "get_extra_method": 16, "item": [16, 19], "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, 18, 21, 24, 25], "_fu_read": 17, "_fu_writ": 17, "simultan": [17, 18], "ignor": 17, "prioriti": [17, 18, 19], "csr_number": 17, "ro_bit": 17, "mask": [17, 18], "those": [17, 21], "upper": 17, "0b11": 17, "discard": 17, "regitst": 17, "unitl": 17, "place": [17, 18, 21, 24], "put": [17, 18, 24], "receiv": [17, 18], "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, 18], "low_addr": 17, "high_addr": 17, "repres": [17, 18], "lower": [17, 19], "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, "transactionbas": 18, "serv": 18, "simultena": 18, "transactionmanag": 18, "rest": 18, "must": 18, "exclus": 18, "combination": 18, "data_out": 18, "data_in": 18, "union": [18, 19], "shape": [18, 19], "shapecast": [18, 19], "rang": [18, 19], "layoutlik": [18, 19], "nonexclus": 18, "single_cal": 18, "variabl": [18, 19], "situat": 18, "happen": 18, "cannot": 18, "thrown": 18, "const": 18, "d1": 18, "d0": 18, "context": [18, 21], "guard": 18, "av_comb": 18, "top_comb": 18, "indic": [18, 21, 25], "combinationi": 18, "my_sum_method": 18, "arg1": 18, "arg2": 18, "sum": 18, "view": [18, 19], "signalbundl": [18, 19], "map": [18, 19, 20, 21], "static": 18, "construct": 18, "blueprint": 18, "freshli": 18, "proxi": 18, "left": [18, 21], "priorit": 18, "undefin": 18, "modulelik": [18, 19], "avoidedif": 18, "amount": 18, "useless": 18, "multplex": 18, "due": [18, 21], "unguard": 18, "path": 18, "relat": [18, 21], "synchron": 18, "cond": 18, "pattern": 18, "elif": 18, "fsm": 18, "switch": [18, 19, 21, 24], "properti": [18, 21], "noreturn": 18, "task": [18, 23], "regularli": 18, "done": [18, 21], "met": 18, "concurr": [18, 21], "explicit": 18, "implicit": 18, "add_conflict": 18, "aris": 18, "pair": 18, "want": [18, 24], "omit": 18, "transactioncontext": 18, "stack": 18, "care": 18, "never": 18, "cc_schedul": 18, "callabl": 18, "methodmap": 18, "dsl": 18, "eager_deterministic_cc_schedul": 18, "add_transact": 18, "visual_graph": 18, "fragment": 18, "transactionmodul": 18, "wrapper": 18, "definit": 18, "wrap": 18, "transaction_context": 18, "decor": 18, "eleg": 18, "dictionari": 18, "whose": 18, "method_map": 18, "gr": 18, "cc": 18, "porder": 18, "eager": 18, "subsystem": 18, "isn": 18, "fair": 18, "lowest": 18, "highest": 18, "arbitr": 18, "agent": 18, "transactiongraph": 18, "vertic": 18, "edg": 18, "priorityord": 18, "linear": 18, "consist": 18, "constraint": 18, "trivial_roundrobin_cc_schedul": 18, "mainli": 18, "purpos": [18, 21], "extract": [18, 26], "IN": 18, "inout": 18, "own": 18, "owner": 18, "ownershipgraph": 18, "root": 18, "dump": 18, "liter": [18, 19], "dump_dot": 18, "indent": 18, "dump_elk": 18, "dump_mermaid": 18, "get_hier_nam": 18, "obj": 18, "hierarch": 18, "yet": 18, "get_nam": 18, "insert_edg": 18, "fr": 18, "insert_nod": 18, "mermaid_direct": 18, "empti": [18, 19], "subgraph": 18, "remember_field": 18, "owner_id": 18, "adapterbas": 18, "mock": 18, "en": 18, "ifac": 18, "cattran": 18, "concaten": 18, "third": 18, "src1": [18, 25], "src2": [18, 25], "dst": 18, "clickin": 18, "click": 18, "interact": 18, "fpga": 18, "button": 18, "rise": 18, "btn": 18, "dat": 18, "retriev": 18, "clickout": 18, "led": 18, "mani": [18, 21, 26], "ident": 18, "target": 18, "method_list": 18, "mechan": 18, "move": 18, "flow": 18, "revers": 18, "possibli": 18, "rev_layout": 18, "connectandtransformtran": 18, "transform": 18, "behav": 18, "modifi": [18, 21], "equival": 18, "methodtransform": 18, "method1": 18, "method2": 18, "i_fun": 18, "recorddict": 18, "o_fun": 18, "vice": 18, "versa": 18, "compat": 18, "respect": 18, "fulfil": 18, "_rec": 18, "fifo_typ": 18, "syncfifo": 18, "fifotyp": 18, "conform": 18, "No": [18, 21], "further": 18, "put_result": 18, "memorybank": 18, "read_req": 18, "read_resp": 18, "elem_count": 18, "safe_writ": 18, "element": [18, 21], "split": [18, 21, 23], "optimis": 18, "increas": 18, "throughput": 18, "eg": 18, "x": 18, "later": 18, "methodfilt": 18, "filter": 18, "caveat": 18, "usag": [18, 20], "methodproduct": 18, "arbitrari": 18, "origin": [18, 21], "i_transform": 18, "o_transform": 18, "tri": 18, "succeed": 18, "client": 18, "somethig": 18, "server": 18, "deseri": 18, "proper": 18, "serialize_in": 18, "serialized_req_method": 18, "serialize_out": 18, "serialized_resp_method": 18, "port_count": 18, "len": 18, "resist": 18, "nonblock": 18, "nest": [18, 20], "similar": [18, 19, 21], "overlap": 18, "catch": 18, "reason": 18, "stop": [18, 21], "mutual": 18, "influenc": 18, "cond1": 18, "cond2": 18, "tracingenabl": 18, "tracingfrag": 18, "lose": 18, "too": 18, "difficult": 18, "exact": 18, "copi": [18, 21], "copyright": 18, "subfrag": 18, "ir": 18, "tracingfragmenttransform": 18, "fragmenttransform": 18, "on_frag": 18, "tracinginst": 18, "auto_debug_sign": 19, "arrai": 19, "basicfifo": 19, "reiniti": 19, "init": 19, "paramt": 19, "semaphor": 19, "max_count": 19, "assigntyp": 19, "rh": 19, "moduleconnector": 19, "anonym": 19, "onehotswitch": 19, "style": 19, "benefit": 19, "represent": 19, "sig": 19, "onehotcas": 19, "0b01": 19, "0b10": 19, "onehotswitchdynam": 19, "signifi": 19, "align_to_power_of_two": 19, "num": 19, "up": [19, 20, 25], "lh": 19, "assignarg": 19, "assignfield": 19, "lhs_strict": 19, "rhs_strict": 19, "safe": [19, 21], "structlayout": 19, "mismatch": 19, "accord": 19, "explicitli": 19, "castabl": 19, "determin": [19, 21], "subrecord": 19, "valueerror": 19, "bits_from_int": 19, "count_leading_zero": 19, "count_trailing_zero": 19, "flatten_sign": 19, "flatten": 19, "popcount": 19, "silence_mustus": 19, "introduct": 20, "assumpt": [20, 21], "made": [20, 21], "develop": 20, "environ": 20, "script": [20, 26], "run_test": 20, "py": [20, 26], "lint": 20, "sh": 20, "core_graph": 20, "build_doc": 20, "framework": [20, 24], "advanc": 20, "concept": 20, "schema": 20, "proposit": [20, 21], "slot": 20, "tabl": 20, "substitut": 20, "clean": 20, "problem": [20, 21], "checklist": 20, "benchmark": 20, "summari": 20, "paper": 20, "about": 20, "old": 20, "softwar": 20, "tlb": 20, "analysi": 20, "strategi": 20, "igpu": 20, "specul": 20, "gpu": 20, "effici": 20, "journal": 21, "articl": 21, "look": 21, "choic": 21, "primari": 21, "procedur": 21, "chosen": 21, "basi": 21, "improv": 21, "pretti": 21, "1993": 21, "2001": 21, "much": 21, "research": 21, "cpu": 21, "solv": 21, "characterist": 21, "our": [21, 23], "what": 21, "peopl": 21, "probabl": 21, "lot": 21, "worth": 21, "walker": 21, "cragon": 21, "ieee": 21, "vol": 21, "june": 21, "1995": 21, "moudgil": 21, "vassiliadi": 21, "micro": 21, "pp": 21, "58": 21, "67": 21, "februari": 21, "1996": 21, "survei": 21, "topic": 21, "cdc": 21, "6600": 21, "jump": 21, "handler": 21, "ibm360": 21, "crai": 21, "here": [21, 24], "bigger": 21, "torng": 21, "martin": 21, "dai": 21, "probe": 21, "author": 21, "window": 21, "iw": 21, "dispatch": [21, 23, 24, 25], "didn": 21, "restor": 21, "restart": 21, "few": 21, "encod": 21, "big": 21, "overhead": 21, "unfeas": 21, "job": 21, "addition": 21, "But": 21, "cooper": 21, "smaller": 21, "interest": 21, "propos": 21, "nrp": 21, "itself": 21, "wast": 21, "how": [21, 24, 26], "middl": [21, 23], "aamer": 21, "jaleel": 21, "bruce": 21, "jacob": 21, "cours": 21, "penalti": 21, "alpha": 21, "mip": 21, "concentr": 21, "short": 21, "inlin": 21, "observ": 21, "enough": 21, "live": 21, "known": 21, "fly": 21, "swap": 21, "nop": 21, "reexecut": 21, "privileg": 21, "correct": [21, 24, 25], "contrast": 21, "tendenc": 21, "longer": 21, "hard": 21, "risk": 21, "linux": [21, 26], "addit": 21, "hw": 21, "bore": 21, "treat": [21, 23], "mansur": 21, "samadzadeh": 21, "loai": 21, "garalnabi": 21, "checkpoint": 21, "repair": 21, "histori": 21, "futur": [21, 23, 24], "jaikrishnan": 21, "menon": 21, "marc": 21, "de": 21, "kruijf": 21, "karthikeyan": 21, "sankaralingam": 21, "2012": 21, "To": [21, 26], "low": 21, "boundari": 21, "rewritten": 21, "recompil": 21, "runtim": 21, "region": 21, "subregion": 21, "begin": 21, "small": 21, "overrid": 21, "barrier": 21, "warp": 21, "wrong": 21, "prevent": 21, "ivan": 21, "tanas": 21, "isaac": 21, "gelado": 21, "jorda": 21, "eduard": 21, "ayguad": 21, "nacho": 21, "navarro": 21, "2017": 21, "analys": 21, "problemat": 21, "successfulli": 21, "kill": 21, "modif": 21, "fail": 21, "repli": 21, "claim": 21, "operand": [21, 24, 25], "replai": 21, "marker": 21, "jerom": 21, "hampton": 21, "2008": 21, "mention": 21, "alli": 21, "bailei": 21, "ab04": 21, "ag": 21, "younger": 21, "repeat": 21, "canon": 21, "eventu": 21, "aren": 21, "Its": 23, "rss": 23, "phase": 23, "choos": 23, "potenti": 23, "merg": 23, "optim": 23, "todo": 23, "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, "inst_readi": 25, "synthes": 26, "circuit": 26, "consum": 26, "grow": 26, "yosi": 26, "prjtrelli": 26, "nextpnr": 26, "ecp5": 26, "manual": 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, "frequenc": 26, "cell": 26, "ram": 26, "dff": 26, "dedic": 26, "subpag": 26}, "objects": {"": [[9, 0, 0, "-", "coreblocks"]], "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, "-", "transactions"], [19, 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, 2, 1, "", "__init__"], [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"]], "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"]], "coreblocks.fu.mul_unit.MulType": [[11, 3, 1, "", "RECURSIVE_MUL"], [11, 3, 1, "", "SEQUENCE_MUL"], [11, 3, 1, "", "SHIFT_MUL"]], "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"]], "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"]], "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"]], "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"]], "coreblocks.params.isa.FenceFm": [[13, 3, 1, "", "NONE"], [13, 3, 1, "", "TSO"]], "coreblocks.params.isa.FenceTarget": [[13, 3, 1, "", "DEV_I"], [13, 3, 1, "", "DEV_O"], [13, 3, 1, "", "MEM_R"], [13, 3, 1, "", "MEM_W"]], "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"]], "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"]], "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"]], "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"]], "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"]], "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"]], "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"]], "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"]], "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.transactions": [[18, 1, 1, "", "Method"], [18, 1, 1, "", "TModule"], [18, 1, 1, "", "Transaction"], [18, 1, 1, "", "TransactionContext"], [18, 1, 1, "", "TransactionManager"], [18, 1, 1, "", "TransactionModule"], [18, 0, 0, "-", "core"], [18, 4, 1, "", "def_method"], [18, 0, 0, "-", "graph"], [18, 0, 0, "-", "lib"], [18, 0, 0, "-", "tracing"]], "coreblocks.transactions.Method": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "body"], [18, 2, 1, "", "debug_signals"], [18, 2, 1, "", "like"], [18, 2, 1, "", "proxy"]], "coreblocks.transactions.TModule": [[18, 2, 1, "", "AvoidedIf"], [18, 2, 1, "", "Case"], [18, 2, 1, "", "Default"], [18, 2, 1, "", "Elif"], [18, 2, 1, "", "Else"], [18, 2, 1, "", "FSM"], [18, 2, 1, "", "If"], [18, 2, 1, "", "State"], [18, 2, 1, "", "Switch"], [18, 2, 1, "", "__init__"], [18, 5, 1, "", "next"]], "coreblocks.transactions.Transaction": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "body"], [18, 2, 1, "", "debug_signals"]], "coreblocks.transactions.TransactionContext": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "get"], [18, 3, 1, "", "stack"]], "coreblocks.transactions.TransactionManager": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "add_transaction"], [18, 2, 1, "", "debug_signals"], [18, 2, 1, "", "visual_graph"]], "coreblocks.transactions.TransactionModule": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "transaction_context"]], "coreblocks.transactions.core": [[18, 1, 1, "", "Method"], [18, 1, 1, "", "Priority"], [18, 1, 1, "", "TModule"], [18, 1, 1, "", "Transaction"], [18, 1, 1, "", "TransactionContext"], [18, 1, 1, "", "TransactionManager"], [18, 1, 1, "", "TransactionModule"], [18, 4, 1, "", "def_method"], [18, 4, 1, "", "eager_deterministic_cc_scheduler"], [18, 4, 1, "", "trivial_roundrobin_cc_scheduler"]], "coreblocks.transactions.core.Method": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "body"], [18, 2, 1, "", "debug_signals"], [18, 2, 1, "", "like"], [18, 2, 1, "", "proxy"]], "coreblocks.transactions.core.Priority": [[18, 3, 1, "", "LEFT"], [18, 3, 1, "", "RIGHT"], [18, 3, 1, "", "UNDEFINED"]], "coreblocks.transactions.core.TModule": [[18, 2, 1, "", "AvoidedIf"], [18, 2, 1, "", "Case"], [18, 2, 1, "", "Default"], [18, 2, 1, "", "Elif"], [18, 2, 1, "", "Else"], [18, 2, 1, "", "FSM"], [18, 2, 1, "", "If"], [18, 2, 1, "", "State"], [18, 2, 1, "", "Switch"], [18, 2, 1, "", "__init__"], [18, 5, 1, "", "next"]], "coreblocks.transactions.core.Transaction": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "body"], [18, 2, 1, "", "debug_signals"]], "coreblocks.transactions.core.TransactionContext": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "get"], [18, 3, 1, "", "stack"]], "coreblocks.transactions.core.TransactionManager": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "add_transaction"], [18, 2, 1, "", "debug_signals"], [18, 2, 1, "", "visual_graph"]], "coreblocks.transactions.core.TransactionModule": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "transaction_context"]], "coreblocks.transactions.graph": [[18, 1, 1, "", "Direction"], [18, 1, 1, "", "Owned"], [18, 1, 1, "", "OwnershipGraph"]], "coreblocks.transactions.graph.Direction": [[18, 3, 1, "", "IN"], [18, 3, 1, "", "INOUT"], [18, 3, 1, "", "NONE"], [18, 3, 1, "", "OUT"]], "coreblocks.transactions.graph.Owned": [[18, 3, 1, "", "name"], [18, 3, 1, "", "owner"]], "coreblocks.transactions.graph.OwnershipGraph": [[18, 2, 1, "", "__init__"], [18, 2, 1, "", "dump"], [18, 2, 1, "", "dump_dot"], [18, 2, 1, "", "dump_elk"], [18, 2, 1, "", "dump_mermaid"], [18, 2, 1, "", "get_hier_name"], [18, 2, 1, "", "get_name"], [18, 2, 1, "", "insert_edge"], [18, 2, 1, "", "insert_node"], [18, 3, 1, "", "mermaid_direction"], [18, 2, 1, "", "prune"], [18, 2, 1, "", "remember"], [18, 2, 1, "", "remember_field"]], "coreblocks.transactions.lib": [[18, 1, 1, "", "Adapter"], [18, 1, 1, "", "AdapterTrans"], [18, 1, 1, "", "CatTrans"], [18, 1, 1, "", "ClickIn"], [18, 1, 1, "", "ClickOut"], [18, 1, 1, "", "Collector"], [18, 1, 1, "", "Connect"], [18, 1, 1, "", "ConnectAndTransformTrans"], [18, 1, 1, "", "ConnectTrans"], [18, 1, 1, "", "FIFO"], [18, 1, 1, "", "Forwarder"], [18, 1, 1, "", "ManyToOneConnectTrans"], [18, 1, 1, "", "MemoryBank"], [18, 1, 1, "", "MethodFilter"], [18, 1, 1, "", "MethodProduct"], [18, 1, 1, "", "MethodTransformer"], [18, 1, 1, "", "MethodTryProduct"], [18, 1, 1, "", "Serializer"], [18, 4, 1, "", "condition"]], "coreblocks.transactions.lib.Adapter": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.AdapterTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.CatTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ClickIn": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ClickOut": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.Collector": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.Connect": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ConnectAndTransformTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ConnectTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.FIFO": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.Forwarder": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.ManyToOneConnectTrans": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MemoryBank": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MethodFilter": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MethodProduct": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MethodTransformer": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.MethodTryProduct": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.lib.Serializer": [[18, 2, 1, "", "__init__"]], "coreblocks.transactions.tracing": [[18, 1, 1, "", "TracingEnabler"], [18, 1, 1, "", "TracingFragment"], [18, 1, 1, "", "TracingFragmentTransformer"], [18, 1, 1, "", "TracingInstance"]], "coreblocks.transactions.tracing.TracingFragment": [[18, 2, 1, "", "get"], [18, 2, 1, "", "prepare"], [18, 3, 1, "", "subfragments"]], "coreblocks.transactions.tracing.TracingFragmentTransformer": [[18, 2, 1, "", "on_fragment"]], "coreblocks.transactions.tracing.TracingInstance": [[18, 2, 1, "", "get"]], "coreblocks.utils": [[19, 0, 0, "-", "debug_signals"], [19, 0, 0, "-", "fifo"], [19, 0, 0, "-", "protocols"], [19, 0, 0, "-", "utils"]], "coreblocks.utils.debug_signals": [[19, 4, 1, "", "auto_debug_signals"]], "coreblocks.utils.fifo": [[19, 1, 1, "", "BasicFifo"], [19, 1, 1, "", "Semaphore"]], "coreblocks.utils.fifo.BasicFifo": [[19, 2, 1, "", "__init__"]], "coreblocks.utils.fifo.Semaphore": [[19, 2, 1, "", "__init__"]], "coreblocks.utils.protocols": [[19, 1, 1, "", "FuncBlock"], [19, 1, 1, "", "FuncUnit"], [19, 1, 1, "", "Unifier"]], "coreblocks.utils.protocols.FuncBlock": [[19, 2, 1, "", "__init__"], [19, 3, 1, "", "get_result"], [19, 3, 1, "", "insert"], [19, 3, 1, "", "select"], [19, 3, 1, "", "update"]], "coreblocks.utils.protocols.FuncUnit": [[19, 2, 1, "", "__init__"], [19, 3, 1, "", "accept"], [19, 3, 1, "", "issue"]], "coreblocks.utils.protocols.Unifier": [[19, 2, 1, "", "__init__"], [19, 3, 1, "", "method"]], "coreblocks.utils.utils": [[19, 1, 1, "", "AssignType"], [19, 1, 1, "", "ModuleConnector"], [19, 4, 1, "", "OneHotSwitch"], [19, 4, 1, "", "OneHotSwitchDynamic"], [19, 4, 1, "", "align_to_power_of_two"], [19, 4, 1, "", "assign"], [19, 4, 1, "", "bits_from_int"], [19, 4, 1, "", "count_leading_zeros"], [19, 4, 1, "", "count_trailing_zeros"], [19, 4, 1, "", "flatten_signals"], [19, 4, 1, "", "popcount"], [19, 4, 1, "", "silence_mustuse"]], "coreblocks.utils.utils.AssignType": [[19, 3, 1, "", "ALL"], [19, 3, 1, "", "COMMON"], [19, 3, 1, "", "RHS"]], "coreblocks.utils.utils.ModuleConnector": [[19, 2, 1, "", "__init__"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "titleterms": {"list": 0, "assumpt": [0, 8], "made": 0, "dure": 0, "develop": [0, 2], "full": 1, "transact": [1, 5, 18], "method": [1, 5, 24, 25], "graph": [1, 18], "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, 21], "document": [3, 5, 26], "problem": 4, "checklist": 4, "coreblock": [5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22], "framework": 5, "basic": 5, "usag": [5, 26], "implement": [5, 24], "The": 5, "librari": 5, "advanc": 5, "concept": 5, "nest": 5, "api": 6, "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, 19], "subpackag": [9, 11], "submodul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "core": [9, 18], "modul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "content": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "frontend": 10, "decod": 10, "fetch": 10, "icach": 10, "rvc": 10, "fu": [11, 12], "alu": 11, "div_unit": 11, "except": [11, 17, 21], "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, "schedul": [15, 23], "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, "lib": 18, "trace": 18, "util": 19, "debug_sign": 19, "fifo": 19, "protocol": 19, "summari": 21, "paper": 21, "about": 21, "interrupt": 21, "handl": 21, "old": 21, "pc": 21, "out": 21, "order": 21, "execut": 21, "processor": 21, "In": 21, "line": 21, "softwar": 21, "manag": 21, "tlb": 21, "hardwar": 21, "cost": 21, "analysi": 21, "process": 21, "strategi": 21, "igpu": 21, "support": 21, "specul": 21, "gpu": 21, "effici": 21, "other": 21, "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, "readi": 25, "vector": 25, "signal": 25, "synthesi": 26, "requir": 26, "benchmark": 26}, "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 e80b79b74..47512a55f 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 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/shared_structs/RS.html b/shared_structs/RS.html index 18cec1ce5..63fcfe465 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 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.

diff --git a/synthesis/Synthesis.html b/synthesis/Synthesis.html index 7a5d91ee7..010a92dd4 100644 --- a/synthesis/Synthesis.html +++ b/synthesis/Synthesis.html @@ -151,7 +151,7 @@

Benchmarks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 12:37 2023-07-25. + Last updated on 13:18 2023-10-05.