Implement module that can reference another module

As a user I want to be able to create a module with a unique name that can acquire all the register and bitfield definitions of another module by reference (a kind of inheritance, if you like).

  • Adding a new register to the referencing module must only add the new register to the referenced module, such that all referencing modules acquire the new register from the referenced module.
  • Modifying register or bitfield information in the referencing module must only change the existing information in the referenced module. ie. no new information is added to the referencing module.
  • The referencing module must be able to have a new base address that is distinct from the referenced module; this implies that all the registers in the referencing module also acquire new addresses according to their relationships and constraints.