From 38953222b5fa23ecc9c0dd11158a4bf68061a16a Mon Sep 17 00:00:00 2001 From: tilk Date: Mon, 1 Apr 2024 10:00:29 +0000 Subject: [PATCH] Refactor RISC-V instruction models (#631) --- .doctrees/api.doctree | Bin 21253 -> 21253 bytes .doctrees/auto_graph.doctree | Bin 44476 -> 44485 bytes .doctrees/coreblocks.frontend.decoder.doctree | Bin 454594 -> 455809 bytes .doctrees/coreblocks.params.doctree | Bin 297585 -> 372086 bytes .doctrees/current-graph.doctree | Bin 45697 -> 45706 bytes .doctrees/environment.pickle | Bin 505985 -> 507740 bytes _sources/auto_graph.rst.txt | 350 ++++++------ api.html | 2 +- assumptions.html | 2 +- auto_graph.html | 352 ++++++------ components/icache.html | 2 +- coreblocks.backend.html | 2 +- coreblocks.cache.html | 2 +- coreblocks.core_structs.html | 2 +- coreblocks.frontend.decoder.html | 7 +- coreblocks.frontend.fetch.html | 2 +- coreblocks.frontend.html | 2 +- coreblocks.func_blocks.fu.html | 2 +- ...unc_blocks.fu.unsigned_multiplication.html | 2 +- coreblocks.func_blocks.html | 2 +- coreblocks.func_blocks.interface.html | 2 +- coreblocks.func_blocks.lsu.html | 2 +- coreblocks.html | 2 +- coreblocks.params.html | 537 +++++++++++++++--- coreblocks.peripherals.html | 2 +- coreblocks.priv.csr.html | 2 +- coreblocks.priv.html | 2 +- coreblocks.priv.traps.html | 2 +- coreblocks.scheduler.html | 2 +- current-graph.html | 352 ++++++------ development-environment.html | 2 +- genindex.html | 108 ++-- home.html | 2 +- index.html | 2 +- miscellany/exceptions-summary.html | 2 +- modules-coreblocks.html | 2 +- modules-transactron.html | 2 +- objects.inv | Bin 10555 -> 10616 bytes problem-checklist.html | 2 +- py-modindex.html | 2 +- scheduler/overview.html | 2 +- search.html | 2 +- searchindex.js | 2 +- shared-structs/implementation/rs-impl.html | 2 +- shared-structs/rs.html | 2 +- synthesis/synthesis.html | 2 +- transactions.html | 2 +- transactron.core.html | 2 +- transactron.html | 2 +- transactron.lib.html | 2 +- transactron.testing.html | 2 +- transactron.utils.amaranth_ext.html | 2 +- transactron.utils.html | 2 +- 53 files changed, 1112 insertions(+), 674 deletions(-) diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index da29cf1a2dc0fbaa371d01934fea8cad75ad7164..1eed240193fdd856f3ca3eaa9500228655c7c1a4 100644 GIT binary patch delta 511 zcmZ{hy-ve06onN*B?R;zr9Y||iYOqZ>4HdF`WlQCN*%Yc>e#_{0x!@lV!+-JOD6`T z?jRU>03L-631>jf!glYu_k2FqU9ODf%6R#@kl*g%HR}Ju;5BQjvL)Q z!92n}AQ&Yot#8KmOe+EsU%on>vxw0thG8EB5G*j_LZvmXn+(bZG=VHZ@K&WQ`Rm!d%|C$5z9K3B)uCArXB@5~P2S)!G1P7*V2YK0v_J!KF1ilqIKmRnM~o z delta 488 zcmYk3zfJ-{5XN&+3Q+kYaDtMECK?-#&~OJ*_yRrxG0WcKUAVg?dw;OABC)tc!)$Ly zqlF2DrM(Y8ZDnHPGdP%_SMKc0@B8MP>0Fu4m6v7vHbc2!1BcU*FXNQ$ne0Z!yFRs; z89GcfdBj9yvx$ti0zo{V&_Hlc#^wJxZ7l3a!{0F?G9(Q6)ipjW8RrvClps^a1O`DPpEW(9xI5VoPQlk6MfQ&aS?&4rBA+I_1K*lOO=xPy>$)7N=9jJG!*&P}R zfijI>FVHtC@T4CV^2z3vAQbe9Qb*KY+V%n_hJ-ShbTp-fwJLn-`><@E!B?ja_j(PE zJL(DUu+B^y6G2?uJD03s9ugjVDh%}!q`Rlu5HkyyXQEl(B7&I>KM*0s3JPEW ByZ8VA diff --git a/.doctrees/auto_graph.doctree b/.doctrees/auto_graph.doctree index 2a16c5f4bf742377d25ae77bd36c917b4a4569cd..c34eeb5506db3661ac7e51d44fdf9e0b2629c317 100644 GIT binary patch delta 3100 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 Ir8lMj2Yut2x&QzG diff --git a/.doctrees/coreblocks.frontend.decoder.doctree b/.doctrees/coreblocks.frontend.decoder.doctree index 59d390c37187795418e90beda1a355d318a72aa1..1d3bdd497c5299ccf7df708b7b78dd1973e56976 100644 GIT binary patch delta 14059 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 G(*FT2-#$qI delta 14008 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 diff --git a/.doctrees/coreblocks.params.doctree b/.doctrees/coreblocks.params.doctree index 27fb7cf9ccd635663884d6b5d6e32f30c655b581..4b6fcbd3468b16a1086de592259ef7ee9ec42608 100644 GIT binary patch literal 372086 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 delta 2580 zcmZuyX-r#J7S{6ywlT&SJ8a$o2e2J%vz0AOW5A&Z$W{`V5YwqkP=XWX*&}fzI++w8T7zf5ceU{3c^E zsUMphs}fb4YXYJ4xmmm`ks7aI-isQSMQu4znb&O<~d z0KV1?;%2W3UhO`7l(-$Uy>U32*vd|7OBno=9XAWN) zl5N@_39bg%i=7yA#bKW-m*`aN9ao`*Q-0^E;1q-2Cn8)a%;wTe6Vy}a+%L5VER=(>fFw~lb zK%15QcWasmo7>ib__i!I&~{IZrJw?R!FCh{pU2!QKJt^|VemTp=_^_W1^f4|UG<0d zXM)6y{eFZy)?=*fsDz@!&RvGywo5N(KkxWlgr!-<2G72_9lLx-Iy?JXtQ|c)M}qr) z(-nHzgNL2D2#x7*Gi1f1EfREfYN@@({j@zk2&JxBgvOLi9u`A-eADSbctMHZFC^em zP{pm))oOt!37>Qp3%FXG*J8!|LMriG3hlygyYh*(n(W@`(&No8BlTt9>DtXOZnSl8 z#;!xlSUyzA9y?smK;4^wyFEGrebtjez6rhbTflvrdu@!Dm|Dq`wG|I~t!&(pQ3>w$ zX|T}8)86fSfnhwb^d}=U5QED8QsUjvzXx~wNn-mYSnjux)r=zpHuwf|aAqKz@v=7t zEMl_UKe0)K9m9#J9m-;BhvW<*BZ=r9Qo}V8hwyL{RAhhtWIUWBD%?7$W%VbYFi0Fq zglXg`?hR|$g^@8aNpuBCZVFUmE)vYjXc-A&Wz<9TG@UD>CU)EFABk~iB$+$}xl(hP z(@7i}k}y1Om%7b#=k{q)Gj3%(?5E?Tk^K`XczcSb6> z6LliD0`oRK%o!5wnY2+uQQp%k>XC*@cm(v)11=6t)P@c zS71Q<=?uJg+9e=wa1v$HV}GPb(3&E}oc-0vPVAoYQ7sMO&an;Xo^p__27j0$kxi+w zG(`{L2@XuJcFNW14Je!DN{Xw~&y%V@p4N-K<}zFxOk*?7d@mxo)U)ynM)H_(Nj-M4 zm`FN=FK!Yv|GDVqG|Z)qRHMjS>vXh5lZZ->*XQ*ZyriQrF3xJveJKH=%lx1)mmR<4 zwlu55)!FN?L|r&FmqBNU6y?O6he&qpnYWYOSF`Cv+RI@cygFYXSn*N{8lqVO_N!>V zfUQcTU83pS1O3`%9mVid)Ij!1SffUc+ll(Ok_E4_xt~oP$qqA-hL@t+)kzgSqoURH z&lGUg;a93THADL;L0HwYy!DO@&!(=j{j5*dwPf14LsH0_Cd1CNCPG9hhtF;jq-|&P zIMA-d{j>B~HFlge3rN$sx~DXsoLg<|jpuWOvKY9(qxUZR>0Y^BMFlJ>Jt`JbeyL2t QQ^hBM#wKMWZ~Y+uKklf_Gynhq diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index 9938f9fd5bd6cc2e9c8cdf8ee89c8df2b0b9f0b6..c0a26b5f693b454ceb8c9bb47ef1d6bc8ce41fab 100644 GIT binary patch delta 61072 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 delta 59179 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 BasicFifo2_write - Retirement_Retirement --> BasicFifo2_write - TransactionManager_Retirement_Retirement_cond0 --> BasicFifo2_write - TransactionManager_Retirement_Retirement_cond1 --> BasicFifo2_write + Retirement_Retirement4 --> BasicFifo2_write + TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write + TransactionManager_Retirement_cond1_Retirement --> BasicFifo2_write FIFO6_read --> Core_DiscardBranchVerify WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMasterAdapter_request_read - SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer1 + SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request WishboneMasterAdapter_get_read_response --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 - Serializer_Serializer --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 + Serializer_Serializer1 --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 BasicFifo_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 WishboneMaster_result --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 Forwarder_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> Forwarder2_write - ICache_ICache2 <--> HwCounter4__incr - ICache_ICache1 <--> HwCounter3__incr - ICache_ICache1 <--> HwCounter2__incr - ICache_ICache1 <--> HwCounter1__incr - ICache_ICache1 --> Forwarder3_write - ICache_ICache3 --> SimpleCommonBusCacheRefiller_start_refill - SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache - Forwarder2_read --> ICache_ICache + ICache_ICache3 <--> HwCounter4__incr + ICache_ICache2 <--> HwCounter3__incr + ICache_ICache2 <--> HwCounter2__incr + ICache_ICache2 <--> HwCounter1__incr + ICache_ICache2 --> Forwarder3_write + ICache_ICache --> SimpleCommonBusCacheRefiller_start_refill + SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache1 + Forwarder2_read --> ICache_ICache1 Fetch_Fetch --> ICache_issue_req Fetch_Fetch <--> HwCounter__incr Fetch_Fetch <--> LatencyMeasurer__start @@ -571,25 +571,25 @@ RegAllocation_RegAllocation --> FIFO10_write FIFO10_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename - Retirement_Retirement --> FRAT_rename - TransactionManager_Retirement_Retirement_cond1 --> FRAT_rename + Retirement_Retirement4 --> FRAT_rename + TransactionManager_Retirement_cond1_Retirement --> FRAT_rename Renaming_Renaming --> FIFO11_write FIFO11_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO3_write ROBAllocation_ROBAllocation --> FIFO12_write - FIFO12_read --> RSSelection_RSSelection2 - RSSelection_RSSelection2 --> Forwarder8_write - Forwarder8_read --> RSSelection_RSSelection1 + FIFO12_read --> RSSelection_RSSelection1 + RSSelection_RSSelection1 --> Forwarder8_write Forwarder8_read --> RSSelection_RSSelection3 + Forwarder8_read --> RSSelection_RSSelection2 Forwarder8_read --> RSSelection_RSSelection - RSFuncBlock_select --> RSSelection_RSSelection1 - RS_select --> RSSelection_RSSelection1 - RSSelection_RSSelection1 --> FIFO13_write + RSFuncBlock_select --> RSSelection_RSSelection3 + RS_select --> RSSelection_RSSelection3 RSSelection_RSSelection3 --> FIFO13_write + RSSelection_RSSelection2 --> FIFO13_write RSSelection_RSSelection --> FIFO13_write - RSSelection_RSSelection3 <--> LSUDummy_select + RSSelection_RSSelection2 <--> LSUDummy_select RSSelection_RSSelection <--> CSRUnit_select FIFO13_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion @@ -606,7 +606,7 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume - Retirement_Retirement3 --> Fetch_resume + Retirement_Retirement --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done @@ -616,7 +616,7 @@ ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update ResultAnnouncement_ResultAnnouncement --> CSRUnit_update - RS_RS3 --> WakeupSelect_WakeupSelect + RS_RS1 --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect @@ -624,10 +624,10 @@ RS_take --> WakeupSelect4_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO4_write - RS_RS4 --> WakeupSelect1_WakeupSelect + RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO5_write - RS_RS2 --> WakeupSelect2_WakeupSelect + RS_RS --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect <--> HwCounter5__incr WakeupSelect2_WakeupSelect <--> HwCounter6__incr @@ -639,10 +639,10 @@ ConnectTrans3_ConnectTrans --> BasicFifo4_write WakeupSelect2_WakeupSelect --> FIFO7_write WakeupSelect2_WakeupSelect --> FIFO6_write - RS_RS1 --> WakeupSelect3_WakeupSelect + RS_RS2 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO8_write - RS_RS --> WakeupSelect4_WakeupSelect + RS_RS4 --> WakeupSelect4_WakeupSelect WakeupSelect4_WakeupSelect --> PrivilegedFuncUnit_issue ConnectTrans4_ConnectTrans --> Forwarder5_write ConnectTrans5_ConnectTrans --> Forwarder5_write @@ -661,11 +661,11 @@ CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo5_write LSUDummy_LSUDummy --> Forwarder6_write - TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write TransactionManager_issue_cond0_LSUDummy --> Forwarder6_write - TransactionManager_issue_cond2_LSUDummy --> Forwarder6_write - TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write - TransactionManager_accept_cond0_LSUDummy --> Forwarder6_write + TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write + TransactionManager_LSUDummy_issue_cond2 --> Forwarder6_write + TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write + TransactionManager_LSUDummy_issue_cond1 --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -687,45 +687,45 @@ LSUDummy_get_result --> ConnectTrans2_ConnectTrans Forwarder6_read --> ConnectTrans2_ConnectTrans CSRUnit_get_result --> ConnectTrans3_ConnectTrans - MethodTryProduct_MethodTryProduct --> PrivilegedFuncUnit_precommit - MethodTryProduct_MethodTryProduct <--> InterruptController_mret - MethodTryProduct_MethodTryProduct1 --> LSUDummy_precommit - MethodTryProduct_MethodTryProduct2 --> CSRUnit_precommit + MethodTryProduct_MethodTryProduct1 --> PrivilegedFuncUnit_precommit + MethodTryProduct_MethodTryProduct1 <--> InterruptController_mret + MethodTryProduct_MethodTryProduct2 --> LSUDummy_precommit + MethodTryProduct_MethodTryProduct --> CSRUnit_precommit ConnectTrans9_ConnectTrans --> Forwarder7_write ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo5_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans + ReorderBuffer_peek --> Retirement_Retirement3 + ReorderBuffer_peek --> Retirement_Retirement2 ReorderBuffer_peek --> Retirement_Retirement4 - ReorderBuffer_peek --> Retirement_Retirement1 - ReorderBuffer_peek --> Retirement_Retirement - ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond0 - ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond1 - Retirement_Retirement4 --> MethodTryProduct_method - ExceptionCauseRegister_get --> Retirement_Retirement1 - ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond0 - ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond1 - Retirement_Retirement <--> ReorderBuffer_retire - TransactionManager_Retirement_Retirement_cond0 <--> ReorderBuffer_retire - TransactionManager_Retirement_Retirement_cond1 <--> ReorderBuffer_retire - Retirement_Retirement <--> LatencyMeasurer1__stop - TransactionManager_Retirement_Retirement_cond0 <--> LatencyMeasurer1__stop - TransactionManager_Retirement_Retirement_cond1 <--> LatencyMeasurer1__stop - FIFO3_read --> Retirement_Retirement - FIFO3_read --> TransactionManager_Retirement_Retirement_cond0 - FIFO3_read --> TransactionManager_Retirement_Retirement_cond1 - Retirement_Retirement --> HwExpHistogram1__add - TransactionManager_Retirement_Retirement_cond0 --> HwExpHistogram1__add - TransactionManager_Retirement_Retirement_cond1 --> HwExpHistogram1__add - CoreInstructionCounter_decrement --> Retirement_Retirement - CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond0 - CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond1 - RRAT_peek --> Retirement_Retirement - RRAT_peek --> TransactionManager_Retirement_Retirement_cond1 - Retirement_Retirement --> RegisterFile_free - TransactionManager_Retirement_Retirement_cond0 --> RegisterFile_free - TransactionManager_Retirement_Retirement_cond1 --> RegisterFile_free - CSRRegister1_read --> Retirement_Retirement3 - Retirement_Retirement3 <--> ExceptionCauseRegister_clear + ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement + ReorderBuffer_peek --> TransactionManager_Retirement_cond1_Retirement + Retirement_Retirement3 --> MethodTryProduct_method + ExceptionCauseRegister_get --> Retirement_Retirement2 + ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement + ExceptionCauseRegister_get --> TransactionManager_Retirement_cond1_Retirement + Retirement_Retirement4 <--> ReorderBuffer_retire + TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire + TransactionManager_Retirement_cond1_Retirement <--> ReorderBuffer_retire + Retirement_Retirement4 <--> LatencyMeasurer1__stop + TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop + TransactionManager_Retirement_cond1_Retirement <--> LatencyMeasurer1__stop + FIFO3_read --> Retirement_Retirement4 + FIFO3_read --> TransactionManager_Retirement_cond0_Retirement + FIFO3_read --> TransactionManager_Retirement_cond1_Retirement + Retirement_Retirement4 --> HwExpHistogram1__add + TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add + TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram1__add + CoreInstructionCounter_decrement --> Retirement_Retirement4 + CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement + CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond1_Retirement + RRAT_peek --> Retirement_Retirement4 + RRAT_peek --> TransactionManager_Retirement_cond1_Retirement + Retirement_Retirement4 --> RegisterFile_free + TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free + TransactionManager_Retirement_cond1_Retirement --> RegisterFile_free + CSRRegister1_read --> Retirement_Retirement + Retirement_Retirement <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -737,53 +737,53 @@ CSRRegister6_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans1_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt + TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement_cond0 + TransactionManager_Retirement_cond0_Retirement --> RRAT_commit + TransactionManager_Retirement_cond0_Retirement <--> DoubleCounterCSR2_increment + CSRRegister7_read --> TransactionManager_Retirement_cond0_Retirement + TransactionManager_Retirement_cond0_Retirement --> CSRRegister7_write + CSRRegister8_read --> TransactionManager_Retirement_cond0_Retirement + TransactionManager_Retirement_cond0_Retirement --> CSRRegister8_write + TransactionManager_Retirement_cond0_Retirement <--> HwCounter9__incr + TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement1 + TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement1 + TransactionManager_Retirement_cond0_Retirement --> CSRRegister_write + TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write + TransactionManager_Retirement_cond0_Retirement --> CSRRegister2_write + TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write + TransactionManager_Retirement_cond0_Retirement <--> InterruptController_entry + TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry + TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 + TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write + TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer + TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write + TransactionManager_LSUDummy_issue_cond1 --> BasicFifo1_write + TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request + TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request + TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy1 + TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy1 + TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy1 + TransactionManager_issue_cond0_LSUDummy --> LSURequester_issue + TransactionManager_LSUDummy_issue_cond2 --> LSURequester_issue + TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue TransactionManager_accept_cond1_LSUDummy <--> LSURequester_accept_cond1 WishboneMasterAdapter1_get_read_response --> TransactionManager_accept_cond1_LSUDummy Serializer1_Serializer2 --> TransactionManager_accept_cond1_LSUDummy BasicFifo1_read --> TransactionManager_accept_cond1_LSUDummy - BasicFifo1_read --> TransactionManager_accept_cond0_LSUDummy + BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 WishboneMaster1_result --> TransactionManager_accept_cond1_LSUDummy - WishboneMaster1_result --> TransactionManager_accept_cond0_LSUDummy + WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 Forwarder1_read --> TransactionManager_accept_cond1_LSUDummy - Forwarder1_read --> TransactionManager_accept_cond0_LSUDummy + Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 TransactionManager_accept_cond1_LSUDummy <--> LSUDummy_LSUDummy2 - TransactionManager_accept_cond0_LSUDummy <--> LSUDummy_LSUDummy2 + TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy2 LSURequester_accept --> TransactionManager_accept_cond1_LSUDummy - LSURequester_accept --> TransactionManager_accept_cond0_LSUDummy - TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 - TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write - TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer1 - TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write - TransactionManager_issue_cond1_LSUDummy --> BasicFifo1_write - TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request - TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request - TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy1 - TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy1 - TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy1 - TransactionManager_issue_cond0_LSUDummy --> LSURequester_issue - TransactionManager_issue_cond2_LSUDummy --> LSURequester_issue - TransactionManager_issue_cond1_LSUDummy --> LSURequester_issue - TransactionManager_issue_cond2_LSUDummy <--> LSURequester_issue_cond2 - TransactionManager_issue_cond1_LSUDummy <--> LSURequester_issue_cond1 - TransactionManager_issue_cond1_LSUDummy --> WishboneMasterAdapter1_request_read - TransactionManager_issue_cond1_LSUDummy --> Serializer1_Serializer - TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement2 - TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement2 - TransactionManager_Retirement_Retirement_cond0 --> CSRRegister_write - TransactionManager_Retirement_Retirement_cond1 --> CSRRegister_write - TransactionManager_Retirement_Retirement_cond0 --> CSRRegister2_write - TransactionManager_Retirement_Retirement_cond1 --> CSRRegister2_write - TransactionManager_Retirement_Retirement_cond0 <--> InterruptController_entry - TransactionManager_Retirement_Retirement_cond1 <--> InterruptController_entry - TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement_cond0 - TransactionManager_Retirement_Retirement_cond0 --> RRAT_commit - TransactionManager_Retirement_Retirement_cond0 <--> DoubleCounterCSR2_increment - CSRRegister7_read --> TransactionManager_Retirement_Retirement_cond0 - TransactionManager_Retirement_Retirement_cond0 --> CSRRegister7_write - CSRRegister8_read --> TransactionManager_Retirement_Retirement_cond0 - TransactionManager_Retirement_Retirement_cond0 --> CSRRegister8_write - TransactionManager_Retirement_Retirement_cond0 <--> HwCounter9__incr - TransactionManager_accept_cond0_LSUDummy <--> LSURequester_accept_cond0 - WishboneMasterAdapter1_get_write_response --> TransactionManager_accept_cond0_LSUDummy - Serializer1_Serializer3 --> TransactionManager_accept_cond0_LSUDummy - TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement_cond1 + LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 + TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 + TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 + WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 + Serializer1_Serializer3 --> TransactionManager_LSUDummy_accept_cond0 + TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 + TransactionManager_LSUDummy_issue_cond1 <--> LSURequester_issue_cond1 + TransactionManager_LSUDummy_issue_cond1 --> WishboneMasterAdapter1_request_read + TransactionManager_LSUDummy_issue_cond1 --> Serializer1_Serializer1 diff --git a/api.html b/api.html index 8ab3aed4b..619d20cea 100644 --- a/api.html +++ b/api.html @@ -259,7 +259,7 @@

transactron

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/assumptions.html b/assumptions.html index 46da0f858..b70e554a2 100644 --- a/assumptions.html +++ b/assumptions.html @@ -104,7 +104,7 @@

List of assumptions made during development

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/auto_graph.html b/auto_graph.html index bd241f8d2..6344f33c3 100644 --- a/auto_graph.html +++ b/auto_graph.html @@ -83,24 +83,24 @@ subgraph TransactionModule["TransactionModule"] subgraph CoreTestElaboratable["elaboratable CoreTestElaboratable"] subgraph Core["core Core"] - Core_DiscardBranchVerify["DiscardBranchVerify"] Core_InitFreeRFFifo["InitFreeRFFifo"] + Core_DiscardBranchVerify["DiscardBranchVerify"] subgraph WishboneMaster["wb_master_instr WishboneMaster"] - WishboneMaster_result["result"] WishboneMaster_request["request"] + WishboneMaster_result["result"] WishboneMaster_WishboneMaster["WishboneMaster"] subgraph Forwarder["result Forwarder"] - Forwarder_write["write"] Forwarder_read["read"] + Forwarder_write["write"] end end subgraph WishboneMaster1["wb_master_data WishboneMaster"] - WishboneMaster1_WishboneMaster["WishboneMaster"] WishboneMaster1_request["request"] WishboneMaster1_result["result"] + WishboneMaster1_WishboneMaster["WishboneMaster"] subgraph Forwarder1["result Forwarder"] - Forwarder1_read["read"] Forwarder1_write["write"] + Forwarder1_read["read"] end end subgraph WishboneMasterAdapter["bus_master_instr_adapter WishboneMasterAdapter"] @@ -110,30 +110,30 @@ Serializer_Serializer["Serializer"] Serializer_Serializer1["Serializer"] subgraph BasicFifo["pending_requests BasicFifo"] - BasicFifo_write["write"] BasicFifo_read["read"] + BasicFifo_write["write"] end end end subgraph WishboneMasterAdapter1["bus_master_data_adapter WishboneMasterAdapter"] - WishboneMasterAdapter1_request_read["request_read"] - WishboneMasterAdapter1_request_write["request_write"] WishboneMasterAdapter1_get_read_response["get_read_response"] WishboneMasterAdapter1_get_write_response["get_write_response"] + WishboneMasterAdapter1_request_read["request_read"] + WishboneMasterAdapter1_request_write["request_write"] subgraph Serializer1["bus_serializer Serializer"] Serializer1_Serializer["Serializer"] Serializer1_Serializer1["Serializer"] Serializer1_Serializer2["Serializer"] Serializer1_Serializer3["Serializer"] subgraph BasicFifo1["pending_requests BasicFifo"] - BasicFifo1_read["read"] BasicFifo1_write["write"] + BasicFifo1_read["read"] end end end subgraph CoreInstructionCounter["core_counter CoreInstructionCounter"] - CoreInstructionCounter_decrement["decrement"] CoreInstructionCounter_increment["increment"] + CoreInstructionCounter_decrement["decrement"] end subgraph FIFO["fifo_fetch FIFO"] FIFO_write["write"] @@ -146,13 +146,13 @@ MethodProduct_method["method"] end subgraph BasicFifo2["free_rf_fifo BasicFifo"] - BasicFifo2_write["write"] BasicFifo2_read["read"] + BasicFifo2_write["write"] end subgraph SimpleCommonBusCacheRefiller["icache_refiller SimpleCommonBusCacheRefiller"] - SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] - SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] SimpleCommonBusCacheRefiller_start_refill["start_refill"] + SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller["SimpleCommonBusCacheRefiller"] + SimpleCommonBusCacheRefiller_accept_refill["accept_refill"] SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1["SimpleCommonBusCacheRefiller"] subgraph Forwarder2["resp_fwd Forwarder"] Forwarder2_read["read"] @@ -160,10 +160,10 @@ end end subgraph ICache["icache ICache"] + ICache_issue_req["issue_req"] ICache_ICache["ICache"] - ICache_ICache1["ICache"] ICache_accept_res["accept_res"] - ICache_issue_req["issue_req"] + ICache_ICache1["ICache"] ICache_ICache2["ICache"] ICache_ICache3["ICache"] subgraph HwCounter["perf_loads HwCounter"] @@ -188,8 +188,8 @@ HwExpHistogram__add["_add"] end subgraph FIFO1["fifo FIFO"] - FIFO1_read["read"] FIFO1_write["write"] + FIFO1_read["read"] end end subgraph FIFO2["req_fifo FIFO"] @@ -197,29 +197,29 @@ FIFO2_read["read"] end subgraph Forwarder3["res_fwd Forwarder"] - Forwarder3_read["read"] Forwarder3_write["write"] + Forwarder3_read["read"] end end subgraph FRAT["FRAT FRAT"] FRAT_rename["rename"] end subgraph RRAT["RRAT RRAT"] - RRAT_commit["commit"] RRAT_peek["peek"] + RRAT_commit["commit"] end subgraph RegisterFile["RF RegisterFile"] - RegisterFile_read1["read1"] - RegisterFile_write["write"] RegisterFile_read2["read2"] + RegisterFile_read1["read1"] RegisterFile_free["free"] + RegisterFile_write["write"] end subgraph ReorderBuffer["ROB ReorderBuffer"] - ReorderBuffer_put["put"] ReorderBuffer_get_indices["get_indices"] + ReorderBuffer_retire["retire"] + ReorderBuffer_put["put"] ReorderBuffer_mark_done["mark_done"] ReorderBuffer_peek["peek"] - ReorderBuffer_retire["retire"] subgraph LatencyMeasurer1["perf_rob_wait_time LatencyMeasurer"] LatencyMeasurer1__stop["_stop"] LatencyMeasurer1__start["_start"] @@ -233,13 +233,13 @@ end end subgraph Fetch["fetch Fetch"] - Fetch_Fetch["Fetch"] Fetch_resume["resume"] - Fetch_Fetch1["Fetch"] Fetch_stall_exception["stall_exception"] + Fetch_Fetch["Fetch"] + Fetch_Fetch1["Fetch"] subgraph BasicFifo3["fetch_target_queue BasicFifo"] - BasicFifo3_read["read"] BasicFifo3_write["write"] + BasicFifo3_read["read"] end end subgraph ExceptionCauseRegister["exception_cause_register ExceptionCauseRegister"] @@ -247,8 +247,8 @@ ExceptionCauseRegister_get["get"] ExceptionCauseRegister_clear["clear"] subgraph BasicFifo4["fu_report_fifo BasicFifo"] - BasicFifo4_write["write"] BasicFifo4_read["read"] + BasicFifo4_write["write"] end subgraph ConnectTrans["report_connector ConnectTrans"] ConnectTrans_ConnectTrans["ConnectTrans"] @@ -283,18 +283,18 @@ RSFuncBlock_insert["insert"] subgraph RS["rs RS"] RS_RS["RS"] - RS_update["update"] - RS_take["take"] + RS_select["select"] RS_RS1["RS"] RS_RS2["RS"] - RS_select["select"] + RS_update["update"] RS_RS3["RS"] - RS_RS4["RS"] RS_insert["insert"] + RS_take["take"] + RS_RS4["RS"] end subgraph AluFuncUnit["func_unit_0 AluFuncUnit"] - AluFuncUnit_accept["accept"] AluFuncUnit_issue["issue"] + AluFuncUnit_accept["accept"] subgraph FIFO4["fifo FIFO"] FIFO4_write["write"] FIFO4_read["read"] @@ -315,8 +315,8 @@ WakeupSelect1_WakeupSelect["WakeupSelect"] end subgraph JumpBranchFuncUnit["func_unit_2 JumpBranchFuncUnit"] - JumpBranchFuncUnit_accept["accept"] JumpBranchFuncUnit_issue["issue"] + JumpBranchFuncUnit_accept["accept"] subgraph FIFO6["fifo_branch_resolved FIFO"] FIFO6_read["read"] FIFO6_write["write"] @@ -331,8 +331,8 @@ HwCounter7__incr["_incr"] end subgraph FIFO7["fifo_res FIFO"] - FIFO7_read["read"] FIFO7_write["write"] + FIFO7_read["read"] end end subgraph WakeupSelect2["wakeup_select_2 WakeupSelect"] @@ -350,12 +350,12 @@ WakeupSelect3_WakeupSelect["WakeupSelect"] end subgraph PrivilegedFuncUnit["func_unit_4 PrivilegedFuncUnit"] + PrivilegedFuncUnit_precommit["precommit"] PrivilegedFuncUnit_issue["issue"] PrivilegedFuncUnit_accept["accept"] - PrivilegedFuncUnit_precommit["precommit"] subgraph BasicFifo5["fetch_resume_fifo BasicFifo"] - BasicFifo5_write["write"] BasicFifo5_read["read"] + BasicFifo5_write["write"] end end subgraph WakeupSelect4["wakeup_select_4 WakeupSelect"] @@ -364,8 +364,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 ConnectTrans4["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -387,13 +387,13 @@ end end subgraph LSUDummy["rs_block_1 LSUDummy"] + LSUDummy_get_result["get_result"] + LSUDummy_select["select"] LSUDummy_LSUDummy["LSUDummy"] + LSUDummy_insert["insert"] LSUDummy_precommit["precommit"] - LSUDummy_get_result["get_result"] LSUDummy_LSUDummy1["LSUDummy"] - LSUDummy_insert["insert"] LSUDummy_LSUDummy2["LSUDummy"] - LSUDummy_select["select"] LSUDummy_update["update"] subgraph Forwarder6["forwarder Forwarder"] Forwarder6_write["write"] @@ -401,22 +401,22 @@ end subgraph LSURequester["requester LSURequester"] LSURequester_accept_cond1["accept_cond1"] - LSURequester_issue_cond0["issue_cond0"] + LSURequester_accept["accept"] LSURequester_accept_cond0["accept_cond0"] - LSURequester_issue_cond2["issue_cond2"] + LSURequester_issue_cond0["issue_cond0"] LSURequester_issue["issue"] - LSURequester_accept["accept"] LSURequester_issue_cond1["issue_cond1"] + LSURequester_issue_cond2["issue_cond2"] end end subgraph CSRUnit["rs_block_2 CSRUnit"] - CSRUnit_select["select"] - CSRUnit_update["update"] - CSRUnit_precommit["precommit"] - CSRUnit_get_result["get_result"] + CSRUnit_insert["insert"] CSRUnit_CSRUnit["CSRUnit"] + CSRUnit_precommit["precommit"] CSRUnit_fetch_resume["fetch_resume"] - CSRUnit_insert["insert"] + CSRUnit_update["update"] + CSRUnit_select["select"] + CSRUnit_get_result["get_result"] end subgraph MethodTryProduct["InstructionPrecommitKey_unifier MethodTryProduct"] MethodTryProduct_MethodTryProduct["MethodTryProduct"] @@ -427,8 +427,8 @@ subgraph Collector2["FetchResumeKey_unifier Collector"] Collector2_method["method"] subgraph Forwarder7["forwarder Forwarder"] - Forwarder7_read["read"] Forwarder7_write["write"] + Forwarder7_read["read"] end subgraph ManyToOneConnectTrans2["connect ManyToOneConnectTrans"] subgraph ConnectTrans9["ManyToOneConnectTrans_input_0 ConnectTrans"] @@ -445,16 +445,16 @@ end subgraph InterruptController["interrupt_controller InterruptController"] InterruptController_report_interrupt["report_interrupt"] - InterruptController_entry["entry"] InterruptController_mret["mret"] + InterruptController_entry["entry"] end subgraph GenericCSRRegisters["csr_generic GenericCSRRegisters"] GenericCSRRegisters_GenericCSRRegisters["GenericCSRRegisters"] subgraph MachineModeCSRRegisters["m_mode MachineModeCSRRegisters"] subgraph CSRRegister["mcause CSRRegister"] + CSRRegister_write["write"] CSRRegister__fu_read["_fu_read"] CSRRegister__fu_write["_fu_write"] - CSRRegister_write["write"] end subgraph CSRRegister1["mtvec CSRRegister"] CSRRegister1__fu_read["_fu_read"] @@ -463,8 +463,8 @@ end subgraph CSRRegister2["mepc CSRRegister"] CSRRegister2_read["read"] - CSRRegister2__fu_read["_fu_read"] CSRRegister2__fu_write["_fu_write"] + CSRRegister2__fu_read["_fu_read"] CSRRegister2_write["write"] end end @@ -472,8 +472,8 @@ DoubleCounterCSR_increment["increment"] subgraph CSRRegister3["register_low CSRRegister"] CSRRegister3_read["read"] - CSRRegister3_write["write"] CSRRegister3__fu_read["_fu_read"] + CSRRegister3_write["write"] end subgraph CSRRegister4["register_high CSRRegister"] CSRRegister4__fu_read["_fu_read"] @@ -490,14 +490,14 @@ end subgraph CSRRegister6["register_high CSRRegister"] CSRRegister6_write["write"] - CSRRegister6_read["read"] CSRRegister6__fu_read["_fu_read"] + CSRRegister6_read["read"] end end end subgraph FIFO9["fifo_decode FIFO"] - FIFO9_write["write"] FIFO9_read["read"] + FIFO9_write["write"] end subgraph DecodeStage["decode DecodeStage"] DecodeStage_DecodeStage["DecodeStage"] @@ -514,8 +514,8 @@ RegAllocation_RegAllocation["RegAllocation"] end subgraph FIFO11["rename_out_buf FIFO"] - FIFO11_read["read"] FIFO11_write["write"] + FIFO11_read["read"] end subgraph Renaming["renaming Renaming"] Renaming_Renaming["Renaming"] @@ -528,8 +528,8 @@ ROBAllocation_ROBAllocation["ROBAllocation"] end subgraph FIFO13["rs_select_out_buf FIFO"] - FIFO13_read["read"] FIFO13_write["write"] + FIFO13_read["read"] end subgraph RSSelection["rs_selector RSSelection"] RSSelection_RSSelection["RSSelection"] @@ -549,25 +549,25 @@ ConnectTrans11_ConnectTrans["ConnectTrans"] end subgraph Retirement["retirement Retirement"] + Retirement_core_state["core_state"] Retirement_Retirement["Retirement"] Retirement_Retirement1["Retirement"] - Retirement_core_state["core_state"] - Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement_cond1["Retirement_cond1"] Retirement_Retirement2["Retirement"] Retirement_Retirement3["Retirement"] + Retirement_Retirement_cond0["Retirement_cond0"] Retirement_Retirement4["Retirement"] subgraph DoubleCounterCSR2["instret_csr DoubleCounterCSR"] DoubleCounterCSR2_increment["increment"] subgraph CSRRegister7["register_low CSRRegister"] + CSRRegister7__fu_read["_fu_read"] CSRRegister7_read["read"] CSRRegister7_write["write"] - CSRRegister7__fu_read["_fu_read"] end subgraph CSRRegister8["register_high CSRRegister"] - CSRRegister8_read["read"] - CSRRegister8__fu_read["_fu_read"] CSRRegister8_write["write"] + CSRRegister8__fu_read["_fu_read"] + CSRRegister8_read["read"] end end subgraph HwCounter9["perf_instr_ret HwCounter"] @@ -587,40 +587,40 @@ end end subgraph TransactionManager["transactionManager TransactionManager"] - TransactionManager_issue_cond2_LSUDummy["issue_cond2_LSUDummy"] - TransactionManager_accept_cond1_LSUDummy["accept_cond1_LSUDummy"] - TransactionManager_issue_cond1_LSUDummy["issue_cond1_LSUDummy"] - TransactionManager_accept_cond0_LSUDummy["accept_cond0_LSUDummy"] - TransactionManager_Retirement_Retirement_cond1["Retirement_Retirement_cond1"] + TransactionManager_Retirement_cond0_Retirement["Retirement_cond0_Retirement"] + TransactionManager_Retirement_cond1_Retirement["Retirement_cond1_Retirement"] + TransactionManager_LSUDummy_issue_cond2["LSUDummy_issue_cond2"] TransactionManager_issue_cond0_LSUDummy["issue_cond0_LSUDummy"] - TransactionManager_Retirement_Retirement_cond0["Retirement_Retirement_cond0"] + TransactionManager_LSUDummy_accept_cond0["LSUDummy_accept_cond0"] + TransactionManager_LSUDummy_issue_cond1["LSUDummy_issue_cond1"] + TransactionManager_accept_cond1_LSUDummy["accept_cond1_LSUDummy"] end end Core_InitFreeRFFifo --> BasicFifo2_write -Retirement_Retirement --> BasicFifo2_write -TransactionManager_Retirement_Retirement_cond0 --> BasicFifo2_write -TransactionManager_Retirement_Retirement_cond1 --> BasicFifo2_write +Retirement_Retirement4 --> BasicFifo2_write +TransactionManager_Retirement_cond0_Retirement --> BasicFifo2_write +TransactionManager_Retirement_cond1_Retirement --> BasicFifo2_write FIFO6_read --> Core_DiscardBranchVerify WishboneMaster_WishboneMaster --> Forwarder_write WishboneMaster1_WishboneMaster --> Forwarder1_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMasterAdapter_request_read -SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer1 +SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> Serializer_Serializer SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> BasicFifo_write SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller --> WishboneMaster_request WishboneMasterAdapter_get_read_response --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 -Serializer_Serializer --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 +Serializer_Serializer1 --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 BasicFifo_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 WishboneMaster_result --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 Forwarder_read --> SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 SimpleCommonBusCacheRefiller_SimpleCommonBusCacheRefiller1 --> Forwarder2_write -ICache_ICache2 <--> HwCounter4__incr -ICache_ICache1 <--> HwCounter3__incr -ICache_ICache1 <--> HwCounter2__incr -ICache_ICache1 <--> HwCounter1__incr -ICache_ICache1 --> Forwarder3_write -ICache_ICache3 --> SimpleCommonBusCacheRefiller_start_refill -SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache -Forwarder2_read --> ICache_ICache +ICache_ICache3 <--> HwCounter4__incr +ICache_ICache2 <--> HwCounter3__incr +ICache_ICache2 <--> HwCounter2__incr +ICache_ICache2 <--> HwCounter1__incr +ICache_ICache2 --> Forwarder3_write +ICache_ICache --> SimpleCommonBusCacheRefiller_start_refill +SimpleCommonBusCacheRefiller_accept_refill --> ICache_ICache1 +Forwarder2_read --> ICache_ICache1 Fetch_Fetch --> ICache_issue_req Fetch_Fetch <--> HwCounter__incr Fetch_Fetch <--> LatencyMeasurer__start @@ -650,25 +650,25 @@ RegAllocation_RegAllocation --> FIFO10_write FIFO10_read --> Renaming_Renaming Renaming_Renaming --> FRAT_rename -Retirement_Retirement --> FRAT_rename -TransactionManager_Retirement_Retirement_cond1 --> FRAT_rename +Retirement_Retirement4 --> FRAT_rename +TransactionManager_Retirement_cond1_Retirement --> FRAT_rename Renaming_Renaming --> FIFO11_write FIFO11_read --> ROBAllocation_ROBAllocation ROBAllocation_ROBAllocation --> ReorderBuffer_put ROBAllocation_ROBAllocation <--> LatencyMeasurer1__start ROBAllocation_ROBAllocation --> FIFO3_write ROBAllocation_ROBAllocation --> FIFO12_write -FIFO12_read --> RSSelection_RSSelection2 -RSSelection_RSSelection2 --> Forwarder8_write -Forwarder8_read --> RSSelection_RSSelection1 +FIFO12_read --> RSSelection_RSSelection1 +RSSelection_RSSelection1 --> Forwarder8_write Forwarder8_read --> RSSelection_RSSelection3 +Forwarder8_read --> RSSelection_RSSelection2 Forwarder8_read --> RSSelection_RSSelection -RSFuncBlock_select --> RSSelection_RSSelection1 -RS_select --> RSSelection_RSSelection1 -RSSelection_RSSelection1 --> FIFO13_write +RSFuncBlock_select --> RSSelection_RSSelection3 +RS_select --> RSSelection_RSSelection3 RSSelection_RSSelection3 --> FIFO13_write +RSSelection_RSSelection2 --> FIFO13_write RSSelection_RSSelection --> FIFO13_write -RSSelection_RSSelection3 <--> LSUDummy_select +RSSelection_RSSelection2 <--> LSUDummy_select RSSelection_RSSelection <--> CSRUnit_select FIFO13_read --> RSInsertion_RSInsertion RegisterFile_read1 --> RSInsertion_RSInsertion @@ -685,7 +685,7 @@ Collector2_method --> ConnectTrans11_ConnectTrans Forwarder7_read --> ConnectTrans11_ConnectTrans ConnectTrans11_ConnectTrans --> Fetch_resume -Retirement_Retirement3 --> Fetch_resume +Retirement_Retirement --> Fetch_resume Collector_method --> ResultAnnouncement_ResultAnnouncement Forwarder4_read --> ResultAnnouncement_ResultAnnouncement ResultAnnouncement_ResultAnnouncement --> ReorderBuffer_mark_done @@ -695,7 +695,7 @@ ResultAnnouncement_ResultAnnouncement --> RS_update ResultAnnouncement_ResultAnnouncement --> LSUDummy_update ResultAnnouncement_ResultAnnouncement --> CSRUnit_update -RS_RS3 --> WakeupSelect_WakeupSelect +RS_RS1 --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect_WakeupSelect RS_take --> WakeupSelect1_WakeupSelect RS_take --> WakeupSelect2_WakeupSelect @@ -703,10 +703,10 @@ RS_take --> WakeupSelect4_WakeupSelect WakeupSelect_WakeupSelect --> AluFuncUnit_issue WakeupSelect_WakeupSelect --> FIFO4_write -RS_RS4 --> WakeupSelect1_WakeupSelect +RS_RS3 --> WakeupSelect1_WakeupSelect WakeupSelect1_WakeupSelect --> ShiftFuncUnit_issue WakeupSelect1_WakeupSelect --> FIFO5_write -RS_RS2 --> WakeupSelect2_WakeupSelect +RS_RS --> WakeupSelect2_WakeupSelect WakeupSelect2_WakeupSelect --> JumpBranchFuncUnit_issue WakeupSelect2_WakeupSelect <--> HwCounter5__incr WakeupSelect2_WakeupSelect <--> HwCounter6__incr @@ -718,10 +718,10 @@ ConnectTrans3_ConnectTrans --> BasicFifo4_write WakeupSelect2_WakeupSelect --> FIFO7_write WakeupSelect2_WakeupSelect --> FIFO6_write -RS_RS1 --> WakeupSelect3_WakeupSelect +RS_RS2 --> WakeupSelect3_WakeupSelect WakeupSelect3_WakeupSelect --> ExceptionFuncUnit_issue WakeupSelect3_WakeupSelect --> FIFO8_write -RS_RS --> WakeupSelect4_WakeupSelect +RS_RS4 --> WakeupSelect4_WakeupSelect WakeupSelect4_WakeupSelect --> PrivilegedFuncUnit_issue ConnectTrans4_ConnectTrans --> Forwarder5_write ConnectTrans5_ConnectTrans --> Forwarder5_write @@ -740,11 +740,11 @@ CSRRegister2_read --> ConnectTrans8_ConnectTrans ConnectTrans8_ConnectTrans --> BasicFifo5_write LSUDummy_LSUDummy --> Forwarder6_write -TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write TransactionManager_issue_cond0_LSUDummy --> Forwarder6_write -TransactionManager_issue_cond2_LSUDummy --> Forwarder6_write -TransactionManager_issue_cond1_LSUDummy --> Forwarder6_write -TransactionManager_accept_cond0_LSUDummy --> Forwarder6_write +TransactionManager_accept_cond1_LSUDummy --> Forwarder6_write +TransactionManager_LSUDummy_issue_cond2 --> Forwarder6_write +TransactionManager_LSUDummy_accept_cond0 --> Forwarder6_write +TransactionManager_LSUDummy_issue_cond1 --> Forwarder6_write CSRRegister__fu_read --> CSRUnit_CSRUnit CSRUnit_CSRUnit --> CSRRegister__fu_write CSRRegister1__fu_read --> CSRUnit_CSRUnit @@ -766,45 +766,45 @@ LSUDummy_get_result --> ConnectTrans2_ConnectTrans Forwarder6_read --> ConnectTrans2_ConnectTrans CSRUnit_get_result --> ConnectTrans3_ConnectTrans -MethodTryProduct_MethodTryProduct --> PrivilegedFuncUnit_precommit -MethodTryProduct_MethodTryProduct <--> InterruptController_mret -MethodTryProduct_MethodTryProduct1 --> LSUDummy_precommit -MethodTryProduct_MethodTryProduct2 --> CSRUnit_precommit +MethodTryProduct_MethodTryProduct1 --> PrivilegedFuncUnit_precommit +MethodTryProduct_MethodTryProduct1 <--> InterruptController_mret +MethodTryProduct_MethodTryProduct2 --> LSUDummy_precommit +MethodTryProduct_MethodTryProduct --> CSRUnit_precommit ConnectTrans9_ConnectTrans --> Forwarder7_write ConnectTrans10_ConnectTrans --> Forwarder7_write BasicFifo5_read --> ConnectTrans9_ConnectTrans CSRUnit_fetch_resume --> ConnectTrans10_ConnectTrans +ReorderBuffer_peek --> Retirement_Retirement3 +ReorderBuffer_peek --> Retirement_Retirement2 ReorderBuffer_peek --> Retirement_Retirement4 -ReorderBuffer_peek --> Retirement_Retirement1 -ReorderBuffer_peek --> Retirement_Retirement -ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond0 -ReorderBuffer_peek --> TransactionManager_Retirement_Retirement_cond1 -Retirement_Retirement4 --> MethodTryProduct_method -ExceptionCauseRegister_get --> Retirement_Retirement1 -ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond0 -ExceptionCauseRegister_get --> TransactionManager_Retirement_Retirement_cond1 -Retirement_Retirement <--> ReorderBuffer_retire -TransactionManager_Retirement_Retirement_cond0 <--> ReorderBuffer_retire -TransactionManager_Retirement_Retirement_cond1 <--> ReorderBuffer_retire -Retirement_Retirement <--> LatencyMeasurer1__stop -TransactionManager_Retirement_Retirement_cond0 <--> LatencyMeasurer1__stop -TransactionManager_Retirement_Retirement_cond1 <--> LatencyMeasurer1__stop -FIFO3_read --> Retirement_Retirement -FIFO3_read --> TransactionManager_Retirement_Retirement_cond0 -FIFO3_read --> TransactionManager_Retirement_Retirement_cond1 -Retirement_Retirement --> HwExpHistogram1__add -TransactionManager_Retirement_Retirement_cond0 --> HwExpHistogram1__add -TransactionManager_Retirement_Retirement_cond1 --> HwExpHistogram1__add -CoreInstructionCounter_decrement --> Retirement_Retirement -CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond0 -CoreInstructionCounter_decrement --> TransactionManager_Retirement_Retirement_cond1 -RRAT_peek --> Retirement_Retirement -RRAT_peek --> TransactionManager_Retirement_Retirement_cond1 -Retirement_Retirement --> RegisterFile_free -TransactionManager_Retirement_Retirement_cond0 --> RegisterFile_free -TransactionManager_Retirement_Retirement_cond1 --> RegisterFile_free -CSRRegister1_read --> Retirement_Retirement3 -Retirement_Retirement3 <--> ExceptionCauseRegister_clear +ReorderBuffer_peek --> TransactionManager_Retirement_cond0_Retirement +ReorderBuffer_peek --> TransactionManager_Retirement_cond1_Retirement +Retirement_Retirement3 --> MethodTryProduct_method +ExceptionCauseRegister_get --> Retirement_Retirement2 +ExceptionCauseRegister_get --> TransactionManager_Retirement_cond0_Retirement +ExceptionCauseRegister_get --> TransactionManager_Retirement_cond1_Retirement +Retirement_Retirement4 <--> ReorderBuffer_retire +TransactionManager_Retirement_cond0_Retirement <--> ReorderBuffer_retire +TransactionManager_Retirement_cond1_Retirement <--> ReorderBuffer_retire +Retirement_Retirement4 <--> LatencyMeasurer1__stop +TransactionManager_Retirement_cond0_Retirement <--> LatencyMeasurer1__stop +TransactionManager_Retirement_cond1_Retirement <--> LatencyMeasurer1__stop +FIFO3_read --> Retirement_Retirement4 +FIFO3_read --> TransactionManager_Retirement_cond0_Retirement +FIFO3_read --> TransactionManager_Retirement_cond1_Retirement +Retirement_Retirement4 --> HwExpHistogram1__add +TransactionManager_Retirement_cond0_Retirement --> HwExpHistogram1__add +TransactionManager_Retirement_cond1_Retirement --> HwExpHistogram1__add +CoreInstructionCounter_decrement --> Retirement_Retirement4 +CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond0_Retirement +CoreInstructionCounter_decrement --> TransactionManager_Retirement_cond1_Retirement +RRAT_peek --> Retirement_Retirement4 +RRAT_peek --> TransactionManager_Retirement_cond1_Retirement +Retirement_Retirement4 --> RegisterFile_free +TransactionManager_Retirement_cond0_Retirement --> RegisterFile_free +TransactionManager_Retirement_cond1_Retirement --> RegisterFile_free +CSRRegister1_read --> Retirement_Retirement +Retirement_Retirement <--> ExceptionCauseRegister_clear GenericCSRRegisters_GenericCSRRegisters <--> DoubleCounterCSR_increment CSRRegister3_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister3_write @@ -816,56 +816,56 @@ CSRRegister6_read --> GenericCSRRegisters_GenericCSRRegisters GenericCSRRegisters_GenericCSRRegisters --> CSRRegister6_write AdapterTrans1_AdapterTrans_report_interrupt <--> InterruptController_report_interrupt +TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement_cond0 +TransactionManager_Retirement_cond0_Retirement --> RRAT_commit +TransactionManager_Retirement_cond0_Retirement <--> DoubleCounterCSR2_increment +CSRRegister7_read --> TransactionManager_Retirement_cond0_Retirement +TransactionManager_Retirement_cond0_Retirement --> CSRRegister7_write +CSRRegister8_read --> TransactionManager_Retirement_cond0_Retirement +TransactionManager_Retirement_cond0_Retirement --> CSRRegister8_write +TransactionManager_Retirement_cond0_Retirement <--> HwCounter9__incr +TransactionManager_Retirement_cond0_Retirement <--> Retirement_Retirement1 +TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement1 +TransactionManager_Retirement_cond0_Retirement --> CSRRegister_write +TransactionManager_Retirement_cond1_Retirement --> CSRRegister_write +TransactionManager_Retirement_cond0_Retirement --> CSRRegister2_write +TransactionManager_Retirement_cond1_Retirement --> CSRRegister2_write +TransactionManager_Retirement_cond0_Retirement <--> InterruptController_entry +TransactionManager_Retirement_cond1_Retirement <--> InterruptController_entry +TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 +TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write +TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer +TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write +TransactionManager_LSUDummy_issue_cond1 --> BasicFifo1_write +TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request +TransactionManager_LSUDummy_issue_cond1 --> WishboneMaster1_request +TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy1 +TransactionManager_LSUDummy_issue_cond2 <--> LSUDummy_LSUDummy1 +TransactionManager_LSUDummy_issue_cond1 <--> LSUDummy_LSUDummy1 +TransactionManager_issue_cond0_LSUDummy --> LSURequester_issue +TransactionManager_LSUDummy_issue_cond2 --> LSURequester_issue +TransactionManager_LSUDummy_issue_cond1 --> LSURequester_issue TransactionManager_accept_cond1_LSUDummy <--> LSURequester_accept_cond1 WishboneMasterAdapter1_get_read_response --> TransactionManager_accept_cond1_LSUDummy Serializer1_Serializer2 --> TransactionManager_accept_cond1_LSUDummy BasicFifo1_read --> TransactionManager_accept_cond1_LSUDummy -BasicFifo1_read --> TransactionManager_accept_cond0_LSUDummy +BasicFifo1_read --> TransactionManager_LSUDummy_accept_cond0 WishboneMaster1_result --> TransactionManager_accept_cond1_LSUDummy -WishboneMaster1_result --> TransactionManager_accept_cond0_LSUDummy +WishboneMaster1_result --> TransactionManager_LSUDummy_accept_cond0 Forwarder1_read --> TransactionManager_accept_cond1_LSUDummy -Forwarder1_read --> TransactionManager_accept_cond0_LSUDummy +Forwarder1_read --> TransactionManager_LSUDummy_accept_cond0 TransactionManager_accept_cond1_LSUDummy <--> LSUDummy_LSUDummy2 -TransactionManager_accept_cond0_LSUDummy <--> LSUDummy_LSUDummy2 +TransactionManager_LSUDummy_accept_cond0 <--> LSUDummy_LSUDummy2 LSURequester_accept --> TransactionManager_accept_cond1_LSUDummy -LSURequester_accept --> TransactionManager_accept_cond0_LSUDummy -TransactionManager_issue_cond0_LSUDummy <--> LSURequester_issue_cond0 -TransactionManager_issue_cond0_LSUDummy --> WishboneMasterAdapter1_request_write -TransactionManager_issue_cond0_LSUDummy --> Serializer1_Serializer1 -TransactionManager_issue_cond0_LSUDummy --> BasicFifo1_write -TransactionManager_issue_cond1_LSUDummy --> BasicFifo1_write -TransactionManager_issue_cond0_LSUDummy --> WishboneMaster1_request -TransactionManager_issue_cond1_LSUDummy --> WishboneMaster1_request -TransactionManager_issue_cond0_LSUDummy <--> LSUDummy_LSUDummy1 -TransactionManager_issue_cond2_LSUDummy <--> LSUDummy_LSUDummy1 -TransactionManager_issue_cond1_LSUDummy <--> LSUDummy_LSUDummy1 -TransactionManager_issue_cond0_LSUDummy --> LSURequester_issue -TransactionManager_issue_cond2_LSUDummy --> LSURequester_issue -TransactionManager_issue_cond1_LSUDummy --> LSURequester_issue -TransactionManager_issue_cond2_LSUDummy <--> LSURequester_issue_cond2 -TransactionManager_issue_cond1_LSUDummy <--> LSURequester_issue_cond1 -TransactionManager_issue_cond1_LSUDummy --> WishboneMasterAdapter1_request_read -TransactionManager_issue_cond1_LSUDummy --> Serializer1_Serializer -TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement2 -TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement2 -TransactionManager_Retirement_Retirement_cond0 --> CSRRegister_write -TransactionManager_Retirement_Retirement_cond1 --> CSRRegister_write -TransactionManager_Retirement_Retirement_cond0 --> CSRRegister2_write -TransactionManager_Retirement_Retirement_cond1 --> CSRRegister2_write -TransactionManager_Retirement_Retirement_cond0 <--> InterruptController_entry -TransactionManager_Retirement_Retirement_cond1 <--> InterruptController_entry -TransactionManager_Retirement_Retirement_cond0 <--> Retirement_Retirement_cond0 -TransactionManager_Retirement_Retirement_cond0 --> RRAT_commit -TransactionManager_Retirement_Retirement_cond0 <--> DoubleCounterCSR2_increment -CSRRegister7_read --> TransactionManager_Retirement_Retirement_cond0 -TransactionManager_Retirement_Retirement_cond0 --> CSRRegister7_write -CSRRegister8_read --> TransactionManager_Retirement_Retirement_cond0 -TransactionManager_Retirement_Retirement_cond0 --> CSRRegister8_write -TransactionManager_Retirement_Retirement_cond0 <--> HwCounter9__incr -TransactionManager_accept_cond0_LSUDummy <--> LSURequester_accept_cond0 -WishboneMasterAdapter1_get_write_response --> TransactionManager_accept_cond0_LSUDummy -Serializer1_Serializer3 --> TransactionManager_accept_cond0_LSUDummy -TransactionManager_Retirement_Retirement_cond1 <--> Retirement_Retirement_cond1 +LSURequester_accept --> TransactionManager_LSUDummy_accept_cond0 +TransactionManager_LSUDummy_issue_cond2 <--> LSURequester_issue_cond2 +TransactionManager_LSUDummy_accept_cond0 <--> LSURequester_accept_cond0 +WishboneMasterAdapter1_get_write_response --> TransactionManager_LSUDummy_accept_cond0 +Serializer1_Serializer3 --> TransactionManager_LSUDummy_accept_cond0 +TransactionManager_Retirement_cond1_Retirement <--> Retirement_Retirement_cond1 +TransactionManager_LSUDummy_issue_cond1 <--> LSURequester_issue_cond1 +TransactionManager_LSUDummy_issue_cond1 --> WishboneMasterAdapter1_request_read +TransactionManager_LSUDummy_issue_cond1 --> Serializer1_Serializer1 @@ -876,7 +876,7 @@

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/components/icache.html b/components/icache.html index 4a49c5544..f1d01db6a 100644 --- a/components/icache.html +++ b/components/icache.html @@ -131,7 +131,7 @@

Address mapping example

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.backend.html b/coreblocks.backend.html index 97783cc64..4469ec273 100644 --- a/coreblocks.backend.html +++ b/coreblocks.backend.html @@ -165,7 +165,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.cache.html b/coreblocks.cache.html index b830418b3..ad25052fd 100644 --- a/coreblocks.cache.html +++ b/coreblocks.cache.html @@ -241,7 +241,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.core_structs.html b/coreblocks.core_structs.html index ec3cae5c2..56d08ff47 100644 --- a/coreblocks.core_structs.html +++ b/coreblocks.core_structs.html @@ -157,7 +157,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.frontend.decoder.html b/coreblocks.frontend.decoder.html index 0bf181124..fdc1c3137 100644 --- a/coreblocks.frontend.decoder.html +++ b/coreblocks.frontend.decoder.html @@ -1125,6 +1125,11 @@

SubmodulesOP_IMM_32 = 6
+
+
+RESERVED = 31
+
+
STORE = 8
@@ -1721,7 +1726,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.frontend.fetch.html b/coreblocks.frontend.fetch.html index 15d16af82..f16c298aa 100644 --- a/coreblocks.frontend.fetch.html +++ b/coreblocks.frontend.fetch.html @@ -161,7 +161,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.frontend.html b/coreblocks.frontend.html index cc3d008ad..56f4e3da1 100644 --- a/coreblocks.frontend.html +++ b/coreblocks.frontend.html @@ -125,7 +125,7 @@

Subpackages

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.func_blocks.fu.html b/coreblocks.func_blocks.fu.html index 269d7481f..a478c40ca 100644 --- a/coreblocks.func_blocks.fu.html +++ b/coreblocks.func_blocks.fu.html @@ -867,7 +867,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.func_blocks.fu.unsigned_multiplication.html b/coreblocks.func_blocks.fu.unsigned_multiplication.html index 49ae16f3b..c750e5f24 100644 --- a/coreblocks.func_blocks.fu.unsigned_multiplication.html +++ b/coreblocks.func_blocks.fu.unsigned_multiplication.html @@ -238,7 +238,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.func_blocks.html b/coreblocks.func_blocks.html index 30f4c48f1..9fa98c120 100644 --- a/coreblocks.func_blocks.html +++ b/coreblocks.func_blocks.html @@ -148,7 +148,7 @@

Subpackages

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.func_blocks.interface.html b/coreblocks.func_blocks.interface.html index f3cabe485..6b3067c20 100644 --- a/coreblocks.func_blocks.interface.html +++ b/coreblocks.func_blocks.interface.html @@ -169,7 +169,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.func_blocks.lsu.html b/coreblocks.func_blocks.lsu.html index 3fe2759f1..3df11bc52 100644 --- a/coreblocks.func_blocks.lsu.html +++ b/coreblocks.func_blocks.lsu.html @@ -248,7 +248,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.html b/coreblocks.html index db9ee097d..06040f010 100644 --- a/coreblocks.html +++ b/coreblocks.html @@ -255,7 +255,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.params.html b/coreblocks.params.html index 693db6b54..321277886 100644 --- a/coreblocks.params.html +++ b/coreblocks.params.html @@ -315,24 +315,94 @@

Submodules

coreblocks.params.instr module

+

Based on riscv-python-model by Stefan Wallentowitz +https://github.com/wallento/riscv-python-model

class coreblocks.params.instr.BTypeInstr
-

Bases: RISCVInstr

+

Bases: InstructionFunct3Type

-__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
+__init__(opcode: Opcode, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
-
-
-static encode(opcode: int, imm: int, funct3: int, rs1: int, rs2: int)
-
+
+
+imm
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
-
-
-pack() Value
-
+
+
+rs1
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
+ +
+
+rs2
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
@@ -350,41 +420,104 @@

Submodules
class coreblocks.params.instr.ITypeInstr
-

Bases: RISCVInstr

+

Bases: InstructionFunct3Type

-__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
+__init__(opcode: Opcode, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
-
-
-static encode(opcode: int, rd: int, funct3: int, rs1: int, imm: int)
-
+
+
+imm
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
-
-
-pack() Value
-
+
+
+rd
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
+ +
+
+rs1
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+

class coreblocks.params.instr.IllegalInstr
-

Bases: RISCVInstr

+

Bases: RISCVInstr

__init__()
-
-
-static encode(opcode: int, rd: int, imm: int)
-
- -
-
-pack() Value
+
+
+illegal = (cat (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)) (cat (const 1'd1)))
@@ -392,20 +525,114 @@

Submodules
class coreblocks.params.instr.JTypeInstr
-

Bases: RISCVInstr

+

Bases: RISCVInstr

-__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
+__init__(opcode: Opcode, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable) +
+ +
+
+imm
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
+ +
+
+rd
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
+ +
+ +
+
+class coreblocks.params.instr.RISCVInstr
+

Bases: ABC, ValueCastable

+
+
+__init__(opcode: Opcode)
-
-static encode(opcode: int, rd: int, imm: int)
+
+as_value() Value
-
-pack() Value
+
+encode() int
+
+ +
+
+opcode
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
+ +
+
+shape() Shape
@@ -413,63 +640,241 @@

Submodules
class coreblocks.params.instr.RTypeInstr
-

Bases: RISCVInstr

+

Bases: InstructionFunct3Type, InstructionFunct7Type

-__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct7: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
+__init__(opcode: Opcode, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct7: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
-
-
-static encode(opcode: int, rd: int, funct3: int, rs1: int, rs2: int, funct7: int)
-
+
+
+rd
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
-
-
-pack() Value
-
+
+
+rs1
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
+ +
+
+rs2
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
class coreblocks.params.instr.STypeInstr
-

Bases: RISCVInstr

+

Bases: InstructionFunct3Type

-__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
+__init__(opcode: Opcode, funct3: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs1: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rs2: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
-
-
-static encode(opcode: int, imm: int, funct3: int, rs1: int, rs2: int)
-
+
+
+imm
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
-
-
-pack() Value
-
+
+
+rs1
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
+ +
+
+rs2
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
class coreblocks.params.instr.UTypeInstr
-

Bases: RISCVInstr

+

Bases: RISCVInstr

-__init__(opcode: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
+__init__(opcode: Opcode, rd: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable, imm: amaranth.hdl._ast.Value | int | enum.Enum | amaranth.hdl._ast.ValueCastable)
-
-
-static encode(opcode: int, rd: int, imm: int)
-
+
+
+imm
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
-
-
-pack() Value
-
+
+
+rd
+

Information about a field in a RISC-V instruction.

+
+
Attributes
+
+
base: int | list[int]

A bit position (or a list of positions) where this field (or parts of the field) +would map in the instruction.

+
+
size: int | list[int]

Size (or sizes of the parts) of the field

+
+
signed: bool

Whether this field encodes a signed value.

+
+
offset: int

How many bits of this field should be skipped when encoding the instruction. +For example, the immediate of the jump instruction always skips the least +significant bit. This only affects encoding procedures, so externally (for example +when creating an instance of a instruction) full-size values should be always used.

+
+
static_value: Optional[Value]

Whether the field should have a static value for a given type of an instruction.

+
+
+
+
+
@@ -761,7 +1166,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.peripherals.html b/coreblocks.peripherals.html index 728532bee..848968bce 100644 --- a/coreblocks.peripherals.html +++ b/coreblocks.peripherals.html @@ -746,7 +746,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.priv.csr.html b/coreblocks.priv.csr.html index af2333f5b..d95c1b093 100644 --- a/coreblocks.priv.csr.html +++ b/coreblocks.priv.csr.html @@ -327,7 +327,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.priv.html b/coreblocks.priv.html index 6b8207fad..19dfa2ddb 100644 --- a/coreblocks.priv.html +++ b/coreblocks.priv.html @@ -123,7 +123,7 @@

Subpackages

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.priv.traps.html b/coreblocks.priv.traps.html index 5faa0d2e3..d5f3d1e16 100644 --- a/coreblocks.priv.traps.html +++ b/coreblocks.priv.traps.html @@ -171,7 +171,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/coreblocks.scheduler.html b/coreblocks.scheduler.html index 84a18b3cc..bd962bbeb 100644 --- a/coreblocks.scheduler.html +++ b/coreblocks.scheduler.html @@ -191,7 +191,7 @@

Submodules

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/current-graph.html b/current-graph.html index bc0e1328f..34e8779e0 100644 --- a/current-graph.html +++ b/current-graph.html @@ -89,24 +89,24 @@

Full transaction-method graph

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/development-environment.html b/development-environment.html index 32e3ec008..8f45cf9d2 100644 --- a/development-environment.html +++ b/development-environment.html @@ -209,7 +209,7 @@

tprof.py

© Copyright Kuźnia Rdzeni, 2024. - Last updated on 10:11 2024-03-31. + Last updated on 10:00 2024-04-01.

diff --git a/genindex.html b/genindex.html index abcead821..d83f75916 100644 --- a/genindex.html +++ b/genindex.html @@ -217,6 +217,8 @@

_

  • (coreblocks.params.instr.ITypeInstr method)
  • (coreblocks.params.instr.JTypeInstr method) +
  • +
  • (coreblocks.params.instr.RISCVInstr method)
  • (coreblocks.params.instr.RTypeInstr method)
  • @@ -556,6 +558,8 @@

    A

  • ArgumentsToResultsZipper (class in transactron.lib.reqres)
  • ARITHMETIC (coreblocks.frontend.decoder.optypes.OpType attribute) +
  • +
  • as_value() (coreblocks.params.instr.RISCVInstr method)
  • assertion() (transactron.lib.logging.HardwareLogger method)
  • @@ -1520,28 +1524,16 @@

    E

  • enable() (transactron.testing.testbenchio.TestbenchIO method)
  • -
  • encode() (coreblocks.params.instr.BTypeInstr static method) + + - + -