Test station upgrade path for B12 CB. Primary domain: test. Secondary domain: mechanics.
Milestones
| Code | Title | Status | Target | Achieved | TC |
|---|---|---|---|---|---|
| MS-008 | Standoff Sleeve Solution Mechanical | achieved | 2026-06-12 | 2026-06-18 | 0 / 0 |
| MS-002 | Accordion A2 hardware + firmware upgrade ready | marker | 2026-06-17 | — | 0 / 0 |
| MS-003 | All ~22 A1→A2 PSU tests ported and passing | achieved | 2026-06-21 | 2026-06-23 | 0 / 0 |
| MS-004 | Manual regression test complete — zero failures | marker | 2026-06-26 | — | 0 / 24 |
| MS-005 | Deployed to Synplex and validated via OperatorUI | marker | 2026-06-30 | — | 0 / 0 |
| MS-006 | Documentation and CM upgrade instructions complete | marker | 2026-07-10 | — | 0 / 0 |
| MS-007 | Receiving party confirmation — project complete | marker | 2026-07-31 | — | 0 / 0 |
| MS-001 | R1.0 HW BOM revision approved | marker | 2026-08-31 | — | 0 / 0 |
| MS-009 | Completed Deployment and Current Release OK at CM | marker | 2026-08-31 | — | 0 / 0 |
| MS-010 | 2x Test Stations Upgraded at CM | marker | 2026-08-31 | — | 0 / 0 |
Items (10)
| Code | Status | Severity | Kind | Title | Date |
|---|---|---|---|---|---|
| E-009 | open | blocking | notice | A2 fresh firmware makes existing accordion.py wrapper potentially obsolete — API unknown, porting blocked | 2026-06-08 |
| E-010 | open | blocking | notice | CRPS 12V/75A bulk PSU on A2 — full fix required (ARM64 handler port + udev rule for MCP2221A) | 2026-06-08 |
| E-008 | open | warning | decision | A1 PSU control is centralized in one shared file — not 22 separate tests | 2026-06-08 |
| E-006 | open | info | decision | Replace Accordion A1 with Accordion A2 as programmable PSU in B12 CB test station | 2026-06-08 |
| E-007 | open | info | decision | Two test repositories — CB0 and CB1 separate repos | 2026-06-08 |
| E-012 | open | info | decision | M2Top PSU channel mapping confirmed: CH1=standby (TA/AWO), CH2=testboard (B6_PROD_TB) | 2026-06-10 |
| E-014 | open | info | decision | Standoff sleeve prototype accepted — 5 pcs in production (Felix G) | 2026-06-18 |
| E-015 | open | info | decision | R1.0 BOM review deferred to 2026-08-31 with Martin J — known delta items noted | 2026-06-23 |
| E-011 | closed | warning | notice | udev rule for MCP2221A HID access must be baked into A2 OS image | 2026-06-09 |
| E-013 | closed | warning | notice | R1.0 BOM near-complete — A2 top cover ESH number pending from Felix G | 2026-06-10 |
Requirements
| Code | Status | Category | Title | Statement | Acceptance |
|---|---|---|---|---|---|
| REQ-001 | draft | Hardware | Test station HW BOM revised to R1.0 | The test station hardware BOM shall be revised from R0.0 to R1.0, removing the Accordion A1 and integrating the Accordion A2 (with PSU module) as the replacement programmable PSU feeding the B12 CRPS Test Adapter and B6_Production_test_board. | R1.0 BOM is approved; Accordion A1 is physically removed from the station; Accordion A2 with PSU module is installed and operational. |
| REQ-002 | draft | Hardware | Accordion A2 BOM updated to include PSU module | The Accordion A2 unit installed in the B12 CB test station shall have its BOM updated to include the PSU module, which is absent from the current A2 configuration. | A2 BOM revision includes the PSU module; unit is physically assembled with PSU module installed and verified operational before station integration. |
| REQ-003 | draft | Software | A1 PSU power-control tests ported to Accordion A2 | All approximately 22 test cases (TestStand sequences and Python scripts) that currently use Accordion A1 for PSU power control shall be identified, re-written, and ported to use Accordion A2. | All ~22 tests identified and catalogued; each test re-developed targeting the A2 API; all ported tests pass individually on the upgraded station. |
| REQ-004 | draft | Verification | Full regression test suite passes on upgraded station | The complete B12 CB test suite (CB0 and CB1) shall be executed manually on the upgraded R1.0 station and all tests shall pass before deployment to Synplex. | Full manual regression run completed on R1.0 hardware with zero new failures; all A2-ported tests and all unmodified tests pass. |
| REQ-005 | draft | Deployment | Upgraded station deployed to Synplex and validated via OperatorUI | The upgraded test station software shall be deployed to the Synplex network and validated end-to-end via the OperatorUI, confirming all tests are executable and passing in the production environment. | Station is visible and active in Synplex; full test suite executes successfully via OperatorUI with no failures. |
| REQ-006 | draft | Documentation | Documentation updated for R1.0 changes | All relevant documentation (station setup guide, hardware configuration, test guide) shall be updated to accurately reflect the R1.0 hardware and software changes before handover. | Updated documentation is reviewed, approved, and available to all stakeholders prior to handover on 2026-06-25. |
| REQ-007 | draft | Documentation | CM production personnel upgrade instructions produced | Step-by-step upgrade instructions for contract manufacturer production personnel shall be produced, covering all hardware changes required to upgrade a B12 CB test station from R0.0 to R1.0. | Upgrade instructions are reviewed, approved, and delivered to CM production personnel before 2026-06-25. |
| REQ-008 | draft | Process | Confirmation sign-off obtained from all receiving parties | A confirmation round shall be conducted with all receiving parties (CM, operators, and relevant stakeholders) to verify the upgraded R1.0 station meets requirements, with confirmation received no later than 2026-06-25. | Written or recorded confirmation received from all identified receiving parties by 2026-06-25. |
Test Cases
| Code | Status | Category | Title / Signal | Target | Pass Criterion | Linked REQ |
|---|---|---|---|---|---|---|
| TC-001 | open | Programming | [CB0] Step 2 — Erase FPGA Flash (optional) | — | FPGA flash erased successfully or step skipped as optional. | REQ-004 |
| TC-002 | open | TestStand Native | [CB0] Step 3 — Power Devices Programming | — | All power regulators programmed successfully. PSU sequencing via Accordion A2 (ported from A1). **Note: native TestStand .seq — no Python. A1 calls must be identified and re-implemented manually in TestStand.** | REQ-003 |
| TC-003 | open | Electrical | [CB0] Step 4 — XJTAG Test | — | XJTAG boundary scan passes with no faults detected. | REQ-004 |
| TC-004 | open | Software | [CB0] Step 5a — Bsp Setup Test | — | BSP setup completes without errors; board support package initialised correctly. | REQ-004 |
| TC-005 | open | Software | [CB0] Step 5b — Bsp sseFPGA Test | — | sseFPGA BSP test passes; FPGA communication verified. | REQ-004 |
| TC-006 | open | Software | [CB0] Step 6 — Bsp rFPGA Test | — | rFPGA BSP test passes; reconfigurable FPGA communication verified. | REQ-004 |
| TC-007 | open | Functional | [CB0] Step 7 — Functional Test | — | All functional test items pass. PSU power control (if using A1) ported to Accordion A2. | REQ-003 |
| TC-008 | open | Electrical | [CB0] Step 8 — Power Rails Status Test | — | All power rails within specification. PSU control ported from A1 to Accordion A2. | REQ-003 |
| TC-009 | open | Electrical | [CB0] Step 9 — Sidebands Test | — | All sideband signals verified within expected states. | REQ-004 |
| TC-010 | open | Electrical | [CB0] Step 10 — Memory XCVR Test | — | Memory transceiver test passes; all XCVR links verified. | REQ-004 |
| TC-011 | open | Electrical | [CB0] Step 11 — Internal Clock Test | — | Internal clock frequencies within specification. | REQ-004 |
| TC-012 | open | Electrical | [CB0] Step 12 — External Clock Test | — | External clock input/output frequencies within specification. | REQ-004 |
| TC-013 | open | Functional | [CB0] Step 13 — Halo CyUSB Test | — | Halo CyUSB interface test passes; USB communication verified. | REQ-004 |
| TC-014 | open | Functional | [CB0] Step 14 — Final Test | — | All final test items pass; board cleared for next stage. PSU control (if using A1) ported to Accordion A2. | REQ-003 |
| TC-015 | open | Programming | [CB1] Step 2 — Bsp FTDI Reprog. (optional) | — | FTDI reprogramming completes successfully or step skipped as optional. | REQ-004 |
| TC-016 | open | Programming | [CB1] Step 3 — Erase FPGA Flash (optional) | — | FPGA flash erased successfully or step skipped as optional. | REQ-004 |
| TC-017 | open | TestStand Native | [CB1] Step 4 — Power Device Programming | — | All power devices programmed successfully. PSU sequencing via Accordion A2 (ported from A1). **Note: native TestStand .seq — no Python. A1 calls must be identified and re-implemented manually in TestStand.** | REQ-003 |
| TC-018 | open | Electrical | [CB1] Step 5 — XJTAG Test | — | XJTAG boundary scan passes with no faults detected. | REQ-004 |
| TC-019 | open | Software | [CB1] Step 6 — Bsp serFPGA Test | — | serFPGA BSP test passes; serial FPGA communication verified. | REQ-004 |
| TC-020 | open | Functional | [CB1] Step 7 — Functional Test | — | All functional test items pass. PSU power control (if using A1) ported to Accordion A2. | REQ-003 |
| TC-021 | open | Electrical | [CB1] Step 8 — Power Rails Status Test | — | All power rails within specification. PSU control ported from A1 to Accordion A2. | REQ-003 |
| TC-022 | open | Electrical | [CB1] Step 9 — Sidebands Test | — | All sideband signals verified within expected states. | REQ-004 |
| TC-023 | open | Electrical | [CB1] Step 10 — Memory XCVR Test | — | Memory transceiver test passes; all XCVR links verified. | REQ-004 |
| TC-024 | open | Functional | [CB1] Step 11 — Final Test | — | All final test items pass; board cleared for next stage. PSU control (if using A1) ported to Accordion A2. | REQ-003 |
Verification Records
No verification records.
Decisions
Decision
The Accordion A1, currently acting as the programmable PSU feeding the B12 CRPS Test Adapter and B6_Production_test_board, shall be removed and replaced by the Accordion A2 already inside the test fixture. This is the primary driver of the R0.0 → R1.0 hardware BOM revision.
Rationale
- Accordion A2 is already physically present inside the fixture, making it the natural PSU replacement.
- Removing A1 reduces cable complexity and consolidates PSU management onto a single platform.
- A2 requires a BOM upgrade to include the PSU module (currently absent) before it can fulfill this role.
Alternatives considered
- Keep A1 alongside A2: Rejected — adds unnecessary complexity and defeats the consolidation goal.
- Use external bench PSU: Rejected — not compatible with automated test sequences and Synplex/OperatorUI workflow.
Consequences
- ~22 TestStand/Python test cases that reference A1 PSU control must be re-written for the A2 API (see REQ-003).
- Accordion A2 firmware upgrade required in conjunction with hardware BOM change.
- Full regression test required before Synplex deployment (see REQ-004).
Decision
The B12 CB test station upgrade uses two separate repositories, one per DUT.
| DUT | Repository |
|---|---|
| B12 Control Board 0 (CB0) | https://github.com/esharpab/testdevelopment_b12_cb0.git |
| B12 Control Board 1 (CB1) | https://github.com/esharpab/testdevelopment_b12_cb1.git |
The CB0 repo is set as the project's primary repositoryUrl. CB1 is tracked here.
Rationale
DUTs are distinct boards with separate test suites. Keeping repos separate maintains clean separation of test scope per board.
Consequences
- Test cases in PLEASE tagged
[CB0]or[CB1]to identify which repo/DUT they belong to. - A1→A2 PSU porting work (REQ-003) spans both repos — ~22 tests total across both.
Finding
After reading the Python source, all A1 PSU control is in a single shared file that is copied (Imported/) into every test folder:
H200_12F_CB_common_testStand_preparations.py
The porting work (REQ-003) is primarily a change to this one file, not 22 separate test scripts.
A1 PSU API calls (current)
All go through esharp.accordion.Accordion class:
from esharp.accordion import Accordion
accdn_handle = Accordion(agent)
accdn_handle.open()
accdn_handle.reset(True)
accdn_handle.loadModule("CRPS")
# PSU channels (numeric index):
accdn_handle.setPsu(0, True/False, 12.0, 3) # Standby voltage — 12V/3A
accdn_handle.setPsu(1, True/False, 12.0, 2) # Testboard voltage — 12V/2A
accdn_handle.setPsu(2, True/False, 12.0, 75) # CRPS voltage — 12V/75A
A2 PSU API (target)
The A2 path is implemented via the dual-mode accordion_a2.py facade (set_rail("standby"/"testboard"/"crps", enable)), which writes M2Top PMBus resources on A2 and falls back to setPsu(ch,…) on A1. standby/testboard channel strings confirmed on live hw — see E-010 / E-012.
Migration scope (Python — DONE & committed)
common_TestStand_load_CB_accordion()— replacedAccordion(agent)withAccordionA2attach pattern ✅common_standby_voltage_enable/disable()— remapped to A2set_rail("standby")✅common_testboard_voltage_enable/disable()— remapped to A2set_rail("testboard")✅common_CRPS_voltage_enable/disable()— kept deferred on A2 (E-010, CRPS bring-up WIP) ⏳- Updated file re-copied into all
Imported/dirs; committed/pushed (CB0 225dc2e, CB1 331946a) ✅
Native TestStand (.seq) — MANUAL, gated, MS-owned (NOT automatable)
PwrRailsSetup (CB0/CB1) contains additional A1 PSU calls inside the TestStand sequences. The .seq files are binary — they cannot be read, parsed, or edited programmatically (no Python/text to diff). This rework must be done manually by MS within the project's gate process; it is outside the scope of any automated/AI edit. Tracking only — no code action available here.
Decision
The logical rail mapping in accordion_a2.py (_RAILS) is confirmed and kept as-is:
| Rail | A1 (old) | A2 / M2Top (slot 0.16, ESH10000533) | Drives | Setting |
|---|---|---|---|---|
| standby | setPsu(0, …) |
0.16.ESH10000533.0x4F.CH1.* |
B12_CRPS_TA → CB AWO domain | 12 V / 3 A |
| testboard | setPsu(1, …) |
0.16.ESH10000533.0x4F.CH2.* |
B6_PROD_TB (BOA production test board) | 12 V / 2 A |
Rationale
A1 side (from code, git HEAD pre-migration):
setPsu(1)→ B6_PROD_TB is explicit: thetest_board_powerEnableflag in every test top-file carries the comment "For B12, BOA_PROD_TB must be powered on…" and feedsen_CBTB→common_testboard_voltage_enable()→setPsu(1, True, 12.0, 2).setPsu(0)→ TA/AWO: docstring "Enables standby voltage to the CB", enabled by default on every attach (always-on semantics); the AWO enables live on the TA GPIO expander (0.15.ESH10000462.CB0_PSM_AWO_EN,TA_PMBUS_AWO_EN) and the Bsp tests checkPSM_AWO_PGafter standby comes up.
Physical mapping (confirmed by Mikael Svensson, 2026-06-10): A1 ch0 (standby) is the left-hand channel output on the A1. On the new M2Top PSU in the A2, the corresponding channel is CH1 — located on the right-hand side looking at the two channel outputs. The sides are mirrored between A1 and M2Top: identify channels by name, never by position.
Alternatives considered
- Swap to CH1=testboard / CH2=standby: rejected — physical inspection of the channel outputs confirms CH1 is the standby feed despite its mirrored position.
Consequences
accordion_a2.py_RAILStable stays unchanged; the "UNCONFIRMED" comment is replaced with this confirmation (propagated to all 24Imported/copies in CB0+CB1 repos).- The standby and testboard rails are now fully portable/ready on A2. Remaining PSU blocker is CRPS only (E-010 / E-002).
- CM upgrade instructions (REQ-007) should warn about the mirrored channel positions when cabling.
Decision
Black plastic standoff sleeve prototype designed by Felix G was reviewed and accepted by MS on 2026-06-17. Felix's team is producing 5 pcs for the R1.0 upgrade fleet.
What the sleeve does
Lifts the main fixture plate (black lid frame) slightly so it sits level on the grey base enclosure. Sleeves are mounted on the aluminum extrusion rails at the sides of the lid frame, secured with threaded metal inserts and bolts.
Prototype photos (2026-06-17)
Six photos captured at acceptance:
- Overview — lid raised (front/side): Full enclosure showing the gap between black top frame and grey base where sleeves locate. Red E-stop button visible on front panel.
- Close-up — two sleeve blocks on corner rail (lid open): Shows the black plastic blocks with brass/threaded inserts seated on the extrusion rail. Two blocks visible at the corner, one above the other.
- Inside view — sleeve block on rail with Perspex label: Clear acrylic/Perspex material visible (ISO 9001 certification label on material sheet). Accordion (red) and PCB/cable harness visible in background.
- Side rail — single sleeve block with bolt: One sleeve block on the aluminum extrusion from the side; bolt head visible on top. Station interior with Accordion and braided cable harness.
- Corner detail — sleeve integrated, closed position: Sleeve block visible as raised block between black lid frame and grey base; Lasbricka M4 (EPN1000184) fastener bins in foreground on bench.
- Full station assembled — lid level: HARMONIX SPACE front panel visible. Fixture lid sits level on the enclosure with sleeve solution in place. Station in final assembled state on workbench.
Material
Acrylic/Perspex (black). Threaded metal inserts for bolted attachment to extrusion rail.
Production status
5 pcs ordered; Felix G's team responsible for delivery. No ESH number assigned to sleeve part yet — to be determined if formal BOM entry needed for CM upgrade instructions (REQ-007).
Decision
The formal R1.0 HW BOM review (MS-001) is deferred to 2026-08-31 and will be done together with Martin J.
Known BOM delta items (R0.0 → R1.0)
| Item | Note |
|---|---|
| Standoff sleeve (black acrylic) | Prototype accepted 2026-06-17; 5 pcs in production by Felix G. See E-014. No ESH number assigned yet. |
| Power cable (longer spec, 80 cm) | New length requirement vs R0.0 — exact spec TBD with Martin J. |
| Fan guard 60 mm | New addition for R1.0 — exact spec TBD with Martin J. |
| Accordion A1 | Removed (see E-006) |
| Accordion A2 + PSU module | Added (see E-006, REQ-001, REQ-002) |
Why deferred
BOM formalization not on critical path for the 2026-06-25 software/deployment deadline. Martin J is the right co-author for the hardware BOM entries.
Notices
Situation
The R1.0 hardware revision includes a fresh firmware flash for the Accordion A2. This was confirmed by MS 2026-06-08.
The existing AccordionTsQ2/accordion.py wrapper (already present in every Imported/ folder in both CB0 and CB1 repos) was generated against an older A2 firmware. It cannot be assumed compatible with the new firmware.
Consequence
The A1→A2 PSU porting work (REQ-003, E-008) is blocked until:
- New A2 hardware with fresh firmware is available in the test station
- The new firmware API is documented or a new Python wrapper is generated
- PSU channel string names are confirmed for the new firmware
- 75A CRPS channel capability is verified on the new PSU module
Risk to schedule
Deadline is 2026-06-25 — 17 days from today. If the new A2 hardware+firmware does not arrive soon, there is insufficient time to port, regression test, and deploy before the deadline.
What is needed immediately
- New A2 firmware API spec or autogenerated Python wrapper (
accordion.py) - Confirmed PSU channel name mapping: standby (12V/3A), testboard (12V/2A), CRPS (12V/75A)
- Confirmation that A2 PSU module can source 75A for CRPS load
- ETA for new A2 hardware delivery to test station
Current state of code
All six PSU control functions in H200_12F_CB_common_testStand_preparations.py use esharp.accordion.Accordion (A1 class, numeric indices). The AccordionTsQ2/accordion.py file exists in every Imported/ folder but is the pre-upgrade A2 API — both are potentially wrong for R1.0.
Situation
The CRPS 12V/75A supply is an external, USB-controlled server-style PSU — never internal to A1. A1 loaded it via loadModule("CRPS"); the handler talks to it over a USB serial bridge via a Microchip MCP2221A USB HID bridge. In the R1.0 upgrade it is re-cabled to the A2.
Current state (2026-06-10) — NOT working yet
Per MS: the CRPS is still being brought up on A2. What appears on the live unit right now is an in-progress attempt, not a verified/working path — do not treat CRPS as done.
GET /api/Modules/loadedshows a CRPS module (CrpsHandler.dll,/dev/ttyUSB0,enabled:true). This is the team's WIP bring-up of the external PSU, not a confirmed-functional control path.
Fix 1 — ARM64 handler port (Daniel Rhodin, WIP)
Root cause / owner
The blocker is an architecture port: the CRPS handler was 32-bit on the A1 platform; the A2 (AGENT Q2 Base) runs 64-bit ARM, so the handler / its native dependency needed fixing for ARM64. Daniel Rhodin is working the CRPS fixes — pending.
What is still needed
- Daniel: finish the 32→64-bit ARM port of the CRPS handler so the external PSU is controllable on A2 — in progress
- Identify the actual control surface for the bulk supply's enable / voltage / current — separate from the TA sideband signals
- Confirm 12 V / 75 A capability of the unit
- Port
common_CRPS_voltage_enable/disable()and the CRPS path incommon_TestStand_load_CB_accordion()once the above are known
Fix 2 — udev rule for MCP2221A HID access (bake into A2 OS image)
Background
The CRPS external USB PSU connects to the A2 via the MCP2221A USB HID bridge. On Linux, /dev/hidraw* nodes default to root:root 0600, which blocks the accordion firmware service (non-root) from opening the device.
The fix (documented as E-001 on ESH10000158 R6) is a udev rule:
/etc/udev/rules.d/99-mcp2221.rules
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00dd", MODE="0666"
This was applied manually on one A2 unit to unblock integration testing. For all future A2 deployments this rule must be present out of the box.
Request to firmware lead (Daniel Rhodin)
Include /etc/udev/rules.d/99-mcp2221.rules (content above) in the A2 base OS image / provisioning so every shipped or re-imaged A2 has CRPS HID access without manual intervention.
Alternatively, group-based approach:
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00dd", GROUP="accordion", MODE="0660"
(requires the accordion service user to be a member of the accordion group)
What is needed
- Daniel: include udev rule in A2 OS image / provisioning
Correction note
The resources 0.15.ESH10000462.CRPS_12V_ENn / CRPS_12V_PG / CRPS_1_PRESENTn / CRPS_ISHARE / CRPS_CR_BUSn belong to the B12 CB TA module (ESH10000462, slot 0.15) — these are the DUT-side CRPS interface / sideband signals exercised by SidebandsTest continuity checks (CrpsTAGpioHandler, expander 0x20). They are NOT control of the external bulk CRPS PSU.
⚠️ An earlier revision of this notice incorrectly concluded "CRPS enable = these TA GPIOs / CRPS substantially resolved." That was wrong (conflated the TA's DUT-interface signals with the bulk-supply control). Reverted.
M2Top standby/testboard — confirmed against live hw (unchanged, unblocked)
0.16.ESH10000533.0x4F.CH1.*— standby (12V/3A) → B12_CRPS_TA / CB AWO domain0.16.ESH10000533.0x4F.CH2.*— testboard (12V/2A) → B6_PROD_TB
All three resources the shim writes per channel (.OUTPUT_VOLTAGE, .IOUT_OC_FAULT_LIMIT, .OUTPUT_ENABLE) exist on the live unit. CH1/CH2 assignment confirmed 2026-06-10 — see decision E-012 (positions mirrored vs A1; identify by name, not position).
Impact on porting (REQ-003)
common_standby_voltage_enable/disable()andcommon_testboard_voltage_enable/disable()— ready, validated against live hw.common_CRPS_voltage_enable/disable()+ theload_crps()/CRPS path — still blocked on Daniel's ARM64 handler port + udev rule. Shim correctly keeps these deferred (NotImplementedError/ skip on A2).
Merged into E-010.
Status (2026-06-10)
R1.0 BOM has been created. SharpMES is updated to R1. The BOM is otherwise complete with one item outstanding:
Pending: ESH number for the Accordion A2 top cover — a variant specific to this tailored A2 (M2PSU + B12 TA configuration). This part does not yet have an ESH number in the system.
Owner: Felix G — waiting on ESH number assignment.
Action
- Felix G: provide ESH number for the A2 top cover (M2PSU + B12 TA variant) — ESH10000691
- MS: add the top cover to the R1.0 BOM — resolved 2026-06-22
Impact on MS-001
MS-001 (R1.0 HW BOM approved) — top cover now has ESH number; BOM can be finalised.
Design Rule Status
■ No violations ■ Warning ■ Error ■ Waived