Create high granularity local resets in the GEM system
[Based on top of !195.]
As discussed offline multiple times in the past, the recovery mechanism envisioned for GEM consists of very local resets & reconfiguration controlled by the online software (compared to, for example, the global TTC HardReset in the CSC case). In order to implement such a mechanism in the background of regular operations/runs, very local and side effect-less resets must be implemented in firmware.
This is what this merge request aims to do. High granularity local resets are implemented here and there to support the online software needs -- global resets such as the link reset are left untouched, maintaining backward compatibility. One exception is the TTC HardReset which does not trigger any automatic action anymore in the GEM firmware builds -- more finesse on the PROM-less is required. Somehow, this also leads to a simpler software stack since some hacks or race conditions can be removed. Note that the Python scripts have been adjusted to cope with these changes and maintain a functional system.
Deployed in Global runs at P5 since Sunday 7 July 2024. See commit messages for more details.