@User there are two annotation methods in xschem, the one you used is based on a '`push`' method, the 'annotate' procedure 'pushes' operating point data to the annotator elements (as a 'voltage' or 'current' attribute). However this is problematic in hierarchical circuits. Think of a top circuit with two instances of the same differential amplifier. Pushing operating points to the diff-amp can be valid only for one of the two instances, so this can not be done. Another annotation method is based on a '`pull`' method, where these annotators fetch operating point data from the spice .raw file when the circuit is drawn. So if you descend into the first diff-amp or in the second diff-amp you will see annotated data for the first or the second instance, respectively. The information is thus 'dynamic' while the previous 'push' method is 'static'. See the '`sky130_tests/test_analog.sch`' example schematic included in the xschem_sky130 examples. Annotators that use the 'pull' method are:
ngspice_probe.sym
(for voltages) and
ngspice_get_expr.sym
(for currents). The two different annotator types can be used both in the circuit, my suggestion is to use the 'pull' method for the subcircuits so you will be able to see annotated data when descending into them.