The following are known limitations of the dmlc compiler at the time of this writing:
bank b { register r[8] ...; }the corresponding attribute (b_r) of the device is defined to be a list attribute. In Python, reading such an attribute will yield a Python list.
However, since the attributes will not be implemented as indexable, manipulation of that list will not propagate back into the device, so e.g. writing
simics> @conf.b_r[2] = 17will have the same effect as the following:
simics> @a = conf.dev.b_r simics> @print a [0, 0, 0, 0, 0, 0, 0, 0] simics> @a[2] = 17 simics> @print a [0, 0, 17, 0, 0, 0, 0, 0] simics> @print conf.dev.b_r [0, 0, 0, 0, 0, 0, 0, 0]in other words, modifying the Python list representation does not change the object that produced the list.
To update one element in the attribute, you need to read the list, modify it, and then write back the whole list to the attribute:
simics> @a = conf.dev.b_r simics> @a[2] = 17 simics> @conf.dev.b_r = a