The write_rd signal is used to tag instructions that write the destination register rd in the same cycle where they are decoded. The uses_rd signal is used to generically tag an instruction that will use the destination register at some point.
In the decoder assignment write_rd is always asserted and uses_rd=write_rd.
S-instructions do not use rd, but the field 11:7 of the instruction is always assigned to the address of the destination register and uses_rd is always asserted.
If by chance the field 11:7 corresponds to a register marked in the scoreboard the instruction stalls the core.
The
write_rd
signal is used to tag instructions that write the destination registerrd
in the same cycle where they are decoded. Theuses_rd
signal is used to generically tag an instruction that will use the destination register at some point.write_rd
is always asserted anduses_rd=write_rd
.rd
, but the field11:7
of the instruction is always assigned to the address of the destination register anduses_rd
is always asserted.11:7
corresponds to a register marked in the scoreboard the instruction stalls the core.The
uses_rd
signal must be explicitly assigned in instructions that do not userd
. https://github.com/pulp-platform/mempool/commit/9c5690622f3fc493a5e42eff9eb655ff85baf758