Skip to main content

cf-precheck

ChipFoundry MPW tapeout precheck tool. Validates user projects before shuttle submission by running a sequence of design-rule and consistency checks.

Installation

pip install cf-precheck

External tool dependencies

Some checks invoke external EDA tools that must be available on $PATH:

  • KLayout — used by all Klayout DRC checks and the XOR check
  • Magic — used by the optional Magic DRC check and LVS
  • Netgen — used by the LVS check

Usage

cf-precheck -i <project_dir> -p <pdk_path> -c <caravel_root> [options] [check ...]

Required arguments

Flag Description
-i, --input-directory Path to the user project directory
-p, --pdk-path Path to the PDK installation (variant-specific, e.g. $PDK_ROOT/sky130A)
-c, --caravel-root Path to the golden Caravel root (or set $GOLDEN_CARAVEL)

Optional arguments

Flag Description
-o, --output-directory Output directory (default: <project>/precheck_results/<timestamp>)
--magic-drc Include the Magic DRC check (off by default)
--skip-checks check [...] Skip specific checks
-v, --verbose Show verbose/debug output
--version Print version and exit

Positional arguments

Pass one or more check names to run only those checks. If omitted, all applicable checks are run.

Example

# Run all checks
cf-precheck -i ./my_project -p $PDK_ROOT/sky130A -c ./caravel

# Run only specific checks
cf-precheck -i ./my_project -p $PDK_ROOT/sky130A -c ./caravel topcell_check gpio_defines

# Include the optional Magic DRC check
cf-precheck -i ./my_project -p $PDK_ROOT/sky130A -c ./caravel --magic-drc

# Skip certain checks
cf-precheck -i ./my_project -p $PDK_ROOT/sky130A -c ./caravel --skip-checks lvs oeb

Double-wide openframe

Double-wide projects are detected when exactly one of these GDS files is present:

gds/double_wide_openframe_project_wrapper.gds

Field Value
Type double_wide
User module double_wide_openframe_project_wrapper
Top module double_wide_chip_io
Golden wrapper double_wide_openframe_project_wrapper_empty
User area 6754.63 × 4766.63 µm (59 GPIOs)

Pass the double-wide harness root (not stock Caravel) as -c. That root must provide:

  • gds/double_wide_openframe_project_wrapper_empty.gds
  • verilog/rtl/__double_wide_openframe_project_wrapper.v (port-list golden)
cf-precheck \
  -i ../dw_openframe_user_project \
  -p $PDK_ROOT/sky130A \
  -c ../dw_openframe

XOR uses erase_box_double_wide.tcl (scaled openframe perimeter erase). OEB uses the openframe CVC path with GPIO indices 0..58.

Checks

Check Description
topcell_check Validates the top cell name in the GDS
gpio_defines Validates GPIO directives in verilog/rtl/user_defines.v
pdn Power distribution network check
metal_check Metal density check
xor XOR comparison against the golden wrapper to detect out-of-bounds edits
magic_drc Full DRC using Magic (optional, off by default)
klayout_feol Klayout Front End Of Line DRC
klayout_beol Klayout Back End Of Line DRC
klayout_offgrid Klayout off-grid violations check
klayout_metal_minimum_clear_area_density Klayout metal density check
klayout_pin_label_purposes_overlapping_drawing Klayout pin/label overlap check
klayout_zero_area Klayout zero-area cell check
spike_check Detects invalid paths in the design
illegal_cellname_check Detects cells with illegal names
oeb Output-enable-bar signal connectivity check
lvs Layout vs. Schematic check

Results

Check results are saved to <project>/.cf/project.json under the precheck key:

{
  "precheck": {
    "version": "1.0.0",
    "timestamp": "2026-03-17T12:00:00+00:00",
    "pdk": "sky130A",
    "passed": false,
    "checks": {
      "topcell_check": { "status": "pass", "duration_s": 1.2 },
      "gpio_defines": { "status": "fail", "duration_s": 0.8, "details": "..." }
    }
  }
}

Detailed logs are written to <project>/precheck_results/<timestamp>/logs/precheck.log.

License

Apache-2.0

Metadata

Release files for cf-precheck 1.3.7

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

Source distribution (sdist)

Source distribution for cf-precheck 1.3.7
File Size Uploaded
cf_precheck-1.3.7.tar.gz 3.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for cf-precheck 1.3.7
File Interpreter ABI Platform
cf_precheck-1.3.7-py3-none-any.whl Python 3 none any Details

Total release size: 7.2 MB

Release files / cf_precheck-1.3.7.tar.gz

Download URL cf_precheck-1.3.7.tar.gz
Size 3.6 MB
Tags Source
SHA-256 checksum
How to use checksums
d0e78cd2d0b015f75984faff2d2d970fbff14861bc708578c350082cdf846a61
BLAKE2b-256 checksum
How to use checksums
b5fddb837ca0989f4d7c9d4efe278b720227742a4398107a1ade044905b831ae
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 15, 2026.

Transparency log

Release files / cf_precheck-1.3.7-py3-none-any.whl

Download URL cf_precheck-1.3.7-py3-none-any.whl
Size 3.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
bc847eb97fdb2213b71d09da1304eee4c159b5dc9b7a2e031cabaf4961d77f0f
BLAKE2b-256 checksum
How to use checksums
556206f8e6eb1fe65617dbeb562ec75782ad5f4de0ec31e9fb22e62af5cc06ab
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 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.3.7 This release

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

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