This flow reproduces the current OpenPLL release gate for the 25 MHz-reference
Sky130 PLL path. It is intentionally scoped to the latest release evidence: the
all-HD coarse DCO, hard top, configured wrapper, target-code rows, direct-RCX
hold smokes, direct-RCX near-seed smokes, and
make check-sky130-pll-25mhz-release.
Historical v1-v7 diagnostics are not regenerated by this container recipe.
The Apptainer image provides the generic Ubuntu runtime layer. Large or environment-specific inputs are mounted from the host so they are not copied into the SIF:
- Apptainer, or SingularityCE using the compatible CLI.
- Ciel Sky130 PDK at
$HOME/.volare/ciel/sky130. - Ciel Sky130 current version
7519dfb04400f224f140749cda44ee7de6f5e095. - LibreLane checkout at commit
0f39aab99009d4a81ee3f863f0da9ca2f0b43a99. - Nix store at
/nix, used by the LibreLanenix-shellflow. - Xyce at
/usr/local/bin/Xyce; MPI Xyce under$HOME/.local/xyce-mpiis used when present. The image includes the Ubuntu runtime libraries needed by these binaries, but the Xyce install itself is mounted from the host.
Set CIEL_SKY130_ROOT, LIBRELANE_ROOT, or XYCE_MPI_ROOT if your paths differ.
Set OPENPLL_ALLOW_PDK_MISMATCH=1 or OPENPLL_ALLOW_LIBRELANE_MISMATCH=1 only
for diagnostic runs; release reproduction should use the pinned versions above.
make apptainer-buildThe image is written to build/apptainer/openpll-release.sif, overwriting any
existing generated image at that path. If your
Apptainer install requires fakeroot or sudo, pass the build flags explicitly:
OPENPLL_APPTAINER_BUILD_FLAGS=--fakeroot make apptainer-buildThe run wrapper defaults to --userns, which works with unprivileged
SingularityCE/Apptainer installs. If your site requires setuid execution instead,
override it with:
OPENPLL_APPTAINER_RUN_FLAGS= make apptainer-audit-releaseIf the generated build/ and openlane/*/runs/ artifacts already exist, run:
make apptainer-audit-releaseThis executes make check-sky130-pll-25mhz-release inside the container.
To regenerate the latest-release evidence and then audit it:
make apptainer-rebuild-releaseFor a clean generated-artifact rebuild:
make apptainer-clean-rebuild-releaseThe clean rebuild removes only ignored/generated release directories:
build/*, exceptbuild/apptainer/so the default SIF is not removed while it is runningopenlane/IntegerPLL_DCO_EINVP_COARSE/runs/openlane/IntegerPLL_BBPD/runs/openlane/IntegerPLL_DigitalCore/runs/librelane_signoff_force127_s4a2/openlane/IntegerPLL_HardMacroTop_EINVP/runs/openlane/IntegerPLL_HardMacroTop_EINVP_25MHzConfigured/runs/
The final expected artifact is:
build/sky130_pll_25mhz_release/check_summary.json
with "status": "pass".