A register bank (or simply bank) is an abstraction that is is used to group registers in DML, and is the unit for memory mapped communication via the io_memory interface (see Section 3.5.1).
For a register bank to be mapped into a Simics memory space, its function parameter must be set to a nonnegative integer that is unique within the device. The function number is used when setting up a memory space mapping in Simics, and allows a single device object to be configured with any number of address ranges mapped onto different banks (possibly with more than one address range mapped to each single bank).
A bank normally contains a number of register objects, but that is not a requirement. It is possible to define an alternative implementation of the access method of a particular bank, that does not depend on registers.