Design complexity is increasing proportionally with advancing technology. Reusing the same design in different applications and for multiple configurations are ways to deal with this complexity. Often this leads to the addressable registers in a design becoming more complex as well to support a multitude of functionalities.
Unlike simple addressable registers, complex addressable registers are not easy to implement in UVM and RTL using a simple script or an off-the-shelf generator. These complex addressable registers have special functionalities based on the particular application and are used to control various aspects of the design.
Often such registers are used in mission-critical applications. If a designer uses a simple