Lumicron Documentation
DocumentationPDK authoringStandard PDK checks and inspection artifacts

Standard PDK checks and inspection artifacts

Use the test runner from the same bundled runtime that will consume the PDK:

from lumicron_pdk import tests

report = tests.run("my_pdk", output_directory="/private/tmp/my-pdk-qualification")
print(report.summary())
print(report.counts)

The package must be importable. Its source directory and output must be disjoint. The runner executes trusted PDK Python in a fresh subprocess so an already imported module cannot masquerade as changed source. It is not a sandbox for untrusted PDKs.

tests.available() lists standard groups. checks=("structure", "components") selects groups. The default runs all of them:

Group Evidence
structure Existing manifest extraction, declared layers and component-resolution errors
packaging Existing packer and a .lumpdk artifact
components Each defaultable PCell exported to GDS, schema-2 sidecar and .lum; finite port properties
layer-display One tile per declared layer; install the generated PDK to inspect styles
route-profiles One 100 µm straight route per declared profile
qualification Simulation and fabrication checks explicitly skipped without evidence and acceptance criteria

Required component parameters without standard defaults are skipped. A component exception is a failed result for that component; it does not hide the other checks. Missing layer declarations fail the structural check. No declared components/profiles produces skipped checks.

Outputs

The output contains results.json, results.txt, worker.log, the resolved manifest.json, package/, components/, layers/ and profiles/ when applicable. Component/profile filenames have readable names plus bounded suffixes. Each result identifies its group, subject, status, reason, warnings and artifact paths.

report.is_current(package_directory) checks the PDK source/asset snapshot and API implementation digest. report.artifacts_intact() verifies generated artifact digests. Source mutation during execution invalidates the report. Version-control directories and Python bytecode caches are excluded; external dependencies and process/fabrication history are not PDK input evidence. Keep authored resources in the package.

Rerunning replaces only a prior runner-owned output folder. Unrelated output is refused. Staging and rollback protect ordinary replacement failures; power-loss atomicity across directory replacement is not claimed. A failed rerun retires the preceding inspection artifacts.

These are structural checks and inspection layouts. They do not establish optical accuracy, bend loss, manufacturing suitability or process qualification. Inspect the generated layouts in Lumicron and provide separate simulation/measured evidence for those questions.

Extension points

Standard checks live in independent functions in the runner’s private check registry. Future standard groups can be added without changing the orchestration or result format. This phase does not expose a general plugin or sweep language. For fabrication rule authoring and bounded semantic checks, see the Validation API guide.

Qualify a technology in a project environment

A general engineering package can consist of lumicron.toml and technology.py. See the Layout guide’s Packages and project environments chapter and the permanent Examples/Packages/SimplePDK example. It declares technology without components, a mandatory stack, or an archive descriptor. Component libraries can depend on it without copying the layer table.

Qualify an exact resolved technology using the same runner:

from lumicron.packages import resolve
from lumicron_pdk import tests

environment = resolve("/path/to/DemonstrationTapeout")
report = tests.run("example.simple", environment=environment,
                   output_directory="/path/outside/packages/qualification")
print(report.summary())

The report includes package/version/process/environment binding. Currentness requires report.is_current(package_directory, environment=environment); changed dependencies invalidate that evidence too. Qualification does not edit package source. Legacy importable PDK qualification is unchanged.

Generated GDS, semantic sidecars and .lum inspection artifacts are supported. Legacy .lumpdk packaging of a general engineering-package dependency graph is reported skipped, not passed. Distribution of these source packages uses their manifest and locked dependencies. Simulation and fabrication qualification remain unavailable unless the corresponding check has real evidence.

Search documentation

Type to search all guides and API references.

↑ ↓ to select · Enter to open · Esc to close