module-qc-tools 2.4.1__tar.gz → 2.4.2rc0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/.pre-commit-config.yaml +6 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/PKG-INFO +5 -4
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/README.md +1 -1
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/config.md +53 -6
- module_qc_tools-2.4.2rc0/docs/emulator.md +8 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/history.md +43 -8
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/install.md +2 -2
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/measurements.md +2 -3
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/mkdocs.yml +7 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/pyproject.toml +10 -16
- module_qc_tools-2.4.2rc0/src/module_qc_tools/__init__.py +9 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/_version.py +2 -2
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/ADC_CALIBRATION.py +43 -17
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/ANALOG_READBACK.py +45 -20
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/DATA_TRANSMISSION.py +48 -18
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/INJECTION_CAPACITANCE.py +43 -19
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/IV_MEASURE.py +30 -16
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/LONG_TERM_STABILITY_DCS.py +28 -15
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/LP_MODE.py +42 -16
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/OVERVOLTAGE_PROTECTION.py +42 -18
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/SLDO.py +43 -17
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/UNDERSHUNT_PROTECTION.py +42 -18
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/VCAL_CALIBRATION.py +44 -19
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/__init__.py +0 -2
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/__main__.py +0 -2
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/get_nominal_current.py +9 -9
- module_qc_tools-2.4.2rc0/src/module_qc_tools/cli/globals.py +334 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/hardware_emulator.py +234 -207
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/main.py +14 -8
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/split_old_config.py +19 -21
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/upload_localdb.py +14 -10
- module_qc_tools-2.4.2rc0/src/module_qc_tools/cli/yarr.py +360 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/console.py +2 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_emulator_merged_vmux.json +4 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_itkpixv2.json +6 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_v1.json +6 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_example_separate_vmux_itkpixv2.json +6 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_example_separate_vmux_v1.json +6 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/module_state_template.json +1 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/adc_calibration.py +32 -3
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/analog_readback.py +66 -7
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/data_transmission.py +45 -7
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/injection_capacitance.py +25 -2
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/iv_measure.py +31 -13
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/long_term_stability_dcs.py +33 -9
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/lp_mode.py +24 -4
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/overvoltage_protection.py +25 -4
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/sldo.py +25 -5
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/undershunt_protection.py +24 -4
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/vcal_calibration.py +25 -2
- module_qc_tools-2.4.2rc0/src/module_qc_tools/typing_compat.py +23 -0
- {module_qc_tools-2.4.1/src/module_qc_tools → module_qc_tools-2.4.2rc0/src/module_qc_tools/utils}/__init__.py +3 -8
- module_qc_tools-2.4.2rc0/src/module_qc_tools/utils/hrc.py +26 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/utils/misc.py +1 -4
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/utils/subprocess_emulator.py +2 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/utils/yarr.py +5 -5
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/tbump.toml +2 -2
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/tests/conftest.py +2 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/tests/test_emulator.py +2 -1
- module_qc_tools-2.4.2rc0/tests/test_measurements.py +131 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/tests/test_schema.py +2 -2
- module_qc_tools-2.4.1/emulator/README.md +0 -113
- module_qc_tools-2.4.1/src/module_qc_tools/cli/globals.py +0 -252
- module_qc_tools-2.4.1/src/module_qc_tools/data/schema/common.json +0 -1928
- module_qc_tools-2.4.1/src/module_qc_tools/utils/__init__.py +0 -1
- module_qc_tools-2.4.1/tests/test_measurements.py +0 -54
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/.gitignore +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/.gitlab-ci.yml +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/.gitmodules +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/.linkcheckerrc +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/LICENSE +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/.gitkeep +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/.overrides/main.html +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/.snippets/abbrs.txt +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/.snippets/links.txt +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/assets/css/custom.css +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/development.md +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/index.md +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/meta/authors.md +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/reference/cli.md +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/reference/gen_ref_nav.py +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/fonts.css +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/docs/stylesheets/readme.txt +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_example_felix_merged_vmux_itkpixv2.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_example_felix_merged_vmux_v1.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_example_felix_separate_vmux_itkpixv2.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/hw_config_example_felix_separate_vmux_v1.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/configs/meas_config.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_Lx_dummy.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_Lx_dummy_disabledchip.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_info.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip1.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip2.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip3.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip4.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/emulator/configs/controller/specCfg-rd53b.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/schema/hw_config.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/data/schema/meas_config.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/measurements/__init__.py +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/utils/hardware_control_base.py +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/utils/multimeter.py +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/utils/ntc.py +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/utils/power_supply.py +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/tests/test_package.py +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/tests/test_schema/cutter_pcb_tab.json +0 -0
- {module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/tests/test_schema/cutter_pcb_tab_BAD.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: module_qc_tools
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2rc0
|
|
4
4
|
Summary: Module qc tools
|
|
5
5
|
Project-URL: Homepage, https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools
|
|
6
6
|
Project-URL: Bug Tracker, https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/issues
|
|
@@ -31,12 +31,13 @@ License-File: LICENSE
|
|
|
31
31
|
Classifier: License :: OSI Approved :: MIT License
|
|
32
32
|
Classifier: Operating System :: OS Independent
|
|
33
33
|
Classifier: Programming Language :: Python :: 3
|
|
34
|
-
Requires-Python: >=3.
|
|
34
|
+
Requires-Python: >=3.8
|
|
35
35
|
Requires-Dist: check-jsonschema
|
|
36
36
|
Requires-Dist: importlib-resources; python_version < '3.9'
|
|
37
|
-
Requires-Dist: module-qc-data-tools>=1.
|
|
37
|
+
Requires-Dist: module-qc-data-tools>=1.1.4rc2
|
|
38
38
|
Requires-Dist: module-qc-database-tools>=2.5.0rc0
|
|
39
39
|
Requires-Dist: numpy
|
|
40
|
+
Requires-Dist: packaging
|
|
40
41
|
Requires-Dist: pre-commit
|
|
41
42
|
Requires-Dist: requests
|
|
42
43
|
Requires-Dist: rich
|
|
@@ -45,7 +46,7 @@ Requires-Dist: typer>=0.9.0
|
|
|
45
46
|
Requires-Dist: urllib3<2,>=1.26.20; 'el7.x86_64' in platform_release
|
|
46
47
|
Description-Content-Type: text/markdown
|
|
47
48
|
|
|
48
|
-
# module-qc-tools v2.4.
|
|
49
|
+
# module-qc-tools v2.4.2rc0
|
|
49
50
|
|
|
50
51
|
A general python tool for running ITkPixV1.1 and ITkPixV2 module QC tests
|
|
51
52
|
|
|
@@ -130,6 +130,55 @@ The `ntc` block specifies the path and the commands for handling the NTC
|
|
|
130
130
|
| `n_try` | number of re-tries in case the script fails to read from the ntc |
|
|
131
131
|
| `success_code` | exit status that indicates success. The default is 0. |
|
|
132
132
|
|
|
133
|
+
### Humidity Reading
|
|
134
|
+
|
|
135
|
+
The `hrc` block specifies the path and the commands for handling the humidity
|
|
136
|
+
reading
|
|
137
|
+
|
|
138
|
+
**Configuration settings**
|
|
139
|
+
|
|
140
|
+
| Name | Description |
|
|
141
|
+
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
142
|
+
| `run_dir` | path (relative or absolute) to the directory where the script for humidity reading `ReadHR` should be run |
|
|
143
|
+
| `cmd` | command to read the humidity (relative humidity, RH) from InfluxDB. The command returns a std output which represents the value of measured humidity (float rrepresenting the percentage realitive humidity). For example: when RH = 2.15%, `cmd` returns std output = `2.15`. |
|
|
144
|
+
| `share_vmux` | whether Vmux channels are shorted on the data adapter card or not |
|
|
145
|
+
| `v_mux_channels` | multimeter channel to measure the Vmux for each chip (correspond to each element in the dcv_cmd in the multimeter block) |
|
|
146
|
+
| `n_try` | number of re-tries in case the script fails to read from the ntc |
|
|
147
|
+
| `success_code` | exit status that indicates success. The default is 0. |
|
|
148
|
+
|
|
149
|
+
The script to read the humidity data from InfluxDB can have a format similar to
|
|
150
|
+
the following:
|
|
151
|
+
|
|
152
|
+
```python title="ReadHR.py"
|
|
153
|
+
from influxdb import InfluxDBClient
|
|
154
|
+
import re
|
|
155
|
+
import sys
|
|
156
|
+
|
|
157
|
+
client = InfluxDBClient(
|
|
158
|
+
host="your.host.number",
|
|
159
|
+
port=8086,
|
|
160
|
+
username="your_username",
|
|
161
|
+
password="your_password",
|
|
162
|
+
ssl=False,
|
|
163
|
+
)
|
|
164
|
+
client.switch_database("DB1")
|
|
165
|
+
|
|
166
|
+
query = 'select mean("HR_variable_name_mqtt") from "autogen"."mqtt_consumer" where "your_topic_tag" = \'/your_mqtt_topic_name\' and time > now() -1m ORDER BY time DESC LIMIT 1'
|
|
167
|
+
|
|
168
|
+
result = client.query(query)
|
|
169
|
+
|
|
170
|
+
if not result.error:
|
|
171
|
+
if str(result) != "ResultSet({})":
|
|
172
|
+
mystring = str(result.raw)
|
|
173
|
+
if len(mystring) > 0:
|
|
174
|
+
chunks = re.split(",", mystring)
|
|
175
|
+
hum = re.split("]", chunks[len(chunks) - 1])
|
|
176
|
+
print(hum[0])
|
|
177
|
+
sys.exit(0)
|
|
178
|
+
|
|
179
|
+
sys.exit(1)
|
|
180
|
+
```
|
|
181
|
+
|
|
133
182
|
## Measurement Configuration
|
|
134
183
|
|
|
135
184
|
### tasks
|
|
@@ -139,12 +188,10 @@ layer-dependent power settings:
|
|
|
139
188
|
|
|
140
189
|
**Configuration settings**
|
|
141
190
|
|
|
142
|
-
| Name
|
|
143
|
-
|
|
|
144
|
-
| `v_max`
|
|
145
|
-
| `i_config`
|
|
146
|
-
| `share_vmux` | whether to merge the Vmux channels or not |
|
|
147
|
-
| `v_mux_channels` | multimeter channel to measure the Vmux for each chip (correspond to each element in the dcv_cmd in the multimeter block) |
|
|
191
|
+
| Name | Description |
|
|
192
|
+
| ---------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
193
|
+
| `v_max` | the voltage to be set to the power supply (i.e. the max voltage since the power supply should operate in constant current) |
|
|
194
|
+
| `i_config` | the current at which the module should be configured |
|
|
148
195
|
|
|
149
196
|
The main part of the `tasks` block is to specify all
|
|
150
197
|
[measurements](measurements.md).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Toy emulator for module-qc-tool
|
|
2
|
+
|
|
3
|
+
The emulator uses `module_state.json` to store the current state of the module.
|
|
4
|
+
The initial state (when the module is powered off) is copied from the template
|
|
5
|
+
file `module_state_template.json`.
|
|
6
|
+
|
|
7
|
+
For details on what can be run, view the command line interface documentation
|
|
8
|
+
for [`mqt emulator`][mqt-emulator].
|
|
@@ -12,15 +12,47 @@ and this project adheres to
|
|
|
12
12
|
|
|
13
13
|
**_Changed:_**
|
|
14
14
|
|
|
15
|
+
- Update current (sigma) units in IV progress display (!229)
|
|
16
|
+
- Dropped `emulator-XYZ` executables in favor of `mqt emulator` (!232)
|
|
17
|
+
- Increased minimum supported python version to 3.8 (dropping 3.7) (!237)
|
|
18
|
+
- IV emulator with more realistic values than previous fit (!238)
|
|
19
|
+
|
|
15
20
|
**_Added:_**
|
|
16
21
|
|
|
17
|
-
|
|
22
|
+
- Check for module type when recording HV; add option if no HV is intended;
|
|
23
|
+
error if HV not measurable for non-digital modules (!235)
|
|
24
|
+
- Record bias voltage, leakage current and module temperature during measurement
|
|
25
|
+
(!214); requires `module-qc-data-tools`
|
|
26
|
+
[v1.1.3](https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-data-tools/-/tags/v1.1.3)
|
|
27
|
+
- Humidity measurement (!226)
|
|
18
28
|
|
|
19
|
-
|
|
29
|
+
!!! important
|
|
20
30
|
|
|
21
|
-
|
|
31
|
+
Requires adding a `hrc` block in the hardware config file:
|
|
22
32
|
|
|
23
|
-
|
|
33
|
+
```json
|
|
34
|
+
"hrc": {
|
|
35
|
+
|
|
36
|
+
"run_dir": "../Instruments",
|
|
37
|
+
"cmd": "./ReadHR.py",
|
|
38
|
+
"n_try": 0,
|
|
39
|
+
"success_code": 0
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**_Fixed:_**
|
|
44
|
+
|
|
45
|
+
- Add protection against humidity measurements if the `hrc` block is not
|
|
46
|
+
included in the config (!230)
|
|
47
|
+
- added support for `tags` in `yarr.run_scan`
|
|
48
|
+
- add `yarr` scan utilities for generic yarr scans as well as for MHT, TUN, PFA
|
|
49
|
+
(!225)
|
|
50
|
+
- Added protection in long-term stability dcs test to check the L1/L2 power
|
|
51
|
+
before running (!212)
|
|
52
|
+
- Refactored CLI to improve python-only interactions using [typing.Annotated][]
|
|
53
|
+
(!232)
|
|
54
|
+
|
|
55
|
+
## [2.4.1](https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/tags/v2.4.1) - 2025-03-25 ## {: #mqt-v2.4.1 }
|
|
24
56
|
|
|
25
57
|
**_Fixed:_**
|
|
26
58
|
|
|
@@ -40,10 +72,13 @@ and this project adheres to
|
|
|
40
72
|
- add ability to enable/disable LPM on targeted TX channels (!207)
|
|
41
73
|
- add data merging substest to data transmission test (!218)
|
|
42
74
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
75
|
+
!!! important
|
|
76
|
+
|
|
77
|
+
Requires update of the `yarr` section in the hardware config file:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
"dataMergingCheck_exe": "./bin/dataMergingCheck",
|
|
81
|
+
```
|
|
47
82
|
|
|
48
83
|
- add Iref trim information to output of the AR test (!221)
|
|
49
84
|
- add protection when ramping HV down (!211)
|
|
@@ -92,7 +92,7 @@ package.
|
|
|
92
92
|
$ python -m venv venv
|
|
93
93
|
$ source venv/bin/activate
|
|
94
94
|
$ python -m pip install -U pip
|
|
95
|
-
$ python -m pip install -U pip module-qc-tools==2.4.
|
|
95
|
+
$ python -m pip install -U pip module-qc-tools==2.4.2rc0
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
### via uv
|
|
@@ -101,7 +101,7 @@ $ python -m pip install -U pip module-qc-tools==2.4.1
|
|
|
101
101
|
$ python -m venv venv
|
|
102
102
|
$ source venv/bin/activate
|
|
103
103
|
$ python -m pip install uv
|
|
104
|
-
$ uv pip install module-qc-tools==2.4.
|
|
104
|
+
$ uv pip install module-qc-tools==2.4.2rc0
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
# Usage
|
|
@@ -63,8 +63,7 @@ specified in the folder `schema`. To run the common schema check for all test
|
|
|
63
63
|
outputs, do:
|
|
64
64
|
|
|
65
65
|
```
|
|
66
|
-
check-jsonschema [path to output json files] --schemafile $(
|
|
67
|
-
--prefix)/schema/common.json
|
|
66
|
+
check-jsonschema [path to output json files] --schemafile $(mqdt --prefix)/schema_measurement.json
|
|
68
67
|
|
|
69
68
|
```
|
|
70
69
|
|
|
@@ -79,7 +78,7 @@ check-jsonschema [path to output json files] --schemafile $(module-qc-tools
|
|
|
79
78
|
|
|
80
79
|
```
|
|
81
80
|
check-jsonschema emulator/outputs/SLDO_reference/<timestamp>/chip1.json
|
|
82
|
-
--schemafile $(
|
|
81
|
+
--schemafile $(mqdt --prefix)/schema_measurement.json check-jsonschema
|
|
83
82
|
emulator/outputs/SLDO_reference/<timestamp>/chip1.json --schemafile $(module-qc-tools
|
|
84
83
|
--prefix)/schema/SLDO.json
|
|
85
84
|
```
|
|
@@ -50,6 +50,7 @@ nav:
|
|
|
50
50
|
- About: index.md
|
|
51
51
|
- Installation: install.md
|
|
52
52
|
- Configuration: config.md
|
|
53
|
+
- Emulation: emulator.md
|
|
53
54
|
- Measurements: measurements.md
|
|
54
55
|
- API: reference/api/
|
|
55
56
|
- CLI: reference/cli.md
|
|
@@ -100,11 +101,17 @@ plugins:
|
|
|
100
101
|
merge_init_into_class: true
|
|
101
102
|
separate_signature: true
|
|
102
103
|
show_signature_annotations: true
|
|
104
|
+
docstring_section_style: spacy
|
|
105
|
+
signature_crossrefs: true
|
|
106
|
+
show_symbol_type_heading: true
|
|
107
|
+
show_symbol_type_toc: true
|
|
103
108
|
show_source: true
|
|
104
109
|
# Other
|
|
105
110
|
filters:
|
|
106
111
|
- "!__all__"
|
|
107
112
|
- "!^_[^_]"
|
|
113
|
+
inventories:
|
|
114
|
+
- https://docs.python.org/3/objects.inv
|
|
108
115
|
# to add redirects
|
|
109
116
|
#redirects:
|
|
110
117
|
# redirect_maps:
|
|
@@ -14,19 +14,20 @@ maintainers = [
|
|
|
14
14
|
description = "Module qc tools"
|
|
15
15
|
readme = "README.md"
|
|
16
16
|
license = { file="LICENSE" }
|
|
17
|
-
requires-python = ">=3.
|
|
17
|
+
requires-python = ">=3.8"
|
|
18
18
|
dependencies = [
|
|
19
19
|
"numpy",
|
|
20
20
|
"tabulate",
|
|
21
21
|
"pre-commit",
|
|
22
22
|
"check-jsonschema",
|
|
23
|
-
"module-qc-data-tools >= 1.
|
|
23
|
+
"module-qc-data-tools >= 1.1.4rc2",
|
|
24
24
|
"module-qc-database-tools >= 2.5.0rc0",
|
|
25
25
|
'importlib_resources; python_version < "3.9"',
|
|
26
26
|
"requests",
|
|
27
27
|
'urllib3>=1.26.20,<2; "el7.x86_64" in platform_release',
|
|
28
28
|
"typer>=0.9.0",
|
|
29
29
|
"rich",
|
|
30
|
+
"packaging",
|
|
30
31
|
]
|
|
31
32
|
classifiers = [
|
|
32
33
|
"Programming Language :: Python :: 3",
|
|
@@ -43,18 +44,6 @@ classifiers = [
|
|
|
43
44
|
[project.scripts]
|
|
44
45
|
module-qc-tools = "module_qc_tools.cli:app"
|
|
45
46
|
"mqt" = "module_qc_tools.cli:app"
|
|
46
|
-
emulator-scanConsole = "module_qc_tools.cli.hardware_emulator:run_scanConsole"
|
|
47
|
-
emulator-write-register = "module_qc_tools.cli.hardware_emulator:run_write_register"
|
|
48
|
-
emulator-read-register = "module_qc_tools.cli.hardware_emulator:run_read_register"
|
|
49
|
-
emulator-read-adc = "module_qc_tools.cli.hardware_emulator:run_read_adc"
|
|
50
|
-
emulator-read-ringosc = "module_qc_tools.cli.hardware_emulator:run_read_ringosc"
|
|
51
|
-
emulator-data-merging-check = "module_qc_tools.cli.hardware_emulator:run_dataMergingCheck"
|
|
52
|
-
emulator-eye-diagram = "module_qc_tools.cli.hardware_emulator:run_eyeDiagram"
|
|
53
|
-
emulator-switch-lpm = "module_qc_tools.cli.hardware_emulator:run_switchLPM"
|
|
54
|
-
emulator-control-ps = "module_qc_tools.cli.hardware_emulator:run_control_PS"
|
|
55
|
-
emulator-control-hv = "module_qc_tools.cli.hardware_emulator:run_control_HV"
|
|
56
|
-
emulator-measureV = "module_qc_tools.cli.hardware_emulator:run_measureV"
|
|
57
|
-
emulator-measureT = "module_qc_tools.cli.hardware_emulator:run_measureT"
|
|
58
47
|
measurement-ADC-CALIBRATION = "module_qc_tools.cli.ADC_CALIBRATION:app"
|
|
59
48
|
measurement-ANALOG-READBACK = "module_qc_tools.cli.ANALOG_READBACK:app"
|
|
60
49
|
measurement-DATA-TRANSMISSION = "module_qc_tools.cli.DATA_TRANSMISSION:app"
|
|
@@ -117,7 +106,7 @@ dependencies = [
|
|
|
117
106
|
test = "pytest -ra {args}"
|
|
118
107
|
|
|
119
108
|
[[tool.hatch.envs.dev.matrix]]
|
|
120
|
-
python = ["3.
|
|
109
|
+
python = ["3.8", "3.9", "3.10", "3.11", "3.12", "pypy3.8"]
|
|
121
110
|
|
|
122
111
|
[tool.hatch.envs.docs]
|
|
123
112
|
template = "docs"
|
|
@@ -146,6 +135,8 @@ dependencies = [
|
|
|
146
135
|
"mdx-truly-sane-lists", # for 2-space indented lists (https://github.com/mkdocs/mkdocs/issues/545)
|
|
147
136
|
# formatting signatures
|
|
148
137
|
"black>23",
|
|
138
|
+
# https://github.com/mkdocs/mkdocs-click/issues/78
|
|
139
|
+
"mkdocs-autorefs",
|
|
149
140
|
]
|
|
150
141
|
|
|
151
142
|
[tool.hatch.envs.docs.env-vars]
|
|
@@ -191,6 +182,9 @@ ignore = [
|
|
|
191
182
|
"PT004", # Incorrect check, usefixtures is the correct way to do this
|
|
192
183
|
"RUF012", # Would require a lot of ClassVar's
|
|
193
184
|
]
|
|
185
|
+
# enable below when we hit python 3.10 minimum: https://github.com/fastapi/typer/discussions/802#discussioncomment-12759260
|
|
186
|
+
#isort.required-imports = ["from __future__ import annotations"]
|
|
187
|
+
typing-modules = ["module_qc_tools.typing_compat"]
|
|
194
188
|
|
|
195
189
|
[tool.ruff.lint.flake8-tidy-imports.banned-api]
|
|
196
190
|
"typing.Callable".msg = "Use collections.abc.Callable instead."
|
|
@@ -206,7 +200,7 @@ ignore = [
|
|
|
206
200
|
"src/module_qc_tools/cli/hardware_emulator.py" = ["B008"]
|
|
207
201
|
|
|
208
202
|
[tool.pylint]
|
|
209
|
-
master.py-version = "3.
|
|
203
|
+
master.py-version = "3.8"
|
|
210
204
|
master.ignore-paths= ["src/module_qc_tools/_version.py"]
|
|
211
205
|
reports.output-format = "colorized"
|
|
212
206
|
similarities.ignore-imports = "yes"
|
|
@@ -17,5 +17,5 @@ __version__: str
|
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
|
18
18
|
version_tuple: VERSION_TUPLE
|
|
19
19
|
|
|
20
|
-
__version__ = version = '2.4.
|
|
21
|
-
__version_tuple__ = version_tuple = (2, 4,
|
|
20
|
+
__version__ = version = '2.4.2rc0'
|
|
21
|
+
__version_tuple__ = version_tuple = (2, 4, 2, 'rc0')
|
{module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/ADC_CALIBRATION.py
RENAMED
|
@@ -2,27 +2,42 @@ import logging
|
|
|
2
2
|
from datetime import datetime
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from tempfile import TemporaryDirectory
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
6
|
+
import itksn
|
|
7
7
|
import typer
|
|
8
|
-
from module_qc_data_tools import (
|
|
8
|
+
from module_qc_data_tools.qcDataFrame import (
|
|
9
|
+
outputDataFrame,
|
|
10
|
+
)
|
|
11
|
+
from module_qc_data_tools.utils import (
|
|
12
|
+
get_chip_type_from_serial_number,
|
|
9
13
|
get_layer_from_sn,
|
|
10
14
|
get_sn_from_connectivity,
|
|
11
|
-
outputDataFrame,
|
|
12
15
|
save_dict_list,
|
|
13
16
|
)
|
|
14
17
|
from module_qc_database_tools.utils import (
|
|
15
18
|
get_BOMCode_from_file,
|
|
16
|
-
get_chip_type_from_serial_number,
|
|
17
19
|
)
|
|
18
20
|
|
|
19
21
|
from module_qc_tools.cli.globals import (
|
|
20
22
|
CONTEXT_SETTINGS,
|
|
21
|
-
OPTIONS,
|
|
22
23
|
LogLevel,
|
|
24
|
+
OPTION_bias,
|
|
25
|
+
OPTION_config_hw,
|
|
26
|
+
OPTION_config_meas,
|
|
27
|
+
OPTION_debug_gnd,
|
|
28
|
+
OPTION_module_connectivity,
|
|
29
|
+
OPTION_output_dir,
|
|
30
|
+
OPTION_perchip,
|
|
31
|
+
OPTION_save_local,
|
|
32
|
+
OPTION_site,
|
|
33
|
+
OPTION_use_calib_ADC,
|
|
34
|
+
OPTION_use_pixel_config,
|
|
35
|
+
OPTION_verbosity,
|
|
36
|
+
check_module_connectivity,
|
|
23
37
|
)
|
|
24
38
|
from module_qc_tools.console import console
|
|
25
39
|
from module_qc_tools.measurements.adc_calibration import run
|
|
40
|
+
from module_qc_tools.utils import datapath as mqt_data
|
|
26
41
|
from module_qc_tools.utils.misc import (
|
|
27
42
|
add_identifiers_metadata,
|
|
28
43
|
copytree,
|
|
@@ -42,19 +57,23 @@ logger = logging.getLogger("measurement")
|
|
|
42
57
|
|
|
43
58
|
@app.command()
|
|
44
59
|
def main(
|
|
45
|
-
hw_config_path:
|
|
46
|
-
meas_config_path:
|
|
47
|
-
base_output_dir:
|
|
48
|
-
module_connectivity:
|
|
49
|
-
_verbosity:
|
|
50
|
-
perchip:
|
|
51
|
-
use_pixel_config:
|
|
52
|
-
institution:
|
|
53
|
-
debug_gnd:
|
|
54
|
-
save_local:
|
|
55
|
-
use_calib_adc:
|
|
60
|
+
hw_config_path: OPTION_config_hw = None,
|
|
61
|
+
meas_config_path: OPTION_config_meas = mqt_data / "configs" / "meas_config.json",
|
|
62
|
+
base_output_dir: OPTION_output_dir = Path("outputs"),
|
|
63
|
+
module_connectivity: OPTION_module_connectivity = None,
|
|
64
|
+
_verbosity: OPTION_verbosity = LogLevel.info,
|
|
65
|
+
perchip: OPTION_perchip = False,
|
|
66
|
+
use_pixel_config: OPTION_use_pixel_config = False,
|
|
67
|
+
institution: OPTION_site = "",
|
|
68
|
+
debug_gnd: OPTION_debug_gnd = False,
|
|
69
|
+
save_local: OPTION_save_local = True,
|
|
70
|
+
use_calib_adc: OPTION_use_calib_ADC = False,
|
|
71
|
+
bias: OPTION_bias = True,
|
|
56
72
|
):
|
|
57
73
|
"""run() creates the qcDataFrame where the measurements are stored in the qcDataFrame."""
|
|
74
|
+
check_module_connectivity(
|
|
75
|
+
hw_config_path=hw_config_path, module_connectivity=module_connectivity
|
|
76
|
+
)
|
|
58
77
|
|
|
59
78
|
timestart = datetime.now().strftime("%Y-%m-%d_%H%M%S")
|
|
60
79
|
|
|
@@ -96,8 +115,15 @@ def main(
|
|
|
96
115
|
|
|
97
116
|
# initialize hardware
|
|
98
117
|
ps = power_supply(config["power_supply"])
|
|
118
|
+
hv = power_supply(config["high_voltage"], name="high_voltage", is_hv=True)
|
|
99
119
|
yr = yarr(config["yarr"])
|
|
100
120
|
|
|
121
|
+
if not bias or any(
|
|
122
|
+
item in itksn.parse(module_serial.encode("utf-8")).component_code.lower()
|
|
123
|
+
for item in ["digital", "dummy"]
|
|
124
|
+
):
|
|
125
|
+
hv = None
|
|
126
|
+
|
|
101
127
|
if not use_pixel_config:
|
|
102
128
|
yr.omit_pixel_config()
|
|
103
129
|
|
|
@@ -110,7 +136,7 @@ def main(
|
|
|
110
136
|
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
111
137
|
|
|
112
138
|
try:
|
|
113
|
-
data = run(config, ps, yr, layer, bom, debug_gnd)
|
|
139
|
+
data = run(config, ps, hv, yr, layer, bom, debug_gnd)
|
|
114
140
|
except KeyboardInterrupt:
|
|
115
141
|
logger.info("KeyboardInterrupt")
|
|
116
142
|
yr.remove_tmp_connectivity()
|
{module_qc_tools-2.4.1 → module_qc_tools-2.4.2rc0}/src/module_qc_tools/cli/ANALOG_READBACK.py
RENAMED
|
@@ -2,23 +2,35 @@ import logging
|
|
|
2
2
|
from datetime import datetime
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from tempfile import TemporaryDirectory
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
6
|
+
import itksn
|
|
7
7
|
import typer
|
|
8
|
-
from module_qc_data_tools import (
|
|
9
|
-
get_layer_from_sn,
|
|
10
|
-
get_sn_from_connectivity,
|
|
8
|
+
from module_qc_data_tools.qcDataFrame import (
|
|
11
9
|
outputDataFrame,
|
|
12
|
-
save_dict_list,
|
|
13
10
|
)
|
|
14
|
-
from
|
|
11
|
+
from module_qc_data_tools.utils import (
|
|
15
12
|
get_chip_type_from_serial_number,
|
|
13
|
+
get_layer_from_sn,
|
|
14
|
+
get_sn_from_connectivity,
|
|
15
|
+
save_dict_list,
|
|
16
16
|
)
|
|
17
17
|
|
|
18
18
|
from module_qc_tools.cli.globals import (
|
|
19
19
|
CONTEXT_SETTINGS,
|
|
20
|
-
OPTIONS,
|
|
21
20
|
LogLevel,
|
|
21
|
+
OPTION_bias,
|
|
22
|
+
OPTION_config_hw,
|
|
23
|
+
OPTION_config_meas,
|
|
24
|
+
OPTION_debug_gnd,
|
|
25
|
+
OPTION_module_connectivity,
|
|
26
|
+
OPTION_output_dir,
|
|
27
|
+
OPTION_perchip,
|
|
28
|
+
OPTION_save_local,
|
|
29
|
+
OPTION_site,
|
|
30
|
+
OPTION_use_calib_ADC,
|
|
31
|
+
OPTION_use_pixel_config,
|
|
32
|
+
OPTION_verbosity,
|
|
33
|
+
check_module_connectivity,
|
|
22
34
|
)
|
|
23
35
|
from module_qc_tools.console import console
|
|
24
36
|
from module_qc_tools.measurements.analog_readback import (
|
|
@@ -27,6 +39,7 @@ from module_qc_tools.measurements.analog_readback import (
|
|
|
27
39
|
run_vdda_vddd_vs_trim,
|
|
28
40
|
run_vmeas,
|
|
29
41
|
)
|
|
42
|
+
from module_qc_tools.utils import datapath as mqt_data
|
|
30
43
|
from module_qc_tools.utils.misc import (
|
|
31
44
|
add_identifiers_metadata,
|
|
32
45
|
copytree,
|
|
@@ -46,21 +59,25 @@ TEST_TYPE = Path(__file__).stem
|
|
|
46
59
|
|
|
47
60
|
@app.command()
|
|
48
61
|
def main(
|
|
49
|
-
hw_config_path:
|
|
50
|
-
meas_config_path:
|
|
51
|
-
base_output_dir:
|
|
52
|
-
module_connectivity:
|
|
53
|
-
_verbosity:
|
|
54
|
-
perchip:
|
|
55
|
-
use_pixel_config:
|
|
56
|
-
institution:
|
|
57
|
-
use_calib_adc:
|
|
58
|
-
save_local:
|
|
59
|
-
debug_gnd:
|
|
62
|
+
hw_config_path: OPTION_config_hw = ...,
|
|
63
|
+
meas_config_path: OPTION_config_meas = mqt_data / "configs" / "meas_config.json",
|
|
64
|
+
base_output_dir: OPTION_output_dir = Path("outputs"),
|
|
65
|
+
module_connectivity: OPTION_module_connectivity = None,
|
|
66
|
+
_verbosity: OPTION_verbosity = LogLevel.info,
|
|
67
|
+
perchip: OPTION_perchip = False,
|
|
68
|
+
use_pixel_config: OPTION_use_pixel_config = False,
|
|
69
|
+
institution: OPTION_site = "",
|
|
70
|
+
use_calib_adc: OPTION_use_calib_ADC = False,
|
|
71
|
+
save_local: OPTION_save_local = True,
|
|
72
|
+
debug_gnd: OPTION_debug_gnd = False,
|
|
73
|
+
bias: OPTION_bias = True,
|
|
60
74
|
):
|
|
61
75
|
"""
|
|
62
76
|
run_xyz() creates the qcDataFrame where the measurements are stored in the qcDataFrame.
|
|
63
77
|
"""
|
|
78
|
+
check_module_connectivity(
|
|
79
|
+
hw_config_path=hw_config_path, module_connectivity=module_connectivity
|
|
80
|
+
)
|
|
64
81
|
|
|
65
82
|
timestart = datetime.now().strftime("%Y-%m-%d_%H%M%S")
|
|
66
83
|
|
|
@@ -97,8 +114,15 @@ def main(
|
|
|
97
114
|
|
|
98
115
|
# initialize hardware
|
|
99
116
|
ps = power_supply(config["power_supply"])
|
|
117
|
+
hv = power_supply(config["high_voltage"], name="high_voltage", is_hv=True)
|
|
100
118
|
yr = yarr(config["yarr"])
|
|
101
119
|
|
|
120
|
+
if not bias or any(
|
|
121
|
+
item in itksn.parse(module_serial.encode("utf-8")).component_code.lower()
|
|
122
|
+
for item in ["digital", "dummy"]
|
|
123
|
+
):
|
|
124
|
+
hv = None
|
|
125
|
+
|
|
102
126
|
if not use_pixel_config:
|
|
103
127
|
yr.omit_pixel_config()
|
|
104
128
|
|
|
@@ -107,7 +131,7 @@ def main(
|
|
|
107
131
|
|
|
108
132
|
# Measure internal vmux
|
|
109
133
|
try:
|
|
110
|
-
data = run_vmeas(config, ps, yr, layer, use_calib_adc)
|
|
134
|
+
data = run_vmeas(config, ps, hv, yr, layer, use_calib_adc)
|
|
111
135
|
except KeyboardInterrupt:
|
|
112
136
|
logger.info("KeyboardInterrupt")
|
|
113
137
|
yr.remove_tmp_connectivity()
|
|
@@ -123,6 +147,7 @@ def main(
|
|
|
123
147
|
data_vdda_vddd_vs_trim = run_vdda_vddd_vs_trim(
|
|
124
148
|
config,
|
|
125
149
|
ps,
|
|
150
|
+
hv,
|
|
126
151
|
yr,
|
|
127
152
|
layer,
|
|
128
153
|
debug_gnd,
|
|
@@ -154,7 +179,7 @@ def main(
|
|
|
154
179
|
|
|
155
180
|
# Measure temperature at the end of the measurement to ensure temperature stability
|
|
156
181
|
try:
|
|
157
|
-
data_tempmeas = run_tmeas(config, ps, yr, layer, use_calib_adc)
|
|
182
|
+
data_tempmeas = run_tmeas(config, ps, hv, yr, layer, use_calib_adc)
|
|
158
183
|
except KeyboardInterrupt:
|
|
159
184
|
logger.info("KeyboardInterrupt")
|
|
160
185
|
yr.remove_tmp_connectivity()
|