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.
Files changed (155) hide show
  1. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.gitlab-ci.yml +3 -3
  2. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/PKG-INFO +6 -6
  3. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/README.md +1 -1
  4. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/history.md +9 -0
  5. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/install.md +8 -6
  6. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/measurements.md +37 -10
  7. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/pyproject.toml +6 -6
  8. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/_version.py +2 -2
  9. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/ADC_CALIBRATION.py +18 -9
  10. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/ANALOG_READBACK.py +23 -6
  11. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/DATA_TRANSMISSION.py +20 -4
  12. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/INJECTION_CAPACITANCE.py +21 -3
  13. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/IV_MEASURE.py +19 -1
  14. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/LONG_TERM_STABILITY_DCS.py +21 -3
  15. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/LP_MODE.py +16 -7
  16. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/OVERVOLTAGE_PROTECTION.py +19 -1
  17. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/SLDO.py +16 -7
  18. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/UNDERSHUNT_PROTECTION.py +19 -1
  19. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/VCAL_CALIBRATION.py +21 -3
  20. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/globals.py +3 -3
  21. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/hardware_emulator.py +1 -5
  22. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/split_old_config.py +1 -7
  23. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/yarr.py +3 -23
  24. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/configs/meas_config.json +8 -4
  25. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/adc_calibration.py +3 -3
  26. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/analog_readback.py +8 -9
  27. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/data_transmission.py +4 -6
  28. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/injection_capacitance.py +2 -3
  29. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/long_term_stability_dcs.py +1 -1
  30. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/lp_mode.py +4 -7
  31. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/overvoltage_protection.py +3 -5
  32. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/sldo.py +2 -2
  33. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/undershunt_protection.py +1 -1
  34. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/vcal_calibration.py +2 -3
  35. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/typing_compat.py +1 -6
  36. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/__init__.py +1 -5
  37. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/misc.py +50 -20
  38. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/yarr.py +62 -7
  39. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tbump.toml +5 -2
  40. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_measurements.py +20 -12
  41. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.gitignore +0 -0
  42. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.gitmodules +0 -0
  43. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.linkcheckerrc +0 -0
  44. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/.pre-commit-config.yaml +0 -0
  45. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/LICENSE +0 -0
  46. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/.gitkeep +0 -0
  47. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/.overrides/main.html +0 -0
  48. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/.snippets/abbrs.txt +0 -0
  49. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/.snippets/links.txt +0 -0
  50. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/assets/css/custom.css +0 -0
  51. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/config.md +0 -0
  52. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/development.md +0 -0
  53. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/emulator.md +0 -0
  54. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/index.md +0 -0
  55. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/meta/authors.md +0 -0
  56. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/reference/cli.md +0 -0
  57. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/reference/gen_ref_nav.py +0 -0
  58. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 +0 -0
  59. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 +0 -0
  60. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 +0 -0
  61. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 +0 -0
  62. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 +0 -0
  63. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 +0 -0
  64. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 +0 -0
  65. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 +0 -0
  66. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 +0 -0
  67. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 +0 -0
  68. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 +0 -0
  69. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 +0 -0
  70. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 +0 -0
  71. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 +0 -0
  72. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 +0 -0
  73. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 +0 -0
  74. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 +0 -0
  75. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 +0 -0
  76. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 +0 -0
  77. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 +0 -0
  78. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 +0 -0
  79. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 +0 -0
  80. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 +0 -0
  81. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 +0 -0
  82. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 +0 -0
  83. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 +0 -0
  84. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 +0 -0
  85. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 +0 -0
  86. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 +0 -0
  87. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 +0 -0
  88. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 +0 -0
  89. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 +0 -0
  90. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 +0 -0
  91. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 +0 -0
  92. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 +0 -0
  93. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 +0 -0
  94. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 +0 -0
  95. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 +0 -0
  96. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 +0 -0
  97. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 +0 -0
  98. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 +0 -0
  99. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 +0 -0
  100. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 +0 -0
  101. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 +0 -0
  102. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 +0 -0
  103. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 +0 -0
  104. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 +0 -0
  105. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 +0 -0
  106. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 +0 -0
  107. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 +0 -0
  108. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 +0 -0
  109. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 +0 -0
  110. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 +0 -0
  111. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 +0 -0
  112. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/fonts.css +0 -0
  113. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/docs/stylesheets/readme.txt +0 -0
  114. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/mkdocs.yml +0 -0
  115. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/__init__.py +0 -0
  116. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/__init__.py +0 -0
  117. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/__main__.py +0 -0
  118. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/get_nominal_current.py +0 -0
  119. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/main.py +0 -0
  120. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/cli/upload_localdb.py +0 -0
  121. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/console.py +0 -0
  122. {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
  123. {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
  124. {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
  125. {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
  126. {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
  127. {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
  128. {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
  129. {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
  130. {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
  131. {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
  132. {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
  133. {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
  134. {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
  135. {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
  136. {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
  137. {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
  138. {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
  139. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/emulator/module_state_template.json +0 -0
  140. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/schema/hw_config.json +0 -0
  141. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/data/schema/meas_config.json +0 -0
  142. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/__init__.py +0 -0
  143. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/measurements/iv_measure.py +0 -0
  144. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/hardware_control_base.py +0 -0
  145. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/hrc.py +0 -0
  146. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/multimeter.py +0 -0
  147. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/ntc.py +0 -0
  148. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/power_supply.py +0 -0
  149. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/src/module_qc_tools/utils/subprocess_emulator.py +0 -0
  150. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/conftest.py +0 -0
  151. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_emulator.py +0 -0
  152. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_package.py +0 -0
  153. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_schema/cutter_pcb_tab.json +0 -0
  154. {module_qc_tools-2.4.2rc2 → module_qc_tools-2.4.2rc4}/tests/test_schema/cutter_pcb_tab_BAD.json +0 -0
  155. {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.8-buster
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.2rc2
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.8
34
+ Requires-Python: >=3.9
35
35
  Requires-Dist: check-jsonschema
36
- Requires-Dist: importlib-resources; python_version < '3.9'
37
- Requires-Dist: module-qc-data-tools>=1.1.4rc2
38
- Requires-Dist: module-qc-database-tools>=2.5.0rc0
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.2rc2
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
 
@@ -1,4 +1,4 @@
1
- # module-qc-tools v2.4.2rc2
1
+ # module-qc-tools v2.4.2rc3
2
2
 
3
3
  A general python tool for running ITkPixV1.1 and ITkPixV2 module QC tests
4
4
 
@@ -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 >= python3.7. Check the local python version
4
- with `python -V`. If the local python version is lower than Python 3.7, set up a
5
- virtual python environment following the instructions
6
- [here](https://itk.docs.cern.ch/general/Virtual_Environments/).
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.2rc2
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.2rc2
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
- | Measurement | Duration |
22
- | ----------------- | -------- |
23
- | ADC calib | 00:02:12 |
24
- | Analog Readback | 00:18:27 |
25
- | SLDO VI | 00:08:45 |
26
- | Vcal calib | 00:04:50 |
27
- | Injection Cap. | 00:00:50 |
28
- | LP Mode | 00:00:53 |
29
- | OVP | 00:00:27 |
30
- | DATA_TRANSMISSION | 00:00:26 |
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.8"
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.4rc2",
24
- "module-qc-database-tools >= 2.5.0rc0",
25
- 'importlib_resources; python_version < "3.9"',
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.8", "3.9", "3.10", "3.11", "3.12", "pypy3.8"]
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.8"
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.2rc2'
21
- __version_tuple__ = version_tuple = (2, 4, 2, 'rc2')
20
+ __version__ = version = '2.4.2rc4'
21
+ __version_tuple__ = version_tuple = (2, 4, 2, 'rc4')
@@ -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, test_type=TEST_TYPE, chip_type=chip_type
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"][layer])
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, layer, bom, debug_gnd)
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()
@@ -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, test_type=TEST_TYPE, chip_type=chip_type
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"][layer])
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, layer, use_calib_adc)
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, layer)
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, layer, use_calib_adc)
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()
@@ -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, test_type=TEST_TYPE, chip_type=chip_type
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"][layer])
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, test_type=TEST_TYPE, chip_type=chip_type
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"][layer])
142
+ ps.set(v=config["v_max"], i=config["i_config"])
125
143
 
126
144
  try:
127
- data = run(config, ps, hv, yr, layer, debug_gnd, use_calib_adc)
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, test_type=TEST_TYPE, chip_type=chip_type
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, test_type=TEST_TYPE, chip_type=chip_type
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'][layer]}"
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"][layer])
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, test_type=TEST_TYPE, chip_type=chip_type
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: