diff --git a/.doctrees/Current_graph.doctree b/.doctrees/Current_graph.doctree index cc1b06915..2150abb59 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 108aafbeb..eb2aa50d9 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 3e91e23c9..1218b60f5 100644 Binary files a/.doctrees/auto_graph.doctree and b/.doctrees/auto_graph.doctree differ diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index a7ccf8086..a3aae2c8d 100644 Binary files a/.doctrees/environment.pickle and b/.doctrees/environment.pickle differ diff --git a/.doctrees/transactron.doctree b/.doctrees/transactron.doctree index f0c4ca70f..bcb62222c 100644 Binary files a/.doctrees/transactron.doctree and b/.doctrees/transactron.doctree differ diff --git a/Assumptions.html b/Assumptions.html index 1f4cd3d88..f659b3cbd 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 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/Current_graph.html b/Current_graph.html index 8989972f0..3aa9aecdf 100644 --- a/Current_graph.html +++ b/Current_graph.html @@ -89,21 +89,21 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/Development_environment.html b/Development_environment.html index 5f84422be..5485be1e2 100644 --- a/Development_environment.html +++ b/Development_environment.html @@ -178,7 +178,7 @@

build_docs.sh

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/Home.html b/Home.html index e03e370cd..7e3aad155 100644 --- a/Home.html +++ b/Home.html @@ -129,7 +129,7 @@

Documentation

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/Problem-checklist.html b/Problem-checklist.html index 14b46ff35..f7a2d8159 100644 --- a/Problem-checklist.html +++ b/Problem-checklist.html @@ -105,7 +105,7 @@

Problem checklist

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/Transactions.html b/Transactions.html index 2cad11b3b..a894a2774 100644 --- a/Transactions.html +++ b/Transactions.html @@ -409,7 +409,7 @@

Transaction and method nesting

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/_sources/auto_graph.rst.txt b/_sources/auto_graph.rst.txt index 04914eb58..963ad54ce 100644 --- a/_sources/auto_graph.rst.txt +++ b/_sources/auto_graph.rst.txt @@ -6,21 +6,21 @@ subgraph Core["core Core"] Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] + WishboneMaster_WishboneMaster["WishboneMaster"] WishboneMaster_request["request"] WishboneMaster_result["result"] - WishboneMaster_WishboneMaster["WishboneMaster"] subgraph Forwarder["result Forwarder"] Forwarder_write["write"] Forwarder_read["read"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] - WishboneMaster1_result["result"] WishboneMaster1_WishboneMaster["WishboneMaster"] + WishboneMaster1_result["result"] WishboneMaster1_request["request"] subgraph Forwarder1["result Forwarder"] - Forwarder1_write["write"] Forwarder1_read["read"] + Forwarder1_write["write"] end end subgraph FIFO["fifo_fetch FIFO"] @@ -28,13 +28,13 @@ FIFO_read["read"] end subgraph BasicFifo["free_rf_fifo BasicFifo"] - BasicFifo_read["read"] BasicFifo_write["write"] + BasicFifo_read["read"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] SimpleWBCacheRefiller_accept_refill["accept_refill"] - SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] SimpleWBCacheRefiller_start_refill["start_refill"] + SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] subgraph Forwarder2["address_fwd Forwarder"] Forwarder2_read["read"] Forwarder2_write["write"] @@ -42,17 +42,17 @@ end subgraph ICache["icache ICache"] ICache_ICache["ICache"] - ICache_accept_res["accept_res"] ICache_ICache1["ICache"] - ICache_issue_req["issue_req"] + ICache_accept_res["accept_res"] ICache_ICache2["ICache"] + ICache_issue_req["issue_req"] subgraph FIFO1["req_fifo FIFO"] - FIFO1_write["write"] FIFO1_read["read"] + FIFO1_write["write"] end subgraph Forwarder3["res_fwd Forwarder"] - Forwarder3_read["read"] Forwarder3_write["write"] + Forwarder3_read["read"] end end subgraph Fetch["fetch Fetch"] @@ -72,8 +72,8 @@ end subgraph RegisterFile["RF RegisterFile"] RegisterFile_read2["read2"] - RegisterFile_write["write"] RegisterFile_free["free"] + RegisterFile_write["write"] RegisterFile_read1["read1"] end subgraph ReorderBuffer["ROB ReorderBuffer"] @@ -84,8 +84,8 @@ ReorderBuffer_peek["peek"] end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] - ExceptionCauseRegister_report["report"] ExceptionCauseRegister_get["get"] + ExceptionCauseRegister_report["report"] end subgraph FuncBlocksUnifier["func_blocks_unifier FuncBlocksUnifier"] subgraph Collector["result_collector Collector"] @@ -107,23 +107,23 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] + RSFuncBlock_select["select"] + RSFuncBlock_insert["insert"] 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_RS2["RS"] RS_update["update"] RS_take["take"] + RS_RS3["RS"] RS_insert["insert"] RS_select["select"] - RS_RS3["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO2["fifo FIFO"] FIFO2_write["write"] FIFO2_read["read"] @@ -136,8 +136,8 @@ ShiftFuncUnit_accept["accept"] ShiftFuncUnit_issue["issue"] subgraph FIFO3["fifo FIFO"] - FIFO3_write["write"] FIFO3_read["read"] + FIFO3_write["write"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] @@ -163,8 +163,8 @@ ExceptionFuncUnit_accept["accept"] ExceptionFuncUnit_issue["issue"] subgraph FIFO6["fifo FIFO"] - FIFO6_write["write"] FIFO6_read["read"] + FIFO6_write["write"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] @@ -173,8 +173,8 @@ subgraph Collector1["collector Collector"] Collector1_method["method"] subgraph Forwarder5["forwarder Forwarder"] - Forwarder5_read["read"] Forwarder5_write["write"] + Forwarder5_read["read"] end subgraph ManyToOneConnectTrans1["connect ManyToOneConnectTrans"] subgraph ConnectTrans2["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -193,11 +193,11 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_precommit["precommit"] - LSUDummy_insert["insert"] LSUDummy_update["update"] + LSUDummy_insert["insert"] LSUDummy_get_result["get_result"] LSUDummy_select["select"] + LSUDummy_precommit["precommit"] subgraph LSUDummyInternals["internal LSUDummyInternals"] LSUDummyInternals_LSUDummyInternals["LSUDummyInternals"] LSUDummyInternals_LSUDummyInternals1["LSUDummyInternals"] @@ -224,12 +224,12 @@ subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister2["register_low CSRRegister"] - CSRRegister2_read["read"] CSRRegister2_write["write"] + CSRRegister2_read["read"] end subgraph CSRRegister3["register_high CSRRegister"] - CSRRegister3_write["write"] CSRRegister3_read["read"] + CSRRegister3_write["write"] end end subgraph CSRRegister4["mcause CSRRegister"] @@ -237,16 +237,16 @@ end end subgraph FIFO7["fifo_decode FIFO"] - FIFO7_read["read"] FIFO7_write["write"] + FIFO7_read["read"] end subgraph Decode["decode Decode"] Decode_Decode["Decode"] end subgraph Scheduler["scheduler Scheduler"] subgraph FIFO8["alloc_rename_buf FIFO"] - FIFO8_read["read"] FIFO8_write["write"] + FIFO8_read["read"] end subgraph RegAllocation["reg_alloc RegAllocation"] RegAllocation_RegAllocation["RegAllocation"] @@ -291,12 +291,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 @@ -319,13 +319,13 @@ WishboneMaster1_WishboneMaster --> Forwarder1_write Forwarder2_read --> SimpleWBCacheRefiller_SimpleWBCacheRefiller SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request - ICache_ICache --> Forwarder3_write + ICache_ICache2 --> Forwarder3_write ICache_ICache1 --> SimpleWBCacheRefiller_start_refill ICache_ICache1 --> Forwarder2_write - ICache_ICache2 --> Forwarder2_write - SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 - WishboneMaster_result --> ICache_ICache2 - Forwarder_read --> ICache_ICache2 + ICache_ICache --> Forwarder2_write + SimpleWBCacheRefiller_accept_refill --> ICache_ICache + WishboneMaster_result --> ICache_ICache + Forwarder_read --> ICache_ICache Fetch_Fetch --> ICache_issue_req Fetch_Fetch --> FIFO1_write Fetch_Fetch --> BasicFifo1_write @@ -346,15 +346,15 @@ FIFO9_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation --> FIFO10_write - FIFO10_read --> RSSelection_RSSelection1 - RSSelection_RSSelection1 --> Forwarder6_write - Forwarder6_read --> RSSelection_RSSelection2 + FIFO10_read --> RSSelection_RSSelection2 + RSSelection_RSSelection2 --> Forwarder6_write Forwarder6_read --> RSSelection_RSSelection - RSFuncBlock_select --> RSSelection_RSSelection2 - RS_select --> RSSelection_RSSelection2 - RSSelection_RSSelection2 --> FIFO11_write + Forwarder6_read --> RSSelection_RSSelection1 + RSFuncBlock_select --> RSSelection_RSSelection + RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO11_write - RSSelection_RSSelection <--> LSUDummy_select + RSSelection_RSSelection1 --> FIFO11_write + RSSelection_RSSelection1 <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -373,26 +373,26 @@ ResultAnnouncement_ResultAnnouncement --> RSFuncBlock_update ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update - RS_RS1 --> WakeupSelect_WakeupSelect + RS_RS --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect RS_take --> WakeupSelect3_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO2_write - RS_RS2 --> WakeupSelect1_WakeupSelect + RS_RS1 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO3_write - RS_RS --> WakeupSelect2_WakeupSelect + RS_RS2 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect --> ExceptionCauseRegister_report WakeupSelect3_WakeupSelect --> ExceptionCauseRegister_report - LSUDummyInternals_LSUDummyInternals2 --> ExceptionCauseRegister_report LSUDummyInternals_LSUDummyInternals --> ExceptionCauseRegister_report + LSUDummyInternals_LSUDummyInternals1 --> ExceptionCauseRegister_report ReorderBuffer_get_indices --> WakeupSelect2_WakeupSelect ReorderBuffer_get_indices --> WakeupSelect3_WakeupSelect - ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals2 ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals + ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals1 WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write RS_RS3 --> WakeupSelect3_WakeupSelect @@ -410,9 +410,9 @@ FIFO4_read --> ConnectTrans4_ConnectTrans ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans - LSUDummyInternals_LSUDummyInternals1 --> WishboneMaster1_request - WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals - Forwarder1_read --> LSUDummyInternals_LSUDummyInternals + LSUDummyInternals_LSUDummyInternals2 --> WishboneMaster1_request + WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals1 + Forwarder1_read --> LSUDummyInternals_LSUDummyInternals1 ConnectTrans_ConnectTrans --> Forwarder4_write ConnectTrans1_ConnectTrans --> Forwarder4_write RSFuncBlock_get_result --> ConnectTrans_ConnectTrans diff --git a/api.html b/api.html index 8175dd87a..d37270aff 100644 --- a/api.html +++ b/api.html @@ -240,7 +240,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/auto_graph.html b/auto_graph.html index 9a5e1a70c..4d42b429b 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -85,21 +85,21 @@ subgraph Core["core Core"] Core_InitFreeRFFifo["InitFreeRFFifo"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] + WishboneMaster_WishboneMaster["WishboneMaster"] WishboneMaster_request["request"] WishboneMaster_result["result"] - WishboneMaster_WishboneMaster["WishboneMaster"] subgraph Forwarder["result Forwarder"] Forwarder_write["write"] Forwarder_read["read"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] - WishboneMaster1_result["result"] WishboneMaster1_WishboneMaster["WishboneMaster"] + WishboneMaster1_result["result"] WishboneMaster1_request["request"] subgraph Forwarder1["result Forwarder"] - Forwarder1_write["write"] Forwarder1_read["read"] + Forwarder1_write["write"] end end subgraph FIFO["fifo_fetch FIFO"] @@ -107,13 +107,13 @@ FIFO_read["read"] end subgraph BasicFifo["free_rf_fifo BasicFifo"] - BasicFifo_read["read"] BasicFifo_write["write"] + BasicFifo_read["read"] end subgraph SimpleWBCacheRefiller["icache_refiller SimpleWBCacheRefiller"] SimpleWBCacheRefiller_accept_refill["accept_refill"] - SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] SimpleWBCacheRefiller_start_refill["start_refill"] + SimpleWBCacheRefiller_SimpleWBCacheRefiller["SimpleWBCacheRefiller"] subgraph Forwarder2["address_fwd Forwarder"] Forwarder2_read["read"] Forwarder2_write["write"] @@ -121,17 +121,17 @@ end subgraph ICache["icache ICache"] ICache_ICache["ICache"] - ICache_accept_res["accept_res"] ICache_ICache1["ICache"] - ICache_issue_req["issue_req"] + ICache_accept_res["accept_res"] ICache_ICache2["ICache"] + ICache_issue_req["issue_req"] subgraph FIFO1["req_fifo FIFO"] - FIFO1_write["write"] FIFO1_read["read"] + FIFO1_write["write"] end subgraph Forwarder3["res_fwd Forwarder"] - Forwarder3_read["read"] Forwarder3_write["write"] + Forwarder3_read["read"] end end subgraph Fetch["fetch Fetch"] @@ -151,8 +151,8 @@ end subgraph RegisterFile["RF RegisterFile"] RegisterFile_read2["read2"] - RegisterFile_write["write"] RegisterFile_free["free"] + RegisterFile_write["write"] RegisterFile_read1["read1"] end subgraph ReorderBuffer["ROB ReorderBuffer"] @@ -163,8 +163,8 @@ ReorderBuffer_peek["peek"] end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] - ExceptionCauseRegister_report["report"] ExceptionCauseRegister_get["get"] + ExceptionCauseRegister_report["report"] end subgraph FuncBlocksUnifier["func_blocks_unifier FuncBlocksUnifier"] subgraph Collector["result_collector Collector"] @@ -186,23 +186,23 @@ MethodProduct_method["method"] end subgraph RSFuncBlock["rs_block_0 RSFuncBlock"] + RSFuncBlock_select["select"] + RSFuncBlock_insert["insert"] 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_RS2["RS"] RS_update["update"] RS_take["take"] + RS_RS3["RS"] RS_insert["insert"] RS_select["select"] - RS_RS3["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_issue["issue"] AluFuncUnit_accept["accept"] + AluFuncUnit_issue["issue"] subgraph FIFO2["fifo FIFO"] FIFO2_write["write"] FIFO2_read["read"] @@ -215,8 +215,8 @@ ShiftFuncUnit_accept["accept"] ShiftFuncUnit_issue["issue"] subgraph FIFO3["fifo FIFO"] - FIFO3_write["write"] FIFO3_read["read"] + FIFO3_write["write"] end end subgraph WakeupSelect1["wakeup_select_1 WakeupSelect"] @@ -242,8 +242,8 @@ ExceptionFuncUnit_accept["accept"] ExceptionFuncUnit_issue["issue"] subgraph FIFO6["fifo FIFO"] - FIFO6_write["write"] FIFO6_read["read"] + FIFO6_write["write"] end end subgraph WakeupSelect3["wakeup_select_3 WakeupSelect"] @@ -252,8 +252,8 @@ subgraph Collector1["collector Collector"] Collector1_method["method"] subgraph Forwarder5["forwarder Forwarder"] - Forwarder5_read["read"] Forwarder5_write["write"] + Forwarder5_read["read"] end subgraph ManyToOneConnectTrans1["connect ManyToOneConnectTrans"] subgraph ConnectTrans2["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -272,11 +272,11 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] - LSUDummy_precommit["precommit"] - LSUDummy_insert["insert"] LSUDummy_update["update"] + LSUDummy_insert["insert"] LSUDummy_get_result["get_result"] LSUDummy_select["select"] + LSUDummy_precommit["precommit"] subgraph LSUDummyInternals["internal LSUDummyInternals"] LSUDummyInternals_LSUDummyInternals["LSUDummyInternals"] LSUDummyInternals_LSUDummyInternals1["LSUDummyInternals"] @@ -303,12 +303,12 @@ subgraph DoubleCounterCSR1["csr_time DoubleCounterCSR"] DoubleCounterCSR1_increment["increment"] subgraph CSRRegister2["register_low CSRRegister"] - CSRRegister2_read["read"] CSRRegister2_write["write"] + CSRRegister2_read["read"] end subgraph CSRRegister3["register_high CSRRegister"] - CSRRegister3_write["write"] CSRRegister3_read["read"] + CSRRegister3_write["write"] end end subgraph CSRRegister4["mcause CSRRegister"] @@ -316,16 +316,16 @@ end end subgraph FIFO7["fifo_decode FIFO"] - FIFO7_read["read"] FIFO7_write["write"] + FIFO7_read["read"] end subgraph Decode["decode Decode"] Decode_Decode["Decode"] end subgraph Scheduler["scheduler Scheduler"] subgraph FIFO8["alloc_rename_buf FIFO"] - FIFO8_read["read"] FIFO8_write["write"] + FIFO8_read["read"] end subgraph RegAllocation["reg_alloc RegAllocation"] RegAllocation_RegAllocation["RegAllocation"] @@ -370,12 +370,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 @@ -398,13 +398,13 @@ WishboneMaster1_WishboneMaster --> Forwarder1_write Forwarder2_read --> SimpleWBCacheRefiller_SimpleWBCacheRefiller SimpleWBCacheRefiller_SimpleWBCacheRefiller --> WishboneMaster_request -ICache_ICache --> Forwarder3_write +ICache_ICache2 --> Forwarder3_write ICache_ICache1 --> SimpleWBCacheRefiller_start_refill ICache_ICache1 --> Forwarder2_write -ICache_ICache2 --> Forwarder2_write -SimpleWBCacheRefiller_accept_refill --> ICache_ICache2 -WishboneMaster_result --> ICache_ICache2 -Forwarder_read --> ICache_ICache2 +ICache_ICache --> Forwarder2_write +SimpleWBCacheRefiller_accept_refill --> ICache_ICache +WishboneMaster_result --> ICache_ICache +Forwarder_read --> ICache_ICache Fetch_Fetch --> ICache_issue_req Fetch_Fetch --> FIFO1_write Fetch_Fetch --> BasicFifo1_write @@ -425,15 +425,15 @@ FIFO9_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation --> FIFO10_write -FIFO10_read --> RSSelection_RSSelection1 -RSSelection_RSSelection1 --> Forwarder6_write -Forwarder6_read --> RSSelection_RSSelection2 +FIFO10_read --> RSSelection_RSSelection2 +RSSelection_RSSelection2 --> Forwarder6_write Forwarder6_read --> RSSelection_RSSelection -RSFuncBlock_select --> RSSelection_RSSelection2 -RS_select --> RSSelection_RSSelection2 -RSSelection_RSSelection2 --> FIFO11_write +Forwarder6_read --> RSSelection_RSSelection1 +RSFuncBlock_select --> RSSelection_RSSelection +RS_select --> RSSelection_RSSelection RSSelection_RSSelection --> FIFO11_write -RSSelection_RSSelection <--> LSUDummy_select +RSSelection_RSSelection1 --> FIFO11_write +RSSelection_RSSelection1 <--> LSUDummy_select FIFO11_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion RegisterFile_read2 --> RSInsertion_RSInsertion @@ -452,26 +452,26 @@ ResultAnnouncement_ResultAnnouncement --> RSFuncBlock_update ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update -RS_RS1 --> WakeupSelect_WakeupSelect +RS_RS --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect RS_take --> WakeupSelect3_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO2_write -RS_RS2 --> WakeupSelect1_WakeupSelect +RS_RS1 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO3_write -RS_RS --> WakeupSelect2_WakeupSelect +RS_RS2 --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect --> ExceptionCauseRegister_report WakeupSelect3_WakeupSelect --> ExceptionCauseRegister_report -LSUDummyInternals_LSUDummyInternals2 --> ExceptionCauseRegister_report LSUDummyInternals_LSUDummyInternals --> ExceptionCauseRegister_report +LSUDummyInternals_LSUDummyInternals1 --> ExceptionCauseRegister_report ReorderBuffer_get_indices --> WakeupSelect2_WakeupSelect ReorderBuffer_get_indices --> WakeupSelect3_WakeupSelect -ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals2 ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals +ReorderBuffer_get_indices --> LSUDummyInternals_LSUDummyInternals1 WakeupSelect2_WakeupSelect --> FIFO4_write WakeupSelect2_WakeupSelect --> FIFO5_write RS_RS3 --> WakeupSelect3_WakeupSelect @@ -489,9 +489,9 @@ FIFO4_read --> ConnectTrans4_ConnectTrans ExceptionFuncUnit_accept --> ConnectTrans5_ConnectTrans FIFO6_read --> ConnectTrans5_ConnectTrans -LSUDummyInternals_LSUDummyInternals1 --> WishboneMaster1_request -WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals -Forwarder1_read --> LSUDummyInternals_LSUDummyInternals +LSUDummyInternals_LSUDummyInternals2 --> WishboneMaster1_request +WishboneMaster1_result --> LSUDummyInternals_LSUDummyInternals1 +Forwarder1_read --> LSUDummyInternals_LSUDummyInternals1 ConnectTrans_ConnectTrans --> Forwarder4_write ConnectTrans1_ConnectTrans --> Forwarder4_write RSFuncBlock_get_result --> ConnectTrans_ConnectTrans @@ -530,7 +530,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/components/icache.html b/components/icache.html index f15665770..c1a2280eb 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

Address mapping example

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

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

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.fu.html b/coreblocks.fu.html index 692668e5d..26d66a2d4 100644 --- a/coreblocks.fu.html +++ b/coreblocks.fu.html @@ -898,7 +898,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.fu.unsigned_multiplication.html b/coreblocks.fu.unsigned_multiplication.html index 33e032214..13c0f68ec 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 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.html b/coreblocks.html index ea78503a8..6abd5561a 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -215,7 +215,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.params.html b/coreblocks.params.html index 9e39249c8..5fa92e2c6 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -2663,7 +2663,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index 34c458ea8..0b579112c 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -348,7 +348,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.scheduler.html b/coreblocks.scheduler.html index f7f7579c4..1389e4048 100644 --- a/coreblocks.scheduler.html +++ b/coreblocks.scheduler.html @@ -191,7 +191,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.stages.html b/coreblocks.stages.html index f1fb7f968..4df237d67 100644 --- a/coreblocks.stages.html +++ b/coreblocks.stages.html @@ -263,7 +263,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.structs_common.html b/coreblocks.structs_common.html index a7d932798..8a0f24588 100644 --- a/coreblocks.structs_common.html +++ b/coreblocks.structs_common.html @@ -454,7 +454,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/coreblocks.utils.html b/coreblocks.utils.html index dd8af740f..56ede6215 100644 --- a/coreblocks.utils.html +++ b/coreblocks.utils.html @@ -165,7 +165,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/genindex.html b/genindex.html index 4dc93ab3b..5ced64628 100644 --- a/genindex.html +++ b/genindex.html @@ -2871,7 +2871,7 @@

Z

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/index.html b/index.html index 0e3a45de2..5bbf69e2d 100644 --- a/index.html +++ b/index.html @@ -221,7 +221,7 @@

Coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

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

Summary

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/modules-coreblocks.html b/modules-coreblocks.html index 8e24a28e9..17560f176 100644 --- a/modules-coreblocks.html +++ b/modules-coreblocks.html @@ -184,7 +184,7 @@

coreblocks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/modules-transactron.html b/modules-transactron.html index c4bd2d5f5..d43c09b80 100644 --- a/modules-transactron.html +++ b/modules-transactron.html @@ -126,7 +126,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/py-modindex.html b/py-modindex.html index 4115c44e3..134515089 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -458,7 +458,7 @@

Python Module Index

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/scheduler/Overview.html b/scheduler/Overview.html index 1466af130..5a497e1eb 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 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/search.html b/search.html index 229ba1224..3e9bf82b4 100644 --- a/search.html +++ b/search.html @@ -101,7 +101,7 @@

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

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

diff --git a/shared_structs/RS.html b/shared_structs/RS.html index c9648f9f6..fd4f167e4 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 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/synthesis/Synthesis.html b/synthesis/Synthesis.html index 946448531..4cb255c39 100644 --- a/synthesis/Synthesis.html +++ b/synthesis/Synthesis.html @@ -151,7 +151,7 @@

Benchmarks

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/transactron.html b/transactron.html index 1ec55c788..84be2cbb5 100644 --- a/transactron.html +++ b/transactron.html @@ -185,7 +185,7 @@

Submodules
-body(m: ~transactron.core.TModule, *, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), out: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 0'd0)) Iterator[Record]
+body(m: ~transactron.core.TModule, *, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), out: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 0'd0), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]] = None) Iterator[Record]

Define method body

The body context manager can be used to define the actions performed by a Method when it’s run. Each assignment added to @@ -207,6 +207,12 @@

SubmodulesReturns @@ -545,7 +551,7 @@

Submodules
-transactron.core.def_method(m: ~transactron.core.TModule, method: ~transactron.core.Method, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1))
+transactron.core.def_method(m: ~transactron.core.TModule, method: ~transactron.core.Method, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]] = None)

Define a method.

This decorator allows to define transactional methods in an elegant way using Python’s def syntax. Internally, def_method @@ -567,6 +573,12 @@

Submodules
-body(m: ~transactron.core.TModule, *, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), out: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 0'd0)) Iterator[Record]
+body(m: ~transactron.core.TModule, *, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), out: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 0'd0), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]] = None) Iterator[Record]

Define method body

The body context manager can be used to define the actions performed by a Method when it’s run. Each assignment added to @@ -929,6 +941,12 @@

SubmodulesReturns @@ -1243,7 +1261,7 @@

Submodules
-transactron.def_method(m: ~transactron.core.TModule, method: ~transactron.core.Method, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1))
+transactron.def_method(m: ~transactron.core.TModule, method: ~transactron.core.Method, ready: amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable = (const 1'd1), validate_arguments: ~typing.Optional[~collections.abc.Callable[[...], amaranth.hdl.ast.Value | int | enum.Enum | amaranth.hdl.ast.ValueCastable]] = None)

Define a method.

This decorator allows to define transactional methods in an elegant way using Python’s def syntax. Internally, def_method @@ -1265,6 +1283,12 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

diff --git a/transactron.lib.html b/transactron.lib.html index 326d0a9f7..ad7f3299d 100644 --- a/transactron.lib.html +++ b/transactron.lib.html @@ -897,7 +897,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.

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

Submodules

© Copyright Kuźnia Rdzeni, 2023. - Last updated on 08:57 2023-11-14. + Last updated on 12:57 2023-11-14.