Skip to content

Conversation

@heevasti
Copy link
Collaborator

Refactoring of the HDAWG driver to allow other AWG core <-> channel grouping modes. Also unit-tests fixed.

This ticket is still using the same "old" zhinst packages as before, and not the new "toolkit" packages. The ticket turned out to be quite large when doing together with the refactoring to use the toolkit packages, so it is now split into two.

A couple of TODO:s are remaining related to the "open" and "close" as it is not clear to me if only checking the state of the currently selected AWG core index in the awg_module is enough when the instrument is in another grouping mode than 1x8. If you have some comments on that, I would like to hear it.

…er to allow other AWG core <-> channel grouping modes. Aslo unit-tests fixed.
sequencer_program: str,
replacements: None | dict[str, str | int | float] = None
) -> None:
def compile_and_upload(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

major: Because we now allow grouping mode, we need to allow the user to upload sequencer applications to multiple AWG cores/modules. The current approach is to use the new method set_awg_module_index(...). This seems break away from the traditional approach of this driver where we always specify the awg core that we want to do some operation on. See for example upload_waveform(...) and upload_command_table as examples of cases where we supply the core. By adding a awg_core parameter to this method, we can internalise/privatize the set_awg_module_index() method and keep the api consistent. what do you think?

- For all calls using the "/awgs/n/" the AWG core number (n) is checked based on current grouping mode.

### Fixed
- Now referring to "AWG core", and using `awg_core` in methods where erroneously was referred to "AWG index" and `awg_index`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor: Maybe we should rethink this. The problem with awg_core is that it works okay for 1x8 and 4x2 mode because the core and indices match. but for 2x4 the numbers that should be given are 0 and 2. This feels like an implementation detail that will cause confusion for the user. Maybe we should use an index again? that we internally map to a core value depending on the mode?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants