Previous - Up - Next

Appendix A -   Known Limitations

The following are known limitations of the dmlc compiler at the time of this writing:

Arrays and Simics configuration attributes
Simics configuration attributes are generated for each register, attribute, and connect object in DML. When the object is declared as an array, as in:
    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] = 17
will 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

Previous - Up - Next