coreblocks.backend package
Submodules
coreblocks.backend.annoucement module
- class coreblocks.backend.annoucement.ResultAnnouncement
Bases:
Elaboratable
Simple result announce unit. It takes an executed instruction and sends its results to ROB, RF and RS. ROB marks the instruction as completed. The RF stores the result value of the instruction. The value is also sent to RS in case if there is an instruction which waits for this value.
Method get_result gets already serialized instruction results, so in case in which we have more than one FU, then their outputs should be connected by ManyToOneConnectTrans to a FIFO.
- __init__(*, gen_params: GenParams, get_result: Method, rob_mark_done: Method, rs_update: Method, rf_write: Method)
- Parameters
- gen_paramsGenParams
Instance of GenParams with parameters which should be used to generate fetch unit.
- get_resultMethod
Method which is invoked to get results of next ready instruction, which should be announced in core. This method assumes that results from different FUs are already serialized.
- rob_mark_doneMethod
Method which is invoked to mark that instruction ended without exception.
- rs_updateMethod
Method which is invoked to pass value which is an output of finished instruction to RS, so that RS can save it if there are instructions which wait for it.
- rf_writeMethod
Method which is invoked to save value which is an output of finished instruction to RF.
- debug_signals()
coreblocks.backend.retirement module
- class coreblocks.backend.retirement.Retirement
Bases:
Elaboratable
- __init__(gen_params: GenParams, *, rob_peek: Method, rob_retire: Method, r_rat_commit: Method, r_rat_peek: Method, free_rf_put: Method, rf_free: Method, exception_cause_get: Method, exception_cause_clear: Method, frat_rename: Method, fetch_continue: Method, instr_decrement: Method, trap_entry: Method, async_interrupt_cause: Method)