Fence.i external handshake
CV32E40X includes an external handshake that will be exercised upon execution of the fence.i instruction.
The handshake is composed of the signals
fencei_flush_ack_i and can for example be used to flush an externally connected cache.
fencei_flush_req_o signal will go high upon executing a
fence.i instruction ([RISC-V-UNPRIV]) once possible earlier store instructions have fully completed (including
emptying of the the write buffer).
fencei_flush_req_o signal will go low again the cycle after sampling both
fencei_flush_req_o has gone low again a branch will be taken to the instruction after the
fence.i thereby flushing possibly prefetched instructions.
Fence instructions are not impacted by the distinction between main and I/O regions (defined in Physical Memory Attribution (PMA)) and execute as a conservative fence on all operations, ignoring the predecessor and successor fields.
fence.i external handshake is not used by the environment of CV32E40X, then it is recommended to tie the
to 1 in order to avoid stalling
fence.i instructions indefinitely.