← Free engineering tools

MST · Engineering AI · MPW preparation

MPW troubleshooting: logs, environments and quotations

Three repeatable exercises for finding a blocker, recording what is unknown and preparing the next engineering discussion.

Examples are created by MST under the MIT license. They contain no customer design or foundry PDK. Technical identifiers and original log text are preserved in their source language.

Verification log review

Start with a supported file format, then distinguish the first error from repeated warnings. Do not guess that the longest message is the cause.

Open this tool →

Try it step by step

  1. Open Verification log review. Keep the labelled-text format and load the teaching example.
  2. Run the check: four findings form three groups. PSM-0038 occurs twice; the first error is on line 4. Original messages remain available.
  3. Switch to KLayout and load the example again. Three records belong to two categories; the original box coordinates remain visible. They are in micrometers, in the associated cell context.
  4. Download the report. Open markers.lyrdb with KLayout’s marker browser to inspect the same records. Use the original design and run evidence when investigating a real result.
  5. Try an INFO-only excerpt, an unknown text and a truncated XML file. None is labelled verification passed.

Expected result

The example has 4 labelled findings, or 3 KLayout records / 3 weighted markers. A marker count is not a defect count after waivers. Tags and comments are retained; no waiver is automatically approved.

Verification log review — Actual browser result using MST synthetic teaching data.
Actual browser result using MST synthetic teaching data. MST · MIT.

Reproduce locally

The script uses KLayout 0.30.12 to create a report database with synthetic markers. It does not execute a foundry rule deck. Run it in a disposable virtual environment, then verify the files with verify.py.

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python generate_markers.py
.venv/bin/python verify.py

Sources and supported versions

PDK environment comparison

A matching node name is insufficient. Compare the selected PDK variant, its source-manifest fingerprint, tool versions and required model-file presence before comparing runs.

Open this tool →

Try it step by step

  1. Load the teaching example. The left manifest is the reference; the right describes a different environment. Both are synthetic.
  2. Run the comparison. PDK revision and KLayout version differ; the model is missing; ngspice is unknown rather than incorrectly marked missing or compatible.
  3. Replace the right input with observed-match.json from the pack. The recorded fields now match. This does not certify that any simulation ran.
  4. Collect your own evidence in the same environment that runs your EDA tools. The collector only reads a selected directory and version information; it never installs or modifies a PDK.
  5. Have the project owner supply the approved requirements. Resolve a mismatch in the actual environment, recollect evidence, then rerun the approved reference design using that tool’s official instructions.

Expected result

The mismatching fixture gives 2 mismatches, 1 missing file, 1 unknown version and 2 matches. The aligned fixture gives 6 matches. The collector’s pdk_revision is the SHA-256 of SOURCES, not a guessed process release name.

PDK environment comparison — Actual browser result using MST synthetic teaching data.
Actual browser result using MST synthetic teaching data. MST · MIT.

Reproduce locally

Run the collector with Python 3.9 or later inside the EDA environment. Select the actual SKY130 variant directory. If a tool or SOURCES is unavailable, the output remains null. Model presence alone does not prove it loaded. OpenLane documentation explains PDK_ROOT and version pinning; follow the instructions matching your installed release.

python3 collect_environment.py --pdk-dir /path/to/sky130A > observed.json
python3 verify.py

Sources and supported versions

MPW quotation scope comparison

A lower per-area price may cost more when the minimum billed area is larger. Keep the physical sample form separate from test scope.

Open this tool →

Try it step by step

  1. Load the fictional example: design area 4 mm² and 20 packaged samples for both quotations. Package and test identifiers match.
  2. A bills 10 mm² at USD 100/mm²; B bills 4 mm² at USD 200/mm². Fabrication alone is USD 1,000 versus USD 800.
  3. A’s test fee is blank. The tool shows its known subtotal of USD 1,550 and does not invent a total or rank it against B.
  4. Enter 100 as A’s test fee. Entered-category totals are now USD 1,650 and USD 1,260; A − B is USD 390.
  5. Change B’s currency, package specification, test coverage or sample count. The difference is withheld until the entered scopes match again.

Expected result

A: max(4,10) × 100 + 200 + 300 + 100 + 50 = 1,650 USD. B: max(4,4) × 200 + 0 + 300 + 100 + 60 = 1,260 USD. Different testing or exclusions may still make a purchase comparison inappropriate.

MPW quotation scope comparison — Actual browser result using MST synthetic teaching data.
Actual browser result using MST synthetic teaching data. MST · MIT.

Reproduce locally

verify.py uses Python Decimal to verify these teaching totals independently. The browser uses exact scaled integers. Neither method supplies a supplier quotation or assumes an exchange rate.

python3 verify.py

Sources and supported versions

Continue with the existing tool → MPW