module-qc-tools 2.9.0__tar.gz → 2.9.2__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 (172) hide show
  1. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/.gitlab-ci.yml +2 -2
  2. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/.zenodo.json +3 -3
  3. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/CITATION.cff +2 -2
  4. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/PKG-INFO +2 -2
  5. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/README.md +1 -1
  6. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/history.md +11 -0
  7. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/install.md +2 -2
  8. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/_version.py +2 -2
  9. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/meas_config.json +1 -1
  10. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/analog_readback.py +93 -62
  11. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/yarr.py +2 -2
  12. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tbump.toml +2 -2
  13. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/.gitattributes +0 -0
  14. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/.gitignore +0 -0
  15. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/.gitmodules +0 -0
  16. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/.linkcheckerrc +0 -0
  17. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/.pre-commit-config.yaml +0 -0
  18. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/LICENSE +0 -0
  19. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/.gitkeep +0 -0
  20. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/.overrides/main.html +0 -0
  21. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/.snippets/abbrs.txt +0 -0
  22. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/.snippets/links.txt +0 -0
  23. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/assets/css/custom.css +0 -0
  24. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/config.md +0 -0
  25. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/development.md +0 -0
  26. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/emulator.md +0 -0
  27. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/index.md +0 -0
  28. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/measurements.md +0 -0
  29. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/meta/authors.md +0 -0
  30. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/reference/cli.md +0 -0
  31. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/reference/gen_ref_nav.py +0 -0
  32. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 +0 -0
  33. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 +0 -0
  34. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 +0 -0
  35. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 +0 -0
  36. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 +0 -0
  37. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 +0 -0
  38. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 +0 -0
  39. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 +0 -0
  40. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 +0 -0
  41. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 +0 -0
  42. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 +0 -0
  43. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 +0 -0
  44. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 +0 -0
  45. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 +0 -0
  46. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 +0 -0
  47. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 +0 -0
  48. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 +0 -0
  49. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 +0 -0
  50. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 +0 -0
  51. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 +0 -0
  52. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 +0 -0
  53. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 +0 -0
  54. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 +0 -0
  55. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 +0 -0
  56. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 +0 -0
  57. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 +0 -0
  58. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 +0 -0
  59. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 +0 -0
  60. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 +0 -0
  61. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 +0 -0
  62. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 +0 -0
  63. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 +0 -0
  64. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 +0 -0
  65. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 +0 -0
  66. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 +0 -0
  67. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 +0 -0
  68. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 +0 -0
  69. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 +0 -0
  70. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 +0 -0
  71. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 +0 -0
  72. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 +0 -0
  73. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 +0 -0
  74. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 +0 -0
  75. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 +0 -0
  76. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 +0 -0
  77. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 +0 -0
  78. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 +0 -0
  79. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 +0 -0
  80. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 +0 -0
  81. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 +0 -0
  82. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 +0 -0
  83. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 +0 -0
  84. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 +0 -0
  85. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 +0 -0
  86. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/fonts.css +0 -0
  87. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/docs/stylesheets/readme.txt +0 -0
  88. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/mkdocs.yml +0 -0
  89. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/pyproject.toml +0 -0
  90. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/__init__.py +0 -0
  91. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/ADC_CALIBRATION.py +0 -0
  92. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/ANALOG_READBACK.py +0 -0
  93. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/DATA_TRANSMISSION.py +0 -0
  94. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/HVGROUP_IV_MEASURE.py +0 -0
  95. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/INJECTION_CAPACITANCE.py +0 -0
  96. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/IV_MEASURE.py +0 -0
  97. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/LONG_TERM_STABILITY_DCS.py +0 -0
  98. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/LP_MODE.py +0 -0
  99. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/OVERVOLTAGE_PROTECTION.py +0 -0
  100. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/SLDO.py +0 -0
  101. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/THERMAL_PERFORMANCE.py +0 -0
  102. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/UNDERSHUNT_PROTECTION.py +0 -0
  103. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/VCAL_CALIBRATION.py +0 -0
  104. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/__init__.py +0 -0
  105. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/__main__.py +0 -0
  106. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/get_nominal_current.py +0 -0
  107. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/globals.py +0 -0
  108. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/hardware_emulator.py +0 -0
  109. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/main.py +0 -0
  110. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/split_old_config.py +0 -0
  111. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/upload_localdb.py +0 -0
  112. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/cli/yarr.py +0 -0
  113. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/console.py +0 -0
  114. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_emulator_merged_vmux.json +0 -0
  115. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_felix_merged_vmux_itkpixv2.json +0 -0
  116. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_felix_merged_vmux_v1.json +0 -0
  117. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_felix_separate_vmux_itkpixv2.json +0 -0
  118. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_felix_separate_vmux_v1.json +0 -0
  119. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_lls_qc_itkpixv2.json +0 -0
  120. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_itkpixv2.json +0 -0
  121. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_v1.json +0 -0
  122. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_separate_vmux_itkpixv2.json +0 -0
  123. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/configs/hw_config_example_separate_vmux_v1.json +0 -0
  124. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_Lx_dummy.json +0 -0
  125. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_Lx_dummy_disabledchip.json +0 -0
  126. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/configs/connectivity/20UPGXM1234567_info.json +0 -0
  127. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip1.json +0 -0
  128. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip2.json +0 -0
  129. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip3.json +0 -0
  130. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/configs/connectivity/chip/dummy_chip4.json +0 -0
  131. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/configs/controller/specCfg-rd53b.json +0 -0
  132. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/emulator/module_state_template.json +0 -0
  133. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/data/schema/meas_config.json +0 -0
  134. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/__init__.py +0 -0
  135. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/adc_calibration.py +0 -0
  136. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/data_transmission.py +0 -0
  137. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/hvgroup_iv_measure.py +0 -0
  138. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/injection_capacitance.py +0 -0
  139. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/iv_measure.py +0 -0
  140. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/long_term_stability_dcs.py +0 -0
  141. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/lp_mode.py +0 -0
  142. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/overvoltage_protection.py +0 -0
  143. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/sldo.py +0 -0
  144. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/thermal_performance.py +0 -0
  145. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/undershunt_protection.py +0 -0
  146. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/measurements/vcal_calibration.py +0 -0
  147. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/typing_compat.py +0 -0
  148. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/__init__.py +0 -0
  149. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/cellqc_box.py +0 -0
  150. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/hardware_control_base.py +0 -0
  151. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/hrc.py +0 -0
  152. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/lls_interlock.py +0 -0
  153. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/misc.py +0 -0
  154. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/mops.py +0 -0
  155. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/multimeter.py +0 -0
  156. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/ntc.py +0 -0
  157. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/power_supply.py +0 -0
  158. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/src/module_qc_tools/utils/subprocess_emulator.py +0 -0
  159. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/conftest.py +0 -0
  160. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_emulator/lls_connectivity_OB_preprod_longeron_M6.json +0 -0
  161. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_emulator/module_configs/20UPGM22601146/20UPGM22601146_info.json +0 -0
  162. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_emulator/module_configs/20UPGM22601158/20UPGM22601158_info.json +0 -0
  163. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_emulator/module_configs/20UPGM22601160/20UPGM22601160_info.json +0 -0
  164. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_emulator/module_configs/20UPGM22601171/20UPGM22601171_info.json +0 -0
  165. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_emulator/module_configs/20UPGM22601181/20UPGM22601181_info.json +0 -0
  166. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_emulator/module_configs/20UPGM22601182/20UPGM22601182_info.json +0 -0
  167. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_emulator.py +0 -0
  168. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_measurements.py +0 -0
  169. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_package.py +0 -0
  170. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_schema/cutter_pcb_tab.json +0 -0
  171. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_schema/cutter_pcb_tab_BAD.json +0 -0
  172. {module_qc_tools-2.9.0 → module_qc_tools-2.9.2}/tests/test_schema.py +0 -0
@@ -16,10 +16,10 @@ cache:
16
16
  - .cache/pre-commit
17
17
  - venv/
18
18
 
19
- image: registry.cern.ch/docker.io/library/python:3.11-buster
19
+ image: registry.cern.ch/docker.io/library/python:3.12-bookworm
20
20
  before_script:
21
21
  # want to set up a virtualenv to cache
22
- - apt-get install -y --no-install-recommends git
22
+ - apt-get update && apt-get install -y --no-install-recommends git
23
23
  - python -V
24
24
  - git config --global credential.helper 'cache'
25
25
  - |
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "description": " general python tool for running ITkPixV1.1 and ITkPixV2 module QC tests for the ATLAS ITk project",
3
3
  "license": "MIT",
4
- "title": "atlas-itk-pixel-modules/mqt: v2.9.0",
5
- "version": "v2.9.0",
4
+ "title": "atlas-itk-pixel-modules/mqt: v2.9.2",
5
+ "version": "v2.9.2",
6
6
  "upload_type": "software",
7
7
  "creators": [
8
8
  {
@@ -120,7 +120,7 @@
120
120
  "related_identifiers": [
121
121
  {
122
122
  "scheme": "url",
123
- "identifier": "https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/tree/v2.9.0",
123
+ "identifier": "https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/tree/v2.9.2",
124
124
  "relation": "isSupplementTo"
125
125
  }
126
126
  ]
@@ -77,6 +77,6 @@ keywords:
77
77
  license:
78
78
  - mit
79
79
  message: If you use this software, please cite it using the metadata from this file.
80
- title: 'atlas-itk-pixel-modules/mqt: v2.9.0'
80
+ title: 'atlas-itk-pixel-modules/mqt: v2.9.2'
81
81
  type: software
82
- version: v2.9.0
82
+ version: v2.9.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: module_qc_tools
3
- Version: 2.9.0
3
+ Version: 2.9.2
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
@@ -45,7 +45,7 @@ Requires-Dist: typer>=0.18.0
45
45
  Requires-Dist: urllib3<2,>=1.26.20; 'el7.x86_64' in platform_release
46
46
  Description-Content-Type: text/markdown
47
47
 
48
- # module-qc-tools v2.9.0
48
+ # module-qc-tools v2.9.2
49
49
 
50
50
  A general python tool for running ITkPixV1.1 and ITkPixV2 module QC tests
51
51
 
@@ -1,4 +1,4 @@
1
- # module-qc-tools v2.9.0
1
+ # module-qc-tools v2.9.2
2
2
 
3
3
  A general python tool for running ITkPixV1.1 and ITkPixV2 module QC tests
4
4
 
@@ -16,6 +16,17 @@ and this project adheres to
16
16
 
17
17
  **_Fixed:_**
18
18
 
19
+ - Handle module communication loss from extreme VDDA/VDDD trim values (0, 1,
20
+ 14, 15) in `ANALOG_READBACK` gracefully - pad the affected trim point with 0
21
+ and continue instead of crashing the measurement
22
+
23
+ ## [2.9.1](https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/tags/v2.9.1) - 2006-07-23 ## {: #mqt-v2.9.1 }
24
+
25
+ **_Changed:_**
26
+
27
+ - Updated compliance for triplets to 120 uA in accordance with documentation
28
+ (!291)
29
+
19
30
  ## [2.9.0](https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/tags/v2.9.0) - 2006-07-13 ## {: #mqt-v2.9.0 }
20
31
 
21
32
  **_Changed:_**
@@ -94,7 +94,7 @@ package.
94
94
  $ python -m venv venv
95
95
  $ source venv/bin/activate
96
96
  $ python -m pip install -U pip
97
- $ python -m pip install -U pip module-qc-tools==2.9.0
97
+ $ python -m pip install -U pip module-qc-tools==2.9.2
98
98
  ```
99
99
 
100
100
  ### via uv
@@ -103,7 +103,7 @@ $ python -m pip install -U pip module-qc-tools==2.9.0
103
103
  $ python -m venv venv
104
104
  $ source venv/bin/activate
105
105
  $ python -m pip install uv
106
- $ uv pip install module-qc-tools==2.9.0
106
+ $ uv pip install module-qc-tools==2.9.2
107
107
  ```
108
108
 
109
109
  # Usage
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.9.0'
22
- __version_tuple__ = version_tuple = (2, 9, 0)
21
+ __version__ = version = '2.9.2'
22
+ __version_tuple__ = version_tuple = (2, 9, 2)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -11,7 +11,7 @@
11
11
  "IV_MEASURE": {
12
12
  "v_min": {"L0": 0, "L1": 0, "L2": 0},
13
13
  "v_max": {"L0": -100, "L1": -200, "L2": -200},
14
- "i_max": {"L0": 100e-6, "L1": 100e-6, "L2": 100e-6},
14
+ "i_max": {"L0": 120e-6, "L1": 100e-6, "L2": 100e-6},
15
15
  "n_points": {"L0": 101, "L1": 41, "L2": 41},
16
16
  "settling_time": {"L0": 2, "L1": 2, "L2": 2}
17
17
  },
@@ -484,65 +484,98 @@ def run_vdda_vddd_vs_trim(config, ps, hv, yr, debug_gnd, use_calib_adc):
484
484
  config_trim, _status = yr.read_register(name=trim_name, chip_position=chip)
485
485
 
486
486
  for trim in config[trim_name]:
487
- # Set trim of all chips
488
- yr.write_register(name=trim_name, value=trim, chip_position=chip)
489
-
490
- # Run eye-diagram and update the delay in the controller config according to new trim values
491
- logger.info(f"Running eye diagram for VMUX{v_mux}={trim}")
492
- _eye, _status = yr.eyeDiagram(skipconfig=True, testsize=100000)
493
-
494
- # if debug GND set, measure the GND for the first VMUX
495
- if debug_gnd and n == 0:
496
- vmux_gnd = read_vmux(
497
- meter,
498
- yr,
499
- config,
500
- v_mux=vmux_value_gnd,
501
- use_adc=use_calib_adc,
502
- chip_position=chip,
503
- )
504
- imux_gnd = read_vmux(
505
- meter,
506
- yr,
507
- config,
508
- i_mux=imux_value_gnd,
509
- use_adc=use_calib_adc,
510
- chip_position=chip,
511
- )
512
-
513
487
  v_mea_chips = {}
514
488
  i_mea_chips = {}
515
-
516
- ## read VDD
517
- v_mea_chips[v_mux] = read_vmux(
518
- meter,
519
- yr,
520
- config,
521
- v_mux=v_mux,
522
- use_adc=use_calib_adc,
523
- chip_position=chip,
524
- )
525
-
526
- ## Read muxes vs trim
527
- for _imux in imux_to_measure[domain]:
528
- i_mea_chips[_imux] = read_vmux(
489
+ rosc_mea = []
490
+
491
+ try:
492
+ # Set trim of all chips
493
+ yr.write_register(name=trim_name, value=trim, chip_position=chip)
494
+
495
+ # Run eye-diagram and update the delay in the controller config according to new trim values
496
+ logger.info(f"Running eye diagram for VMUX{v_mux}={trim}")
497
+ _eye, _status = yr.eyeDiagram(skipconfig=True, testsize=100000)
498
+
499
+ # if debug GND set, measure the GND for the first VMUX
500
+ if debug_gnd and n == 0:
501
+ vmux_gnd = read_vmux(
502
+ meter,
503
+ yr,
504
+ config,
505
+ v_mux=vmux_value_gnd,
506
+ use_adc=use_calib_adc,
507
+ chip_position=chip,
508
+ )
509
+ imux_gnd = read_vmux(
510
+ meter,
511
+ yr,
512
+ config,
513
+ i_mux=imux_value_gnd,
514
+ use_adc=use_calib_adc,
515
+ chip_position=chip,
516
+ )
517
+
518
+ ## read VDD
519
+ v_mea_chips[v_mux] = read_vmux(
529
520
  meter,
530
521
  yr,
531
522
  config,
532
- i_mux=_imux,
523
+ v_mux=v_mux,
533
524
  use_adc=use_calib_adc,
534
525
  chip_position=chip,
535
526
  )
536
527
 
537
- for _vmux in vmux_to_measure[domain]:
538
- v_mea_chips[_vmux] = read_vmux(
539
- meter,
540
- yr,
541
- config,
542
- v_mux=_vmux,
543
- use_adc=use_calib_adc,
544
- chip_position=chip,
528
+ ## Read muxes vs trim
529
+ for _imux in imux_to_measure[domain]:
530
+ i_mea_chips[_imux] = read_vmux(
531
+ meter,
532
+ yr,
533
+ config,
534
+ i_mux=_imux,
535
+ use_adc=use_calib_adc,
536
+ chip_position=chip,
537
+ )
538
+
539
+ for _vmux in vmux_to_measure[domain]:
540
+ v_mea_chips[_vmux] = read_vmux(
541
+ meter,
542
+ yr,
543
+ config,
544
+ v_mux=_vmux,
545
+ use_adc=use_calib_adc,
546
+ chip_position=chip,
547
+ )
548
+
549
+ # Read ROSC vs trim
550
+ if v_mux == 38:
551
+ mea, _status = yr.read_ringosc(chip_position=chip)
552
+ rosc_mea = [float(num) for num in mea[0].split()]
553
+
554
+ except Exception as e:
555
+ # Extreme trim values (0, 1, 14, 15) can push VDDA/VDDD out of
556
+ # range and cause the module to lose communication. Pad this
557
+ # trim point with 0 and move on instead of crashing the scan.
558
+ logger.error(e)
559
+ logger.error(
560
+ f"Problem running VDDA/VDDD vs Trim at chip {chip}, {trim_name}={trim} "
561
+ "(likely lost communication due to an extreme trim value), "
562
+ "padding with 0 and continuing to next trim point"
545
563
  )
564
+ if debug_gnd and n == 0:
565
+ vmux_gnd = [0]
566
+ imux_gnd = [0]
567
+ v_mea_chips[v_mux] = [0]
568
+ for _imux in imux_to_measure[domain]:
569
+ i_mea_chips[_imux] = [0]
570
+ for _vmux in vmux_to_measure[domain]:
571
+ v_mea_chips[_vmux] = [0]
572
+ if v_mux == 38:
573
+ rosc_mea = [0.0] * 42
574
+
575
+ for j, item in enumerate(rosc_mea):
576
+ if f"ROSC{j}" not in i_mea[chip]:
577
+ i_mea[chip][f"ROSC{j}"] = []
578
+ i_mea[chip][f"ROSC{j}"].append(item)
546
579
 
547
580
  ## measure VDDA/D vs trim
548
581
  if trim_name not in i_mea[chip]:
@@ -568,15 +601,6 @@ def run_vdda_vddd_vs_trim(config, ps, hv, yr, debug_gnd, use_calib_adc):
568
601
  i_mea[chip][f"Vmux{vmux_value_gnd}"].extend(vmux_gnd)
569
602
  i_mea[chip][f"Imux{imux_value_gnd}"].extend(imux_gnd)
570
603
 
571
- # Read ROSC vs trim
572
- if v_mux == 38:
573
- mea, _status = yr.read_ringosc(chip_position=chip)
574
- rosc_mea = [float(num) for num in mea[0].split()]
575
- for j, item in enumerate(rosc_mea):
576
- if f"ROSC{j}" not in i_mea[chip]:
577
- i_mea[chip][f"ROSC{j}"] = []
578
- i_mea[chip][f"ROSC{j}"].append(item)
579
-
580
604
  data[chip].add_data(i_mea[chip])
581
605
 
582
606
  i_mea = [{} for _ in range(yr._number_of_chips)]
@@ -585,10 +609,17 @@ def run_vdda_vddd_vs_trim(config, ps, hv, yr, debug_gnd, use_calib_adc):
585
609
  logger.info(
586
610
  f"Set VMUX{v_mux} back to default and re-running :eye: diagram."
587
611
  )
588
- yr.write_register(
589
- name=trim_name, value=int(config_trim[0]), chip_position=chip
590
- )
591
- _eye, _status = yr.eyeDiagram(skipconfig=True)
612
+ try:
613
+ yr.write_register(
614
+ name=trim_name, value=int(config_trim[0]), chip_position=chip
615
+ )
616
+ _eye, _status = yr.eyeDiagram(skipconfig=True)
617
+ except Exception as e:
618
+ logger.error(e)
619
+ logger.error(
620
+ f"Problem resetting {trim_name} back to default on chip {chip} "
621
+ "after communication loss - continuing anyway."
622
+ )
592
623
 
593
624
  logger.info("VDDA/VDDD measurement done!")
594
625
  logger.info(f"TimeEnd: {datetime.now().strftime('%Y-%m-%d_%H%M%S')}")
@@ -311,7 +311,7 @@ class yarr(hardware_control_base):
311
311
 
312
312
  def dataMergingCheck(self, testsize=None, mode=None, verbose=False, quiet=False):
313
313
  if not self.dataMergingCheck_exe:
314
- msg = "No `dataMergingCheck_exe` found in hardware config file! Check and compare to https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/blob/v2.9.0/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_itkpixv2.json!"
314
+ msg = "No `dataMergingCheck_exe` found in hardware config file! Check and compare to https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/blob/v2.9.2/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_itkpixv2.json!"
315
315
  raise RuntimeError(msg)
316
316
 
317
317
  _mode = "4-to-1"
@@ -362,7 +362,7 @@ class yarr(hardware_control_base):
362
362
  self, dryrun=False, skipconfig=False, testsize=None, connectivity=None
363
363
  ):
364
364
  if not self.eyeDiagram_exe:
365
- msg = "No `eyeDiagram_exe` found in hardware config file! Check and compare to https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/blob/v2.9.0/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_itkpixv2.json!"
365
+ msg = "No `eyeDiagram_exe` found in hardware config file! Check and compare to https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-tools/-/blob/v2.9.2/src/module_qc_tools/data/configs/hw_config_example_merged_vmux_itkpixv2.json!"
366
366
  raise RuntimeError(msg)
367
367
  _dryrun = ""
368
368
  _skipconfig = ""
@@ -1,5 +1,5 @@
1
1
  [version]
2
- current = "2.9.0"
2
+ current = "2.9.2"
3
3
 
4
4
  # Example of a semver regexp.
5
5
  # Make sure this matches current_version before
@@ -17,7 +17,7 @@ regex = '''
17
17
 
18
18
  [git]
19
19
  # The current version will get updated when tbump is run
20
- message_template = "Bump version: 2.9.0 → {new_version}"
20
+ message_template = "Bump version: 2.9.2 → {new_version}"
21
21
  tag_template = "v{new_version}"
22
22
 
23
23
  # For each file to patch, add a [[file]] config
File without changes