Skip to main content

tapestry

[WIP] A python package to add JTAG, IJTAG and TAP in DFT-inserted circuitry and do ICL and PDL — package/CLI name is warptap.

Usage

warptap is a library, not (yet) a CLI tool: pip install warptap, then call its functions from your own build/generation pipeline — there's no daemon or service, each call does one piece of work and returns. The core pipeline is: insert a JTAG/IJTAG test-access network into your design, then either drive it (PDLInterpreter) and emit a real ATE pattern file, or hand the inserted netlist on to your own normal synthesis flow.

The example below mirrors a real integration shape: a generator (e.g. an MBIST wrapper generator) produces RTL with real control/status ports, then warptap wraps a subset of them with JTAG/IJTAG access before synthesis.

from warptap import (
    InstrumentSpec, InstrumentDirection, SignalBinding,
    insert_test_access, PDLInterpreter, to_svf,
)

# One instrument per real signal you want write/read access to -- mix WRITE (control) and
# READ (status) freely in one network.
specs = [
    InstrumentSpec(
        "self_repair_start", width=1, capture_value=0,
        direction=InstrumentDirection.WRITE,
        signal_bits=(SignalBinding("self_repair_start"),),
    ),
    InstrumentSpec(
        "self_repair_busy", width=1, capture_value=0,
        direction=InstrumentDirection.READ,
        signal_bits=(SignalBinding("self_repair_busy"),),
    ),
]

# Ingest your generated/hand-written RTL, insert the TAP + IJTAG network, get back
# synthesizable Verilog plus everything needed to drive it. From here, feed the returned
# Verilog into your own normal synthesis flow instead of the original sources.
inserted_verilog, graph, root = insert_test_access(
    ["mem_subsystem_mbist.sv"], "mem_subsystem_mbist", specs,
)

# Drive it: write self_repair_start, wait for it to settle, read self_repair_busy.
pdl = PDLInterpreter(graph, root)
pdl.iTarget("self_repair_start")
pdl.iWrite(1)
pdl.iApply()
pdl.iRunLoop(10)
pdl.iTarget("self_repair_busy")
pdl.iRead(1)
pdl.iApply()

# Emit a real ATE pattern file from the same ops.
print(to_svf(pdl.program))

to_stapl/to_stil render the identical pdl.program as STAPL/STIL instead; to_icl describes the inserted network's own topology as real ICL text; retarget_faultflow_patterns remaps a faultflow --export-patterns JSON export through the same network. Every exception this library raises subclasses WarptapError.

Development

Requires a real yosys on PATH (this project shells out to it, same as faultflow does for its own Yosys usage — it's never bundled). On Windows, run everything through WSL, which already has yosys/python3/pytest installed system-wide; only the package itself needs an editable install, and system pip there is externally-managed (PEP 668), so that install goes through a small local venv:

wsl bash -lc "cd /mnt/c/path/to/tapestry && python3 -m venv --system-site-packages .venv && ./.venv/bin/pip install -e ."
wsl bash -lc "cd /mnt/c/path/to/tapestry && ./.venv/bin/python -m pytest"

--system-site-packages lets the venv see WSL's system-installed pytest instead of reinstalling it. If a real yosys isn't available at all, WARPTAP_YOSYS_CMD can point at any Yosys-compatible executable — tests/conftest.py falls back to a pip-installed yowasp-yosys (WASM build, see the dev extra) if nothing is found on PATH.

Some tests also cross-simulate hand-authored RTL against its Python behavioral-model counterpart using Icarus Verilog (iverilog/vvp, already present in the documented WSL environment). There's no WASM fallback for these — if neither is on PATH nor pointed at via WARPTAP_IVERILOG_CMD/WARPTAP_VVP_CMD, those tests skip cleanly rather than failing.

Metadata

Release files for warptap 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for warptap 0.0.2
File Size Uploaded Provenance
warptap-0.0.2.tar.gz 271.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for warptap 0.0.2
File Interpreter ABI Platform
warptap-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 434.7 kB

Release files / warptap-0.0.2.tar.gz

Download URL warptap-0.0.2.tar.gz
Size 271.0 kB
Tags Source
SHA-256 checksum
How to use checksums
36af12b88e4484611833df955be4a988ae3c2f48fbc628460827cf688b9c430d
BLAKE2b-256 checksum
How to use checksums
35045eb9e56fad01f3e71feea500b09ed5f84a46396edbbfff3fab92cf767724
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / warptap-0.0.2-py3-none-any.whl

Download URL warptap-0.0.2-py3-none-any.whl
Size 163.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9185fc473175c229660f3070bb13fdfb3e24afe9e2ae890d37f8a3971248ef71
BLAKE2b-256 checksum
How to use checksums
9a9bb813c0ea5391d794e6bc279cadd5214a46b6bbc75fbebe7360cbce867304
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Security for warptap 0.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for warptap-0.0.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page