In the ASIC design industry, there are certain configuration register definition guidelines that RTL designers should follow. This is to achieve the following purposes:
- Allowing software / firmware / verification teams to migrate code to new projects faster
- Improving maintainability and scalability of software / firmware code base
Guidelines for Configuration Register Content
- Do not mix control and status bits in the same configuration register
- Never split the same field into non-contiguous bits or different configuration registers, otherwise it may cause register access atomicity issue
- All configuration registers must be readable
- Make sure no side-effect from configuration register reads (Reading a configuration register should not change its value)
Guidelines for Configuration Register Address Map
- Do not arbitrarily change addresses and names of the same configuration registers as consistency and stability do matter
- Configuration register arrays must be contiguous in address space
- When retiring an obsolete configuration register, leave the address unused and mark it reserved; do not insert a new configuration register at that address
- For each individual block, add a spare register that is both readable and writable. It can be useful during ECO process
- Think about future extension and make room for future configuration registers

Leave a comment