jitxexamples 1.6.2__tar.gz → 1.7.0__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 (237) hide show
  1. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/.gitignore +1 -1
  2. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/CLAUDE.md +4 -4
  3. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/PKG-INFO +1 -1
  4. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/README.md +4 -4
  5. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js0-setup/JS0_Reference_Companion.md +4 -4
  6. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js0-setup/JS0_Setup_Runbook.md +4 -4
  7. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/README.md +2 -2
  8. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part1-stackup/JS1_Part1_Stackup-from-Fab-CSV_Runbook.md +8 -8
  9. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part1-stackup/JS1_Part1_Stackup_Presentation.pdf +0 -0
  10. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part1-stackup/JS1_Part1_Stackup_Presentation.pptx +0 -0
  11. jitxexamples-1.7.0/jumpstart-kits/js1-stackup-components/part2-parametric-passives/JS1_Part2_Parametric-Passives_Presentation.pdf +0 -0
  12. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part2-parametric-passives/JS1_Part2_Parametric-Passives_Presentation.pptx +0 -0
  13. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part2-parametric-passives/JS1_Part2_Parametric-Passives_Runbook.md +13 -13
  14. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part3-versal-fpga/JS1_Part3_Reference_Companion.md +7 -7
  15. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part3-versal-fpga/JS1_Part3_Versal-FPGA-from-Pin-File_Runbook.md +12 -12
  16. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part3-versal-fpga/JS1_Part3_Versal-FPGA_Presentation.pdf +0 -0
  17. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part3-versal-fpga/JS1_Part3_Versal-FPGA_Presentation.pptx +0 -0
  18. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part3-versal-fpga/README.md +7 -7
  19. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/main.py +1 -1
  20. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/test.log +1 -1
  21. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_js1_parametric_passives.py +1 -1
  22. jitxexamples-1.6.2/jumpstart-kits/js1-stackup-components/part2-parametric-passives/JS1_Part2_Parametric-Passives_Presentation.pdf +0 -0
  23. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/.github/workflows/build.yaml +0 -0
  24. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/.github/workflows/mirror-main.yml +0 -0
  25. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/.github/workflows/release.yaml +0 -0
  26. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/build.err +0 -0
  27. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/build.log +0 -0
  28. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/captured_json/capacitor_minimal.json +0 -0
  29. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/captured_json/inductor_minimal.json +0 -0
  30. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/captured_json/resistor_minimal.json +0 -0
  31. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/docs/Makefile +0 -0
  32. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/docs/requirements.txt +0 -0
  33. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/docs/source/conf.py +0 -0
  34. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/docs/source/index.rst +0 -0
  35. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/hooks/pre-commit +0 -0
  36. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/README.md +0 -0
  37. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js0-setup/JS0_Environment_Setup.md +0 -0
  38. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js0-setup/README.md +0 -0
  39. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js0-setup/presentation/JS0_Presentation.pdf +0 -0
  40. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js0-setup/presentation/JS0_Presentation.pptx +0 -0
  41. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js0-setup/presentation/README.md +0 -0
  42. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part1-stackup/JS1_Part1_Fab-Stackup.csv +0 -0
  43. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part1-stackup/README.md +0 -0
  44. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js1-stackup-components/part2-parametric-passives/README.md +0 -0
  45. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/js2-circuits/README.md +0 -0
  46. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/shared/JITX_Architecture_and_Systems_Requirements_v2_0.md +0 -0
  47. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/shared/README.md +0 -0
  48. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/shared/images/JITX_Architecture_Fig1_Deployment.png +0 -0
  49. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/jumpstart-kits/shared/images/JITX_Architecture_FigA1_Workflow.png +0 -0
  50. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/lint.log +0 -0
  51. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/pyproject.toml +0 -0
  52. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/__init__.py +0 -0
  53. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/audio_amps/PAM8302AADCR.py +0 -0
  54. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/battery_managers/BQ24078RGTR.py +0 -0
  55. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/battery_managers/BQ24078RGTR.stp +0 -0
  56. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/battery_managers/PH2_0_2PWB.py +0 -0
  57. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/bjts/BJT_2N3904S_RTKPS.py +0 -0
  58. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/buttons/PTS810SJM250SMTRLFS.py +0 -0
  59. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/buttons/__init__.py +0 -0
  60. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/buttons/xunpu_TS_1088_AR02016.py +0 -0
  61. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/buttons/xunpu_TS_1088_AR02016.stp +0 -0
  62. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/connectors/__init__.py +0 -0
  63. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/connectors/hirose_electric_co_ltd_U_FL_R_SMT_10.py +0 -0
  64. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/connectors/molex_2012670005.py +0 -0
  65. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/connectors/myoung_MY_1632_03.py +0 -0
  66. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/connectors/pulse_electronics_JD0_0001NL.py +0 -0
  67. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/connectors/q_j_CR2032_BS_6_1.py +0 -0
  68. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/connectors/q_j_CR2032_BS_6_1.stp +0 -0
  69. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/connectors/weidmuller_LSF_SMT.py +0 -0
  70. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/crystals/HC_49SM12MHz20pF30ppm.py +0 -0
  71. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/crystals/__init__.py +0 -0
  72. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/crystals/yangxing_tech_X322512MSB4SI.py +0 -0
  73. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/crystals/yangxing_tech_X322512MSB4SI.stp +0 -0
  74. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/digital_isolators/PUSB3FR4.py +0 -0
  75. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/diodes_tvs/__init__.py +0 -0
  76. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/diodes_tvs/littelfuse_SMBJ43CA.py +0 -0
  77. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/diodes_tvs/littelfuse_SMBJ43CA.stp +0 -0
  78. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/fets_n_ch/BSN20.py +0 -0
  79. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/fets_n_ch/BSS138.py +0 -0
  80. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/fets_n_ch/BSS138.stp +0 -0
  81. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/fets_p_ch/AO3401A.py +0 -0
  82. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/fets_p_ch/AO6409.py +0 -0
  83. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/fets_p_ch/AO6409.stp +0 -0
  84. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/flash/__init__.py +0 -0
  85. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/flash/winbond_W25Q128JVSIQ.py +0 -0
  86. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/flash/winbond_W25Q128JVSIQ.stp +0 -0
  87. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/isolators/__init__.py +0 -0
  88. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/isolators/texas_instruments_ISO1211.py +0 -0
  89. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/led_drivers/IS31FL3236A_QFLS2_TR.py +0 -0
  90. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/KT_0603G.py +0 -0
  91. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/KT_0603G.stp +0 -0
  92. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/KT_0603R.py +0 -0
  93. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/KT_0603W.py +0 -0
  94. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/KT_0603W.stp +0 -0
  95. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/KT_0603Y.py +0 -0
  96. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/WS2816C_2121.py +0 -0
  97. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/__init__.py +0 -0
  98. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/foshan_nationstar_optoelectronics_FM_B2020RGBA_HG.py +0 -0
  99. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/togialed_TJ_S3210SW5TGLC2R_A5.py +0 -0
  100. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/leds/togialed_TJ_S3210SW5TGLC2R_A5.stp +0 -0
  101. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/level_translators/logic_level_shifter.py +0 -0
  102. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/logic/__init__.py +0 -0
  103. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/logic/texas_instruments_SN74HC14PWR.py +0 -0
  104. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/logic/texas_instruments_SN74HC14PWR.stp +0 -0
  105. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/mcus/__init__.py +0 -0
  106. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/mcus/nordic_NRF52840_QIAA_R.py +0 -0
  107. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/mcus/raspberry_pi_RP2040.py +0 -0
  108. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/memories/W25Q128JVSIQTR.py +0 -0
  109. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/microphones/__init__.py +0 -0
  110. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/microphones/allpower_AP3722AT.py +0 -0
  111. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/opamps/__init__.py +0 -0
  112. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/opamps/stmicroelectronics_TS971ILT.py +0 -0
  113. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/opamps/texas_instruments_OPA189.py +0 -0
  114. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/opamps/texas_instruments_TLV314IDBVR.py +0 -0
  115. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/opamps/texas_instruments_TLV314IDBVR.stp +0 -0
  116. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/passives/RK09K1130AP5.py +0 -0
  117. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_linear_regulators/AP2125K_2_8TRG1.py +0 -0
  118. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_linear_regulators/NCP1117LPST33T3G.py +0 -0
  119. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_linear_regulators/__init__.py +0 -0
  120. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_linear_regulators/analog_devices_LT1763CS8.py +0 -0
  121. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_linear_regulators/analog_devices_LT1763CS8.stp +0 -0
  122. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_linear_regulators/texas_instruments_LM1117MP.py +0 -0
  123. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_switches/high_side_switch.py +0 -0
  124. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_switchmode/__init__.py +0 -0
  125. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/power_switchmode/texas_instruments_TPS62933DRLR.py +0 -0
  126. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/sensors/__init__.py +0 -0
  127. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/sensors/stmicroelectronics_LIS3DHTR.py +0 -0
  128. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/sensors_distance/VL53L0CXV0DH_1.py +0 -0
  129. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/switches/MK_12C02_G025.py +0 -0
  130. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/timers/__init__.py +0 -0
  131. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/timers/texas_instruments_NE555.py +0 -0
  132. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/transceivers/__init__.py +0 -0
  133. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/transceivers/texas_instruments_SN65HVD1781DR.py +0 -0
  134. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/transceivers/texas_instruments_SN65HVD1781DR.stp +0 -0
  135. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/transistors/__init__.py +0 -0
  136. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/transistors/changjiang_electronics_tech_BSS138.py +0 -0
  137. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/transistors/on_semiconductor_NTA4151PT1G.py +0 -0
  138. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/components/transistors/seiko_epson_TSX_3225_32_0000MF10Z_W6.py +0 -0
  139. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/demos/__init__.py +0 -0
  140. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/demos/si_bga_optimization/__init__.py +0 -0
  141. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/demos/si_bga_optimization/bga_escape.py +0 -0
  142. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/demos/si_bga_optimization/constraints.py +0 -0
  143. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/demos/si_bga_optimization/deskew.py +0 -0
  144. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/demos/si_bga_optimization/generic_bga.py +0 -0
  145. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/demos/si_bga_optimization/si_geometry.py +0 -0
  146. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/demos/si_bga_optimization/substrate.py +0 -0
  147. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/__init__.py +0 -0
  148. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/__init__.py +0 -0
  149. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/hdi_stackup/__init__.py +0 -0
  150. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/hdi_stackup/board.py +0 -0
  151. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/hdi_stackup/main.py +0 -0
  152. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/__init__.py +0 -0
  153. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/combined.py +0 -0
  154. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/components/__init__.py +0 -0
  155. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/components/chip_smt.py +0 -0
  156. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/components/panasonic_erj.py +0 -0
  157. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/components/resistor.py +0 -0
  158. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/components/samsung_cl.py +0 -0
  159. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/components/vishay_crcw.py +0 -0
  160. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/components/yageo_rc.py +0 -0
  161. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/parametric_passives/main.py +0 -0
  162. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/__init__.py +0 -0
  163. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/bundles.py +0 -0
  164. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/circuit.py +0 -0
  165. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/landpattern.py +0 -0
  166. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/symbols.py +0 -0
  167. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/tools/__init__.py +0 -0
  168. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/tools/generate_pinout.py +0 -0
  169. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga/xcvp1002.py +0 -0
  170. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/substrates/__init__.py +0 -0
  171. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/src/jitxexamples/substrates/generic_20layer.py +0 -0
  172. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/test.err +0 -0
  173. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/__init__.py +0 -0
  174. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/conftest.py +0 -0
  175. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_AO3401A.py +0 -0
  176. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_AO6409.py +0 -0
  177. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_AP2125K_2_8TRG1.py +0 -0
  178. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_BJT_2N3904S_RTKPS.py +0 -0
  179. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_BQ24078RGTR.py +0 -0
  180. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_BSN20.py +0 -0
  181. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_BSS138.py +0 -0
  182. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_HC_49SM12MHz20pF30ppm.py +0 -0
  183. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_IS31FL3236A_QFLS2_TR.py +0 -0
  184. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_KT_0603G.py +0 -0
  185. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_KT_0603R.py +0 -0
  186. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_KT_0603W.py +0 -0
  187. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_KT_0603Y.py +0 -0
  188. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_MK_12C02_G025.py +0 -0
  189. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_NCP1117LPST33T3G.py +0 -0
  190. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_PAM8302AADCR.py +0 -0
  191. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_PH2_0_2PWB.py +0 -0
  192. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_PTS810SJM250SMTRLFS.py +0 -0
  193. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_PUSB3FR4.py +0 -0
  194. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_RK09K1130AP5.py +0 -0
  195. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_VL53L0CXV0DH_1.py +0 -0
  196. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_W25Q128JVSIQTR.py +0 -0
  197. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_WS2816C_2121.py +0 -0
  198. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_allpower_ap3722at.py +0 -0
  199. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_analog_devices_lt1763cs8.py +0 -0
  200. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_bga_optimization_demo.py +0 -0
  201. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_changjiang_electronics_tech_bss138.py +0 -0
  202. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_foshan_nationstar_optoelectronics_fm_b2020rgba_hg.py +0 -0
  203. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_high_side_switch.py +0 -0
  204. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_hirose_electric_co_ltd_u_fl_r_smt_10.py +0 -0
  205. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_iso1211.py +0 -0
  206. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_jd0_0001nl.py +0 -0
  207. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_js1_hdi_stackup.py +0 -0
  208. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_js1_panasonic_erj.py +0 -0
  209. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_js1_samsung_cl.py +0 -0
  210. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_js1_versal_fpga.py +0 -0
  211. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_js1_vishay_crcw.py +0 -0
  212. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_js1_yageo_rc.py +0 -0
  213. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_littelfuse_smbj43ca.py +0 -0
  214. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_lm1117mp.py +0 -0
  215. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_logic_level_shifter.py +0 -0
  216. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_lsf_smt.py +0 -0
  217. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_molex_2012670005.py +0 -0
  218. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_myoung_my_1632_03.py +0 -0
  219. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_ne555.py +0 -0
  220. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_nordic_nrf52840_qiaa_r.py +0 -0
  221. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_on_semiconductor_nta4151pt1g.py +0 -0
  222. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_opa189.py +0 -0
  223. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_q_j_cr2032_bs_6_1.py +0 -0
  224. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_rp2040.py +0 -0
  225. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_seiko_epson_tsx_3225.py +0 -0
  226. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_sn65hvd1781dr.py +0 -0
  227. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_stmicroelectronics_lis3dhtr.py +0 -0
  228. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_stmicroelectronics_ts971ilt.py +0 -0
  229. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_texas_instruments_sn74hc14pwr.py +0 -0
  230. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_texas_instruments_tlv314idbvr.py +0 -0
  231. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_togialed_tj_s3210sw5tglc2r_a5.py +0 -0
  232. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_tps62933drlr.py +0 -0
  233. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_w25q128.py +0 -0
  234. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_xunpu_ts_1088_ar02016.py +0 -0
  235. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/tests/test_yangxing_tech_x322512msb4si.py +0 -0
  236. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/typecheck.err +0 -0
  237. {jitxexamples-1.6.2 → jitxexamples-1.7.0}/typecheck.log +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
  # Build / cache outputs.
7
7
  **/cache/
8
- # `jitx build` output: <repo-root>/designs/<module.path.design_name>/{design-info,temp,...}
8
+ # `jitx design build` output: <repo-root>/designs/<module.path.design_name>/{design-info,temp,...}
9
9
  # The `designs` directory name is chosen by JITX, not by us — hence the Python
10
10
  # package is `demos`. Anchored: only the repo-root output tree.
11
11
  /designs/
@@ -10,7 +10,7 @@ specifically about working *with an agent* in this repo.
10
10
 
11
11
  ## Repo-specific rules
12
12
 
13
- - **`designs/` at the repo root is JITX build output, not source.** `jitx build` creates
13
+ - **`designs/` at the repo root is JITX build output, not source.** `jitx design build` creates
14
14
  `<repo-root>/designs/<module.path.design_name>/` (`design-info/`, `temp/`, ...). That name is
15
15
  chosen by JITX. The Python demo sources live in `src/jitxexamples/demos/` for exactly this reason.
16
16
  Never add source under a root `designs/`, and never rename `demos/` back to `designs/`.
@@ -21,12 +21,12 @@ specifically about working *with an agent* in this repo.
21
21
  real design elements.
22
22
 
23
23
  - **`jitx.test.TestCase` does not need the JITX runtime.** It only activates the instantiation
24
- context, so instantiating a `SampleDesign` works offline. Only `jitx build` / `jitx ui` need
25
- `jitx runtime start`; `jitx build --dry <target>` translates a design without one.
24
+ context, so instantiating a `SampleDesign` works offline. Only `jitx design build` / `jitx ui` need
25
+ `jitx runtime start`; `jitx design build --dry <target>` translates a design without one.
26
26
 
27
27
  - **The repo targets the jitx 4.4 line, and public PyPI serves it.** `pyproject.toml` requires
28
28
  `jitx>=4.4.0,<5`. Two surfaces have to agree — a 4.4 package against a 4.2 runtime is not a
29
- working install — so `jitx build` also needs the runtime (`~/.jitx/current`, check with
29
+ working install — so `jitx design build` also needs the runtime (`~/.jitx/current`, check with
30
30
  `jitx runtime introspect`) on the same line as the library. Before concluding demo code is broken,
31
31
  check which `jitx` you actually resolved on both.
32
32
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: jitxexamples
3
- Version: 1.6.2
3
+ Version: 1.7.0
4
4
  Summary: Library of example JITX components, substrates, and demo designs
5
5
  Project-URL: Homepage, https://jitx.com
6
6
  Project-URL: Documentation, https://docs.jitx.com
@@ -26,15 +26,15 @@ JITX design builds require an installed and running JITX runtime. From the proje
26
26
 
27
27
  ```bash
28
28
  jitx runtime start --background
29
- jitx find
30
- jitx build jitxexamples.demos.si_bga_optimization.bga_escape.bga_optimization_design
29
+ jitx design find
30
+ jitx design build jitxexamples.demos.si_bga_optimization.bga_escape.bga_optimization_design
31
31
  jitx ui open --board --design jitxexamples.demos.si_bga_optimization.bga_escape.bga_optimization_design
32
32
  ```
33
33
 
34
34
  Build the explicit non-test design target above; do not substitute similarly named targets from
35
- `test`, `tests`, or a test file listed by `jitx find`.
35
+ `test`, `tests`, or a test file listed by `jitx design find`.
36
36
 
37
- `jitx build` writes its output to `<repo-root>/designs/<module.path.design_name>/`
37
+ `jitx design build` writes its output to `<repo-root>/designs/<module.path.design_name>/`
38
38
  (`design-info/`, `temp/`, ...). That directory name is chosen by JITX, not by this repo, and is
39
39
  git-ignored — which is why the Python sources live in `src/jitxexamples/demos/` rather than
40
40
  `src/jitxexamples/designs/`.
@@ -1,4 +1,4 @@
1
- <!-- JITX Setup — Reference Companion (JS0) · rev 1.5 · 2026-09-08 -->
1
+ <!-- JITX Setup — Reference Companion (JS0) · rev 1.6 · 2026-09-14 -->
2
2
 
3
3
  # JITX Setup — Reference Companion (JS0)
4
4
 
@@ -16,9 +16,9 @@ Run these in a terminal — you'll get a working, authenticated install, proven
16
16
  2. **Install the JITX CLI.** `pip install jitx`. If you hit the PEP 668 "externally-managed-environment" error — the Python packaging rule that stops `pip` writing into a system-managed interpreter — install `uv` (https://astral.sh/uv) and run `uv tool install jitx` instead. Verify: `jitx --version`.
17
17
  3. **Install the runtime.** `jitx runtime install` — do this **before** signing in. **On Windows**, this launches an MSI installer in a separate popup window (possibly behind others) — complete it to finish. If it fails with `not tested on Linux distribution '<x>'`, retry as `jitx runtime install --target ubuntu`; the Ubuntu build runs on most glibc Linux. Check it with `jitx runtime introspect`, which works anywhere — `jitx runtime status` is project-scoped and fails with `No pyproject.toml found` until you create the project in step 5.
18
18
  4. **Sign in.** `jitx auth login` prints an activation link and a code; open it in any browser, approve, and the command completes on its own. It does not launch the browser for you, which matters on a headless or remote machine. **The link expires in 10 minutes** — re-run the command if it lapses. In the browser, **Sign in with Google** is simplest; if you're **not** using a Google-enabled account, enter your registered email and JITX password. Confirm with `jitx auth show`: **`Authorized: yes`** is the field that matters, and an `Expires` in the past is normal — the value shown is always the pre-refresh one, because the authorization check that renews the token runs after the claims are read.
19
- 5. **Validate with two builds.** The global CLI (step 2) has no `pip`, so run this inside each project once it exists. Create and activate a virtual environment — `python3 -m venv .venv && source .venv/bin/activate` on macOS or Linux, or `$env:PYTHONUTF8 = "1"; py -3 -m venv .venv` then `.\.venv\Scripts\Activate.ps1` in Windows PowerShell — then `pip install jitx`, `jitx project dependencies upgrade`, `jitx runtime start --background`, and `jitx find`. After the upgrade, `pip show jitx` and `jitx runtime introspect` should report the same release line (4.4.x with 4.4.x). **On Windows**, `PYTHONUTF8=1` keeps the `cp1252` console from choking on `Ω`; and a `WinError 32` from the upgrade means pip is replacing the running `jitx.exe` — run `.\.venv\Scripts\python.exe -m pip install --upgrade jitx` and re-run the upgrade.
20
- - **Simplest.** Create a new project with `jitx project layout init` (this seeds a two-resistor sample design). Build the seeded non-test target from `jitx find` — ignore any target whose module path comes from `test`, `tests`, or a test file. **Take the target verbatim from `jitx find`** — the two halves are derived differently, so don't assemble it yourself: the package is the directory lowercased with hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A directory called `my-first-board` builds as `jitx build my_first_board.main.MyFirstBoard`. Then open the views with `jitx ui open --schematic` and `jitx ui open --board`.
21
- - **Full.** Clone `https://github.com/JITx-Inc/jitx-examples` and build the [`si_bga_optimization`](https://github.com/JITx-Inc/jitx-examples/tree/main/src/jitxexamples/demos/si_bga_optimization) design, taking the target verbatim from `jitx find` as above — expect `jitxexamples.demos.si_bga_optimization.bga_escape.bga_optimization_design`. Open the board view to confirm.
19
+ 5. **Validate with two builds.** The global CLI (step 2) has no `pip`, so run this inside each project once it exists. Create and activate a virtual environment — `python3 -m venv .venv && source .venv/bin/activate` on macOS or Linux, or `$env:PYTHONUTF8 = "1"; py -3 -m venv .venv` then `.\.venv\Scripts\Activate.ps1` in Windows PowerShell — then `pip install jitx`, `jitx project dependencies upgrade`, `jitx runtime start --background`, and `jitx design find`. After the upgrade, `pip show jitx` and `jitx runtime introspect` should report the same release line (4.4.x with 4.4.x). **On Windows**, `PYTHONUTF8=1` keeps the `cp1252` console from choking on `Ω`; and a `WinError 32` from the upgrade means pip is replacing the running `jitx.exe` — run `.\.venv\Scripts\python.exe -m pip install --upgrade jitx` and re-run the upgrade.
20
+ - **Simplest.** Create a new project with `jitx project layout init` (this seeds a two-resistor sample design). Build the seeded non-test target from `jitx design find` — ignore any target whose module path comes from `test`, `tests`, or a test file. **Take the target verbatim from `jitx design find`** — the two halves are derived differently, so don't assemble it yourself: the package is the directory lowercased with hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A directory called `my-first-board` builds as `jitx design build my_first_board.main.MyFirstBoard`. Then open the views with `jitx ui open --schematic` and `jitx ui open --board`.
21
+ - **Full.** Clone `https://github.com/JITx-Inc/jitx-examples` and build the [`si_bga_optimization`](https://github.com/JITx-Inc/jitx-examples/tree/main/src/jitxexamples/demos/si_bga_optimization) design, taking the target verbatim from `jitx design find` as above — expect `jitxexamples.demos.si_bga_optimization.bga_escape.bga_optimization_design`. Open the board view to confirm.
22
22
  - **`jitx ui open` holds the terminal** while its window is open — use a second terminal, or background it, for the next command. Later calls return straight away and add their windows to the JITX app already running; there's no limit on how many views can be open at once, so leave the Simplest build's windows up.
23
23
  - **If the command comes straight back, it crashed — it didn't open.** The slow-first-view note below applies only while `jitx ui open` is still running.
24
24
  - **The first view may be slow — if it's still running.** The very first board or schematic window can take a few minutes to appear — more likely on macOS. If it doesn't show up straight away, wait it out rather than re-running. If nothing shows after **5 minutes**, something is wrong. Later views come up faster.
@@ -1,5 +1,5 @@
1
1
  <!--
2
- JITX Setup Runbook (JS0) · rev 1.5 · 2026-09-08
2
+ JITX Setup Runbook (JS0) · rev 1.6 · 2026-09-14
3
3
  Paste this file into your AI coding agent (Claude Code, Codex / GPT, or Devin), or upload it,
4
4
  and tell the agent to follow it.
5
5
  -->
@@ -85,11 +85,11 @@ $env:PYTHONUTF8 = "1"; py -3 -m venv .venv; .\.venv\Scripts\Activate.ps1
85
85
  pip install jitx
86
86
  jitx project dependencies upgrade
87
87
  jitx runtime start --background
88
- jitx find
88
+ jitx design find
89
89
  ```
90
90
 
91
- - **5a — Simplest build.** Run `jitx project layout init` to create a new JITX project seeded with a two-resistor sample design (Devin users: you made this project in step 4). Then run the setup commands above and build the seeded non-test target from `jitx find` — ignore any target whose module path comes from `test`, `tests`, or a test file. **Take the target verbatim from `jitx find`** — the two halves are derived differently, so don't assemble it yourself: the package is the directory lowercased with hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A directory called `my-first-board` builds as `jitx build my_first_board.main.MyFirstBoard`. Then show me the schematic and board views.
92
- - **5b — Full build.** Clone `https://github.com/JITx-Inc/jitx-examples`, run the setup commands above, and **take the `si_bga_optimization` target verbatim from `jitx find`** — the same rule as 5a, so a repo reorganisation can't strand you on a stale module path. Expect `jitxexamples.demos.si_bga_optimization.bga_escape.bga_optimization_design`. Two things about this repo's output: `jitx find` also prints an `errors: import failed` block for the repo's `tests/` modules — expected here (its tests aren't a package) and not a fault; the `designs:` list is what you take the target from. And after `jitx project dependencies upgrade`, `pip show jitx` and `jitx runtime introspect` must report the same release line (4.4.x with 4.4.x) — if the upgrade moved `jitx` to a different line than the runtime, stop and tell me rather than building. Build it, confirm it builds, and display the board UI windows for me.
91
+ - **5a — Simplest build.** Run `jitx project layout init` to create a new JITX project seeded with a two-resistor sample design (Devin users: you made this project in step 4). Then run the setup commands above and build the seeded non-test target from `jitx design find` — ignore any target whose module path comes from `test`, `tests`, or a test file. **Take the target verbatim from `jitx design find`** — the two halves are derived differently, so don't assemble it yourself: the package is the directory lowercased with hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A directory called `my-first-board` builds as `jitx design build my_first_board.main.MyFirstBoard`. Then show me the schematic and board views.
92
+ - **5b — Full build.** Clone `https://github.com/JITx-Inc/jitx-examples`, run the setup commands above, and **take the `si_bga_optimization` target verbatim from `jitx design find`** — the same rule as 5a, so a repo reorganisation can't strand you on a stale module path. Expect `jitxexamples.demos.si_bga_optimization.bga_escape.bga_optimization_design`. Two things about this repo's output: `jitx design find` also prints an `errors: import failed` block for the repo's `tests/` modules — expected here (its tests aren't a package) and not a fault; the `designs:` list is what you take the target from. And after `jitx project dependencies upgrade`, `pip show jitx` and `jitx runtime introspect` must report the same release line (4.4.x with 4.4.x) — if the upgrade moved `jitx` to a different line than the runtime, stop and tell me rather than building. Build it, confirm it builds, and display the board UI windows for me.
93
93
 
94
94
  > **If a build fails with "You are not authenticated. Please sign in through the JITX Sidebar in VSCode"**, that means step 3 didn't complete — re-run `jitx auth login`, don't go looking for VSCode. `jitx runtime start --background` succeeds while unauthenticated, so a green step 2 is not proof of sign-in, and the real one-line cause arrives underneath two Python tracebacks.
95
95
 
@@ -21,7 +21,7 @@ JS1 consists of three parts: building a stackup (Part 1) and component creation
21
21
 
22
22
  In every part the user uses agents to drive a JITX skill rather than hand-writing the code, and
23
23
  nothing counts as done until it clears its ground-truth check — the fab spec, the datasheet, or the
24
- vendor pin file — **and** `jitx build <non-test design target>` completes successfully.
24
+ vendor pin file — **and** `jitx design build <non-test design target>` completes successfully.
25
25
 
26
26
  ## Start here — the JS1 walkthrough
27
27
 
@@ -71,7 +71,7 @@ a machine-readable file — so you parse it rather than transcribe it. A committ
71
71
  generator reconciles the file to exactly 1,369 balls before any component code exists, and the
72
72
  circuit wrapper lifts the flat pin map into what a board designer actually consumes: 31 `Power`
73
73
  rails, three ground domains, and six GTM transceiver quads as bundles. Verification is layered —
74
- reconciliation (parsed rows = file footer = full 37×37 grid), 19 tests and 198 subtests including
74
+ reconciliation (parsed rows = file footer = full 37×37 grid), an offline test suite including
75
75
  hand-read ball spot-checks, and both designs building `status: ok`. Expect roughly 2–3 hours across
76
76
  four `[HUMAN]` gates, most of it agent-autonomous.
77
77
 
@@ -1,5 +1,5 @@
1
1
  <!--
2
- JITX Stackup-from-Fab-CSV Runbook (JS1 · Part 1) · rev 1.4 · 2026-09-08
2
+ JITX Stackup-from-Fab-CSV Runbook (JS1 · Part 1) · rev 1.5 · 2026-09-14
3
3
  Paste this file into your AI coding agent (Claude Code, Codex / GPT, or Devin), or upload it,
4
4
  together with your stackup CSV, and tell the agent to follow it. Complete the JS0 Setup Runbook
5
5
  first. START A NEW AGENT SESSION before you begin — a skills install only takes effect in a
@@ -40,10 +40,10 @@ $env:PYTHONUTF8 = "1"; py -3 -m venv .venv; .\.venv\Scripts\Activate.ps1
40
40
  pip install jitx
41
41
  jitx project dependencies upgrade
42
42
  jitx runtime start --background
43
- jitx find
43
+ jitx design find
44
44
  ```
45
45
 
46
- Build the seeded non-test target from `jitx find` — ignore any target whose module path comes from `test`, `tests`, or a test file. **Take the target verbatim from `jitx find`.** The two halves are derived differently, so don't assemble it yourself: the package is the directory lowercased with hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A directory called `js1-hdi-stackup` builds as `jitx build js1_hdi_stackup.main.Js1HdiStackup`. This smoke test must succeed before you write any code of your own. If it fails, stop and tell me; do not start on the stackup. Then create `tests/`, add `pytest` and `pyright`, and `git init` if you want version control. Leave the seeded `.gitignore` as it is.
46
+ Build the seeded non-test target from `jitx design find` — ignore any target whose module path comes from `test`, `tests`, or a test file. **Take the target verbatim from `jitx design find`.** The two halves are derived differently, so don't assemble it yourself: the package is the directory lowercased with hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A directory called `js1-hdi-stackup` builds as `jitx design build js1_hdi_stackup.main.Js1HdiStackup`. This smoke test must succeed before you write any code of your own. If it fails, stop and tell me; do not start on the stackup. Then create `tests/`, add `pytest` and `pyright`, and `git init` if you want version control. Leave the seeded `.gitignore` as it is.
47
47
 
48
48
  **2 · Read the report before writing any code.**
49
49
  Parse the CSV and **restate it back to me** per the skill's Source Documents rules; flag whatever is ambiguous.
@@ -63,9 +63,9 @@ Drive the skill's **"From a fab impedance table"** pattern over the IMPEDANCE se
63
63
  **7 · Verify.**
64
64
  Run `pyright` — expect **zero errors and zero suppressions**; a `pyright: ignore` you feel you need is a finding to report, not a way to reach zero. Write CSV-sourced tests per the skill's **"Verifying a Substrate Against Its Source"**.
65
65
 
66
- Then `pytest`. Before you build, **wire the substrate into a design** per the skill's **"Smoke-Test Wiring (Board and Design)"** — step 1's seeded target is not acceptance here, and the skill says why. Then `jitx build <non-test design target>`, one design at a time. Read all of `jitx find`'s output, not just its design list — treat any `import failed:` line as a failure (make `tests/` a package with an `__init__.py` if your tests import shared helpers), and do not build designs discovered under `tests/`; those are pytest fixtures, not smoke-test targets. Finally run **`jitx-code-review`**, fix what it finds, re-run, and report every result to me — including the skill's filled **Substrate completeness check** block.
66
+ Then `pytest`. Before you build, **wire the substrate into a design** per the skill's **"Smoke-Test Wiring (Board and Design)"** — step 1's seeded target is not acceptance here, and the skill says why. Then `jitx design build <non-test design target>`, one design at a time. Read all of `jitx design find`'s output, not just its design list — treat any `import failed:` line as a failure (make `tests/` a package with an `__init__.py` if your tests import shared helpers), and do not build designs discovered under `tests/`; those are pytest fixtures, not smoke-test targets. Finally run **`jitx-code-review`**, fix what it finds, re-run, and report every result to me — including the skill's filled **Substrate completeness check** block.
67
67
 
68
- A good result is: `pyright` reports zero errors, `pytest` is green with every assertion sourced from the CSV, `jitx build` of the design that **binds the substrate** completes and writes its design directory, and `jitx-code-review` returns no unresolved findings. Anything short of that is a failure. Report it to me and stop; do not work around it.
68
+ A good result is: `pyright` reports zero errors, `pytest` is green with every assertion sourced from the CSV, `jitx design build` of the design that **binds the substrate** completes and writes its design directory, and `jitx-code-review` returns no unresolved findings. Anything short of that is a failure. Report it to me and stop; do not work around it.
69
69
 
70
70
  **8 · [HUMAN] Close the loop — re-issue the report.**
71
71
  Now show me the substrate regenerates from the report. **Invite me to change the CSV** — suggest I say: *"the fab came back on the through-hole again — 0.400 mm finished hole this time; re-issue the report and tell me what moved."* **Wait for me to ask.**
@@ -74,9 +74,9 @@ Edit the CSV only with values I give you — both unit columns for the hole, the
74
74
 
75
75
  **If I ask for a dielectric change instead, stop.** A dielectric change re-solves the controlled-impedance line widths, and that solve belongs to the fab — the CSV carries its result, not the model that produced it. Report the affected trace widths as blocked pending re-solved impedance rows; do not estimate them, and do not carry the old widths forward as if they still held. If I supply re-solved rows, carry them through and report before → after for every changed width.
76
76
 
77
- If the rebuild ends in `status: error` with `EOF when reading a line`, the runtime asked *"Significant changes detected… Do you want to continue? [Y/n]"* on a stdin it does not have under `--background` — there is no flag to pre-answer it, and piping `y` into `jitx build` does not reach it. Tell me: I stop the background runtime and run `jitx runtime start` in my own terminal, answer the prompt there, and you rebuild.
77
+ If the rebuild ends in `status: error` with `EOF when reading a line`, the runtime asked *"Significant changes detected… Do you want to continue? [Y/n]"* on a stdin it does not have under `--background` — there is no flag to pre-answer it, and piping `y` into `jitx design build` does not reach it. Tell me: I stop the background runtime and run `jitx runtime start` in my own terminal, answer the prompt there, and you rebuild.
78
78
 
79
- Then close this step the way step 7 closes: `pyright`, `pytest`, a `jitx build` of the design that binds the substrate, and **`jitx-code-review`**. The code and tests you wrote here have not been through that gate — step 7's review went stale the moment you edited anything.
79
+ Then close this step the way step 7 closes: `pyright`, `pytest`, a `jitx design build` of the design that binds the substrate, and **`jitx-code-review`**. The code and tests you wrote here have not been through that gate — step 7's review went stale the moment you edited anything.
80
80
 
81
81
  ---
82
82
 
@@ -86,5 +86,5 @@ Then close this step the way step 7 closes: `pyright`, `pytest`, a `jitx build`
86
86
  - Summed thickness matches the report's finished and overall thickness to the last printed digit; every annular ring and aspect ratio is within its capability limit, derived on the depth basis the NOTES state for that drill type.
87
87
  - No `Symmetric`, no invented SI models, and no **unlabeled** number that can't be pointed at a CSV row — reference-plane widths carry the skill's labeled default — and the STANDARD line/space recorded as prose, not as a structure.
88
88
  - The step-4 gate stopped after the stackup, with vias and routing structures written only after approval.
89
- - `pyright` clean with zero suppressions, `pytest` green from CSV-sourced tests, `jitx find` free of import errors, a design that **binds the substrate** builds, `jitx-code-review` findings fixed — run after step 8 as well as step 7 — and the skill's **Substrate completeness check** block filled in the completion report.
89
+ - `pyright` clean with zero suppressions, `pytest` green from CSV-sourced tests, `jitx design find` free of import errors, a design that **binds the substrate** builds, `jitx-code-review` findings fixed — run after step 8 as well as step 7 — and the skill's **Substrate completeness check** block filled in the completion report.
90
90
  - A prompted CSV re-issue (the through-hole change) flows through to rebuilt code, with the aspect ratio and annular ring re-derived, re-checked against capability, and reported before → after — and the untouched impedance rows called out. A dielectric change without re-solved rows is reported as blocking the affected widths; no estimated width appears anywhere.
@@ -1,5 +1,5 @@
1
1
  <!--
2
- JITX Parametric Component Families Runbook (JS1 · Part 2) · rev 1.4 · 2026-09-08
2
+ JITX Parametric Component Families Runbook (JS1 · Part 2) · rev 1.5 · 2026-09-14
3
3
  Paste this file into your AI coding agent (Claude Code, Codex / GPT, or Devin), or upload it,
4
4
  and tell the agent to follow it. Complete the JS0 Setup Runbook first.
5
5
  START A NEW AGENT SESSION before you begin — a skills install only takes effect in a session
@@ -9,7 +9,7 @@ drives a skill.
9
9
 
10
10
  # JITX Parametric Component Families Runbook (JS1 · Part 2)
11
11
 
12
- **Goal (for the agent):** In a fresh JITX Python project, build four **parameterized, datasheet-driven component families** — three SMD chip-resistor families (**Yageo RC_L**, **Panasonic ERJ**, **Vishay CRCW**) and one MLCC capacitor family (**Samsung Electro-Mechanics CL**). Each family is a single `jitx.Component` class that stands in for the manufacturer's whole catalog family, with **no parts database or online query** — the class *is* the data. Follow the steps **in order**; a family is not done until it passes its tests and `jitx build <non-test design target>`. Where a step is marked **[HUMAN]**, stop and wait for me — do not proceed until I confirm.
12
+ **Goal (for the agent):** In a fresh JITX Python project, build four **parameterized, datasheet-driven component families** — three SMD chip-resistor families (**Yageo RC_L**, **Panasonic ERJ**, **Vishay CRCW**) and one MLCC capacitor family (**Samsung Electro-Mechanics CL**). Each family is a single `jitx.Component` class that stands in for the manufacturer's whole catalog family, with **no parts database or online query** — the class *is* the data. Follow the steps **in order**; a family is not done until it passes its tests and `jitx design build <non-test design target>`. Where a step is marked **[HUMAN]**, stop and wait for me — do not proceed until I confirm.
13
13
 
14
14
  > **For humans:** prerequisites are a completed **JS0** (authenticated `jitx` CLI, `jitx-skills` enabled in your agent) and network access to the manufacturer datasheet URLs in step 2.
15
15
 
@@ -75,7 +75,7 @@ Drive it; don't re-derive it. What is specific to *this* task:
75
75
  ```bash
76
76
  pyright # expect zero errors and zero suppressions
77
77
  pytest # the family's tests (plus all earlier families' tests)
78
- jitx build <non-test design target> # build the intended design, never a target from tests/
78
+ jitx design build <non-test design target> # build the intended design, never a target from tests/
79
79
  ```
80
80
 
81
81
  A `pyright: ignore` you feel you need is a finding to report, not a way to reach zero. Run the
@@ -104,10 +104,10 @@ $env:PYTHONUTF8 = "1"; py -3 -m venv .venv; .\.venv\Scripts\Activate.ps1
104
104
  pip install jitx
105
105
  jitx project dependencies upgrade
106
106
  jitx runtime start --background
107
- jitx find
107
+ jitx design find
108
108
  ```
109
109
 
110
- Build the seeded non-test target from `jitx find` — ignore any target whose module path comes from `test`, `tests`, or a test file. **Take the target verbatim from `jitx find`** — the two halves are derived differently, so don't assemble it yourself: the package is the directory lowercased with hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A directory called `js1-passives` builds as `jitx build js1_passives.main.Js1Passives`. This smoke test must succeed before you write any component code. If it fails, stop and tell me. Then prepare the project for this task: create a `tests/` directory, add `pytest` and `pyright` as dev dependencies, and `git init` if you want version control. Leave the seeded `.gitignore` as it is.
110
+ Build the seeded non-test target from `jitx design find` — ignore any target whose module path comes from `test`, `tests`, or a test file. **Take the target verbatim from `jitx design find`** — the two halves are derived differently, so don't assemble it yourself: the package is the directory lowercased with hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A directory called `js1-passives` builds as `jitx design build js1_passives.main.Js1Passives`. This smoke test must succeed before you write any component code. If it fails, stop and tell me. Then prepare the project for this task: create a `tests/` directory, add `pytest` and `pyright` as dev dependencies, and `git init` if you want version control. Leave the seeded `.gitignore` as it is.
111
111
 
112
112
  **2 · Fetch the datasheets.**
113
113
  Download all four manufacturer datasheets into `.context/` (gitignored — **link the URL in each family's docstring, never commit the PDF**):
@@ -120,29 +120,29 @@ Download all four manufacturer datasheets into `.context/` (gitignored — **lin
120
120
  Per the skill's **"Verify the download is a datasheet"**: these four URLs are canonical, so if one doesn't answer, say whether you hit an egress problem or a moved document, and tell me which URL you ended up using.
121
121
 
122
122
  **3 · Family 1 — Yageo RC_L.**
123
- Drive the component-modeler skill with the Yageo datasheet to build `yageo_rc.py`, following its **Parameterized Component Families** and **Two-Terminal Chip Components** sections. Values encode in Yageo's RKM style (`100K`). Keep this family **self-contained in one file — no shared helpers yet**. Write `tests/test_yageo_rc.py` per the skill's **"Verifying a component with tests"**, cross-checking the datasheet's own ordering example **`RC0402JR-07100KL`**. Table-driven checks go in `self.subTest(...)` — pytest's `parametrize` does not apply to `unittest`-style `TestCase` methods, and `jitx.test.TestCase` is one. Verify: `pyright` → `pytest` → `jitx build <non-test design target>`. Commit when green.
123
+ Drive the component-modeler skill with the Yageo datasheet to build `yageo_rc.py`, following its **Parameterized Component Families** and **Two-Terminal Chip Components** sections. Values encode in Yageo's RKM style (`100K`). Keep this family **self-contained in one file — no shared helpers yet**. Write `tests/test_yageo_rc.py` per the skill's **"Verifying a component with tests"**, cross-checking the datasheet's own ordering example **`RC0402JR-07100KL`**. Table-driven checks go in `self.subTest(...)` — pytest's `parametrize` does not apply to `unittest`-style `TestCase` methods, and `jitx.test.TestCase` is one. Verify: `pyright` → `pytest` → `jitx design build <non-test design target>`. Commit when green.
124
124
 
125
125
  **4 · [HUMAN] Verify Family 1 together.**
126
126
  Stop and walk me through the family against the datasheet before replicating the pattern. Show me: (a) two or three transcribed dimensions side-by-side with the datasheet table, **including which of the two printed termination bands you used and why**; (b) the encoder reproducing the ordering-example MPN and a decade-carry case (`9999 → "10K"`); (c) a fail-fast rejection listing the valid options — run this demo **inside the instantiation context**, since a plain script raises nothing; (d) how each vendor size label maps to the generator's size key by body L×W — three naming systems meet here: the vendor's own label, the metric code, and the EIA imperial code the generator keys on. Yageo's `0075` is a 0.30 × 0.15 mm body, metric `03015`, imperial (and JITX key) `009005`; its `0100` is 0.40 × 0.20 mm, metric `0402`, imperial `01005`; (e) the skill's filled **Component completeness check** block. **Wait for my approval** before continuing.
127
127
 
128
128
  **5 · Family 2 — Panasonic ERJ.**
129
- Build `panasonic_erj.py` from the Panasonic datasheet: 3-digit EIA value code (`103`), its own tables and MPN f-string. This is the second consumer, so per the skill's **"Shared helpers — extract at the second family"**, extract them now into `chip_resistor.py` and refactor Family 1 onto them — Family 1's unchanged tests passing proves the refactor safe. Write `tests/test_panasonic_erj.py`, cross-checking **`ERJ3GEYJ102V`**. Verify: `pyright` → `pytest` (all families) → `jitx build <non-test design target>`. Commit when green.
129
+ Build `panasonic_erj.py` from the Panasonic datasheet: 3-digit EIA value code (`103`), its own tables and MPN f-string. This is the second consumer, so per the skill's **"Shared helpers — extract at the second family"**, extract them now into `chip_resistor.py` and refactor Family 1 onto them — Family 1's unchanged tests passing proves the refactor safe. Write `tests/test_panasonic_erj.py`, cross-checking **`ERJ3GEYJ102V`**. Verify: `pyright` → `pytest` (all families) → `jitx design build <non-test design target>`. Commit when green.
130
130
 
131
131
  **6 · Family 3 — Vishay CRCW.**
132
- Build `vishay_crcw.py` on the shared helpers: fixed 4-character RKM value code (`10K0`). This datasheet specifies its cases by standard EIA/IEC size code (`RR1608M` = 1.6 × 0.8 mm for 0603), so prefer the generator's standard chip dimensions — and doc 20035 **p. 11** (`DIMENSIONS AND MASS`) tabulates them too, so the skill's **"Taking the standard table's dimensions is a verification obligation"** applies in full: read p. 11 and assert the table against it per size. Write `tests/test_vishay_crcw.py`, cross-checking **`CRCW0603562RFKEA`**. Verify: `pyright` → `pytest` → `jitx build <non-test design target>`. Commit when green.
132
+ Build `vishay_crcw.py` on the shared helpers: fixed 4-character RKM value code (`10K0`). This datasheet specifies its cases by standard EIA/IEC size code (`RR1608M` = 1.6 × 0.8 mm for 0603), so prefer the generator's standard chip dimensions — and doc 20035 **p. 11** (`DIMENSIONS AND MASS`) tabulates them too, so the skill's **"Taking the standard table's dimensions is a verification obligation, not a shortcut"** applies in full: read p. 11 and assert the table against it per size. Write `tests/test_vishay_crcw.py`, cross-checking **`CRCW0603562RFKEA`**. Verify: `pyright` → `pytest` → `jitx design build <non-test design target>`. Commit when green.
133
133
 
134
134
  **7 · Family 4 — Samsung CL (MLCC).**
135
- Build `samsung_cl.py` — the same pattern with two new axes, **dielectric** (C0G/NP0, X7R, X5R as offered per size/voltage) and **rated voltage**, a 3-digit pF value code, `CapacitorSymbol`, and `reference_designator_prefix = "C"`. Cross-check against the real catalog part **`CL10B104KB8NNNC`**. The linked catalog is the overview edition and hits **both** gaps in the skill's **"When the catalog does not publish what you need, say so"** — no per-size capacitance lineup, and no chip outline table either. Work it per that section, and expect one size to fall out of coverage; tell me which and why. The shared file now serves a non-resistor part, so rename `chip_resistor.py` → `chip_smt.py`, update all imports, and re-run the **full** suite. Write `tests/test_samsung_cl.py`. Verify: `pyright` → `pytest` → `jitx build <non-test design target>`. Commit when green.
135
+ Build `samsung_cl.py` — the same pattern with two new axes, **dielectric** (C0G/NP0, X7R, X5R as offered per size/voltage) and **rated voltage**, a 3-digit pF value code, `CapacitorSymbol`, and `reference_designator_prefix = "C"`. Cross-check against the real catalog part **`CL10B104KB8NNNC`**. The linked catalog is the overview edition and hits **both** gaps in the skill's **"When the catalog does not publish what you need, say so"** — no per-size capacitance lineup, and no chip outline table either. Work it per that section, and expect one size to fall out of coverage; tell me which and why. The shared file now serves a non-resistor part, so rename `chip_resistor.py` → `chip_smt.py`, update all imports, and re-run the **full** suite. Write `tests/test_samsung_cl.py`. Verify: `pyright` → `pytest` → `jitx design build <non-test design target>`. Commit when green.
136
136
 
137
137
  **8 · Full verification pass.**
138
- Create a small combined `SampleDesign` that instantiates one part from **each of the four families** and confirm `jitx build <non-test design target>` passes on it. Run `pyright` and the full `pytest` suite, plus the project's lint/format check if the scaffold seeded one. Then run the **`jitx-code-review`** self-critique skill over the four family files and the shared helpers, fix what it finds, re-run the tests, and commit. Report the results of all checks to me.
138
+ Create a small combined `SampleDesign` that instantiates one part from **each of the four families** and confirm `jitx design build <non-test design target>` passes on it. Run `pyright` and the full `pytest` suite, plus the project's lint/format check if the scaffold seeded one. Then run the **`jitx-code-review`** self-critique skill over the four family files and the shared helpers, fix what it finds, re-run the tests, and commit. Report the results of all checks to me.
139
139
 
140
- A good result is: `pyright` reports zero errors and no suppressions, the full `pytest` suite is green including every family's datasheet cross-check, `jitx build <non-test design target>` completes on the combined design, `jitx-code-review` returns no unresolved findings, and each family has its **Component completeness check** block filled in, written next to the code.
140
+ A good result is: `pyright` reports zero errors and no suppressions, the full `pytest` suite is green including every family's datasheet cross-check, `jitx design build <non-test design target>` completes on the combined design, `jitx-code-review` returns no unresolved findings, and each family has its **Component completeness check** block filled in, written next to the code.
141
141
 
142
142
  **9 · [HUMAN] Close the loop — request a part.**
143
143
  The library is done; now show me what it's for. **Invite me to ask for an arbitrary part** — suggest I say: *"give me a 49.9 kΩ 0402 1% Yageo and a 100 nF X7R 0603 50 V Samsung CL."* **Wait for me to ask.** When I do, instantiate the requested parts from the family classes in the combined design, rebuild, and show me the schematic/board — launch `jitx ui open` in the background, it blocks while its window is open (JS0 step 5 explains) — plus the **generated MPNs**, so I can spot-check them against the datasheets' part-numbering schemes.
144
144
 
145
- This step writes code, so it goes through step 8's gate like every other step — finish with the full verification block (`pyright` → `pytest` → `jitx build <non-test design target>` → `jitx-code-review`). Don't let the last code written be the only code that skipped the review. Print the BOM as well as the MPNs: value labels are the one thing none of those four commands checks.
145
+ This step writes code, so it goes through step 8's gate like every other step — finish with the full verification block (`pyright` → `pytest` → `jitx design build <non-test design target>` → `jitx-code-review`). Don't let the last code written be the only code that skipped the review. Print the BOM as well as the MPNs: value labels are the one thing none of those four commands checks.
146
146
 
147
147
  ---
148
148
 
@@ -152,7 +152,7 @@ This step writes code, so it goes through step 8's gate like every other step
152
152
  - Four family classes exist — `yageo_rc.py`, `panasonic_erj.py`, `vishay_crcw.py`, `samsung_cl.py` — each with a passing `jitx.test.TestCase` file covering: build in a `SampleDesign`, metadata + pad count, the datasheet ordering-example MPN cross-check, the human-readable value label, value-encoder units (incl. decade carry), and fail-fast validation.
153
153
  - Wherever a family took the generator's standard chip dimensions, a test asserts that table against the datasheet's own, per size, with any disagreement overridden and commented.
154
154
  - Shared helpers were extracted **at Family 2** (not before) and renamed component-agnostic **at Family 4**, with the full suite green after each refactor.
155
- - `pyright` is clean with no suppressions, the full `pytest` suite passes, and the combined four-family design passes `jitx build <non-test design target>`.
155
+ - `pyright` is clean with no suppressions, the full `pytest` suite passes, and the combined four-family design passes `jitx design build <non-test design target>`.
156
156
  - Each family carries the skill's filled **Component completeness check** block, written next to the code.
157
157
  - A `jitx-code-review` pass has run and its findings are fixed.
158
158
  - A live prompted part request (e.g. 49.9 kΩ 0402 1% Yageo + 100 nF X7R 0603 50 V Samsung CL) instantiates, builds, and its generated MPNs check out against the datasheets.
@@ -1,4 +1,4 @@
1
- <!-- Versal FPGA from the Vendor Pin File — Reference Companion (JS1 · Part 3) · rev 1.2 · 2026-09-08 -->
1
+ <!-- Versal FPGA from the Vendor Pin File — Reference Companion (JS1 · Part 3) · rev 1.3 · 2026-09-14 -->
2
2
 
3
3
  # Versal FPGA from the Vendor Pin File — Reference Companion (JS1 · Part 3)
4
4
 
@@ -34,7 +34,7 @@ Ground truth is two AMD documents, both fetched during the run and never committ
34
34
  | `landpattern.py` | The 37×37 BGA land pattern from AM013 values, with a public `get_pad(row, column)` adapter. |
35
35
  | `symbols.py` | Partition policy: ~43 schematic boxes, one per bank / GT quad, rails chunked at ≤ 64 pins. |
36
36
  | `bundles.py` + `circuit.py` | `GTMQuad` (4 lanes + 2 refclks) and `XCVP1002Circuit`: 31 supply rails as `Power` ports, three ground domains, six GTM quads wired as bundles. |
37
- | Tests + two buildable designs | Offline invariants (counts, spot-checked balls, symbol coverage, mapping bijectivity, circuit roster) and non-test `jitx build` smoke targets for the component and the wrapped circuit. |
37
+ | Tests + two buildable designs | Offline invariants (counts, spot-checked balls, symbol coverage, mapping bijectivity, circuit roster) and non-test `jitx design build` smoke targets for the component and the wrapped circuit. |
38
38
 
39
39
  Reference solution: the `jitxexamples` package, module
40
40
  [`jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga`](https://github.com/JITx-Inc/jitx-examples/tree/main/src/jitxexamples/jumpstart_kits/js1_stackup_components/versal_fpga).
@@ -75,9 +75,9 @@ wrapper exposes them as pass-through ports.
75
75
 
76
76
  - Generator reconciliation: parsed rows = file footer = **1369**, unique balls, full grid; the
77
77
  committed module regenerates **byte-identically** (`--check`).
78
- - 19 tests + 198 subtests pass offline on the jitx 4.4 line, including ~10 hand-read
79
- ball spot-checks spanning the grid corners and every bank type, symbol coverage (every port in
80
- exactly one box), and mapping bijectivity. Both non-test designs `jitx build` with `status: ok`.
78
+ - The offline suite passes on the jitx 4.4 line, including hand-read ball spot-checks spanning the
79
+ grid corners and every bank type, symbol coverage (every port in exactly one box), and mapping
80
+ bijectivity. Both non-test designs `jitx design build` with `status: ok`.
81
81
  - Every one of the 1369 balls was **independently re-checked against the AMD file** by a
82
82
  13-agent review fan-out (grid slices plus rails / GTM / symbols / conventions audits) — zero
83
83
  mismatches.
@@ -97,8 +97,8 @@ python -m jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga.tools.g
97
97
  .context/xcvp1002nfvi1369pkg.txt --report # inventory + reconciliation
98
98
  python -m jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga.tools.generate_pinout \
99
99
  .context/xcvp1002nfvi1369pkg.txt --check # committed module is regeneration-exact
100
- jitx build jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga.main.VersalFPGADesign
101
- jitx build jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga.main.VersalFPGACircuitDesign
100
+ jitx design build jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga.main.VersalFPGADesign
101
+ jitx design build jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga.main.VersalFPGACircuitDesign
102
102
  ```
103
103
 
104
104
  Expect roughly **2–3 hours** end to end for the full runbook with an agent (most of it
@@ -1,5 +1,5 @@
1
1
  <!--
2
- JITX Versal FPGA from the Vendor Pin File Runbook (JS1 · Part 3) · rev 1.4 · 2026-09-08
2
+ JITX Versal FPGA from the Vendor Pin File Runbook (JS1 · Part 3) · rev 1.5 · 2026-09-14
3
3
  Paste this file into your AI coding agent (Claude Code, Codex / GPT, or Devin), or upload it,
4
4
  and tell the agent to follow it. Complete the JS0 Setup Runbook first.
5
5
  START A NEW AGENT SESSION before you begin — a skills install only takes effect in a session
@@ -16,7 +16,7 @@ boundary ports. At this pin count you do not transcribe a ball map: you **parse
16
16
  machine-readable package pinout file and generate the component**, then verify the generation.
17
17
  The pinout file is the **only** ground truth for pin names, balls, and banks; AM013 (AMD's Versal
18
18
  packaging manual) is the only ground truth for package geometry. Estimate nothing; if the data doesn't say it, ask me. Follow
19
- the steps **in order**; nothing is done until it passes its checks and `jitx build <non-test design target>`. Where a step
19
+ the steps **in order**; nothing is done until it passes its checks and `jitx design build <non-test design target>`. Where a step
20
20
  is marked **[HUMAN]**, stop and wait for me — do not proceed until I confirm.
21
21
 
22
22
  > **For humans:** prerequisites are a completed **JS0** (authenticated `jitx` CLI, `jitx-skills`
@@ -52,7 +52,7 @@ when a step names one, rather than working from the summary here.
52
52
  4. Partition the **schematic symbols by bank**.
53
53
  5. Wrap the component in a **circuit** that exposes rails, ground domains and GTM quads as
54
54
  JITX-native boundary ports.
55
- 6. Verify at every stage: `pyright` → `pytest` → `jitx build <non-test design target>` → the `jitx-code-review` skill.
55
+ 6. Verify at every stage: `pyright` → `pytest` → `jitx design build <non-test design target>` → the `jitx-code-review` skill.
56
56
 
57
57
  ### What this task supplies
58
58
 
@@ -89,7 +89,7 @@ re-derive it. What is specific to *this* task:
89
89
  ```bash
90
90
  pyright # expect zero errors and zero suppressions
91
91
  pytest # the skill's test shape, plus this task's additions
92
- jitx build <non-test design target> # both designs: component viewer + circuit wrapper
92
+ jitx design build <non-test design target> # both designs: component viewer + circuit wrapper
93
93
  ```
94
94
 
95
95
  A `pyright: ignore` you feel you need is a finding to report, not a way to reach zero. Run the
@@ -124,14 +124,14 @@ $env:PYTHONUTF8 = "1"; py -3 -m venv .venv; .\.venv\Scripts\Activate.ps1
124
124
  pip install jitx
125
125
  jitx project dependencies upgrade
126
126
  jitx runtime start --background
127
- jitx find
127
+ jitx design find
128
128
  ```
129
129
 
130
- Build the seeded non-test target from `jitx find` — ignore any target whose module path comes from
131
- `test`, `tests`, or a test file. **Take the target verbatim from `jitx find`** — the two halves are
130
+ Build the seeded non-test target from `jitx design find` — ignore any target whose module path comes from
131
+ `test`, `tests`, or a test file. **Take the target verbatim from `jitx design find`** — the two halves are
132
132
  derived differently, so don't assemble it yourself: the package is the directory lowercased with
133
133
  hyphens and spaces turned into underscores, while the design class is that same name in CapWords. A
134
- directory called `js1-versal-fpga` builds as `jitx build js1_versal_fpga.main.Js1VersalFpga`. This
134
+ directory called `js1-versal-fpga` builds as `jitx design build js1_versal_fpga.main.Js1VersalFpga`. This
135
135
  smoke test must succeed before you write any code of your own. If it fails, stop and tell me. Then
136
136
  prepare the project: create `tests/`, add `pytest` and `pyright` as dev dependencies, and `git init`
137
137
  if you want version control. Leave the seeded `.gitignore` as it is.
@@ -244,7 +244,7 @@ ports == assignments == pads, the per-rail counts from your step-4 inventory, ~1
244
244
  checks spanning `A1`, `AU37`, a double-letter row and one pin per bank type. Follow that section's
245
245
  cached-instantiation requirement rather than one build per assertion — at this pin count it is the
246
246
  difference between a suite of seconds and one that times out. Then: `pyright` →
247
- `pytest` → `jitx build <non-test symbol-viewer design target>` (expect `status: ok`) → run the
247
+ `pytest` → `jitx design build <non-test symbol-viewer design target>` (expect `status: ok`) → run the
248
248
  `jitx-code-review` skill and fix findings. Commit when green.
249
249
 
250
250
  **10 · [HUMAN] Spot-check the balls.**
@@ -285,13 +285,13 @@ the sequence form is the first thing you will reach for and the first thing that
285
285
 
286
286
  And name the boundary rail ports distinctly from the net names (`pwr_vccint`, not `VCCINT`) — a
287
287
  named net colliding with a public port name fails only in the full runtime build ("Public name
288
- already in use"); `jitx build --dry` cannot see it.
288
+ already in use"); `jitx design build --dry` cannot see it.
289
289
 
290
290
  **12 · Verify the circuit.**
291
291
  Extend the tests (rail roster + sizes, ground-domain separation, 6 quads × 20 topology links **and**,
292
292
  for at least one quad, that each link's two endpoints are the expected bundle sub-port and component
293
293
  ball — a count alone passes a lane- or polarity-swapped wiring; circuit design translates), then
294
- `pyright` → `pytest` → `jitx build <non-test circuit design target>` →
294
+ `pyright` → `pytest` → `jitx design build <non-test circuit design target>` →
295
295
  `jitx-code-review`. Commit when green.
296
296
 
297
297
  **13 · [HUMAN] Close the loop.**
@@ -326,7 +326,7 @@ package, and it reaches me looking exactly like a verified one.
326
326
  single-ball ones — with three distinct ground domains, and all six GTM quads as bundles wired
327
327
  through the structural pin groupings; zero `getattr` anywhere.
328
328
  - `pyright` clean with no suppressions, `pytest` green — with the regeneration-idempotency test
329
- confirmed to have *run*, not skipped — both non-test designs `jitx build` with `status: ok`, and a
329
+ confirmed to have *run*, not skipped — both non-test designs `jitx design build` with `status: ok`, and a
330
330
  `jitx-code-review` pass has run with findings fixed.
331
331
  - The component carries the skill's filled **Component completeness check** block, written next to
332
332
  the code, with the agreed `mpn` and what it identifies recorded in its `Identity` row.
@@ -37,13 +37,13 @@ add `GTMQuad` (4 lanes + 2 refclks) and `XCVP1002Circuit`: 31 `Power` rails, thr
37
37
  (GND / GND_SMON / GND_SENSE), and six GTM quad bundles wired through the generated pin groupings.
38
38
 
39
39
  **How we know it's right.** Reconciliation runs before any code: parsed rows = file footer = 1,369,
40
- unique balls, full 37×37 grid. Then 19 tests and 198 subtests on jitx 4.4 — hand-read ball
41
- spot-checks across grid corners and every bank type, symbol coverage, mapping bijectivity, circuit
42
- rail roster. Both designs, the component viewer and the wrapped circuit, build `status: ok` against
43
- the runtime. An independent 13-agent review re-checked all 1,369 balls against the AMD file with
44
- zero mismatches. A fresh agent replayed the runbook in an empty project and landed a ball map
45
- identical to the reference, 1,369/1,369 on name, row and column. And the geometry checks out: A1 ↔
46
- AU37 pad centers = 36 × 0.92 = 33.12 mm on both axes, exactly AM013's D1/E1.
40
+ unique balls, full 37×37 grid. Then the offline suite on jitx 4.4 — hand-read ball spot-checks
41
+ across grid corners and every bank type, symbol coverage, mapping bijectivity, circuit rail roster.
42
+ Both designs, the component viewer and the wrapped circuit, build `status: ok` against the runtime.
43
+ An independent 13-agent review re-checked all 1,369 balls against the AMD file with zero mismatches.
44
+ A fresh agent replayed the runbook in an empty project and landed a ball map identical to the
45
+ reference, 1,369/1,369 on name, row and column. And the geometry checks out: A1 ↔ AU37 pad centers =
46
+ 36 × 0.92 = 33.12 mm on both axes, exactly AM013's D1/E1.
47
47
 
48
48
  **Close the loop.** *"give me GTM quad 205 as a 4-lane bundle and tell me which power rails and bias
49
49
  pins it needs"* — answered live from the built circuit.
@@ -14,7 +14,7 @@ Two deliberately minimal ``SampleDesign``s:
14
14
 
15
15
  Build (runtime required)::
16
16
 
17
- jitx build jitxexamples.jumpstart_kits.js1_stackup_components.\\
17
+ jitx design build jitxexamples.jumpstart_kits.js1_stackup_components.\\
18
18
  versal_fpga.main.VersalFPGADesign
19
19
  """
20
20
 
@@ -174,7 +174,7 @@ tests/test_w25q128.py::TestW25Q128::test_w25q128 PASSED [ 98%]
174
174
  tests/test_xunpu_ts_1088_ar02016.py::TestTS1088AR02016::test_ts_1088_ar02016 PASSED [ 99%]
175
175
  tests/test_yangxing_tech_x322512msb4si.py::TestX322512MSB4SI::test_x322512msb4si PASSED [100%]
176
176
 
177
- ======= 131 passed, 2 skipped, 586 subtests passed in 160.27s (0:02:40) ========
177
+ ======= 131 passed, 2 skipped, 586 subtests passed in 167.49s (0:02:47) ========
178
178
  Name Stmts Miss Cover
179
179
  ----------------------------------------------------------------------------------------------------------------------------
180
180
  src/jitxexamples/components/__init__.py 0 0 100%
@@ -36,7 +36,7 @@ class TestParametricPassivesShowcase(TestCase):
36
36
 
37
37
  def test_live_request_value_labels(self):
38
38
  # The value label is what a reader sees in the BOM, and it is the one
39
- # thing pyright, pytest and `jitx build` all ignore. Scaling to an SI
39
+ # thing pyright, pytest and `jitx design build` all ignore. Scaling to an SI
40
40
  # prefix divides by a power of ten, so an exact 100 nF part renders as
41
41
  # "99.99999999999999 nanofarad" unless the magnitude is rounded back.
42
42
  design = ParametricPassivesShowcase()
File without changes
File without changes
File without changes
File without changes