module-qc-tools 2.4.2rc2__tar.gz → 2.4.2rc4__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.2rc2 → module_qc_tools-2.4.2rc4}/.gitlab-ci.yml +3 -3
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/PKG-INFO +6 -6
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/README.md +1 -1
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/history.md +9 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/install.md +8 -6
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/measurements.md +37 -10
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/pyproject.toml +6 -6
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/_version.py +2 -2
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/ADC_CALIBRATION.py +18 -9
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/ANALOG_READBACK.py +23 -6
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/DATA_TRANSMISSION.py +20 -4
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/INJECTION_CAPACITANCE.py +21 -3
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/IV_MEASURE.py +19 -1
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/LONG_TERM_STABILITY_DCS.py +21 -3
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/LP_MODE.py +16 -7
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/OVERVOLTAGE_PROTECTION.py +19 -1
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/SLDO.py +16 -7
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/UNDERSHUNT_PROTECTION.py +19 -1
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/VCAL_CALIBRATION.py +21 -3
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/globals.py +3 -3
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/hardware_emulator.py +1 -5
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/split_old_config.py +1 -7
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/yarr.py +3 -23
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/meas_config.json +8 -4
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/adc_calibration.py +3 -3
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/analog_readback.py +8 -9
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/data_transmission.py +4 -6
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/injection_capacitance.py +2 -3
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/long_term_stability_dcs.py +1 -1
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/lp_mode.py +4 -7
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/overvoltage_protection.py +3 -5
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/sldo.py +2 -2
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/undershunt_protection.py +1 -1
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/vcal_calibration.py +2 -3
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/typing_compat.py +1 -6
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/__init__.py +1 -5
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/misc.py +50 -20
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/yarr.py +62 -7
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tbump.toml +5 -2
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_measurements.py +20 -12
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.gitignore +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.gitmodules +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.linkcheckerrc +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.pre-commit-config.yaml +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/LICENSE +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/.gitkeep +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/.overrides/main.html +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/.snippets/abbrs.txt +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/.snippets/links.txt +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/assets/css/custom.css +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/config.md +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/development.md +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/emulator.md +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/index.md +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/meta/authors.md +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/reference/cli.md +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/reference/gen_ref_nav.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts.css +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/readme.txt +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/mkdocs.yml +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/__init__.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/__init__.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/__main__.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/get_nominal_current.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/main.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/upload_localdb.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/console.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_emulator_merged_vmux.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_example_felix_merged_vmux_itkpixv2.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_example_felix_merged_vmux_v1.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_example_felix_separate_vmux_itkpixv2.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_example_felix_separate_vmux_v1.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_itkpixv2.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_v1.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_example_separate_vmux_itkpixv2.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/hw_config_example_separate_vmux_v1.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_Lx_dummy.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_Lx_dummy_disabledchip.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_info.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip1.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip2.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip3.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip4.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/configs/controller/specCfg-rd53b.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/module_state_template.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/schema/hw_config.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/schema/meas_config.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/__init__.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/iv_measure.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/hardware_control_base.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/hrc.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/multimeter.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/ntc.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/power_supply.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/subprocess_emulator.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/conftest.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_emulator.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_package.py +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_schema/cutter_pcb_tab.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_schema/cutter_pcb_tab_BAD.json +0 -0
- {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_schema.py +0 -0
|
@@ -94,8 +94,6 @@ tests:
|
|
|
94
94
|
- pipx run hatch run +py=${PYTHON_VERSION} dev:test
|
|
95
95
|
parallel:
|
|
96
96
|
matrix:
|
|
97
|
-
- IMAGE: "registry.cern.ch/docker.io/library/python:3.8-buster"
|
|
98
|
-
PYTHON_VERSION: "3.8"
|
|
99
97
|
- IMAGE: "registry.cern.ch/docker.io/library/python:3.9-buster"
|
|
100
98
|
PYTHON_VERSION: "3.9"
|
|
101
99
|
- IMAGE: "registry.cern.ch/docker.io/library/python:3.10-buster"
|
|
@@ -104,9 +102,11 @@ tests:
|
|
|
104
102
|
PYTHON_VERSION: "3.11"
|
|
105
103
|
- IMAGE: "registry.cern.ch/docker.io/library/python:3.12-bullseye"
|
|
106
104
|
PYTHON_VERSION: "3.12"
|
|
105
|
+
- IMAGE: "registry.cern.ch/docker.io/library/python:3.13-bullseye"
|
|
106
|
+
PYTHON_VERSION: "3.13"
|
|
107
107
|
|
|
108
108
|
.test:
|
|
109
|
-
image: registry.cern.ch/docker.io/library/python:3.
|
|
109
|
+
image: registry.cern.ch/docker.io/library/python:3.9-buster
|
|
110
110
|
stage: test
|
|
111
111
|
|
|
112
112
|
make-docs:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: module_qc_tools
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2rc4
|
|
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,11 +31,11 @@ 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.9
|
|
35
35
|
Requires-Dist: check-jsonschema
|
|
36
|
-
Requires-Dist: importlib
|
|
37
|
-
Requires-Dist: module-qc-data-tools>=1.1.
|
|
38
|
-
Requires-Dist: module-qc-database-tools>=2.5.
|
|
36
|
+
Requires-Dist: importlib
|
|
37
|
+
Requires-Dist: module-qc-data-tools>=1.1.4rc6
|
|
38
|
+
Requires-Dist: module-qc-database-tools>=2.5.6
|
|
39
39
|
Requires-Dist: numpy
|
|
40
40
|
Requires-Dist: packaging
|
|
41
41
|
Requires-Dist: pre-commit
|
|
@@ -46,7 +46,7 @@ Requires-Dist: typer>=0.9.0
|
|
|
46
46
|
Requires-Dist: urllib3<2,>=1.26.20; 'el7.x86_64' in platform_release
|
|
47
47
|
Description-Content-Type: text/markdown
|
|
48
48
|
|
|
49
|
-
# module-qc-tools v2.4.
|
|
49
|
+
# module-qc-tools v2.4.2rc3
|
|
50
50
|
|
|
51
51
|
A general python tool for running ITkPixV1.1 and ITkPixV2 module QC tests
|
|
52
52
|
|
|
@@ -12,10 +12,19 @@ and this project adheres to
|
|
|
12
12
|
|
|
13
13
|
**_Changed:_**
|
|
14
14
|
|
|
15
|
+
- drop python 3.8 and update python version info (!250)
|
|
16
|
+
- Updated the durations of all QC tests in
|
|
17
|
+
[measurements](measurements.md#time-estimates)(!248)
|
|
18
|
+
- reduce the AR duration by 40% compared to previous (back to the same as before
|
|
19
|
+
!208) (!247)
|
|
15
20
|
- Update current (sigma) units in IV progress display (!229)
|
|
16
21
|
- Dropped `emulator-XYZ` executables in favor of `mqt emulator` (!232)
|
|
17
22
|
- Increased minimum supported python version to 3.8 (dropping 3.7) (!237)
|
|
18
23
|
- IV emulator with more realistic values than previous fit (!238)
|
|
24
|
+
- updated current for V2+V2BOM chips according to YTF recommendations (!242) !!!
|
|
25
|
+
important
|
|
26
|
+
|
|
27
|
+
Requires module-qc-data-tools v1.1.4rc6
|
|
19
28
|
|
|
20
29
|
**_Added:_**
|
|
21
30
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# Installation
|
|
2
2
|
|
|
3
|
-
This tool requires users to have
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
This tool **requires** users to have a python version that is still supported
|
|
4
|
+
(not end-of-life). You can check the status of different python versions
|
|
5
|
+
[here](https://devguide.python.org/versions/#status-of-python-versions). Check
|
|
6
|
+
your local python version with `python -V`. If the local python version is lower
|
|
7
|
+
than what is currently supported, set up a virtual python environment following
|
|
8
|
+
the instructions [here](https://itk.docs.cern.ch/general/Virtual_Environments/).
|
|
7
9
|
|
|
8
10
|
In addition, users shall install [`YARR`](https://yarr.web.cern.ch/) and prepare
|
|
9
11
|
external scripts for remote control of power supply, multimeter and NTC readout.
|
|
@@ -92,7 +94,7 @@ package.
|
|
|
92
94
|
$ python -m venv venv
|
|
93
95
|
$ source venv/bin/activate
|
|
94
96
|
$ python -m pip install -U pip
|
|
95
|
-
$ python -m pip install -U pip module-qc-tools==2.4.
|
|
97
|
+
$ python -m pip install -U pip module-qc-tools==2.4.2rc3
|
|
96
98
|
```
|
|
97
99
|
|
|
98
100
|
### via uv
|
|
@@ -101,7 +103,7 @@ $ python -m pip install -U pip module-qc-tools==2.4.2rc2
|
|
|
101
103
|
$ python -m venv venv
|
|
102
104
|
$ source venv/bin/activate
|
|
103
105
|
$ python -m pip install uv
|
|
104
|
-
$ uv pip install module-qc-tools==2.4.
|
|
106
|
+
$ uv pip install module-qc-tools==2.4.2rc3
|
|
105
107
|
```
|
|
106
108
|
|
|
107
109
|
# Usage
|
|
@@ -18,16 +18,43 @@ modules to be tested are already powered on.
|
|
|
18
18
|
|
|
19
19
|
### Time Estimates
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
21
|
+
The following were measured using an old Keithley multimeter with
|
|
22
|
+
[v2.4.2](https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/tags/v2.4.2)
|
|
23
|
+
running `run-full-qc`. The analysis includes uploading to localDB and
|
|
24
|
+
downloading the results.
|
|
25
|
+
|
|
26
|
+
| Measurement | Duration (hh:mm:ss) |
|
|
27
|
+
| -------------------------- | ------------------- |
|
|
28
|
+
| update k-shunt | 00:00:01 |
|
|
29
|
+
| eye diagram | 00:00:05 |
|
|
30
|
+
| core column scan | 00:00:27 |
|
|
31
|
+
| **ADC calib** | **00:02:32** |
|
|
32
|
+
| analysis | 00:00:09 |
|
|
33
|
+
| update chip config | 00:00:04 |
|
|
34
|
+
| **Analog Readback** | **00:30:47** |
|
|
35
|
+
| analysis | 00:00:14 |
|
|
36
|
+
| update chip config | 00:00:04 |
|
|
37
|
+
| **SLDO VI** | **00:19:30** |
|
|
38
|
+
| analysis | 00:00:12 |
|
|
39
|
+
| update chip config | 00:00:02 |
|
|
40
|
+
| **Vcal calib** | **00:05:47** |
|
|
41
|
+
| analysis | 00:00:10 |
|
|
42
|
+
| update chip config | 00:00:04 |
|
|
43
|
+
| **Injection Cap.** | **00:02:29** |
|
|
44
|
+
| analysis | 00:00:09 |
|
|
45
|
+
| update chip config | 00:00:04 |
|
|
46
|
+
| **LP Mode** | **00:06:51** |
|
|
47
|
+
| analysis | 00:00:09 |
|
|
48
|
+
| update chip config | 00:00:01 |
|
|
49
|
+
| **DATA_TRANSMISSION** | **00:00:35** |
|
|
50
|
+
| analysis | 00:00:09 |
|
|
51
|
+
| update chip config | 00:00:02 |
|
|
52
|
+
| **Minimum Health Test** | **00:06:40** |
|
|
53
|
+
| clear chip config | 00:00:00 |
|
|
54
|
+
| **Tuning** | **00:13:09** |
|
|
55
|
+
| **Pixel Failure Analysis** | **00:09:02** |
|
|
56
|
+
| -------------------------- | ------------------- |
|
|
57
|
+
| _total_ | _01:39:29_ |
|
|
31
58
|
|
|
32
59
|
### Local Filesystem
|
|
33
60
|
|
|
@@ -14,15 +14,15 @@ 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.9"
|
|
18
18
|
dependencies = [
|
|
19
19
|
"numpy",
|
|
20
20
|
"tabulate",
|
|
21
21
|
"pre-commit",
|
|
22
22
|
"check-jsonschema",
|
|
23
|
-
"module-qc-data-tools >= 1.1.
|
|
24
|
-
"module-qc-database-tools >= 2.5.
|
|
25
|
-
|
|
23
|
+
"module-qc-data-tools >= 1.1.4rc6",
|
|
24
|
+
"module-qc-database-tools >= 2.5.6",
|
|
25
|
+
"importlib",
|
|
26
26
|
"requests",
|
|
27
27
|
'urllib3>=1.26.20,<2; "el7.x86_64" in platform_release',
|
|
28
28
|
"typer>=0.9.0",
|
|
@@ -106,7 +106,7 @@ dependencies = [
|
|
|
106
106
|
test = "pytest -ra {args}"
|
|
107
107
|
|
|
108
108
|
[[tool.hatch.envs.dev.matrix]]
|
|
109
|
-
python = ["3.
|
|
109
|
+
python = ["3.9", "3.10", "3.11", "3.12", "3.13", "pypy3.9"]
|
|
110
110
|
|
|
111
111
|
[tool.hatch.envs.docs]
|
|
112
112
|
template = "docs"
|
|
@@ -200,7 +200,7 @@ typing-modules = ["module_qc_tools.typing_compat"]
|
|
|
200
200
|
"src/module_qc_tools/cli/hardware_emulator.py" = ["B008"]
|
|
201
201
|
|
|
202
202
|
[tool.pylint]
|
|
203
|
-
master.py-version = "3.
|
|
203
|
+
master.py-version = "3.9"
|
|
204
204
|
master.ignore-paths= ["src/module_qc_tools/_version.py"]
|
|
205
205
|
reports.output-format = "colorized"
|
|
206
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, 2, '
|
|
20
|
+
__version__ = version = '2.4.2rc4'
|
|
21
|
+
__version_tuple__ = version_tuple = (2, 4, 2, 'rc4')
|
{module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/ADC_CALIBRATION.py
RENAMED
|
@@ -16,6 +16,7 @@ from module_qc_data_tools.utils import (
|
|
|
16
16
|
)
|
|
17
17
|
from module_qc_database_tools.utils import (
|
|
18
18
|
get_BOMCode_from_file,
|
|
19
|
+
get_cutFile_suffix,
|
|
19
20
|
)
|
|
20
21
|
|
|
21
22
|
from module_qc_tools.cli.globals import (
|
|
@@ -26,6 +27,7 @@ from module_qc_tools.cli.globals import (
|
|
|
26
27
|
OPTION_config_meas,
|
|
27
28
|
OPTION_debug_gnd,
|
|
28
29
|
OPTION_module_connectivity,
|
|
30
|
+
OPTION_nchips,
|
|
29
31
|
OPTION_output_dir,
|
|
30
32
|
OPTION_perchip,
|
|
31
33
|
OPTION_save_local,
|
|
@@ -69,6 +71,7 @@ def main(
|
|
|
69
71
|
save_local: OPTION_save_local = True,
|
|
70
72
|
use_calib_adc: OPTION_use_calib_ADC = False,
|
|
71
73
|
bias: OPTION_bias = True,
|
|
74
|
+
nchips: OPTION_nchips = None,
|
|
72
75
|
):
|
|
73
76
|
"""run() creates the qcDataFrame where the measurements are stored in the qcDataFrame."""
|
|
74
77
|
check_module_connectivity(
|
|
@@ -107,9 +110,21 @@ def main(
|
|
|
107
110
|
layer = get_layer_from_sn(module_serial)
|
|
108
111
|
chip_type = get_chip_type_from_serial_number(module_serial)
|
|
109
112
|
|
|
113
|
+
# try to retrieve the BOM information from the config files
|
|
114
|
+
BOM_file = (
|
|
115
|
+
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
116
|
+
)
|
|
117
|
+
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
118
|
+
bom_suffix = get_cutFile_suffix(bom)
|
|
119
|
+
|
|
110
120
|
# Load the measurement config and combine it with the hardware config
|
|
111
121
|
config = load_meas_config(
|
|
112
|
-
meas_config_path,
|
|
122
|
+
meas_config_path,
|
|
123
|
+
test_type=TEST_TYPE,
|
|
124
|
+
chip_type=chip_type,
|
|
125
|
+
bom_type=bom_suffix,
|
|
126
|
+
layer=layer,
|
|
127
|
+
nchips=nchips,
|
|
113
128
|
)
|
|
114
129
|
config.update(config_hw)
|
|
115
130
|
|
|
@@ -127,16 +142,10 @@ def main(
|
|
|
127
142
|
if not use_pixel_config:
|
|
128
143
|
yr.omit_pixel_config()
|
|
129
144
|
|
|
130
|
-
ps.set(v=config["v_max"], i=config["i_config"]
|
|
131
|
-
|
|
132
|
-
# try to retrieve the BOM information from the config files
|
|
133
|
-
BOM_file = (
|
|
134
|
-
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
135
|
-
)
|
|
136
|
-
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
145
|
+
ps.set(v=config["v_max"], i=config["i_config"])
|
|
137
146
|
|
|
138
147
|
try:
|
|
139
|
-
data = run(config, ps, hv, yr,
|
|
148
|
+
data = run(config, ps, hv, yr, bom, debug_gnd)
|
|
140
149
|
except KeyboardInterrupt:
|
|
141
150
|
logger.info("KeyboardInterrupt")
|
|
142
151
|
yr.remove_tmp_connectivity()
|
{module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/ANALOG_READBACK.py
RENAMED
|
@@ -14,6 +14,10 @@ from module_qc_data_tools.utils import (
|
|
|
14
14
|
get_sn_from_connectivity,
|
|
15
15
|
save_dict_list,
|
|
16
16
|
)
|
|
17
|
+
from module_qc_database_tools.utils import (
|
|
18
|
+
get_BOMCode_from_file,
|
|
19
|
+
get_cutFile_suffix,
|
|
20
|
+
)
|
|
17
21
|
|
|
18
22
|
from module_qc_tools.cli.globals import (
|
|
19
23
|
CONTEXT_SETTINGS,
|
|
@@ -23,6 +27,7 @@ from module_qc_tools.cli.globals import (
|
|
|
23
27
|
OPTION_config_meas,
|
|
24
28
|
OPTION_debug_gnd,
|
|
25
29
|
OPTION_module_connectivity,
|
|
30
|
+
OPTION_nchips,
|
|
26
31
|
OPTION_output_dir,
|
|
27
32
|
OPTION_perchip,
|
|
28
33
|
OPTION_save_local,
|
|
@@ -71,6 +76,7 @@ def main(
|
|
|
71
76
|
save_local: OPTION_save_local = True,
|
|
72
77
|
debug_gnd: OPTION_debug_gnd = False,
|
|
73
78
|
bias: OPTION_bias = True,
|
|
79
|
+
nchips: OPTION_nchips = None,
|
|
74
80
|
):
|
|
75
81
|
"""
|
|
76
82
|
run_xyz() creates the qcDataFrame where the measurements are stored in the qcDataFrame.
|
|
@@ -106,9 +112,21 @@ def main(
|
|
|
106
112
|
layer = get_layer_from_sn(module_serial)
|
|
107
113
|
chip_type = get_chip_type_from_serial_number(module_serial)
|
|
108
114
|
|
|
115
|
+
# try to retrieve the BOM information from the config files
|
|
116
|
+
BOM_file = (
|
|
117
|
+
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
118
|
+
)
|
|
119
|
+
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
120
|
+
bom_suffix = get_cutFile_suffix(bom)
|
|
121
|
+
|
|
109
122
|
# Load the measurement config and combine it with the hardware config
|
|
110
123
|
config = load_meas_config(
|
|
111
|
-
meas_config_path,
|
|
124
|
+
meas_config_path,
|
|
125
|
+
test_type=TEST_TYPE,
|
|
126
|
+
chip_type=chip_type,
|
|
127
|
+
bom_type=bom_suffix,
|
|
128
|
+
layer=layer,
|
|
129
|
+
nchips=nchips,
|
|
112
130
|
)
|
|
113
131
|
config.update(config_hw)
|
|
114
132
|
|
|
@@ -126,12 +144,12 @@ def main(
|
|
|
126
144
|
if not use_pixel_config:
|
|
127
145
|
yr.omit_pixel_config()
|
|
128
146
|
|
|
129
|
-
ps.set(v=config["v_max"], i=config["i_config"]
|
|
147
|
+
ps.set(v=config["v_max"], i=config["i_config"])
|
|
130
148
|
yr.configure()
|
|
131
149
|
|
|
132
150
|
# Measure internal vmux
|
|
133
151
|
try:
|
|
134
|
-
data = run_vmeas(config, ps, hv, yr,
|
|
152
|
+
data = run_vmeas(config, ps, hv, yr, use_calib_adc)
|
|
135
153
|
except KeyboardInterrupt:
|
|
136
154
|
logger.info("KeyboardInterrupt")
|
|
137
155
|
yr.remove_tmp_connectivity()
|
|
@@ -149,7 +167,6 @@ def main(
|
|
|
149
167
|
ps,
|
|
150
168
|
hv,
|
|
151
169
|
yr,
|
|
152
|
-
layer,
|
|
153
170
|
debug_gnd,
|
|
154
171
|
use_calib_adc,
|
|
155
172
|
)
|
|
@@ -166,7 +183,7 @@ def main(
|
|
|
166
183
|
# Read register values
|
|
167
184
|
if "itkpixv2" in chip_type.lower():
|
|
168
185
|
try:
|
|
169
|
-
data_register = run_readregister(config, ps, yr
|
|
186
|
+
data_register = run_readregister(config, ps, yr)
|
|
170
187
|
except KeyboardInterrupt:
|
|
171
188
|
logger.info("KeyboardInterrupt")
|
|
172
189
|
yr.remove_tmp_connectivity()
|
|
@@ -179,7 +196,7 @@ def main(
|
|
|
179
196
|
|
|
180
197
|
# Measure temperature at the end of the measurement to ensure temperature stability
|
|
181
198
|
try:
|
|
182
|
-
data_tempmeas = run_tmeas(config, ps, hv, yr,
|
|
199
|
+
data_tempmeas = run_tmeas(config, ps, hv, yr, use_calib_adc)
|
|
183
200
|
except KeyboardInterrupt:
|
|
184
201
|
logger.info("KeyboardInterrupt")
|
|
185
202
|
yr.remove_tmp_connectivity()
|
{module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/DATA_TRANSMISSION.py
RENAMED
|
@@ -15,6 +15,10 @@ from module_qc_data_tools.utils import (
|
|
|
15
15
|
get_sn_from_connectivity,
|
|
16
16
|
save_dict_list,
|
|
17
17
|
)
|
|
18
|
+
from module_qc_database_tools.utils import (
|
|
19
|
+
get_BOMCode_from_file,
|
|
20
|
+
get_cutFile_suffix,
|
|
21
|
+
)
|
|
18
22
|
|
|
19
23
|
from module_qc_tools.cli.globals import (
|
|
20
24
|
CONTEXT_SETTINGS,
|
|
@@ -24,6 +28,7 @@ from module_qc_tools.cli.globals import (
|
|
|
24
28
|
OPTION_config_meas,
|
|
25
29
|
OPTION_dry_run,
|
|
26
30
|
OPTION_module_connectivity,
|
|
31
|
+
OPTION_nchips,
|
|
27
32
|
OPTION_output_dir,
|
|
28
33
|
OPTION_perchip,
|
|
29
34
|
OPTION_save_local,
|
|
@@ -70,6 +75,7 @@ def main(
|
|
|
70
75
|
use_calib_adc: OPTION_use_calib_ADC = False,
|
|
71
76
|
dryrun: OPTION_dry_run = False,
|
|
72
77
|
bias: OPTION_bias = True,
|
|
78
|
+
nchips: OPTION_nchips = None,
|
|
73
79
|
):
|
|
74
80
|
"""
|
|
75
81
|
Run the Data Transmission measurement.
|
|
@@ -111,9 +117,21 @@ def main(
|
|
|
111
117
|
layer = get_layer_from_sn(module_serial)
|
|
112
118
|
chip_type = get_chip_type_from_serial_number(module_serial)
|
|
113
119
|
|
|
120
|
+
# try to retrieve the BOM information from the config files
|
|
121
|
+
BOM_file = (
|
|
122
|
+
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
123
|
+
)
|
|
124
|
+
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
125
|
+
bom_suffix = get_cutFile_suffix(bom)
|
|
126
|
+
|
|
114
127
|
# Load the measurement config and combine it with the hardware config
|
|
115
128
|
config = load_meas_config(
|
|
116
|
-
meas_config_path,
|
|
129
|
+
meas_config_path,
|
|
130
|
+
test_type=TEST_TYPE,
|
|
131
|
+
chip_type=chip_type,
|
|
132
|
+
bom_type=bom_suffix,
|
|
133
|
+
layer=layer,
|
|
134
|
+
nchips=nchips,
|
|
117
135
|
)
|
|
118
136
|
config.update(config_hw)
|
|
119
137
|
|
|
@@ -131,7 +149,7 @@ def main(
|
|
|
131
149
|
if not use_pixel_config:
|
|
132
150
|
yr.omit_pixel_config()
|
|
133
151
|
|
|
134
|
-
ps.set(v=config["v_max"], i=config["i_config"]
|
|
152
|
+
ps.set(v=config["v_max"], i=config["i_config"])
|
|
135
153
|
|
|
136
154
|
try:
|
|
137
155
|
data = run_eyediagram(
|
|
@@ -139,7 +157,6 @@ def main(
|
|
|
139
157
|
ps,
|
|
140
158
|
hv,
|
|
141
159
|
yr,
|
|
142
|
-
layer,
|
|
143
160
|
n_lanes_per_chip,
|
|
144
161
|
dryrun,
|
|
145
162
|
)
|
|
@@ -159,7 +176,6 @@ def main(
|
|
|
159
176
|
ps,
|
|
160
177
|
hv,
|
|
161
178
|
yr,
|
|
162
|
-
layer,
|
|
163
179
|
)
|
|
164
180
|
except KeyboardInterrupt:
|
|
165
181
|
logger.info("KeyboardInterrupt")
|
|
@@ -14,6 +14,10 @@ from module_qc_data_tools.utils import (
|
|
|
14
14
|
get_sn_from_connectivity,
|
|
15
15
|
save_dict_list,
|
|
16
16
|
)
|
|
17
|
+
from module_qc_database_tools.utils import (
|
|
18
|
+
get_BOMCode_from_file,
|
|
19
|
+
get_cutFile_suffix,
|
|
20
|
+
)
|
|
17
21
|
|
|
18
22
|
from module_qc_tools.cli.globals import (
|
|
19
23
|
CONTEXT_SETTINGS,
|
|
@@ -23,6 +27,7 @@ from module_qc_tools.cli.globals import (
|
|
|
23
27
|
OPTION_config_meas,
|
|
24
28
|
OPTION_debug_gnd,
|
|
25
29
|
OPTION_module_connectivity,
|
|
30
|
+
OPTION_nchips,
|
|
26
31
|
OPTION_output_dir,
|
|
27
32
|
OPTION_perchip,
|
|
28
33
|
OPTION_save_local,
|
|
@@ -68,6 +73,7 @@ def main(
|
|
|
68
73
|
save_local: OPTION_save_local = True,
|
|
69
74
|
debug_gnd: OPTION_debug_gnd = False,
|
|
70
75
|
bias: OPTION_bias = True,
|
|
76
|
+
nchips: OPTION_nchips = None,
|
|
71
77
|
):
|
|
72
78
|
"""main() creates the qcDataFrame and pass it to the run() where the measurements are stored in the qcDataFrame."""
|
|
73
79
|
check_module_connectivity(
|
|
@@ -101,9 +107,21 @@ def main(
|
|
|
101
107
|
layer = get_layer_from_sn(module_serial)
|
|
102
108
|
chip_type = get_chip_type_from_serial_number(module_serial)
|
|
103
109
|
|
|
110
|
+
# try to retrieve the BOM information from the config files
|
|
111
|
+
BOM_file = (
|
|
112
|
+
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
113
|
+
)
|
|
114
|
+
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
115
|
+
bom_suffix = get_cutFile_suffix(bom)
|
|
116
|
+
|
|
104
117
|
# Load the measurement config and combine it with the hardware config
|
|
105
118
|
config = load_meas_config(
|
|
106
|
-
meas_config_path,
|
|
119
|
+
meas_config_path,
|
|
120
|
+
test_type=TEST_TYPE,
|
|
121
|
+
chip_type=chip_type,
|
|
122
|
+
bom_type=bom_suffix,
|
|
123
|
+
layer=layer,
|
|
124
|
+
nchips=nchips,
|
|
107
125
|
)
|
|
108
126
|
config.update(config_hw)
|
|
109
127
|
|
|
@@ -121,10 +139,10 @@ def main(
|
|
|
121
139
|
if not use_pixel_config:
|
|
122
140
|
yr.omit_pixel_config()
|
|
123
141
|
|
|
124
|
-
ps.set(v=config["v_max"], i=config["i_config"]
|
|
142
|
+
ps.set(v=config["v_max"], i=config["i_config"])
|
|
125
143
|
|
|
126
144
|
try:
|
|
127
|
-
data = run(config, ps, hv, yr,
|
|
145
|
+
data = run(config, ps, hv, yr, debug_gnd, use_calib_adc)
|
|
128
146
|
except KeyboardInterrupt:
|
|
129
147
|
logger.info("KeyboardInterrupt")
|
|
130
148
|
yr.remove_tmp_connectivity()
|
|
@@ -13,6 +13,10 @@ from module_qc_data_tools.utils import (
|
|
|
13
13
|
get_sn_from_connectivity,
|
|
14
14
|
save_dict_list,
|
|
15
15
|
)
|
|
16
|
+
from module_qc_database_tools.utils import (
|
|
17
|
+
get_BOMCode_from_file,
|
|
18
|
+
get_cutFile_suffix,
|
|
19
|
+
)
|
|
16
20
|
|
|
17
21
|
from module_qc_tools.cli.globals import (
|
|
18
22
|
CONTEXT_SETTINGS,
|
|
@@ -21,6 +25,7 @@ from module_qc_tools.cli.globals import (
|
|
|
21
25
|
OPTION_config_meas,
|
|
22
26
|
OPTION_depl_volt,
|
|
23
27
|
OPTION_module_connectivity,
|
|
28
|
+
OPTION_nchips,
|
|
24
29
|
OPTION_output_dir,
|
|
25
30
|
OPTION_save_local,
|
|
26
31
|
OPTION_site,
|
|
@@ -58,6 +63,7 @@ def main(
|
|
|
58
63
|
use_calib_adc: OPTION_use_calib_ADC = False,
|
|
59
64
|
save_local: OPTION_save_local = True,
|
|
60
65
|
vdepl: OPTION_depl_volt = None,
|
|
66
|
+
nchips: OPTION_nchips = None,
|
|
61
67
|
):
|
|
62
68
|
"""Run the IV measurement."""
|
|
63
69
|
check_module_connectivity(
|
|
@@ -96,9 +102,21 @@ def main(
|
|
|
96
102
|
layer = get_layer_from_sn(module_serial)
|
|
97
103
|
chip_type = get_chip_type_from_serial_number(module_serial)
|
|
98
104
|
|
|
105
|
+
# try to retrieve the BOM information from the config files
|
|
106
|
+
BOM_file = (
|
|
107
|
+
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
108
|
+
)
|
|
109
|
+
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
110
|
+
bom_suffix = get_cutFile_suffix(bom)
|
|
111
|
+
|
|
99
112
|
# Load the measurement config and combine it with the hardware config
|
|
100
113
|
config = load_meas_config(
|
|
101
|
-
meas_config_path,
|
|
114
|
+
meas_config_path,
|
|
115
|
+
test_type=TEST_TYPE,
|
|
116
|
+
chip_type=chip_type,
|
|
117
|
+
bom_type=bom_suffix,
|
|
118
|
+
layer=layer,
|
|
119
|
+
nchips=nchips,
|
|
102
120
|
)
|
|
103
121
|
config.update(config_hw)
|
|
104
122
|
|
|
@@ -13,6 +13,10 @@ from module_qc_data_tools.utils import (
|
|
|
13
13
|
get_sn_from_connectivity,
|
|
14
14
|
save_dict_list,
|
|
15
15
|
)
|
|
16
|
+
from module_qc_database_tools.utils import (
|
|
17
|
+
get_BOMCode_from_file,
|
|
18
|
+
get_cutFile_suffix,
|
|
19
|
+
)
|
|
16
20
|
|
|
17
21
|
from module_qc_tools.cli.globals import (
|
|
18
22
|
CONTEXT_SETTINGS,
|
|
@@ -20,6 +24,7 @@ from module_qc_tools.cli.globals import (
|
|
|
20
24
|
OPTION_config_hw,
|
|
21
25
|
OPTION_config_meas,
|
|
22
26
|
OPTION_module_connectivity,
|
|
27
|
+
OPTION_nchips,
|
|
23
28
|
OPTION_output_dir,
|
|
24
29
|
OPTION_poweroff,
|
|
25
30
|
OPTION_save_local,
|
|
@@ -57,6 +62,7 @@ def main(
|
|
|
57
62
|
institution: OPTION_site = "",
|
|
58
63
|
save_local: OPTION_save_local = True,
|
|
59
64
|
poweroff: OPTION_poweroff = False,
|
|
65
|
+
nchips: OPTION_nchips = None,
|
|
60
66
|
):
|
|
61
67
|
"""
|
|
62
68
|
Collect DCS data for the long-term stability test (high-voltage power, module temperature).
|
|
@@ -108,9 +114,21 @@ def main(
|
|
|
108
114
|
layer = get_layer_from_sn(module_serial)
|
|
109
115
|
chip_type = get_chip_type_from_serial_number(module_serial)
|
|
110
116
|
|
|
117
|
+
# try to retrieve the BOM information from the config files
|
|
118
|
+
BOM_file = (
|
|
119
|
+
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
120
|
+
)
|
|
121
|
+
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
122
|
+
bom_suffix = get_cutFile_suffix(bom)
|
|
123
|
+
|
|
111
124
|
# Load the measurement config and combine it with the hardware config
|
|
112
125
|
config = load_meas_config(
|
|
113
|
-
meas_config_path,
|
|
126
|
+
meas_config_path,
|
|
127
|
+
test_type=TEST_TYPE,
|
|
128
|
+
chip_type=chip_type,
|
|
129
|
+
bom_type=bom_suffix,
|
|
130
|
+
layer=layer,
|
|
131
|
+
nchips=nchips,
|
|
114
132
|
)
|
|
115
133
|
config.update(config_hw)
|
|
116
134
|
|
|
@@ -121,9 +139,9 @@ def main(
|
|
|
121
139
|
|
|
122
140
|
if yr.running_emulator():
|
|
123
141
|
logger.info(
|
|
124
|
-
f"Turning on power supply with V={config['v_max']}, I={config['i_config']
|
|
142
|
+
f"Turning on power supply with V={config['v_max']}, I={config['i_config']}"
|
|
125
143
|
)
|
|
126
|
-
ps.on(v=config["v_max"], i=config["i_config"]
|
|
144
|
+
ps.on(v=config["v_max"], i=config["i_config"])
|
|
127
145
|
hv.on(v=-100.0, i=1e-6)
|
|
128
146
|
# Only for emulator do the emulation of power on/off
|
|
129
147
|
# For real measurements avoid turn on/off the chip by commands. Just leave the chip running.
|
|
@@ -16,6 +16,7 @@ from module_qc_data_tools.utils import (
|
|
|
16
16
|
)
|
|
17
17
|
from module_qc_database_tools.utils import (
|
|
18
18
|
get_BOMCode_from_file,
|
|
19
|
+
get_cutFile_suffix,
|
|
19
20
|
)
|
|
20
21
|
|
|
21
22
|
from module_qc_tools.cli.globals import (
|
|
@@ -25,6 +26,7 @@ from module_qc_tools.cli.globals import (
|
|
|
25
26
|
OPTION_config_hw,
|
|
26
27
|
OPTION_config_meas,
|
|
27
28
|
OPTION_module_connectivity,
|
|
29
|
+
OPTION_nchips,
|
|
28
30
|
OPTION_output_dir,
|
|
29
31
|
OPTION_perchip,
|
|
30
32
|
OPTION_save_local,
|
|
@@ -69,6 +71,7 @@ def main(
|
|
|
69
71
|
save_local: OPTION_save_local = True,
|
|
70
72
|
use_calib_adc: OPTION_use_calib_ADC = False,
|
|
71
73
|
bias: OPTION_bias = True,
|
|
74
|
+
nchips: OPTION_nchips = None,
|
|
72
75
|
):
|
|
73
76
|
check_module_connectivity(
|
|
74
77
|
hw_config_path=hw_config_path, module_connectivity=module_connectivity
|
|
@@ -106,9 +109,21 @@ def main(
|
|
|
106
109
|
layer = get_layer_from_sn(module_serial)
|
|
107
110
|
chip_type = get_chip_type_from_serial_number(module_serial)
|
|
108
111
|
|
|
112
|
+
# try to retrieve the BOM information from the config files
|
|
113
|
+
BOM_file = (
|
|
114
|
+
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
115
|
+
)
|
|
116
|
+
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
117
|
+
bom_suffix = get_cutFile_suffix(bom)
|
|
118
|
+
|
|
109
119
|
# Load the measurement config and combine it with the hardware config
|
|
110
120
|
config = load_meas_config(
|
|
111
|
-
meas_config_path,
|
|
121
|
+
meas_config_path,
|
|
122
|
+
test_type=TEST_TYPE,
|
|
123
|
+
chip_type=chip_type,
|
|
124
|
+
bom_type=bom_suffix,
|
|
125
|
+
layer=layer,
|
|
126
|
+
nchips=nchips,
|
|
112
127
|
)
|
|
113
128
|
config.update(config_hw)
|
|
114
129
|
|
|
@@ -126,12 +141,6 @@ def main(
|
|
|
126
141
|
if not use_pixel_config:
|
|
127
142
|
yr.omit_pixel_config()
|
|
128
143
|
|
|
129
|
-
# try to retrieve the BOM information from the config files
|
|
130
|
-
BOM_file = (
|
|
131
|
-
Path(config_hw["yarr"]["connectivity"]).parent / f"{module_serial}_info.json"
|
|
132
|
-
)
|
|
133
|
-
bom = get_BOMCode_from_file(BOM_file, layer)
|
|
134
|
-
|
|
135
144
|
try:
|
|
136
145
|
data = run(config, ps, hv, yr, layer, bom, use_calib_adc)
|
|
137
146
|
except KeyboardInterrupt:
|