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)

Module contents